ADR(Architecture Decision Records)¶
ぷよぷよゲーム開発における重要な技術決定の記録です。
決定記録一覧¶
001-フロントエンド技術スタック選定.md¶
決定: React + TypeScript + Vite を採用
- 型安全性と開発効率の向上
- 豊富なエコシステムとコミュニティサポート
- 高速な開発サーバーとビルド最適化
002-状態管理アーキテクチャ.md¶
~~非推奨~~
~~決定: React Context API + useReducer を採用~~
- ~~小〜中規模アプリケーションに適したシンプルさ~~
- ~~Reduxライクな予測可能な状態更新~~
- ~~外部依存なしでのTypeScript統合~~
→ 007-依存性注入とアーキテクチャリファクタリング.md で置換
003-レンダリング手法.md¶
決定: React DOM + CSS を採用
- アクセシビリティ対応の容易さ
- レスポンシブデザインの実装しやすさ
- 標準的なWeb技術による保守性
004-テスティング戦略.md¶
決定: Vitest + React Testing Library + Playwright を採用
- Viteとの高速統合とESMサポート
- ベストプラクティスに基づくテストアプローチ
- クロスブラウザ対応の信頼性の高いE2Eテスト
005-デプロイメント戦略.md¶
決定: Vercel + GitHub Actions を採用
- Reactアプリケーションに最適化されたホスティング
- 自動プレビューデプロイメントとCDN最適化
- GitHub統合による継続的デプロイメント
006-コード品質管理サービス.md¶
決定: Codecov を採用
- GitHub Actionsとの優れた統合と自動レポート生成
- PRコメントでのカバレッジ変化の可視化
- 継続的な品質管理とトレンド解析
007-依存性注入とアーキテクチャリファクタリング.md¶
決定: カスタムDIコンテナ + GameUseCaseパターン を採用
- Clean Architecture準拠の5層アーキテクチャ実現
- 型安全なDIシステムによる疎結合化
- SOLID原則遵守とテスタビリティの大幅向上
- 002-状態管理アーキテクチャ.md を置換
008-アーキテクチャルール検証.md¶
決定: dependency-cruiser による自動化されたアーキテクチャ整合性チェック を採用
- Clean Architectureルールの自動検証とCI/CD統合
- レイヤー間依存関係・循環依存の予防的検出
- 依存関係グラフの可視化とレポート生成
- 予防的品質管理による技術的負債の抑制
ADRの目的¶
Architecture Decision Records(アーキテクチャ決定記録)は以下の目的で作成されています:
1. 意思決定の透明性¶
- なぜその技術を選択したのかの明確な記録
- 代替案の検討プロセスの可視化
- 将来のメンテナンス時の参考資料
2. チーム間の共有¶
- 技術選定の背景と理由の共有
- 新メンバー参加時のオンボーディング支援
- ステークホルダーへの説明資料
3. 将来の見直し¶
- 決定の見直し時期の明確化
- 影響範囲とリスクの把握
- 技術進化に応じた再評価の指針
決定の変遷¶
採用技術の一貫性¶
8つのADRを通じて、以下の一貫した方針が見られます:
- 品質重視: 型安全性、テスタビリティ、保守性の確保
- 標準技術活用: Web標準とソフトウェア工学ベストプラクティスに準拠
- 開発効率: 高い開発体験と生産性の確保
- 長期保守性: Clean Architectureによる変更容易性
アーキテクチャの進化¶
- Phase 1: 基本技術スタック決定(ADR 001-006)
- Iteration 3-4間: アーキテクチャリファクタリング実施(ADR 007)
- Context + useReducer → カスタムDI + GameUseCase
- 4層 → 5層アーキテクチャへ進化
- 型安全性完全実現(any型排除)
- Iteration 4完了後: 予防的品質管理強化(ADR 008)
- 手動アーキテクチャチェック → 自動化されたルール検証
- dependency-cruiserによる継続的アーキテクチャ監視
相互補完性¶
各決定が他の決定と相互に補完し合う設計:
- ViteとVitestの統合による高速開発サイクル
- TypeScriptとDIによる包括的な型安全性
- Clean ArchitectureとSOLID原則による高品質設計
- 345テストケースによる品質保証
レビューと更新¶
各ADRには以下の情報が含まれています:
- ステータス: 提案/承認/廃止の状態
- コンテキスト: 決定が必要になった背景
- 決定内容: 具体的な選択と理由
- 影響: ポジティブ・ネガティブな影響
- コンプライアンス: 決定遵守の確認方法
これらの記録は、プロジェクトの進行に伴い定期的に見直され、必要に応じて更新されます。