# SmTIAS-Capture

千葉大学 TIAS（舌画像撮影・解析システム）のスマートフォン版．Flutter で開発し，初期は撮影・保存に特化する．

## 開発進捗

最新: CameraProvider をテスト可能化（依存注入・撮影フロー特性化テスト・takePicture 分割）
※ 本欄は**最新ステップ 1 行のみ上書き更新**．詳細な進捗履歴（動機・設計判断・失敗パターン）は [docs/PROGRESS.md](docs/PROGRESS.md) に追記する．運用ルールは `.claude/rules/progress-log.md` を参照（該当ファイル編集時に自動ロードされる）．

## 必須ルール（コード実装時）

### コーディング規約（.claude/rules/coding-style.md 準拠）

- Effective Dart に準拠．プロジェクト固有ルールは `.claude/rules/coding-style.md`（`lib/**`・`test/**` 編集時に自動ロード）を参照
- `dart format` + `dart analyze` を必ず実行してからコミットする
- 1 ファイル 1 クラス．命名は Provider / Service / Screen の接尾辞ルールに従う
- エラー処理: Service → Provider → Screen の順で伝播し，画面でユーザーに通知

### コミット前チェック

1. `dart analyze` — 警告・エラー 0 件
2. `dart format .` — 差分なし
3. `flutter test` — 全テスト通過
4. ドキュメント更新（仕様変更がある場合）

### Git 運用（.claude/rules/git-conventions.md 準拠）

- ブランチ名・コミットメッセージの書式は `.claude/rules/git-conventions.md` に従う（常時ロードされる）
- コミットは `/commit` を使用する（push・PR 作成は `/commit push`，マージ・プルまで行う場合は `/commit merge`）
- **`/commit` はユーザーが明示的に指示した時のみ実行する．Claude が自発的に `/commit` や `git commit` を呼んではならない**（`/implement` 完了後も，案内するだけで自分ではコミットしない）
  - **例外**: 以下の無人運転ループはユーザー承認済みの例外として専用ブランチに自律コミットする．いずれも push・PR・マージ・`main` への操作はしない（取り込みは人間が `/commit push` 等で行う）
    - `/auto-refactor`（リファクタ／ドキュメント整理ループ）→ `refactor/` 専用ブランチ
    - `/auto-audit`（バグ／脆弱性の巡回監査ループ）→ `fix/` 専用ブランチ
  - **例外（`main` へのマージ）**: `/deps-update` は，Dependabot が作成した依存更新 PR に限り，ゲート（メジャー更新でない・競合なし・CI 緑またはローカル検証緑）を満たすものを `gh pr merge` で `main` に取り込む（ユーザーが明示的に起動した時のみ．メジャー更新・CI 赤・PR が付かない alert は報告して人間が判断する）
- **ops-runner によるマージは承認済みの定常操作**: `/commit merge` および `/deps-update` では，ユーザーが明示的に起動したことを受けて，ops-runner サブエージェント（軽量モデル）が手順書に従い `git push` → `gh pr create` → `gh pr merge --merge --delete-branch` で自リポジトリの PR を `main` にマージする．force push・`--admin`・`main` への直接 push は行わない（権限設定は `docs/01_GUIDE/GUIDE_01` の「Claude Code の権限設定」）

### テンプレート同期

- テンプレートの更新は `/sync-template` で取り込む
- テンプレート由来のファイル（`.claude/agents/`・`skills/`・`rules/`・`hooks/`，`docs/01_GUIDE/`）を**このプロジェクトの都合で意図的に変更した**ときは，`.claude/template-overrides.md`（テンプレート改変台帳）に理由付きで記録する（`.claude/rules/template-customization.md`．該当ファイル編集時に自動ロードされる）．記録が無いと次回同期で改変が消えうる

### タスク管理（任意）

- やるべきことを GitHub Issues で管理してよい（solo / team 共通）．`/task-create`（起票・事前計画）→ `/task-start <Issue番号>`（着手準備）→ `/task-handoff`（中断時の引継ぎメモ投稿）を使う
- Issue は必須ではない．小さい変更や試験的作業は Issue 無しで進めてよい
- solo モードでは進捗記録（`.claude/rules/progress-log.md`）は従来どおり運用し，Issue はタスクの管理・引継ぎの補助として使う

### エージェントチーム（GUIDE_02 準拠）

