この記事で得られること
- Claude Codeを使った大規模開発のリアル
- AIに任せていいこと、人間が判断すべきこと
- 20万行のコードベースでの実際のワークフロー
数字で見るプロジェクト
| 項目 | 数値 |
|---|---|
| コード行数 | 約20万行(Go 84k + TypeScript 113k) |
| 開発期間 | 約3ヶ月(2025年10月〜) |
| コミット数 | 311 |
| 開発者 | 1人 |
| ポータル | 4つ(System / Provider / Reseller / Consumer) |
| API | 4つ(各ポータル専用) |
1人で、3ヶ月で、20万行。
正直に言うと、このコードの大半はClaude Codeが書いた。私がやっているのは、方向性を決めて、レビューして、判断すること。
Claude Codeとは
Anthropicが提供するCLIベースのAIコーディングエージェント。ChatGPTやCopilotとの違いは:
- 自律的に動く: 「この機能を実装して」と言えば、ファイルを読み、コードを書き、テストを実行する
- コンテキストが広い: 20万トークン(約15万行相当)を一度に理解できる
- CLIネイティブ: VSCodeに依存せず、ターミナルで完結
実際のワークフロー
1日の流れ
朝: Issueを1つ選ぶ
↓
Claude Code: 「この機能を実装して」
↓
Claude Code: 仕様書(spec.md)を生成
↓
私: レビュー、修正指示
↓
Claude Code: 設計書(plan.md)を生成
↓
私: レビュー、承認
↓
Claude Code: 実装
↓
私: 動作確認、コードレビュー
↓
Claude Code: テスト作成
↓
私: マージ
私の作業時間は1日2-3時間。残りはClaude Codeが動いている間に別のことをしている。
具体例:Order作成機能
先日実装した「Order作成UI」を例に取る。
私の入力(1行):
Cart/Quote経由ではなく、画面から直接Orderを作成できる機能を追加する。
Claude Codeの出力:
- 仕様書(ユースケース、機能要件、非機能要件)
- API設計(6エンドポイント)
- フロントエンド設計(2ポータル × 3ページ)
- 実装コード(Go + TypeScript)
- E2Eテスト
- 国際化対応(日本語/英語)
所要時間: 約4時間(うち私の作業は1時間程度)
AIに任せていること
1. 仕様の構造化
「こういう機能がほしい」という曖昧な要望を、構造化された仕様書に変換する。
Before(私の入力):
Providerが自社のConsumerに直接Orderを作れるようにしたい
After(Claude Codeの出力):
| |
私の頭の中にある「なんとなくこういう感じ」を、漏れなく整理してくれる。
2. 既存パターンの踏襲
20万行のコードベースを読んで、既存のパターンに合わせたコードを生成する。
例えば:
- APIエンドポイントの命名規則
- エラーハンドリングのパターン
- フロントエンドのディレクトリ構成
- テストの書き方
これが一番価値がある。新しいコードが既存コードと一貫性を保つ。人間が書くと、つい自分のクセが出て、コードベース全体の統一感が崩れる。
3. 繰り返し作業
4ポータル × 4APIという構成上、同じようなコードを4回書く場面が多い。
例:新しいエンティティを追加する場合
- Handler(4API分)
- Router設定(4API分)
- フロントエンドページ(4ポータル分)
- 型定義(共通パッケージ)
- E2Eテスト(4ポータル分)
これを手作業でやると半日かかる。Claude Codeなら30分。
4. テスト作成
実装コードからテストケースを導出する。エッジケースも網羅的に洗い出す。
| |
テストを書くのは退屈な作業。AIに任せて正解。
人間が判断していること
1. 何を作るか
「次に何を実装するか」はAIに決めさせない。ビジネス優先度、技術的負債、ユーザーからのフィードバック——これらを総合的に判断するのは人間の仕事。
2. トレードオフの選択
AIは選択肢を提示してくれるが、最終判断は人間。
例:認証方式の選択
Claude Code: 「JWTとセッションベース、どちらにしますか?」
私: 「JWTで。理由は〇〇」
AIは「どちらが正しいか」を決められない。コンテキスト(チーム規模、運用体制、将来の拡張性)を踏まえた判断は人間にしかできない。
3. セキュリティの最終確認
RLS(Row-Level Security)のポリシー、認証・認可のロジック——これらは必ず人間がレビューする。
AIは「動くコード」を書けるが、「安全なコード」かどうかは別問題。
4. 「やらない」の判断
AIは頼まれたことをやろうとする。「この機能は不要」「この実装は過剰」という判断は人間がする。
実際、Claude Codeが提案した機能の3割は「今はいらない」と却下している。
生産性への影響
定量的な変化
| 指標 | Before(AI以前の経験) | After(Claude Code) |
|---|---|---|
| 1機能あたりの実装時間 | 2-3日 | 4-6時間 |
| 1日のコミット数 | 2-3 | 5-10 |
| テストカバレッジ | 気合次第 | 常に80%以上 |
体感で3-5倍速い。
定性的な変化
- 退屈な作業が減った: ボイラープレート、テスト、ドキュメント
- 設計に時間を使える: 実装はAIに任せて、アーキテクチャを考える時間が増えた
- 一貫性が保てる: 20万行でもコードスタイルが統一されている
注意点と限界
1. レビューは必須
Claude Codeが書いたコードをそのままマージしてはいけない。必ず読む。
実際、10回に1回くらいは「これは違う」という実装が混じる。AIを信頼しつつ、検証は怠らない。
2. コンテキストの限界
20万トークンは広いが、20万行のコードベース全体を一度に理解することはできない。
対策として、関連ファイルを明示的に指定したり、セッションを分けたりしている。
3. 最新情報には弱い
Claude Codeの知識は学習時点で止まっている。最新のライブラリ更新やベストプラクティスは、人間が補完する必要がある。
4. コストがかかる
Claude Codeは無料ではない。月額数十ドル〜数百ドル。ただし、開発効率の向上を考えれば十分にペイする。
1人開発 × AI の可能性
3ヶ月前、「4ポータル × 4APIを1人で作る」と言ったら、正気を疑われただろう。
今は違う。AIエージェントがいれば、1人でも企業規模のシステムを構築できる。
ただし、AIは「10人分の手」であって「10人分の頭」ではない。
- 方向性を決めるのは人間
- 判断するのは人間
- 責任を取るのも人間
AIは優秀なジュニアエンジニアのようなもの。指示すれば何でもやってくれるが、何を指示すべきかは自分で考える必要がある。
まとめ
| ポイント | 内容 |
|---|---|
| 規模 | 20万行、4ポータル × 4API |
| 期間 | 3ヶ月、311コミット |
| AIの役割 | 仕様の構造化、既存パターンの踏襲、繰り返し作業、テスト |
| 人間の役割 | 優先度判断、トレードオフ選択、セキュリティ確認、「やらない」判断 |
| 生産性 | 体感3-5倍 |
1人でも、AIと組めば、大きなものが作れる時代になった。
シリーズ記事
- 第1回: 保守不可能な複雑さに自動化で立ち向かう
- 第2回: CI環境でのWebAuthnテスト自動化
- 第3回: Next.js × Go モノレポアーキテクチャ
- 第4回: PostgreSQL RLSによるマルチテナント分離
- 第5回: マルチポータル認証の落とし穴
- 第6回: Claude Codeで20万行のSaaSを1人で開発している話(この記事)