【5日目】七夕のアプリを作ってみたいけど七夕に間に合うかわからないので不安です

七夕大好き

設計をミスっていました

よくある話です

しかたないしかたない

前回はこちら

なにが不安なのか?

  • 設計のどこを間違えたのか?
  • どう直すのか?
  • 今の進捗はどれくらいか?
  • 今回学んだこと

設計のどこを間違えたのか?

データの持ち方を間違えました

以前のデータの持ち方

  • ユーザデータのリスト
    • ユーザID(自身のユーザは参照/更新可、他のユーザは参照不可?)
      • 名前
      • アイコン
      • 大人か子供か
  • 願い事リスト
    • ユーザID(自身のユーザは参照可/更新可、他のユーザは参照可)
      • 願い事のリスト
        • 願い事のID
          • 願い事の内容
  • 応援リスト
    • ユーザID(自身のユーザは参照可/更新可、他のユーザは参照可)
      • 応援のリスト
        • 願い事のID
          • 応援内容
  • 願い事の定型文(ユーザは参照可)
  • 応援の定型文(ユーザは参照可)

要件

やりたいことは以下の4つ

  • 自分のユーザ情報を登録、変更、参照できる
  • 願い事を追加できる
  • 願い事リストをランダムで1件取得する
  • 願い事に応援内容を追加できる

今の構成でできないことは

「願い事リストをランダムで1件取得する」

そもそもランダム取得が難しい

その上、願い事リストの前にユーザIDがあるので一覧で取れません

  • 願い事リスト
    • ユーザID(自身のユーザは参照可/更新可、他のユーザは参照可)
      • 願い事のリスト
        • 願い事のID
          • 願い事の内容

さらに、応援内容を追加するには他者のユーザIDの取得が必要になります

どう直すのか?

変更後の構成

  • ユーザデータのリスト(private)
    • ユーザID(自身のユーザは参照/更新可)
      • 名前
      • アイコン
      • 大人か子供か
  • 願い事リスト(private)
    • ユーザID(自身のユーザは参照/更新可)
      • 願い事のリスト
        • 願い事のID
          • 願い事の内容
  • 願い事リスト(public)
    • 願い事のID(追加可、参照可)
      • 願い事の内容
      • 名前
      • 応援リスト
        • 応援ID
          • 応援内容
          • 名前
  • 応援リスト(private)
    • ユーザID(自身のユーザは参照/更新可)
      • 応援のリスト
        • 応援ID
          • 願い事のID
          • 応援内容
  • 願い事の定型文(ユーザは参照可)
  • 応援の定型文(ユーザは参照可)

願い事リストを公開用とプライベート用に分けました

応援内容は願い事リストに直接書き込める形式にしました

願い事リスト(public)を作ったことで一覧で願い事を取得することが可能になりました

今の進捗はどれくらいか?

やったことまだやってないこと

  • 初回登録画面(進捗80%)
    • アイコンと定型文で願い事をする画面への遷移(まだ)
  • フリーワードで願い事をする画面(進捗100%)
    • 時間余ったらデザインをきれいにしたい
  • 定型文で願い事をする画面(進捗10%)
    • 願い事カードを表示(まだ)
    • 願い事を投稿(まだ)
  • 書いた願い事を見れる画面(進捗80%)
    • 願い事を一覧で表示(完了)
    • 願い事詳細画面に遷移(完了)
    • 応援数の表示(まだ)
  • 書いた願い事の詳細が見れる画面(進捗50%)
    • 願い事を表示(完了)
    • 応援を表示(まだ)
  • 願い事を応援する画面(進捗70%)
    • 願い事をランダムで表示(完了)
    • 応援カードを表示(完了)
    • 応援情報を取得(まだ)
  • ユーザ情報確認画面(進捗10%)
    • 名前の編集、表示(まだ)
    • アイコンの編集、表示(まだ)
    • 大人モードと子供モードの切替(まだ)
  • 申請情報の準備(進捗0%)
    • 画面のキャプチャ
    • アプリの説明
    • プライバシーポリシー
  • アプリの申請(進捗0%)
    • Android
    • iOS

今回学んだこと

FireStoreからドキュメントをランダムで1件取得

こちらを参考にランダム処理を実施

Firestore: How to get random documents in a collection
It is crucial for my application to be able to select multiple documents at random from a collection in firebase. Since there is no native function built in to...

ランダム取得ロジック

  1. ドキュメントのユニークなIDを取得
  2. ユニークなIDより大きい1件を取得
  3. ない場合はユニークなIDより小さい1件を取得

FireStoreでトランザクション処理

batch関数で複数のデータを同時に登録することができます

FirebaseFirestore.instance.batch()

Expandedの使い方

Row、Column、Expanded、Center、Containerでデザインをする

Expandedは隙間を埋めるイメージ

Containerはマージンやパディングできる

Rowで横に並べる

Columnで縦に並べる

Centerで中央に配置

不安は解消した?

予定だとそろそろ終わってたはず

知識が増えたからいいかな

次はこちら

コメント

  1. 匿名 より:

    なかなか、アプリを作るのは難しいですね。負けずに頑張ってください!

タイトルとURLをコピーしました