1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AIに頼んだらTerraformのコードが一瞬で出てきた。でも、それで本当にインフラを理解できるのか?

1
Posted at

はじめに

先日、ちょっとした実験をしました。

ChatGPTに「EC2インスタンスをTerraformで作って。パブリックサブネットに置いて、SSHできるようにして」とだけ打ち込んでみたんです。

30秒もしないうちに、main.tf のコードが出てきました。VPC、サブネット、セキュリティグループ、キーペア。必要なリソースが一式そろって。

正直、最初は「すごい」と思いました。でも同時に、少し怖くなった。

「これを見て、インフラを"わかった"と思い込む人が増えるんじゃないか」 と。

この記事は、AI活用を否定したいわけではありません。私自身、日常的に使っています。ただ、現場で見てきた「AIコードで躓くパターン」をもとに、正直な話をしたいと思います。

この記事を読むと、以下のことができるようになります。

  • AIが生成したTerraformコードの落とし穴を具体的に把握できる
  • 「使える人」と「理解している人」の差を言語化できる
  • AIを正しく活用しながらインフラ理解を深める学習法がわかる

AIがTerraformコードを書くのは得意

AIが生成するTerraformコードは、確かにレベルが高いです。

たとえば「ALBとECSのFargateで簡単なWebアプリの構成を作って」と聞けば、こんなコードが出てきます。

resource "aws_lb" "app" {
  name               = "app-alb"
  internal           = false
  load_balancer_type = "application"
  subnets            = var.public_subnet_ids
  security_groups    = [aws_security_group.alb.id]
}

resource "aws_ecs_cluster" "app" {
  name = "app-cluster"
}

resource "aws_ecs_task_definition" "app" {
  family                   = "app-task"
  requires_compatibilities = ["FARGATE"]
  network_mode             = "awsvpc"
  cpu                      = "256"
  memory                   = "512"

  container_definitions = jsonencode([{
    name  = "app"
    image = var.container_image
    portMappings = [{
      containerPort = 80
      protocol      = "tcp"
    }]
  }])
}

構文は正しい。AWSの仕様にも沿っている。terraform plan も通る。

でも、これを「動かすだけ」で終わっている人が、現場で詰まります。


現場で起きる「AIコード頼り」の3つの詰まりパターン

パターン1:エラーが出たとき、何も言えない

本番環境に近い構成で terraform apply を実行したら、こんなエラーが出たとします。

Error: InvalidParameterException: The provided target group does not have the same VPC as the load balancer.

このエラー、VPCの設定を正しく理解していれば「ALBとターゲットグループのVPCが違う」とすぐわかります。でもコードをコピーしただけでは、VPCとサブネットの関係が頭に入っていないので、どこを直せばいいかすらわからない。

パターン2:セキュリティの穴を見落とす

AIが生成するセキュリティグループは、動作確認を優先して 0.0.0.0/0 を許可するコードを出してくることがあります。

resource "aws_security_group_rule" "allow_ssh" {
  type        = "ingress"
  from_port   = 22
  to_port     = 22
  protocol    = "tcp"
  cidr_blocks = ["0.0.0.0/0"]  # 全世界にSSH開放
  security_group_id = aws_security_group.ec2.id
}

「インターネット全体にSSHを開けてはいけない」という基礎知識がなければ、これを本番に適用してしまいます。実際、こういうインシデントは起きています。

パターン3:コスト爆発に気づかない

NAT Gatewayの構成をAIに聞いたとき、何も指定しなければマルチAZ構成のコードが出てくることがあります。

resource "aws_nat_gateway" "az_a" {
  allocation_id = aws_eip.az_a.id
  subnet_id     = aws_subnet.public_a.id
}

resource "aws_nat_gateway" "az_b" {
  allocation_id = aws_eip.az_b.id
  subnet_id     = aws_subnet.public_b.id
}

NAT Gatewayは1つあたり約$30〜$50/月+データ転送費用がかかります。可用性のために2つ立てると、開発環境でも月$100を超える可能性があります。

「なぜこの構成にするのか」を理解していなければ、コストの見直しすらできません。


AIが苦手なこと:現場の「文脈」を読めない

AIはコードを書くのは得意ですが、文脈を読むのが苦手です。

  • このシステムの可用性要件はどれくらいか
  • 開発環境と本番環境で構成を変えるべきか
  • セキュリティ要件は何を守ればいいか
  • コストの上限はどこか

こういった「現場の文脈」は、AIに教えてあげないと反映されません。そして、これを「教えられる人」になるためには、インフラの基礎知識が必要です。

AIとインフラエンジニアの関係を整理すると、以下のようになります。

AIは中間の「コード生成」を担うツールです。要件の整理とレビューは、人間がやります。


「使える人」と「理解している人」の差

AI時代に広がる格差は、スキルではなく理解の深さだと感じています。

観点 AIコードを貼るだけの人 理解して使う人
エラー対応 「なぜ動かないか」わからない 原因を推測して修正できる
セキュリティ 穴を見落とす レビューで問題を指摘できる
コスト 気づかずに積み上がる 意図的に構成を選べる
説明責任 「AIが書いた」で終わる 設計の意図を言語化できる

現場でのレビューや、顧客への説明のとき、この差が出ます。

AIはあなたのスキルを証明してくれません。それは自分でやるしかない。


AIを使いながら理解を深める3つの学習法

「だからAIを使うな」ということではありません。むしろ逆です。AIを使いながら、理解を深める学び方があります。

1. AIのコードを「写経」する

AIが出してきたコードを、意味を調べながら手で打ち直す。コピペせずに、1行ずつ意味を確認する。面倒に見えて、これが一番定着します。

2. AIを「教師」として使う

コードを書かせた後に「このコードのVPCとサブネットの役割を説明して」と聞き返す。するとAIは丁寧に解説してくれます。生成ツールとしてだけでなく、学習補助として使うのが効果的です。

3. 実際に壊してみる

セキュリティグループのルールを変えて、通信が止まるのを確認する。NAT Gatewayを削除して、プライベートサブネットからの通信がどう変わるかを見る。

動いている状態だけ見ていても、仕組みは理解できません。壊して、直す経験が理解を作ります。


まとめ

この記事では以下のことを解説しました。

  • AIが生成するTerraformコードには、エラー対応・セキュリティ・コストの落とし穴がある
  • AIは「現場の文脈」を読めないため、要件整理とレビューは人間が担う必要がある
  • AIを写経・対話・破壊実験の学習ツールとして使うことで理解が深まる

AIコードが一瞬で出てくる時代だからこそ、「なぜそのコードなのか」を説明できる人の価値が上がっています。

まず1つ、AIが出してきたコードを写経してみてください。それだけで、見える景色が変わります。

疑問や「自分はこう使っている」があれば、ぜひコメントで教えてください!


ハンズオンラボでは、未経験からでも「作って覚える」をモットーにしたITハンズオンイベントを定期開催しています。

👉 イベント一覧はこちら


面白かったら
「👇いいね」で応援

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?