190517 日記アプリの要件を再考
今日やること
要件をもう一度考えて文章にする
闇雲にUserモデル作り始めたけれど、モデルとモデルの関係を整理していなくて、どうすればよいか分からなくなってしまったため。
日記アプリの要件
- ユーザ登録機能
- ログイン/ログアウト機能
- ユーザは自分のリソースのみを閲覧できる
- 日記一覧機能
- 年月を選択して閲覧できる
- 日記投稿機能
- 日付・本文・気分・症状・活動量・起床時間・就寝時間
- 必ずしも全てを埋める必要はない。
- 日記編集機能
- よかったこと投稿機能
- よかったことの投稿機能
- よかったこと一覧機能
- 症状登録機能
- よく現れる症状を登録し、ダイアリーに記録する
- 症状一覧機能
- 生活記録機能
- Togglと連携し、1日の時間の使い方を1週間単位で可視化
- 起床時間・就寝時間・気分・食欲・症状・活動量・歩行距離
- 体調グラフ機能
Model
Model | Column | Data type | リソース内容 |
---|---|---|---|
User | name | :string | ユーザ名 |
:string | メールアドレス | ||
password_digest | :string | パスワード |
Model | Column | Data type | リソース内容 |
---|---|---|---|
Diary | created_at | :datetime | 投稿日時 |
updated_at | :datetime | 編集日時 | |
content | :string | 日記本文 | |
woke_up_at | :datetime | 起床時間(24時間) | |
slept_at | :datetime | 就寝時間(24時間) | |
activity | :integer | 活動量(5段階) | |
mood | :integer | 気分(5段階) | |
appetite | :integer | 食欲(5段階) | |
walking_distance | :integer | 歩行距離(km) | |
user_id | :integer | ユーザID(外部キー) |
Model | Column | Data type | リソース内容 |
---|---|---|---|
Symptom | name | :string | 症状名 |
user_id | :integer | ユーザID(外部キー) | |
Model | Column | Data type | リソース内容 |
---|---|---|---|
Memory | content | :string | よかったこと |
user_id | :integer | ユーザID(外部キー) | |
created_at | :datetime | 投稿日時 | |
リソースの分割
- ユーザーリソース
- ユーザ1人に対応するリソース。ユーザが書いた日記や症状、よかったことが入っている。
- ダイアリーリソース
- ユーザが作成した日記。投稿日時・更新日時・起床/就寝時間、日記などが入っている。1ユーザが複数のダイアリーをもつ。
- 症状リソース
- ユーザが抱える症状。ユーザに紐づいている。
- 生活記録リソース
- ユーザの生活リズムを週単位で表現するリソース。ダイアリーリソースの情報も一部転用されている。
- 体調グラフリソース
- ユーザの体調の推移を月単位で表現するリソース。ダイアリーで入力された情報を元にグラフを作成して表示する。
参考:『Webを支える技術』
Routing
これをすべて考えたら、コーディングに移れるはず。