設計をミスっていました
よくある話です
しかたないしかたない
前回はこちら
なにが不安なのか?
- 設計のどこを間違えたのか?
- どう直すのか?
- 今の進捗はどれくらいか?
- 今回学んだこと
設計のどこを間違えたのか?
データの持ち方を間違えました
以前のデータの持ち方
- ユーザデータのリスト
- ユーザID(自身のユーザは参照/更新可、他のユーザは参照不可?)
- 名前
- アイコン
- 大人か子供か
- ユーザID(自身のユーザは参照/更新可、他のユーザは参照不可?)
- 願い事リスト
- ユーザID(自身のユーザは参照可/更新可、他のユーザは参照可)
- 願い事のリスト
- 願い事のID
- 願い事の内容
- 願い事のID
- 願い事のリスト
- ユーザID(自身のユーザは参照可/更新可、他のユーザは参照可)
- 応援リスト
- ユーザID(自身のユーザは参照可/更新可、他のユーザは参照可)
- 応援のリスト
- 願い事のID
- 応援内容
- 願い事のID
- 応援のリスト
- ユーザID(自身のユーザは参照可/更新可、他のユーザは参照可)
- 願い事の定型文(ユーザは参照可)
- 応援の定型文(ユーザは参照可)
要件
やりたいことは以下の4つ
- 自分のユーザ情報を登録、変更、参照できる
- 願い事を追加できる
- 願い事リストをランダムで1件取得する
- 願い事に応援内容を追加できる
今の構成でできないことは
「願い事リストをランダムで1件取得する」
そもそもランダム取得が難しい
その上、願い事リストの前にユーザIDがあるので一覧で取れません
- 願い事リスト
- ユーザID(自身のユーザは参照可/更新可、他のユーザは参照可)
- 願い事のリスト
- 願い事のID
- 願い事の内容
- 願い事のID
- 願い事のリスト
- ユーザID(自身のユーザは参照可/更新可、他のユーザは参照可)
さらに、応援内容を追加するには他者のユーザIDの取得が必要になります
どう直すのか?
変更後の構成
- ユーザデータのリスト(private)
- ユーザID(自身のユーザは参照/更新可)
- 名前
- アイコン
- 大人か子供か
- ユーザID(自身のユーザは参照/更新可)
- 願い事リスト(private)
- ユーザID(自身のユーザは参照/更新可)
- 願い事のリスト
- 願い事のID
- 願い事の内容
- 願い事のID
- 願い事のリスト
- ユーザID(自身のユーザは参照/更新可)
- 願い事リスト(public)
- 願い事のID(追加可、参照可)
- 願い事の内容
- 名前
- 応援リスト
- 応援ID
- 応援内容
- 名前
- 応援ID
- 願い事のID(追加可、参照可)
- 応援リスト(private)
- ユーザID(自身のユーザは参照/更新可)
- 応援のリスト
- 応援ID
- 願い事の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...
ランダム取得ロジック
- ドキュメントのユニークなIDを取得
- ユニークなIDより大きい1件を取得
- ない場合はユニークなIDより小さい1件を取得
FireStoreでトランザクション処理
batch関数で複数のデータを同時に登録することができます
FirebaseFirestore.instance.batch()
Expandedの使い方
Row、Column、Expanded、Center、Containerでデザインをする
Expandedは隙間を埋めるイメージ
Containerはマージンやパディングできる
Rowで横に並べる
Columnで縦に並べる
Centerで中央に配置
不安は解消した?
予定だとそろそろ終わってたはず
知識が増えたからいいかな
次はこちら
コメント
なかなか、アプリを作るのは難しいですね。負けずに頑張ってください!