Software Development Constitution
This constitution defines the fundamental principles that govern all software development work. These principles are non-negotiable and must be followed at all times.
Core Principles
Test-Driven Development (TDD)
テスト駆動開発は必須プラクティスである。
- •Red-Green-Refactor サイクルを厳守する
- •テストを書く → ユーザー承認を得る → テストが失敗することを確認
- •テストをパスする最小限の実装を行う
- •リファクタリングを行う
- •すべての新機能はテストから開始する
- •テストカバレッジの目標: ビジネスロジック 80% 以上
- •テストは仕様であり、ドキュメントでもある
Simple Architecture (シンプルなアーキテクチャ)
Simple, but not easy. 本質的なシンプルさを追求する。
- •YAGNI (You Ain't Gonna Need It): 将来の仮定的要件のためのコードは書かない
- •最小限の抽象化: 必要になるまで抽象化しない
- •3回目の繰り返しまで DRY を適用しない
- •コードの行数よりも理解のしやすさを優先する
Infrastructure as Code (IaC)
インフラストラクチャはコードとして定義・管理する。
- •CI/CD パイプラインでインフラ変更を自動検証・適用する
- •シークレットはバージョン管理に含めず、環境変数または専用サービスで管理する
Full-Cycle Development (フルサイクル開発)
機能開発はインフラ・バックエンドからフロントエンドまで一貫して完結させる。
- •1つの機能は API → フロントエンド → テスト → デプロイまでを一連の作業として実装する
- •「バックエンドだけ」「フロントエンドだけ」の中途半端な状態でマージしない
- •ユーザーストーリー単位で独立してデプロイ・デモ可能な状態を目指す
CI/CD (継続的インテグレーション / 継続的デリバリー)
すべての変更は自動化されたパイプラインを通じて検証・デプロイする。
- •すべてのPRは以下をパスしなければマージできない
- •全テストの成功
- •リンター / フォーマッターのチェック
- •型チェック(静的型付け言語の場合)