Newer
Older
MiniTias / docs / 03_PLAN / PLAN_02_開発ステップ.md

開発ステップ (Development Steps)

SPEC_01_画面機能仕様書 の仕様をもとに,実装の順序とステップを定義する. 各ステップは 1 つのブランチ・PR に対応させる.

ステップ一覧 (Overview)

#ステップ概要依存
1プロジェクト基盤アプリ骨格,テーマ,画面遷移,Provider 登録
2カメラプレビューインカメラのライブプレビュー表示(180° 回転)1
3撮影・保存シャッターボタン,PNG 保存,ファイル命名2
4一覧・削除サムネイルグリッド,拡大表示,画像削除3
5仕上げパーミッション UX 改善,エラーハンドリング,手動テスト4

Step 1: プロジェクト基盤 (App Foundation)

目的

アプリの骨格を構築し,画面遷移が動作する状態にする.

実装内容

  • main.dartrunApp() で Provider を登録し,アプリを起動する
  • app.dartMaterialApp の定義,テーマ設定
  • screens/capture_screen.dart — 撮影画面の空のスキャフォールド
  • screens/gallery_screen.dart — 一覧画面の空のスキャフォールド
  • BottomNavigationBar による 2 タブ切り替え
  • UI 全体の 180° 回転(Transform.rotate

完了基準

  • アプリが起動し,2 つのタブで画面を切り替えられる
  • UI が 180° 回転して表示される
  • dart analyze / dart format がクリーン

ブランチ名

feature/app-foundation

Step 2: カメラプレビュー (Camera Preview)

目的

インカメラのライブプレビューを撮影画面に表示する.

実装内容

  • services/permission_service.dart — カメラ権限の確認・要求
  • providers/camera_provider.dart — カメラの初期化・プレビュー制御・ライフサイクル管理
  • widgets/camera_preview.dartCameraPreview ウィジェット
  • screens/capture_screen.dart — カメラプレビューの組み込み
  • パーミッション拒否時のエラー表示(基本的なメッセージのみ)

完了基準

  • 撮影画面でインカメラのライブプレビューが表示される
  • アプリをバックグラウンド→復帰してもカメラが正常に動作する
  • カメラ権限の拒否時にメッセージが表示される

ブランチ名

feature/camera-preview

Step 3: 撮影・保存 (Capture & Save)

目的

シャッターボタンで撮影し,PNG 形式でストレージに保存する.

実装内容

  • services/file_service.dart — PNG 保存,ファイル名生成,重複回避ロジック
  • widgets/shutter_button.dart — シャッターボタン UI
  • providers/camera_provider.dart — 撮影実行メソッドの追加
  • screens/capture_screen.dart — シャッターボタンの組み込み,撮影成功時のスナックバー
  • ストレージ権限の確認・要求
  • MediaStore への通知

テスト

  • FileService のファイル名生成ロジックの Unit テスト
  • FileService の重複回避ロジックの Unit テスト

完了基準

  • シャッターボタンタップで撮影できる
  • Pictures/MiniTIAS/MiniTIAS_YYYYMMDD_HHmmss.png 形式で保存される
  • 連続撮影で同秒の場合,連番サフィックスが付与される
  • 撮影成功時にスナックバーが表示される

ブランチ名

feature/capture-save

目的

撮影済み画像の一覧表示,拡大確認,削除機能を実装する.

実装内容

  • providers/gallery_provider.dart — 画像一覧の取得・キャッシュ・削除操作
  • widgets/image_grid.dart — 3 列サムネイルグリッド
  • widgets/image_detail_dialog.dart — 拡大表示ダイアログ(ピンチズーム,削除ボタン)
  • screens/gallery_screen.dart — グリッド・ダイアログの組み込み,空状態メッセージ

テスト

  • GalleryProvider の一覧取得・削除ロジックの Unit テスト

完了基準

  • 一覧画面に撮影済み画像がサムネイルで表示される(新しい順)
  • サムネイルタップで拡大表示ダイアログが開く
  • ダイアログ内の削除ボタンで画像を削除できる(確認ダイアログあり)
  • 画像 0 件時に空状態メッセージが表示される

ブランチ名

feature/gallery-delete

Step 5: 仕上げ (Polish)

目的

パーミッション UX の改善,エラーハンドリングの強化,全体の動作確認を行う.

実装内容

  • パーミッション拒否時の設定画面誘導ボタン
  • 各種エラー時のスナックバー表示の統一
  • 撮影画面↔一覧画面切り替え時のデータリフレッシュ

テスト

  • 全 Unit / Widget テストの通過確認
  • GUIDE_06 の手動確認項目を実機で確認

完了基準

  • GUIDE_06 の手動確認項目がすべて OK
  • dart analyze / flutter test がクリーン
  • 白板・舌模型の撮影ができ,PC から USB 経由で画像にアクセスできる

ブランチ名

feature/polish-permissions