イテレーション 6 ふりかえり
概要
| 項目 |
内容 |
| イテレーション |
6 |
| 期間 |
Week 11-12(2 週間) |
| ゴール |
PHP 版を Python 版から展開し、TDD で実装する |
| 実績 SP |
3 / 3 SP(達成率 100%) |
KPT
Keep(良かったこと・続けること)
- TDD サイクルの徹底: Red → Green → Refactor を 1 章ずつ実施し、145 テスト・170 アサーションが全パスした
- Python 版の知見活用: IT-1(Python 版)の実装パターンを参照しながらスムーズに展開できた
- classmap オートローディング採用: 複数クラスを 1 ファイルに定義できる
classmap 方式に切り替え、PHP の柔軟な設計を活かした
- strict_types 宣言:
declare(strict_types=1) を全ファイルに適用し、型安全なコードを徹底した
- PHP 8 の新機能活用: コンストラクタプロモーション、
match 式、enum 型(BucketStatus)を積極的に活用した
- 章ごとのコミット: 実装と記事を同一コミットで完結する規律を維持できた
- メモリ効率の工夫: EightQueen で
\Countable ラッパーを使い全組み合わせをカウントのみ保持するよう設計を改善した
Problem(課題・改善すべきこと)
- 記事の執筆方針誤り: 最初に Ruby 版をベースにして記事を作成してしまい、Python 版をベースにすることが決まっていたにもかかわらず全章を書き直す手戻りが発生した
- EightQueen のメモリ問題: 8^8 = 16,777,216 件の配列を保存しようとして
Allowed memory size exhausted エラーが発生した(Countable ラッパーで解決)
- オートローダー設定の誤り: PSR-4 では複数クラスを 1 ファイルに定義できず
Class not found エラーが発生、classmap に切り替えが必要だった
- CI ワークフロー未追加: PHP 版の
ci-php.yml を作成する必要がある
Try(次のイテレーションで試したいこと)
- CI ワークフロー(
ci-php.yml)を追加して自動テスト体制を整備する
- 記事執筆を開始する前に執筆方針(Python 版をベース)を再確認してから着手する
- Go 版(IT-7)では Go の標準ライブラリ(
sort, strings)を積極的に活用し、Go らしいコードを意識する
ベロシティ
| イテレーション |
計画 SP |
実績 SP |
達成率 |
| 1(Python) |
5 |
5 |
100% |
| 2(TypeScript) |
3 |
3 |
100% |
| 3(Java) |
3 |
3 |
100% |
| 4(C#) |
3 |
3 |
100% |
| 5(Ruby) |
3 |
3 |
100% |
| 6(PHP) |
3 |
3 |
100% |
| 合計 |
20 |
20 |
100% |
累積 SP: 20 / 61(Phase 1: 20 / 20 SP = 100% 完了)
品質メトリクス
| メトリクス |
値 |
| テスト件数 |
145 |
| アサーション数 |
170 |
| テスト通過率 |
100% |
| 作成ファイル数 |
実装 6 + テスト 6 + 記事 10 = 22 |
| テストフレームワーク |
PHPUnit 11 |
| PHP バージョン |
PHP 8.5.3 |
更新履歴
| 日付 |
更新内容 |
更新者 |
| 2026-04-12 |
初版作成 |
- |