見出し画像

気軽にAIに語りかけたら、webサービスが完成する開発環境を1ヶ月で作った話


始まりは、開発の「面倒くささ」への不満だった

「また環境構築に1時間かかった...」 「コミットメッセージ、何書こう...」 「テストが落ちた原因、調べるの面倒だな...」

GCPでマイクロサービスを開発するたび、こんな小さな「面倒くささ」が積み重なっていました。本当に作りたいのはサービスの機能なのに、周辺作業に時間を取られる日々。

「AIに任せられる作業は、全部AIに任せたい」

この思いから、ゼロからGCP開発テンプレート基盤とAIワークフローを作り始めました。約1ヶ月後、最終的にこんなことができるようになりました:

make awf FEATURE="ユーザー認証機能を追加して"

このコマンド一つで、AIが要件分析から実装、テスト、コミットまで全部やってくれます。

この記事では、どうやってこの仕組みを作ったのか、技術的なポイントを交えながら解説します。


作ったもの:全体像

システム構成

GCP上で動作するモダンなマイクロサービス開発環境です:

┌─────────────────────────────────────────┐
│   開発者(自然言語で指示)              │
└──────────────┬──────────────────────────┘
               │
               ▼
┌─────────────────────────────────────────┐
│   AIワークフロー(Claude)               │
│   ・要件分析                             │
│   ・設計・実装                           │
│   ・テスト生成・実行                     │
│   ・デバッグ・修正                       │
│   ・コミット                             │
└──────────────┬──────────────────────────┘
               │
               ▼
┌─────────────────────────────────────────┐
│   GCP環境                                │
│   ・Cloud Run(API & ML Service)       │
│   ・Cloud Build(CI/CD)                │
│   ・Firestore / Cloud SQL               │
└─────────────────────────────────────────┘

特徴的な仕組み

1. 二層Docker構造で高速ビルド

変更頻度の低いシステムツール層と、開発ツール層を分離。初回8分かかるビルドが、2回目以降は30秒になります。

2. 差分デプロイで時短

変更があったマイクロサービスだけを自動検出してデプロイ。10サービスあっても、1サービスの変更なら3分でデプロイ完了。

3. AI駆動の開発サイクル

コミットメッセージ生成から、テスト失敗の原因分析、コード修正まで、AIが自律的に実行します。


進化の歴史:v7.x → v11.x

Phase 1: 小さな自動化から(v7.x - v8.x前半)

最初は「コミットメッセージの自動生成」という小さな機能から始めました。

$ git add src/auth/login.ts
$ make ai-commit-dry

生成されたコミットメッセージ:
================================
feat(auth): ログイン機能にリフレッシュトークンを実装

- トークンの有効期限を15分に設定
- リフレッシュトークンで自動再認証を実装
- エラーハンドリングを改善
================================

毎回「どう書こう...」と悩んでいた時間が消えました。小さいけれど、確実に開発体験が向上。

次に追加したのがPR自動レビュー。Pull Requestの変更内容をAIが分析して、コードの品質、セキュリティ、パフォーマンスの観点からレビューコメントを投稿します。

Phase 2: AIが能動的に問題解決(v8.x後半 - v9.x)

転機は、E2Eテストへのmodel Context Protocol (MCP) 統合でした。

従来:テストが失敗 → エラーログ読む → 原因調査 → 修正(30分)

改善後:テストが失敗 → AIがスクリーンショットとエラーログを分析 → 修正案を提示(5分)

実際の分析例:

原因: セレクタ #login-button が見つかりません
理由: 最近のコミット a1b2c3d でボタンのIDが変更されています
提案: data-testid="login-submit" を使用してください

AIが単なるツールから、積極的に問題を解決するパートナーに変わった瞬間でした。

この時期には他にも:

  • 統合アップグレードシステム: テンプレートを新バージョンに安全に移行(自動バックアップ、競合解決、検証付き)

  • 破壊的変更の自動検出: APIやDBスキーマの変更を自動でチェック

  • API互換性チェック: バージョン間の互換性を保証

Phase 3: 開発環境のワンクリック構築(v10.x)

「新メンバーが入ったら環境構築に半日かかる」問題を解決しました。

make env-install

