要件定義書
Qiita用ブラッシュアップ | 未着手 |
---|---|
ステータス | 完了 |
作成日時 | |
最終更新日時 |
アプリ名
まるっとMoneger💰🪙
お金に関する様々な管理をしてくれるアプリを作成したい。そのような思いから生まれたまるっとMonegerは、「Money」と「Manager」を掛け合わして出来たアプリ名です。
ただ支出記録をするだけではなく、いつまでにこれくらいお金を貯めたい、そうであれば毎月どのくらい貯金をすべきであるのか、そして実際に自由に使うことが出来るお金はどのくらいあるのかが一目でわかる、そんな貯金×貯金目標管理が出来るアプリとなっています。
目的・背景
現在、私は家計簿アプリと貯金アプリの二つを使用しています。家計簿アプリで普段の収支を記録しつつ、収入が入ったときに、貯金アプリに記録を付けています。
現在このように運用していて不便に感じることがあります。それは、実際に私が自由に使うことが出来る金額を知るのに、手間がかかるということです。家計簿アプリで「収入ー支出」を計算した上で、その後貯金アプリで「家計簿アプリで算出された金額ー毎月の貯金額」を計算しなおさなければ、今月私が自由に使うことが出来る金額を知ることが出来ないのです。このような手間を面倒に感じ、家計簿アプリと貯金アプリを一つに纏めたアプリを自作しようと考えました。
ペルソナ
想定ユーザーは以下の通りです。
- 貯金目標がある人
- 現在の貯金状況の把握が出来ていない人
- 浪費癖がある人
現在の貯蓄状況の把握と、将来のための貯金が出来ることで、浪費を防ぐ効果もあります。
ユースケース+機能一覧
ユースケース | 機能一覧 | CRUD |
---|---|---|
自分だけのデータとして記録したい | ユーザー登録・ログイン・ログアウト | C/R/D |
他人に見られたくないので、データを保護したい | 認証機能(Sanctum) | - |
日々の収支を記録して、使いすぎないようにしたい | 収支の登録・一覧・編集・削除 | C/R/U/D |
家賃や光熱費など、毎月決まった出費をあらかじめ登録しておきたい | 固定費のCRUD | C/R/U/D |
旅行のために〇月までに〇万円貯めたいので、その目標を立てたい | 貯金目標のCRUD・毎月貯金金額自動計算 | C/R/U/D |
今月あといくら使えるか、いつでも見えるようにしたい | 自動残金計算・表示 | R |
自分の貯金が目標に対してどのくらい進んでいるか知りたい | 目標との比較グラフ | R |
今月の支出はどのようなものが多かったのか確認して、使いすぎを防ぎたい | 収支ジャンル分けランキング表示 | R |
余裕があれば | ||
今月何を買ったのか写真を表示して、買いすぎを防ぎたい | 購入物品写真アルバム | R |
非機能要件(性能・制約・運用・セキュリティ・品質)
⬛︎性能
- 様々なサイズの端末での使用を想定しているので、レスポンシブデザインでUIを実装する
- 直感的な操作を重要視し、ユニバーサルデザインを意識したUIを実装する
⬛︎制約
- レスポンス速度は、ログイン時含め基本的に1秒以内のレスポンスを目指す
- 画面は1秒以内の表示を目指す
⬛︎運用
- CloudWatchにて監視のみ行う
⬛︎セキュリティ
- インフラ構成設計書にて詳しく記載しているため割愛
⬛︎待避復旧
- 本番環境は、AWSクラウドサービスを利用し、クロスリージョン構成を想定している。Tokyo regionをプライマリサイトとし、Canada regionをDRサイトとする
- 各サービスにおけるバックアップとリストア
サービス名 バックアップ方法 リストア方法 S3 クロスリージョンレプリケーションを使用し、Canada regionにレプリカを置く Canada regionにあるレプリカを使用 ECS + fargate Tokyo regionで稼働し、Canada regionではコンテナ停止状態 Tokyo regionで稼働不可能になった際、Canada regionにてコンテナを起動 RDS Amazon backupを使用し、自動で作成されるバックアップを、Canada regionへとコピー Canada regionにあるコピーから新しいインスタンスを作成
画面構成
本アプリの画面一覧と詳細なUI仕様については、別途作成した画面定義書にて明示しているため、本要件定義書では割愛する
DB
本アプリのテーブル一覧とテーブル詳細、E-R図については、別途作成したDB定義書にて明示しているため、本要件定義書では割愛する
使用言語・技術
- フロントエンド:TypeScript(React)
- 使用ライブラリ:
分類 ライブラリ名 ルーティング react-router-dom スタイリング tailwindcss 状態管理 redux, @reduxjs/toolkit, react-redux フォーム制御 react-hook-form バリデーション zod HTTP通信 axios 日付処理 dayjs UIコンポーネント shadcn/ui, radix-ui, react-dialog等
- バックエンド:PHP(Laravel 10)
インフラ
本アプリの稼働する開発環境・本番環境ついては、別途作成したネットワーク構成図にて明示しているため、本要件定義書では割愛する