- 実装は `/implement <タスク>` で開始する（コーディング → テスト → リファクタリング → ドキュメント更新）
- Phase 1 後に人間が動作確認，Phase 2 でテスト失敗時のみ方針判断
- Phase 2 成功後は Phase 3 → Phase 4 まで自動で進む（Phase 4 で更新がある場合のみ確認）
- テスト・リファクタリングをスキップしない

### 開発コマンド

- 起動・テスト・lint・ビルド等のコマンドは `docs/02_ENV/ENV_04_開発コマンド.md` にまとめる．**実行前に必ず参照し，推測でコマンドを試さない**
- コマンドが新しく確定・変更された時は同ファイルに反映する（`/implement` の Phase 4 でも見直される）

### 手動確認が必要な作業（自分で完了させないこと）

以下は実装完了後にユーザーへ報告し，確認・実施を依頼すること．

- 外部サービスの設定（コンソール操作，セキュリティルール変更等）
  - 例外: `gh` CLI で操作できる GitHub リポジトリ設定（Dependabot alerts / security updates の有効化）は Claude が `gh api` で行う（手順は `.claude/skills/setup/reference.md`，背景は GUIDE_01「環境構築」）
- 実機・ブラウザでの動作確認
- ストアへのアップロード・リリース作業

## ドキュメント

設計・規約に関する情報は docs/ にある．
コードを書く前に関連するファイルを読むこと．

### 01_GUIDE（運用フロー・ガイド）

- プロジェクト立ち上げフロー: docs/01_GUIDE/GUIDE_01_プロジェクト立ち上げフロー.md
- エージェント運用ルール: docs/01_GUIDE/GUIDE_02_エージェント運用ルール.md
- ※ GUIDE_03 は team モード専用（チーム開発ルール）．solo モードでは配置されない
- ※ 実装完了フロー・コミット前チェックは GUIDE_02 と `/implement` で定義（本ファイル上部「必須ルール」も参照）

### .claude/rules（常時／編集時に自動ロードされる規約）

- Git 運用: .claude/rules/git-conventions.md（常時ロード）
- ドキュメント書式: .claude/rules/markdown-style.md（`**/*.md` 編集時）
- ファイル命名: .claude/rules/docs-naming.md（`docs/**` 編集時）
- 進捗記録: .claude/rules/progress-log.md（CLAUDE.md・docs/PROGRESS.md 編集時）
- テンプレート改変記録: .claude/rules/template-customization.md（テンプレート由来ファイル編集時）
- コーディング規約: .claude/rules/coding-style.md（`lib/**`・`test/**` 編集時）
- プロジェクト構成: .claude/rules/project-structure.md（`lib/**`・`test/**` 編集時）
- エラーハンドリング: .claude/rules/error-handling.md（`lib/**` 編集時）
- テスト方針: .claude/rules/testing.md（`test/**` 編集時）

### 02_ENV（環境）

- 技術スタック: docs/02_ENV/ENV_01_技術スタック.md
- 環境構築手順: docs/02_ENV/ENV_02_環境構築手順.md
- 管理者用環境構築手順: docs/02_ENV/ENV_03_管理者用環境構築手順.md
- 開発コマンド: docs/02_ENV/ENV_04_開発コマンド.md

### 03_PLAN（計画）

- 要件定義書: docs/03_PLAN/PLAN_01_要件定義書.md
- 開発ステップ: docs/03_PLAN/PLAN_02_開発ステップ.md

### 04_SPEC（仕様・設計）

- 画面機能仕様書（画面・遷移・UI・パーミッション）: docs/04_SPEC/SPEC_01_画面機能仕様書.md
- カメラ撮影仕様書（カメラ制御・撮影フロー・ファイル管理）: docs/04_SPEC/SPEC_02_カメラ撮影仕様書.md
- アーキテクチャと非機能（コード構成・非機能要件）: docs/04_SPEC/SPEC_03_アーキテクチャと非機能.md
- プレビュー向きとクロップ（反転・クロップの座標系・変更時の確認手順）: docs/04_SPEC/SPEC_04_プレビュー向きとクロップ.md

### 05_TECH（技術設計・外部要求仕様）

- 定量モード設計の経緯と合意（旧 TECH_01/03/04 の往復書簡を統合・要約．現行確定仕様は SPEC_02 参照）: docs/05_TECH/TECH_01_定量モード設計の経緯と合意.md

### 06_TEST（テスト・実機検証）

- AQUOS sense3 カメラ能力診断結果（2026-05-31）: docs/06_TEST/camera_diagnostics_20260531_161734.json
