Architecture Decision Records (ADR)¶
概要¶
このディレクトリには、ぷよぷよゲーム開発プロジェクトで行われた技術的意思決定の記録(Architecture Decision Records)が含まれています。
ADRは、プロジェクトの重要な技術選択の背景、理由、影響を体系的に記録し、将来の開発チームが決定の経緯を理解できるようにするためのドキュメントです。
ADR一覧¶
ADR-0001: TypeScriptの採用¶
決定: ぷよぷよゲーム開発でTypeScriptを主要プログラミング言語として採用する
背景: 高品質なコード、保守性、開発効率、チーム開発への対応が必要
主な理由: - 型安全性の確保によるバグ予防 - 優れた開発体験(IDE支援、自動補完) - JavaScriptとの互換性 - テスト駆動開発との親和性
日付: 2025-07-31
ADR-0002: Vitestの採用¶
決定: テスト駆動開発のためのテストフレームワークとしてVitestを採用する
背景: TDD実践のための高速で効率的なテストフレームワークが必要
主な理由: - Viteとの完全統合による高速実行 - Jest互換APIによる学習コストの低減 - TypeScript完全サポート - 豊富な内蔵機能(アサーション、モック、カバレッジ)
日付: 2025-07-31
ADR-0003: DDDアーキテクチャの採用¶
決定: ドメイン駆動設計(DDD)に基づく3層アーキテクチャを採用する
背景: 複雑なゲームルールの実装と段階的開発に対応するアーキテクチャが必要
主な理由: - ビジネスロジック中心設計による保守性 - 明確な責務分離 - 優れた拡張性とテスタビリティ - TDD実践の促進
アーキテクチャ構成:
src/
├── domain/ # ドメイン層
├── application/ # アプリケーション層
└── infrastructure/ # インフラストラクチャ層
日付: 2025-07-31
ADR-0004: Canvas APIの採用¶
決定: ゲーム描画技術としてHTML5 Canvas APIを採用する
背景: リアルタイムなゲーム描画を実現するための技術選択が必要
主な理由: - 60FPSゲームに適したパフォーマンス - 細かい描画制御の実現 - 適正な学習コスト - 優れたブラウザ互換性
比較対象: DOM+CSS、SVG、WebGL
日付: 2025-07-31
ADR-0005: Vercelデプロイの採用¶
決定: 本番環境デプロイ基盤としてVercelを採用する
背景: 学習プロジェクトに適した効率的なデプロイ環境が必要
主な理由: - フロントエンド特化による最適化 - 優れた開発者体験(ゼロ設定デプロイ) - グローバルCDNによる高性能配信 - GitHub自動連携によるCI/CD
比較対象: GitHub Pages、Netlify、Firebase Hosting
日付: 2025-07-31
ADRの読み方¶
各ADRは以下の構造で記録されています:
基本情報¶
- タイトル: 決定の要約
- 日付: 決定が行われた日付
- ステータス: 提案・受け入れ・却下等の状況
内容構成¶
- コンテキスト: 決定が必要になった背景と制約
- 決定: 選択した技術・手法とその根拠
- 影響: ポジティブ・ネガティブな影響の分析
- コンプライアンス: 決定遵守の確認方法
- 備考: 関連決定、参考資料、実績データ
意思決定の原則¶
このプロジェクトの技術選択は以下の原則に基づいて行われました:
1. 学習効果の最大化¶
- モダンな開発手法の実践
- 業界標準技術の習得
- ベストプラクティスの体験
2. 品質重視¶
- 型安全性の確保
- テスト駆動開発の実践
- 自動化による品質保証
3. 保守性の確保¶
- 明確な責務分離
- 拡張しやすい設計
- ドキュメント化の徹底
4. 開発効率¶
- 適切なツール選択
- 自動化の推進
- 開発者体験の向上
関連ドキュメント¶
統計情報¶
決定実績¶
- 総ADR数: 5件
- 採用決定: 5件(100%)
- 却下決定: 0件
- 保留中: 0件
技術領域別分布¶
- プログラミング言語: 1件(TypeScript)
- テストフレームワーク: 1件(Vitest)
- アーキテクチャ: 1件(DDD)
- 描画技術: 1件(Canvas API)
- デプロイ基盤: 1件(Vercel)
決定時期¶
- 2025-07-31: 5件(プロジェクト開始時一括決定)
将来の検討事項¶
短期(〜3ヶ月)¶
- パフォーマンス最適化手法の評価
- アクセシビリティ対応技術の検討
- 監視・ログ基盤の選択
中期(〜6ヶ月)¶
- PWA(Progressive Web App)対応の検討
- オフライン機能の実装方針
- モバイル最適化技術の選択
長期(6ヶ月〜)¶
- マルチプレイヤー機能のアーキテクチャ
- WebAssembly活用の可能性
- マイクロフロントエンド適用の検討
ADR作成ガイドライン¶
新しいADRを作成する際は以下のガイドラインに従ってください:
命名規則¶
- ファイル名:
NNNN-verb-noun.md
(例:0006-adopt-pwa.md
) - タイトル:
ADR-NNNN: 決定内容の簡潔な説明
作成タイミング¶
- 重要な技術選択を行う前
- アーキテクチャ変更を伴う決定
- チーム全体に影響する技術導入
レビュープロセス¶
- ADRドラフト作成
- チームレビュー
- 必要に応じて修正
- 最終承認・マージ
更新・廃止¶
- ADRは原則として変更しない(履歴を保持)
- 新しい決定で過去の決定を覆す場合は新しいADRを作成
- 明確に関連付けを記述
このドキュメントは技術的意思決定の透明性と継続性を確保するために作成されています。