エンジニアとして、日々クラウドの深淵に向き合っている君へ。
「Terraformか、CloudFormationか」。この問いは、もはや宗教論争に近い。だが、伝説的なSREの視点から言わせれば、答えは「君が何を管理し、どんな未来を描きたいか」に集約される。
今日は、2026年現在の視点でこの究極の選択を解き明かし、君のインフラ構築を「自動化された芸術」へと昇華させるための指針を授けよう。
—
1. 魂の対決:Terraform vs CloudFormation
まず、両者の「思想」を知る必要がある。
- AWS CloudFormation (CFn)
- 思想: 「AWSのための、AWSによるAWSの守護神」。AWSが提供するネイティブなサービスであり、AWSのAPIと完全に同期している。
- 特徴: テンプレート(JSON/YAML)を投げれば、AWSが勝手にリソースの状態を整合してくれる。
- HashiCorp Terraform
- 思想: 「コードによる世界記述(IaC)の革命」。HCL(HashiCorp Configuration Language)という独自の言語を用い、AWS以外(GitHub、Datadog、オンプレ)まで含めた「世界全体」を抽象化する。
2. 比較の核心:選定のモノサシ
初心者が陥りやすい罠は「どっちが流行っているか」で選ぶことだ。選ぶべきは「君のチームのスコープ」だ。
| 比較項目 | AWS CloudFormation | Terraform |
| :— | :— | :— |
| 学習コスト | 低(AWS知見があれば即戦力) | 中(HCLの学習が必要) |
| マルチクラウド | 不可(AWS専念) | 圧倒的得意(マルチクラウド必須) |
| 状態管理 | AWSが自動管理 | `terraform.tfstate`を自前で管理 |
| 拡張性 | 緩やか(AWS次第) | 非常に高い(Providerエコシステム) |
—
3. AWS特化の現場:CFnを選ぶべき理由
もし君のインフラが100% AWSで完結し、かつ「AWSの複雑な依存関係(スタックの入れ子など)をAWS側に丸投げしたい」なら、CFnは強力な相棒になる。設定ミスによる意図しないリソース削除をAWS側でブロックしてくれる安心感は、大規模なエンタープライズ環境では何物にも代えがたい。
4. 実践:Hello World への最短ルート
理屈はここまでだ。まずは「コードでインフラが生まれる」感動を味わおう。今回は、最も汎用性が高いTerraformでのセットアップを示す。
Step 1: インストール
macOSならHomebrew一択だ。
brew tap hashicorp/tap
brew install hashicorp/tap/terraform
Step 2: 最初のインフラ定義 (main.tf)
空のディレクトリを作り、以下のコードを `main.tf` として保存する。
AWSプロバイダーの設定。どのリージョンで動かすかを指定する
provider “aws” {
region = “ap-northeast-1”
}
最小限のS3バケットを定義(これがHelloWorldだ)
resource “aws_s3_bucket” “my_first_bucket” {
bucket = “my-unique-bucket-name-2026-test” # バケット名は世界でユニークに!
tags = {
Environment = “Dev”
ManagedBy = “Terraform”
}
}
Step 3: 魔法のコマンド
ターミナルで以下を順に叩いてくれ。
1. `terraform init` :必要なプラグインをダウンロードする。「インフラを構築する準備」を整える儀式だ。
2. `terraform plan` :「これから何が起きるか」をシミュレーションする。これが超重要だ。 実行前に破壊的な変更がないかを確認する癖をつけよう。
3. `terraform apply` :いざ実行。yesと入力すれば、君のコードが物理的なインフラとして具現化する。
—
伝説のSREからのアドバイス:移行と選定のポイント
- 最初の一歩: 迷ったらTerraformから入ることを強く勧める。理由は「Provider」という概念を理解すれば、AWS以外のサービス(GitHubの権限管理、Cloudflareの設定など)もIaCで管理できるからだ。これは君のエンジニアとしての市場価値を劇的に高める。
- 移行のタイミング: もし小規模なCFnで運用していて、マルチクラウド化や「IaCの抽象化」が必要になったら、その時こそがTerraformへ舵を切るタイミングだ。
最後に一つだけ覚えておいてほしい。
ツールはただの道具だ。一番大切なのは「すべての作業をコード化し、誰がやっても同じ結果が出る(冪等性)」という哲学を、君の指先に染み込ませることだ。
さあ、エディタを開いて、君だけのインフラを記述してくれ。何かあれば、いつでもまた聞きに来るといい。君の旅路が素晴らしいものになることを願っている。