このコマンド一つで、Docker、Node.js、Claude CLI、Python(uv)、Playwright、gcloud CLIが自動インストールされます。

効果:

  • 従来: 手動で各ツールをインストール → 10-15分

  • 改善後: make env-install → 3-5分

さらに、GCP特化のリリース自動化も実装。バージョン更新、Gitタグ作成、Cloud Build、Cloud Runデプロイまで、対話形式で一貫して実行できます。

Phase 4: 完全自律型AIワークフロー(v11.x)

ついに、開発プロセス全体を自動化する「AIワークフロー」が完成しました。

使い方:

make awf FEATURE="ユーザー認証機能を追加してください"

AIが実行する8つのPhase:

Phase 0.5: 対話で最適化
├─ 「時間予算は?」「品質レベルは?」
└─ 回答に応じてPhase数を自動調整

Phase 1: 要件分析
└─ 自然言語を構造化データに変換

Phase 2: 設計計画
└─ アーキテクチャとファイル構成を決定

Phase 3: 実装
├─ コード生成
├─ 型チェック
└─ 自動修正

Phase 4-6: テスト
├─ 単体テスト生成・実行
├─ 統合テスト
└─ E2Eテスト(失敗時は原因分析して修正)

Phase 7: 品質チェック
├─ Linter
├─ セキュリティスキャン
└─ コードカバレッジ測定

Phase 8: Git操作
├─ コミットメッセージ生成
└─ コミット & プッシュ

実行例(抜粋):

=== Phase 0.5: ワークフロー最適化 ===
どのくらい時間をかけられますか?
1) 30分以内(クイック実装)
2) 1-2時間(標準実装)
3) 半日以上(高品質実装)
選択 (1-3): 2

求める品質レベルは?
1) MVP(動作確認のみ)
2) プロダクション相当
3) エンタープライズグレード
選択 (1-3): 2

設定完了:
  実行Phase数: 5
  E2Eテスト: 実行
  パフォーマンステスト: スキップ

=== Phase 1: 要件分析 ===
✓ 要件分析完了
  JWTベースのユーザー認証システム

=== Phase 3: 実装 ===
  実装中: services/api/src/routes/auth.ts
  実装中: services/api/src/controllers/auth.controller.ts
  実装中: services/api/src/middleware/auth.middleware.ts
✓ 実装完了

=== Phase 4: 単体テスト ===
  テスト生成中: services/api/src/routes/auth.test.ts
  ✓ 12 tests passed
✓ 単体テスト完了

=== Phase 8: Git操作 ===
コミットメッセージ:
feat(auth): ユーザー認証機能を実装

- JWTベースの認証システム
- ログイン・ログアウトエンドポイント
- 認証ミドルウェア
- パスワードハッシュ化(bcrypt)

Tests: 12 passed
Coverage: 87%

コミットしますか? (y/n)
選択: y
✓ コミット完了

朝、このコマンドを実行してミーティングに出る。戻ってきたら、認証機能が実装され、テストも通り、コミットまで完了している。


技術的なポイント

1. アーキテクチャ

サービス構成:

  • API Gateway: TypeScript/Express.js

  • ML Service: Python/FastAPI

  • データ層: Firestore(リアルタイム)、Cloud SQL(トランザクション)、Pub/Sub(非同期)

インフラ:

  • Cloud Run: サーバーレス、自動スケーリング

  • Cloud Build: CI/CD

  • Secret Manager: 機密情報管理

2. CI/CDの工夫

差分デプロイの仕組み:

  1. GitHub Actionsが変更されたファイルを検出

  2. 影響のあるサービスだけビルド

  3. Cloud Buildで並列デプロイ

  4. Cloud Runに自動反映

結果: 10サービス全体で30分 → 1サービスなら3分

3. AI統合の技術スタック

  • Claude CLI: Anthropic APIのラッパー

  • MCP (Model Context Protocol): テスト失敗時の文脈理解

  • GitHub Actions: PR自動レビューの実行環境

4. セキュリティ考慮事項

本記事のコード例は開発環境を想定しています。本番環境では以下を追加してください:

認証・認可:

  • Cloud Runサービスに適切な認証を設定(--no-allow-unauthenticated)

  • API GatewayにJWT検証やAPIキー認証を実装

