Skip to content

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には以下の情報が含まれています:

  • ステータス: 提案/承認/廃止の状態
  • コンテキスト: 決定が必要になった背景
  • 決定内容: 具体的な選択と理由
  • 影響: ポジティブ・ネガティブな影響
  • コンプライアンス: 決定遵守の確認方法

これらの記録は、プロジェクトの進行に伴い定期的に見直され、必要に応じて更新されます。