Giter Club home page Giter Club logo

hi-diary's Introduction

Hi👋 Diary ~ つながる英語日記 ~

セットアップ方法

Hidiaryディレクトリに移動

xcodegen
open HiDiary.xcworkspace
make setup-mint

バージョン

  • Xcode 12.5
  • Swift 5.4

環境構築と実行方法

  1. git clone https://github.com/techiro/hi-diary.git
  2. cd hi-diary
  3. open HiDiary.xcodeproj

開発方法

  1. develop ブランチから開発用のブランチを切る。(ブランチ名については下のブランチ命名規則を参照)
  2. 開発用のブランチで開発を進める。(このブランチからさらにブランチを切ってマージをさせる分には自由にやってもらって大丈夫です。コミットのルールについては下記を参照)
  3. develop -> 開発用ブランチにマージをし、コンフリクトが発生していないか確認する。
  4. 開発用のブランチ -> develop にプルリクを出す。
  5. レビュアーによる承認を得たら、プルリクを出した人がマージさせる。

ブランチ命名規則

  • 新規ページ design/[ページ名]
  • 新規機能 feat/[機能名]
  • 既存機能の修正 fix/[機能名]
  • バグ修正 hotfix/[バグ名]
  • リリース release/[バージョン]

コミットのルール

  • コメントの言語(日・英)に関してはとくに定めていません。
  • 頭に、タグ(add:, update:, fix: など)をつけてもらえると非常に見やすいかと思います。
  • コミットの粒度については、なるべく細かめにお願いします。(目安としては、1機能1コミット)

コマンド

ターミナルで使えるコマンドです。

make ccache        Delete cache
make sort          Sort file dependencies in Xcode Project

開発するフォルダ構成

UIやDataのフォルダ構成は変更する可能性があるがとりあえずは外部と内部でフォルダを分ける。

  • UI       ・・・ 主にローカルでのViewを格納
  • Data ・・・ 主に外部でのモデルやサービスを格納
  • Configs      ・・・ 設定ファイルを格納      ※機密情報が含まれるため触らない
  • Sample       ・・・    お試しViewやスニペットなどアプリ開発を構築する上で役に立ちそうなコードを格納.ビルド対象外フォルダ
  • Utils          ・・・    共通化できるViewやエクステンションを格納

hi-diary's People

Contributors

kuboshiman avatar techiro avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

kuboshiman

hi-diary's Issues

タグの種類

概要

タグはアプリ側で用意する。

変更内容

  • TagViewをOverlayさせて入力を求める。
  • 新しいデータ構造
  • TagLibraryの選定 自作or外部

影響範囲

EditViewに値を持たせる。

  • [Tag] 🏷

動作要件

補足

EditViewをより見やすいデザインに変更

概要

機能ボタンの追加

  • 翻訳ボタン t.bubble.fill
  • ボタンを押したら、画面の下に翻訳後のテキストを表示させる
  • タグつけボタン
  • トピックの提案

変更内容

影響範囲

  • EditView
  • InputView
  • EditViewModel

動作要件

モックデータ タグ情報

補足

母国語の入力のみを受け付ける。つまり、自分で英語を書く機能はなし。

トピックの提案

概要

日記のネタが思いつかない時があるため、アプリ側が日記のトピックを提案してくれる。

変更内容

image

影響範囲

動作要件

補足

TextEditViewの空白時のプレースホルダーのテキストの追加

概要

テキスト入力を補助するための機能追加

変更内容

実装は簡単なものにする。

TextEditor(text: self.$note)
                .padding(.top, 20)
                .foregroundColor(self.note == placeholderString ? .gray : .primary)
                .onTapGesture {
                    if self.note == placeholderString {
                        self.note = ""
                    }
                }

参考文献:
https://stackoverflow.com/questions/62741851/how-to-add-placeholder-text-to-texteditor-in-swiftui

影響範囲

  • EditViewModel
  • TextEditView

動作要件

補足

テストデータを使用しているため。
他言語対応する必要がある。

チャット画面のデザインの修正

概要

画像が荒かったり、デバイスによって見え方が変わるため アイコンは基本的にSF Symbols version 2.1を使用してください

ダウンロードリンク
https://devimages-cdn.apple.com/design/resources/download/SF-Symbols-2.1.dmg

変更内容

  • チャットの背景は、Rowに持たせずに、RowViewを描画する元のBackGroundを使用するのでいらないです!
  • 画像をSFSymbolsのみを使う。適切な画像がない場合は代わりのモック画像を挿入してください!
  • ユーザーアイコンとコンテンツの区切り線はいらないです!
  • パブリックの場合は地球儀アイコン、クローズドな場合、鍵のアイコンに変更!

-できればダークモード化
- コンテンツのバックグラウンドをWhiteではなく、contents_backgroundColorを定義してダークモードならば黒、そのままだと白に変更

SFSymbolsの使い方

Image(systemName: "heart")

影響範囲

  • NoteRow
  • NoteLisstView

動作要件

補足

EditViewModelに必要な機能

概要

  • Draft
  • Finish
  • Public
  • timestamp
  • content
    などの情報を埋めるためにEditViewModelにプロパティーを宣言する。

変更内容

EditViewModelの編集
InputViewで関数を使用

影響範囲

  • EditFolder
  • FirebaseStoreService

動作要件

無事にFireStoreにPostできたら完了

補足

+ボタンを押して画面遷移した時に、自動でテキストフィールドにフォーカスを当てたい

概要

EditView

変更内容

以下の実装をおこなう iOS 15.0+
https://stackoverflow.com/questions/56507839/swiftui-how-to-make-textfield-become-first-responder?answertab=active#tab-top

forcusを使用する。

iOS 14
SwiftUI-Introspect を使用する場合

TextField("", text: $value)
.introspectTextField { textField in
    textField.becomeFirstResponder()
}

https://github.com/siteline/SwiftUI-Introspect

影響範囲

サードパーティー製のライブラリを使用すると、Keyboardの挙動がおかしくなる可能性あり。

動作要件

補足

そこまで重要ではないため、保留する

Firebaseのデータ構造について

概要

コレクション

/Post
/User

Post ドキュメント

  • auther: Userオブジェクトを挿入
  • body: 内容
  • timestamp: 投稿時間
  • isPublish: 公開設定

Userドキュメント

  • UserName
  • Profile画像
  • /Posts

変更内容

  • Firebase
  • FIreStore

影響範囲

  • Noteのデータ構造

動作要件

補足

参考文献
https://medium.com/google-cloud-jp/firestore2-920ac799345c

Firebaseの扱うことができるデータ型
https://firebase.google.com/docs/firestore/manage-data/data-types

https://firebase.google.com/docs/functions/

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.