# 実装完了フロー (Implementation Completion Flow)

本ドキュメントでは，機能実装の完了からコミット・PR 作成までの手順を定義する．
リファクタリングの判断基準もここで定める．

## コミット前チェックリスト (Pre-commit Checklist)

機能実装が完了したら，以下を順番に実施する．

### 1. 静的解析

```bash
dart analyze
```

- 警告・エラーが 0 件であることを確認する
- `// ignore:` で抑制する場合は理由をコメントに記述する

### 2. フォーマット

```bash
dart format .
```

- 差分がないことを確認する（VS Code の保存時フォーマットが有効なら通常は差分なし）

### 3. テスト実行

```bash
flutter test
```

- 全テストが通ることを確認する
- 新しいロジックを追加した場合はテストも追加する（[GUIDE_06](GUIDE_06_テスト方針.md) 参照）

### 4. ドキュメント確認

- 仕様変更がある場合は `docs/` のドキュメントを先に更新する
- 新しいファイルを追加した場合は CLAUDE.md の参照パスを更新する

### 5. コミット・PR

- [GUIDE_04](GUIDE_04_Git運用ルール.md) に従ってコミット・push・PR 作成を行う

## 実装完了の基準 (Definition of Done)

以下をすべて満たした場合に「実装完了」とする．

- [ ] 要求された機能が動作する
- [ ] `dart analyze` で警告・エラーが 0 件
- [ ] `dart format` で差分がない
- [ ] `flutter test` で全テストが通る
- [ ] 新しいロジックに対するテストが追加されている
- [ ] 関連ドキュメントが更新されている

## リファクタリング方針 (Refactoring Policy)

### 実施タイミング

- **機能実装中**: 実装対象のコードに限り，必要に応じてリファクタリングする
- **機能実装後**: 動作確認が完了してからリファクタリングを行う（動くコードを壊さない）
- **独立した作業として**: 機能追加と同じコミットに混ぜない．`[clean]` タグで別コミットにする

### 判断基準

以下のいずれかに該当する場合にリファクタリングを検討する．

| 基準 | 例 |
| --- | --- |
| 同じコードが 3 箇所以上に重複している | 共通ロジックのメソッド抽出 |
| 1 ファイルが 300 行を超えている | クラスやウィジェットの分割 |
| 1 メソッドが 50 行を超えている | メソッドの分割 |
| クラスの責務が 2 つ以上混在している | クラスの分割 |

### やらないこと

- 動作に問題のないコードの「予防的」リファクタリング
- 将来の要件を見越した過度な抽象化
- 機能追加と同一コミットでのリファクタリング
