はじめに
開発現場で、データ分析について、「S3のデータを定期的にBigQueryに転送したい」という要件は珍しくありません。しかし、いざ実装しようとすると、以下のような課題に直面します:
- インフラ設計(VPC、ECS、IAM...)が複雑
- Terraformのベストプラクティスを調べるのに時間がかかる
- ドキュメント作成が面倒で後回しにしがち
- セキュリティやコスト最適化の検討漏れが心配
そこで、Claude Code を使うと開発体験がどこまで変わるかを整理しました。
結果として、わずか1時間で以下の成果物ができました。
- ⭕️ 詳細な実装計画書
- ⭕️ 技術アーキテクチャドキュメント
- ⭕️ ステップバイステップ・セットアップガイド
- ⭕️ プロジェクト全体のREADME
本記事では、Claude Codeを使った開発プロセスと、その便利さを実例とともに紹介します。
対象読者
- Terraformを使ったIaC開発に興味がある方
- Claude CodeやAI駆動開発に興味がある方
今回作成したシステムの概要
要件
「特定のS3バケットにあるファイルを定期的に読み込んで、BigQueryに転送させるシステムを作りたい。転送のメイン構成はECSに担当してもらい、インフラ構築はTerraformで行う。」
アーキテクチャ
┌─────────────────────────────────────────────────────────────┐
│ AWS Cloud │
│ │
│ ┌──────────────┐ ┌──────────────────────────────┐ │
│ │ EventBridge │───>│ ECS Fargate │ │
│ │ (Schedule) │ │ ┌────────────────────────┐ │ │
│ └──────────────┘ │ │ Data Sync Container │ │ │
│ │ │ - S3 Reader │ │ │
│ ┌──────────────┐ │ │ - Data Transformer │ │ │
│ │ S3 Bucket │<───│ │ - BigQuery Writer │ │ │
│ │ (Source) │ │ └────────────────────────┘ │ │
│ └──────────────┘ └──────────────────────────────┘ │
│ │ │
│ ┌──────────────┐ │ │
│ │ CloudWatch │<────────────────┘ │
│ │ Logs │ │
│ └──────────────┘ │
└──────────────────────────│──────────────────────────-───────┘
│ BigQuery API
▼
┌────────────────────┐
│ Google Cloud │
│ ┌──────────────┐ │
│ │ BigQuery │ │
│ └──────────────┘ │
└────────────────────┘
技術スタック
- AWS: ECS Fargate, S3, EventBridge, CloudWatch
- GCP: BigQuery
- IaC: Terraform
- アプリケーション: Python (boto3, google-cloud-bigquery)
- コンテナ: Docker, ECR
Claude Codeを使った開発プロセス
Step 1: プロンプトの投入(1分)
まず、Claude Codeに以下のように依頼しました
特定のS3バケットにあるファイルを定期的に読み込んで、BigQueryに転送させるシステムを作ってほしい。
転送のメイン構成はECSを担当してもらう、インフラ構築はTerraformで行う。
まずタスクを分割し、docsに保存してほしい。
たったこれだけです。
Step 2: 自動タスク分割(5分)
Claude Codeが自動的に以下を実行:
- プロジェクト構造の理解
- 全体の実装フェーズに分割
- 各フェーズを詳細なタスクに分解
- ドキュメントファイルの作成
生成されたタスク構造:
## Phase 1: プロジェクト基盤構築
- ディレクトリ構造の作成
- .gitignore の設定
- README.md の作成
...
## Phase 2: Terraformインフラ構築
### 2.1 Terraform基本セットアップ
- Terraformプロジェクト構造の作成
- Backend設定(S3 + DynamoDB)
...
### 2.2 ネットワークインフラ
- VPCモジュールの作成
- Security Groupsの定義
...
### 2.3 IAMロールとポリシー
- ECS Task Execution Roleの作成
- ECS Task Roleの作成
...
Step 3: アーキテクチャドキュメント生成(10分)
続いて、Claude Codeは自律的に以下のドキュメントを生成:
docs/architecture.md
内容:
- システムコンポーネントの詳細
- データフロー図
- ネットワーク設計(VPC、セキュリティグループ)
- セキュリティ設計(IAM、暗号化)
- スケーラビリティとパフォーマンス最適化
- コスト最適化戦略
- モニタリングとロギング
Step 4: セットアップガイド生成(15分)
最後に、実装者向けのステップバイステップガイドを生成:
docs/setup-guide.md
内容:
- 前提条件とツールインストール
- AWS/GCP環境の準備
- コマンドベースの手順(コピペで実行可能)
- トラブルシューティング
- クリーンアップ手順
実際のコマンド例:
# GCPサービスアカウントの作成
gcloud iam service-accounts create bigquery-data-writer \
--display-name="BigQuery Data Writer for S3 Sync"
# サービスアカウントキーの作成
gcloud iam service-accounts keys create ~/gcp-sa-key.json \
--iam-account=bigquery-data-writer@${GCP_PROJECT_ID}.iam.gserviceaccount.com
# AWS Secrets Managerに認証情報を保存
aws secretsmanager create-secret \
--name "${PROJECT_NAME}/gcp-service-account-key" \
--secret-string file://~/gcp-sa-key.json
すべてコピペで実行できる形式になっていました。
Step 5: READMEの更新(5分)
最終的に、プロジェクト全体のREADMEも自動更新:
- プロジェクト概要
- クイックスタート
- ディレクトリ構造
- 設定方法
- コスト見積もり
- トラブルシューティング
- CI/CD例
- ロードマップ
Claude Codeのここがすごい
1. 自律的なタスク管理
Claude Codeは内部でTodoリストを管理し、タスクを順次実行していきます。
✅ プロジェクト構造とアーキテクチャ設計を文書化
✅ Terraformインフラ設計タスクを詳細化
✅ ECSアプリケーション実装タスクを詳細化
✅ タスク分割ドキュメントをdocsに保存
✅ アーキテクチャ詳細ドキュメントを作成
✅ セットアップガイドを作成
✅ README.mdを更新
途中で中断しても、次回から続きを実行できます。
2. ドメイン知識の豊富さ
Terraformのベストプラクティスを熟知しており:
- リモートステート管理(S3 + DynamoDB)
- モジュール設計パターン
- タグ戦略
- セキュリティ設定(最小権限の原則)
- コスト最適化(VPC Endpoints)
すべて自動的に組み込まれます。
3. 複数クラウドの対応
AWS(ECS、S3)とGCP(BigQuery)の連携も理解しており:
- GCPサービスアカウントの作成手順
- AWS Secrets Managerでの認証情報管理
- クロスクラウド通信のセキュリティ
といった複雑な部分も適切に処理します。
4. ドキュメントの質の高さ
生成されたドキュメントは:
- 構造化されている: 階層的で読みやすい
- 実践的: コピペで実行できるコマンド例
- 網羅的: エラーケースやトラブルシューティングも含む
- 視覚的: 図表やテーブルを効果的に使用
5. セキュリティ意識の高さ
以下のような重要なポイントを自動的に組み込み:
## セキュリティチェックリスト
- [ ] IAMロールは最小権限の原則に従っている
- [ ] シークレットはSecrets Managerに保存
- [ ] S3バケットは暗号化されている
- [ ] VPC Endpointsを使用してインターネット経由を回避
- [ ] ECSタスクはプライベートサブネットで実行
- [ ] CloudWatch Logsに機密情報を出力していない
- [ ] GCPサービスアカウントキーは定期的にローテーション
実際の開発での活用Tips
Tip 1: プロジェクトのCLAUDE.mdを活用
プロジェクトルートにCLAUDE.mdを置くと、Claude Codeがそれを読み込んでコーディング規約に従います。
Cursorのmdc版を参考にし、TerraformのベストプラクティスをCLAUDE.mdに記載:
# Terraform Best Practices and Guidelines
## Core Principles
### Remote State Management
- Always use remote state for collaboration
- Enable state locking to prevent concurrent modifications
- Encrypt state files to protect sensitive data
### Naming Conventions
- Use consistent naming across all resources
- Resource names should be nouns
- Use snake_case consistently
Claude Codeはこれを読み込んで、すべてのドキュメントでこの規約に従いました。
Tip 2: 段階的に依頼する
一度にすべてを依頼するのではなく:
- まずタスク分割を依頼
- アーキテクチャドキュメントを依頼
- 実装ガイドを依頼
といった形で段階的に進めると、各ステップで確認・修正ができます。
Tip 3: 具体的な制約を伝える
「ECSを使う」「Terraformで構築」のように、技術スタックや制約を明確に伝えると、より的確な提案が得られます。
ディレクトリ構造の提案
simple-data-sync/
├── docs/
│ ├── task-breakdown.md # 16KB - タスクの詳細計画
│ ├── architecture.md # 20KB - 技術アーキテクチャ
│ └── setup-guide.md # 16KB - 実装手順
│
├── terraform/
│ ├── modules/ # 再利用可能なモジュール
│ │ ├── vpc/
│ │ ├── iam/
│ │ ├── ecs/
│ │ └── eventbridge/
│ └── environments/ # 環境別設定
│ ├── dev/
│ └── prod/
│
└── app/ # アプリケーションコード
├── main.py
├── requirements.txt
├── Dockerfile
├── services/
└── tests/
まとめ
Claude Codeを使ってみたら、速やかにやりたいことを実現してくれる、経験豊富なフルスタックのエンジニアとペアプロしている感覚でした。AWSインフラ構成から、BigQueryの設定手順まで短期間で提案してくれて優秀すぎる!
今後の展開
今回作成したドキュメントをベースに実装を進めていきます。
その様子は続編として執筆予定ですので、ぜひご期待ください!