実装
技術選定(10分)
注:上記は現在のバージョンで採用している技術です。個々の導入バージョンは記載していません。
MVPの実装(90分)
- 新しいiOSプロジェクトを作成
- メイン画面のMainViewを作成し、TabViewを組み込んでチェックイン・振り返り・設定の各画面を管理
- チャレンジ・習慣・記録のモデルを作成
- 新しいチャレンジを開始するか、現在のチャレンジに戻るための開始画面を作成
- Listで7つの習慣を表示するチェックイン画面を作成し、記録機能を実装
- Gridで50日 × 7つの習慣の全記録を表示する振り返り画面を作成
- サポートとプライバシーポリシーへの外部リンクを含む設定画面を作成
- チャレンジのアーカイブ機能を実装し、チャレンジ履歴・詳細画面の表示を完成
- チャレンジ完了後の開始画面と、次のチャレンジを始めるフローを作成
実装済みの機能(v1.1~)
- 日付の変更(過去の記録の追加)✅
- チェックインへのメモの追加 ✅
- 連続チェックイン日数の計算 ✅
- 習慣のカスタマイズ ✅
- チャレンジ期間のカスタマイズ ✅
- チェックインのリマインダー ✅
- チャレンジの成果の共有 ✅
- UI/UXの改善 ✅
- チャレンジデータのインポート・エクスポート ✅
- アーカイブ済みチャレンジの一括削除 ✅
- ガイドと起動フローの改善 ✅
- ローカル AI による毎日のまとめ ✅
- 毎日のまとめのインポート・エクスポート ✅
- Foundation Models の優先利用 ✅
未実装 / 拡張予定の機能
- 開始日の編集
- 報酬の仕組み(条件を満たすとバッジを獲得)
- 多言語対応(英語、日本語)
テスト(30分)
MVP 段階のテスト
- 主要機能のフローテスト:開始 -> チェックイン / 振り返り / 設定 -> 終了 -> 再度開始
- チャレンジのライフサイクルテスト
| 番号 |
テスト操作 |
期待結果 |
備考 |
| 1-1 |
アプリを初めて開く |
開始画面が表示される |
|
| 1-2 |
チャレンジ開始をタップ |
チェックイン画面に遷移する |
Day 1と7つの習慣が表示される |
| 1-3 |
タブバーをタップ |
チェックイン・振り返り・設定の3画面を自由に切り替えられる |
|
| 1-4 |
いくつかの習慣をタップ |
習慣が達成済みの状態に切り替わる |
再度タップすると達成済みの状態を解除できる |
| 1-5 |
振り返り画面に切り替える |
チェックインの状態が正しく表示される |
Day 1/50と7つの習慣グループが表示され、各グループに50件の記録がある |
| 1-6 |
設定画面に切り替える |
設定メニューが表示される |
|
| 1-7 |
チャレンジ一覧をタップ |
一覧画面に現在のチャレンジが表示される |
|
| 1-8 |
現在のチャレンジをタップ |
チャレンジ詳細画面に遷移する |
チャレンジのデータが正しく表示される |
| 1-9 |
設定画面に戻り、現在のチャレンジを終了する |
開始画面に戻る |
|
| 1-10 |
再度チャレンジ開始をタップ |
新しいチャレンジが始まる |
一覧画面に、終了した前のチャレンジと新しい現在のチャレンジが表示される |
| 1-11 |
チェックイン記録を修正し、アプリを閉じて再度開く |
修正後のデータが引き続き正しく表示される |
|
| 2-1 |
データベースツールで現在のチャレンジの開始日を手動で50日前に変更する |
チャレンジ完了後の開始画面が表示される |
|
| 2-2 |
再度チャレンジ開始をタップ |
新しいチャレンジが始まる |
一覧画面に、終了した前のチャレンジと新しい現在のチャレンジが表示される |
追加テスト [v1.3]
3. 日付をまたぐ際の自動更新テスト
| 番号 |
テストの前提条件 |
テスト操作 |
期待結果 |
| 3-1 |
チャレンジ終了日の前日 |
チェックイン画面を表示し、0時までアプリをフォアグラウンドに保つ |
日付が翌日に自動更新される |
| 3-2 |
同上 |
過去の日付を表示し、0時までアプリをフォアグラウンドに保つ |
表示日付は変わらない |
| 3-3 |
同上 |
今日を表示し、振り返り画面に切り替えて、0時までフォアグラウンドに保つ |
表示日数が自動更新される |
| 3-4 |
同上 |
過去の日付を表示し、振り返り画面に切り替えて、0時までフォアグラウンドに保つ |
表示日数が自動更新される |
| 3-5 |
同上 |
今日を表示し、アプリをバックグラウンドに移し、0時以降に再度開く |
日付が翌日に自動更新される |
| 3-6 |
同上 |
過去の日付を表示し、アプリをバックグラウンドに移し、0時以降に再度開く |
表示日付は変わらない |
| 3-7 |
同上 |
今日を表示し、振り返り画面に切り替え、アプリをバックグラウンドに移し、0時以降に再度開く |
表示日数が自動更新される |
| 3-8 |
同上 |
過去の日付を表示し、振り返り画面に切り替え、アプリをバックグラウンドに移し、0時以降に再度開く |
表示日数が自動更新される |
| 3-9 |
チャレンジの最終日 |
チェックイン画面を表示し、0時までアプリをフォアグラウンドに保つ |
チャレンジ終了画面に自動遷移する |
| 3-10 |
同上 |
過去の日付を表示し、0時までアプリをフォアグラウンドに保つ |
チャレンジ終了画面に自動遷移する |
| 3-11 |
同上 |
今日を表示し、振り返り画面に切り替えて、0時までフォアグラウンドに保つ |
チャレンジ終了画面に自動遷移する |
| 3-12 |
同上 |
過去の日付を表示し、振り返り画面に切り替えて、0時までフォアグラウンドに保つ |
チャレンジ終了画面に自動遷移する |
| 3-13 |
同上 |
今日を表示し、アプリをバックグラウンドに移し、0時以降に再度開く |
チャレンジ終了画面に自動遷移する |
| 3-14 |
同上 |
過去の日付を表示し、アプリをバックグラウンドに移し、0時以降に再度開く |
チャレンジ終了画面に自動遷移する |
| 3-15 |
同上 |
今日を表示し、振り返り画面に切り替え、アプリをバックグラウンドに移し、0時以降に再度開く |
チャレンジ終了画面に自動遷移する |
| 3-16 |
同上 |
過去の日付を表示し、振り返り画面に切り替え、アプリをバックグラウンドに移し、0時以降に再度開く |
チャレンジ終了画面に自動遷移する |