機密情報管理:

  • 全ての機密情報はSecret Managerで管理

  • 環境変数に直接記述しない

ネットワークセキュリティ:

  • VPC内での通信を基本とする

  • 必要最小限のポート・IPのみ許可

定期的なスキャン:

  • npm audit、pip auditの定期実行

  • コンテナイメージの脆弱性スキャン

  • 静的解析ツール(SonarQube等)の導入


達成した成果

1. 開発速度の劇的な向上

  • 環境構築: 15分 → 5分(67%削減)

  • デプロイ: 10分 → 3分(70%削減)

  • コミット作業: 2分 → 30秒(75%削減)

2. 品質の向上

  • テストカバレッジ: 自動生成により平均85%以上を維持

  • E2E失敗時の原因特定: 手動30分 → AI分析5分

  • セキュリティ脆弱性: 自動スキャンで早期発見

3. 開発者体験の改善

  • 新メンバーのオンボーディング時間が大幅短縮

  • ルーティン作業からの解放

  • 創造的な仕事に集中できる時間が増加

次のステップ: AgentとMCP中心のアーキテクチャへ

現在、Claudeのplugin機能(MCP Servers)の登場を機に、テンプレート全体をリアーキテクチャしています。

新しいアーキテクチャのコンセプト:

  1. 独自スクリプトの排除

    • オリジナルのシェルスクリプトをMCP標準プロトコルに置き換え

    • より汎用的で保守しやすい構成へ

  2. MCPサーバーの活用

    1. mcp-servers/ ├── filesystem/ # ファイル操作 ├── git/ # Git操作 ├── github/ # GitHub API統合 ├── postgres/ # データベース操作 ├── playwright/ # ブラウザ自動化 └── custom/ ├── gcp-deploy/ # GCPデプロイ └── code-quality/ # 品質チェック

  3. Claude Desktopとの統合

    • IDE不要の開発環境

    • 自然言語でファイル作成からデプロイまで実行

    • プロジェクト固有の知識をコンテキストとして活用

目指す姿:

開発者がClaudeと会話するだけで、設計からデプロイまでの全工程を完遂できる「AIペアプログラマー」環境。従来のテンプレートで培ったノウハウを、MCP標準に再構築することで、より普遍的な開発基盤になります。


まとめ

この1ヶ月で学んだこと:

  1. 小さく始める

    • 最初はコミットメッセージ生成という小さな自動化から

    • 段階的に機能を拡張していった

  2. AIは「パートナー」として設計する

    • 単なるツールではなく、能動的に問題を解決する存在

    • 人間は創造的な判断に集中、AIは機械的な作業を担当

  3. 開発者体験が最重要

    • 技術的に優れているだけでは不十分

    • 「使いやすい」「分かりやすい」が成功の鍵

  4. 標準プロトコルの重要性

    • 独自実装より、MCPのような標準に乗る方が長期的に有利

    • エコシステムの恩恵を受けられる

これからの開発の形:

エンジニアとして本当に情熱を注ぎたいのは、環境構築でもテストコード書きでもありません。ユーザーの課題を解決する、創造的な仕事のはずです。

AIがルーティンワークを引き受けてくれるなら、私たちはもっと本質的な価値創造に時間を使えます。

この記事で紹介したテンプレートは、AIと人間が協調してソフトウェアを開発する未来の形を、具体的に示す試みです。まだ発展途上ですが、可能性は無限大だと感じています。


関連リンク:


技術スタック(まとめ):

  • 言語: TypeScript, Python

  • フレームワーク: Express.js, FastAPI

  • GCP: Cloud Run, Cloud Build, Firestore, Cloud SQL, Pub/Sub

  • AI: Claude (Anthropic), Model Context Protocol

  • CI/CD: GitHub Actions

  • テスト: Jest, Playwright, k6


この記事が、AI活用に取り組むエンジニアの参考になれば幸いです。
質問やフィードバックがあれば、ぜひコメントで教えてください!


💬 AI・DXについて詳しく相談したい方へ

社内業務効率化や、カスタムAI開発について無料でご相談いただけます。

明生ライジングの実験室より。
https://www.akiorizing.com/

いいなと思ったら応援しよう!