記事公開日
AIツールを使ったIaC開発 ― 手書きとの効率差を検証

この記事のポイント
これまでAWSマネジメントコンソールから手作業でインフラを構築してきた新人エンジニアが、TerraformとClaude Codeを組み合わせてWordPress向けのマルチAZ構成を構築した記録です。AIによるIaC開発が「手書き」とどれだけ効率が違うのかを、実際に手を動かして検証しました。
- CLAUDE.mdでルールを先に固める:
命名規則・ディレクトリ構成・terraform apply/destroyの自動実行禁止といった運用ルールをCLAUDE.mdに定義してから着手することで、生成されるコードの品質と安全性が安定します。 - コーディング時間は圧倒的に短縮:
ファイル作成すら不要になり、AWSコンソールで複数タブを行き来していた作業が、プロンプトと生成物のレビューだけで完結しました。 - AI任せにしない姿勢が不可欠:
古いプロバイダーバージョンや古いAMIが選択されるなど、そのままでは動かないコードも生成されました。「本当に正しいのか」を疑える技術力がAI活用の前提になります。
▼ 無料ダウンロード資料
Claude 導入チェックリスト(情報システム・セキュリティ部門向け)
プラン選定・監査ログ・SSO・テナント制限・コスト管理・運用ポリシーまで、Claude / Claude Code を組織へ安全に導入するための確認項目を6カテゴリで整理。導入プロジェクトの進捗管理・監査証跡としてそのままご活用いただけます。
はじめに
こんにちは。DXソリューション営業本部の松榮です。
今回はTerraformでClaude Codeを使用して、簡単なAWSインフラを構築してみました。
これまでの学習ではAWSのマネジメントコンソールから様々なサービスを作成してきましたが、今回はTerraformを利用して、コードによるインフラ構築を経験しました。また、Claude Codeも用いて、これまで自身の手で行ってきたことをAIを使用して効率的に作成する経験もしました。
このブログでは、AIを用いたIaC開発において感じたことや、AI・IaCツールを使用する上で気を付けるべきことを共有したいと思います。
IaCとは
IaCとは Infrastructure as Code の略で、サーバーやネットワークなどのインフラの構築・設定を手作業ではなくコードで記述して自動化する手法のことです。IaCにより、時間のかかる手動プロセスを介さず、インフラストラクチャの望ましい状態を定義することができます。
IaCの主なメリット
| メリット | 内容 |
|---|---|
| ヒューマンエラーの防止 | 手作業による設定ミスや、設計書と実際の環境のズレを防ぐことができる。 |
| 環境を簡単に複製可能 | 同じIaCを使用して、同じ環境を別のシステムにデプロイすることができる。 |
| 変更履歴の管理 | Gitなどのバージョン管理システムで「誰が・いつ・何を変更したか」を追跡、共有しやすくなる。 |
Terraform
今回使用したTerraformはIaCツールの一つで、構築したAWSのほかに、Microsoft AzureやGoogle Cloudなど様々なクラウドサービスに対応しています。
TerraformではHCL(HashiCorp Configuration Language)という独自の宣言型言語を使用しています。インフラをコード化する際によくあることとして、インフラをプロビジョニングするために段階的なコードを書かなければいけないことがあります。ですがTerraformでは、ユーザーはインフラリソースの最終状態を記述するだけで、あとはTerraform側がどのリソースから作成していくのかを特定したうえで、正しい順序でプロビジョニングしてくれます。
Terraformで作成するアーキテクチャ
今回作成するのは、AWS上でWordPressサイトを可用性高く稼働させるための構成です。
VPC(10.0.0.0/16)の入り口にインターネットゲートウェイとApplication Load Balancer(ALB)を配置し、2つのアベイラビリティゾーンにトラフィックを振り分けます。各AZのパブリックサブネットには、WordPressを稼働させるEC2(t3.micro)を配置しています。(今回は検証のため簡易的にパブリックサブネットに配置。本番環境ではプライベートサブネットに配置し、ALB経由でのみアクセスされる構成が推奨されます。)データベース層はNAT Gatewayを配置していない(アウトバウンド通信なし)プライベートサブネットに、RDS for MySQLをMulti-AZ構成で配置します。
この構成をClaude Codeを使用してTerraformで作成します。
| レイヤー | 配置 | 主なリソース |
|---|---|---|
| ネットワーク | VPC 10.0.0.0/16 | インターネットゲートウェイ、パブリック/プライベートサブネット(2AZ) |
| ロードバランサー | パブリックサブネット | Application Load Balancer(ALB) |
| アプリケーション | パブリックサブネット(各AZ 1台) | WordPress稼働EC2(t3.micro) |
| データベース | プライベートサブネット(NATなし) | RDS for MySQL(Multi-AZ) |
作成手順
CLAUDE.mdでルールを整備する
最初に、Claude Codeを起動するためにコマンドプロンプトで、上記のインフラを作成するディレクトリで claude と入力します。次にClaude Codeで作成をしていくにあたってのルールを、CLAUDE.mdファイルに作成します。
上記のように簡単なプロンプトを投げることで、知識をまったく持っていなくても、命名規則やコーディング規約のルールを作成することができます(実際には詳細を含めたプロンプトを投げることが望ましいです)。
出てきたmdファイルを見て、修正が必要な点や追加が必要な項目があれば追記します。今回では、terraform apply や terraform destroy などリソースの作成・削除については自動実行しない、といったルールを追加しています。個々のルール整備をすることで、複雑な命名などの現象を防ぐことができます。
生成されたCLAUDE.mdには、次のようなルールが定義されました。
- 最重要ルール:「
terraform applyとterraform destroyは絶対に自動実行しない」「承認は"その回のみ"有効」「-auto-approveオプションは使用しない」など、状態を変更する操作へのガードレール - ディレクトリ構成の基本方針:
environments/<env>/で環境を分離し、再利用可能な単位はmodules/<module_name>/に切り出す。1モジュール1責務を意識する - ファイル分割:
main.tf/variables.tf/outputs.tf/providers.tf/versions.tfを最低限の単位として分けて配置する
実際のインフラ構築
CLAUDE.mdを作成し終えたら、実際のインフラ構築に移ります。Claude Codeに対して、以下のプロンプトを投げます。
Claude Codeは投げられたプロンプトに対して、確認事項を何件かしてくることがあります。いくつかの質問に答えることで、実際にTerraformのコードを書き始めます。
生成されたTerraformのファイル構成(クリックで拡大)
指示を出すだけで、インフラ構築に必要なファイルが作成されます。プロバイダーの選定からバージョンを決めるファイルなどが作成され、EC2やRDSなどのサービスは modules 配下に作成されました。
各 variables.tf に変数を加えてNameタグの値やCIDRブロックの値を入力します。あとはターミナルで terraform apply を実行すると、アーキテクチャ図のようにインフラが構築されていきます。
Claude Codeでのコーディングと手書きの効率差
今回Claude Codeを使用してコーディングを行いました。自身の手で書いていくこととの圧倒的な違いは、やはりコーディングにかかる時間です。
手書きでのコーディングは限りなく時間がかかるのに対して、Claude Codeを使用することで、コーディングやファイルを作成することすら不要です。出来上がったコードの内容を自身で確認するだけでインフラ構築を行えます。変更したい点や各部分を確認したいときも、Claude Codeに聞くことで要点を絞りながら効率的に変更を加えることができます。
また、これまではAWSマネジメントコンソール上でひとつずつサービスを構築していました。複数のタブを開いて、各サービス間を行き来しながら作成していましたが、今回はそんな時間のかかることをしなくても作成できました。IaCツールを使用することのメリットを大きく感じました。
| 観点 | AWSコンソール/手書き | Claude Code+Terraform |
|---|---|---|
| コード作成 | 1ファイルずつ自分で記述する | プロンプトから一括生成。ファイル作成も不要 |
| サービス間の行き来 | 複数タブを開いて画面を移動する | ターミナル内で完結する |
| 仕様変更・確認 | 該当箇所を自分で探して修正する | Claude Codeに聞いて要点を絞って修正できる |
| 主な作業内容 | 構築作業そのもの | 生成物のレビューと判断 |
気を付けるべきこと
今回の経験を通して感じた気を付けるべきことは、AI任せにしすぎないことです。
Claude Codeを利用して作成していきましたが、AIが作成する成果物がすべて正しいこととは限りません。今回でも最初に作成されたファイルだけではインフラを構築することができず、エラーを吐くことが多々ありました。プロバイダーのバージョンを旧型のものを使用していたり、古いAMIを選択していたりと、常に正しい成果物を出してくれているわけではありませんでした。
出されてきた成果物に対して、本当に正しいものなのかと疑うことも、AIを利用する上でとても重要なことだと感じました。
まとめ
Claude Codeを使ってIaC開発をすることで、時間をかけずに効率的にインフラを構築することができました。コンソール上での作成や手書きでコードを書くこととは異なり、とても簡単にインフラを構築できました。
しかし、その過程でAIを使う際の懸念点であったり、難しさを感じることにもなりました。今回の経験を通して、「どんなAIを使うのか」ではなく「誰がAIを使うのか」という観点も重要になるなと感じました。AIをうまく活用していくためにも、AWSなど様々な技術を身に付けていきたいと思います。
QESでは、ガバナンス整備・セキュアな利用環境構築・利活用コンサルティング・セキュリティレビューまで、Claude / Claude Code の組織導入を一貫して支援しています。AWS(Amazon Bedrock)経由での提供にも対応しています。支援内容は下記のサービスページ、および無料の「Claude 導入チェックリスト」をご覧いただくか、お問い合わせフォームよりお気軽にご相談ください。
▼ 無料ダウンロード資料
Claude 導入チェックリスト(情報システム・セキュリティ部門向け)
プラン選定・監査ログ・SSO・テナント制限・コスト管理・運用ポリシーまで、Claude / Claude Code を安全に導入するための確認項目を6カテゴリで整理。導入プロジェクトの進捗管理・監査証跡としてそのままご活用いただけます。
※Amazon Web Services、”Powered by Amazon Web Services”ロゴ、およびブログで使用されるその他のAWS商標は、米国その他の諸国における、Amazon.com, Inc.またはその関連会社の商標です。
※このブログで参照されている、Anthropic、Claude、Claude Code、Claude Cowork は、Anthropic, PBCの米国およびその他の国における商標または登録商標です。
※Terraform、HashiCorp Configuration Language(HCL)は、HashiCorp, Inc.の米国およびその他の国における商標または登録商標です。
※WordPressは、WordPress Foundationの米国およびその他の国における商標または登録商標です。
※Microsoft、Azureは、米国Microsoft Corporationの米国およびその他の国における商標または登録商標です。Google、Google Cloudは、米国およびその他の国におけるGoogleの商標または登録商標です。


