概要
- エージェント時代の「良いコード」の必須要素
- 100%コードカバレッジの重要性と運用方法
- ディレクトリ構造・型・自動化の最適化
- 開発環境の即時構築と並列実行
- 型システム・自動ツール活用による品質担保
エージェント時代の「良いコード」の本質
- テストの徹底、 明確なドキュメント、 小さくスコープの明確なモジュール、 静的型付け の重要性
- これらは従来「任意」だったが、 エージェント には必須要素
- 人間 は後からリファクタや修正が可能だが、エージェントは「汚れを広げるRoomba」になりやすい危険性
- ガードレール (自動化された制約やチェック)の設定・運用が不可欠
- ガードレールが弱いと、 痛い目に遭う リスク
- 強固なガードレールがあると、 LLM は正解まで自律的に試行錯誤可能
100%コードカバレッジの価値
- チームの最重要かつ物議を醸すガイドラインは「 100%コードカバレッジ」
- 100%カバレッジは バグゼロ を保証するものではなく、 全コードの挙動確認 を目的
- 95%や99.99%では「どの行をテストすべきか」の判断が残るが、100%で 曖昧さが消失
- カバレッジレポートが テストToDoリスト として機能
- テストは エージェントの自由度を減らし、挙動の明示的検証を強制
- 到達不能コードの削除、 エッジケースの明示化、 具体例によるコードレビューの容易化 が副次効果
ファイル構成と粒度の最適化
- エージェントは主に ファイルシステム を通じてコードベースをナビゲート
- 意味のあるディレクトリ構成・ファイル名 設計の重要性
- 例: ./billing/invoices/compute.ts > ./utils/helpers.ts
- 小さくスコープの明確なファイル を多数用意
- ファイルが短いほど LLMが全体を文脈に保持しやすく、エージェントのパフォーマンスが向上
開発環境の自動化と並列実行
- 従来の「一つの開発環境」から 複数同時・自動構築 へシフト
- ガードレール(テスト等)の高速化 が必須
- 例: npm testごとに新DB作成・マイグレーション・全テストを高速実行
- キャッシュ活用 で10,000+アサーションを1分以内で完了
- 新機能開発コマンド (例: new-feature <name>)で即座に環境・設定を自動構築
- 環境ごとの完全な分離 (ポート、DB名、キャッシュ等)を徹底
- Docker 等の利用で容易に実現可能
型システムと自動ツールによる品質担保
- 自動リンター・フォーマッター の厳格運用と自動適用
- TypeScript などの強力な型付き言語推奨
- Pythonの型注釈よりTypeScriptの型システムが優秀
- 型によって 不正な状態や遷移を排除 し、 意図の明示 と 探索空間の縮小 を実現
- 意味のある型名 (UserId, WorkspaceSlug, SignedWebhookPayload等)でエージェントの理解を補助
- OpenAPI による型付きクライアント生成でフロント・バックエンドの整合性確保
- Postgresの型システムとチェック・トリガー でデータ正当性も担保
- Kysely 等で型付きTypeScriptクライアントを自動生成
エージェント時代の開発文化
- エージェントは 疲れ知らずで優秀なコーダー だが、 環境次第で力を発揮
- 従来「余計」とされてきた良いコードの作法が 本質的価値 へ
- 初期投資は「税金」のように感じるが、 長期的な生産性・品質向上 に不可欠
- エンジニアリングリーダーシップの理解と支援 を得て、理想的なコードベースを実現