- Google AntigravityはTerraform/Pulumi/CDKのコード生成・レビュー・最適化を自然言語で効率化できる
- 既存インフラのIaC化(逆引きインポート)やドリフト検知もAIで自動化可能
- マルチクラウド対応のモジュール設計でSES案件の対応力が大幅に向上する
Infrastructure as Code(IaC)はクラウド運用の必須スキルですが、Terraform HCLやPulumiのコード記述は学習コストが高く、SES現場で苦戦するエンジニアも少なくありません。結論から言うと、Google Antigravityを活用すれば、IaCの記述・レビュー・最適化を劇的に効率化できます。
この記事はGoogle Antigravity活用シリーズの第34回として、IaCに特化したAntigravityの実践テクニックを解説します。
- AntigravityでTerraformコードを効率的に生成する方法
- 既存インフラのIaC化(terraform import)を自動化するテクニック
- Pulumiを使ったプログラマティックIaCの実装方法
- IaCコードのセキュリティレビュー・コスト最適化
- SES案件で即活用できるIaCテンプレート集
なぜGoogle Antigravity × IaCが強力なのか
Gemini の大規模コンテキスト能力
Google AntigravityはGeminiモデルの大規模コンテキストウィンドウを活用し、数千行規模のTerraformコードベース全体を把握した上で、適切なモジュール設計やリファクタリングを提案できます。
Antigravityが得意なIaCタスク:
- コード生成: 自然言語でインフラ要件を伝えるだけでHCL/Pulumiコードを生成
- レビュー: セキュリティ・コスト・パフォーマンス観点でのコードレビュー
- リファクタリング: DRY原則に基づくモジュール分割と再利用性の向上
- ドキュメント: 変数・出力の説明やアーキテクチャ図の自動生成
- トラブルシューティング: terraform plan/applyのエラー解析と修正
プロジェクトコンテキストの活用
Antigravityの設定ファイルにIaCプロジェクトの情報を定義することで、より精度の高いコード生成が可能です。
# .antigravity/context.md
## IaCプロジェクト情報
- ツール: Terraform 1.7 + OpenTofu
- プロバイダ: AWS (primary), Google Cloud (secondary)
- 状態管理: S3 + DynamoDB ロッキング
- モジュールレジストリ: Terraform Registry + 社内プライベートレジストリ
- CI/CD: GitHub Actions + Atlantis
- ポリシー: OPA/Conftest + tfsec
- 命名規約: {env}-{service}-{resource}
Terraformコード生成の実践テクニック
VPCとネットワーク構成の生成
Antigravityプロンプト例:
「AWS VPCを構築するTerraformコードを生成して。
要件:
- CIDR: 10.0.0.0/16
- AZ: 3つ(ap-northeast-1a/c/d)
- パブリックサブネット: 3つ(/24)
- プライベートサブネット: 3つ(/24)
- NAT Gateway: シングル(コスト重視)
- VPCフローログ: CloudWatch Logs出力
- タグ: terraform管理タグ付与
モジュールとして再利用可能な設計にして。」
# Antigravityが生成するVPCモジュールの例
module "vpc" {
source = "./modules/vpc"
name_prefix = "${var.environment}-${var.service_name}"
vpc_cidr = "10.0.0.0/16"
availability_zones = ["ap-northeast-1a", "ap-northeast-1c", "ap-northeast-1d"]
public_subnet_cidrs = ["10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24"]
private_subnet_cidrs = ["10.0.11.0/24", "10.0.12.0/24", "10.0.13.0/24"]
enable_nat_gateway = true
single_nat_gateway = true
enable_flow_logs = true
flow_log_destination = "cloud-watch-logs"
tags = merge(var.common_tags, {
ManagedBy = "terraform"
Module = "vpc"
})
}
ECS Fargateサービスの構成
Antigravityプロンプト例:
「ECS FargateでWebアプリをデプロイするTerraformを書いて。
コンポーネント:
- ECSクラスター
- タスク定義(CPU: 256, Memory: 512)
- サービス(desired_count: 2)
- ALB + ターゲットグループ
- CloudWatchログ
- IAMロール(最小権限)
- Security Group(ALB→ECSのみ許可)
変数化してモジュールとして使えるようにして。」

既存インフラのIaC化
マネジメントコンソールで手動作成されたリソースをTerraformに取り込む作業は、SES案件で頻繁に発生します。
Antigravityプロンプト例:
「以下のAWSリソースをterraform importでIaC化して。
リソース一覧:
- VPC: vpc-0abc123def456
- EC2: i-0abc123def456(t3.medium)
- RDS: mydb-instance(PostgreSQL 15)
- S3: my-app-bucket
各リソースのimportコマンドと対応するTerraformコードを生成して。
terraform state list → terraform import → terraform planの
手順も含めて。」
Pulumiによるプログラマティック IaC
TypeScript/PythonでのIaC
Pulumiを使えば、汎用プログラミング言語でインフラを定義できます。AntigravityはPulumiコードの生成にも対応しています。
Antigravityプロンプト例:
「PulumiのTypeScriptでAWS ECSサービスを構築するコードを書いて。
awsx(Crosswalk)パッケージを使ってシンプルに。
ALB + ECS Fargate + RDS の3層構成で。」
// Antigravityが生成するPulumiコードの例
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
import * as awsx from "@pulumi/awsx";
const config = new pulumi.Config();
const environment = config.require("environment");
// VPC
const vpc = new awsx.ec2.Vpc(`${environment}-vpc`, {
cidrBlock: "10.0.0.0/16",
numberOfAvailabilityZones: 3,
natGateways: { strategy: "Single" },
tags: { Environment: environment, ManagedBy: "pulumi" },
});
// ECS Cluster
const cluster = new aws.ecs.Cluster(`${environment}-cluster`, {
settings: [{ name: "containerInsights", value: "enabled" }],
});
// ALB
const alb = new awsx.lb.ApplicationLoadBalancer(`${environment}-alb`, {
subnetIds: vpc.publicSubnetIds,
securityGroups: [],
});
// Fargate Service
const service = new awsx.ecs.FargateService(`${environment}-api`, {
cluster: cluster.arn,
networkConfiguration: {
subnets: vpc.privateSubnetIds,
securityGroups: [],
},
taskDefinitionArgs: {
container: {
name: "api",
image: "registry.example.com/api:latest",
cpu: 256,
memory: 512,
portMappings: [{ containerPort: 8080, targetGroup: alb.defaultTargetGroup }],
environment: [
{ name: "NODE_ENV", value: environment },
],
},
},
desiredCount: 2,
});
export const url = alb.loadBalancer.dnsName;
IaCコードのセキュリティレビュー
tfsecとの統合
Antigravityを使ってtfsecの警告を分析し、修正案を自動生成できます。
Antigravityプロンプト例:
「tfsecの結果を分析して修正して。
WARNING: aws-s3-enable-bucket-encryption
WARNING: aws-s3-enable-bucket-logging
WARNING: aws-ec2-no-public-ingress-sgr
CRITICAL: aws-iam-no-policy-wildcards
各警告の修正コードを生成して。
理由もコメントで記載して。」
コスト最適化分析
Antigravityプロンプト例:
「このTerraformコードのコストを分析して。
infracostのような見積もりと、コスト削減の提案を出して。
特に以下をチェック:
- 過剰プロビジョニングされたインスタンス
- リザーブドインスタンス/Savings Plans適用の余地
- 不要なNAT Gatewayやデータ転送コスト
- S3ストレージクラスの最適化
月額の概算とともに代替案を提示して。」
Terraformモジュール設計のベストプラクティス
モジュール構成の標準化
Antigravityはモジュール設計のベストプラクティスに基づいたリファクタリングを提案します。
Antigravityプロンプト例:
「このTerraformコードをモジュールに分割してリファクタリングして。
基準:
- 1モジュール1責務(ネットワーク、コンピュート、DB、監視)
- variables.tf / outputs.tf / main.tf の分離
- README.md自動生成
- examples/ディレクトリにサンプル構成
- validation blockで入力値検証」
ステート管理の設計
# Antigravityが生成するバックエンド設定の例
terraform {
backend "s3" {
bucket = "company-terraform-state"
key = "services/api-server/terraform.tfstate"
region = "ap-northeast-1"
dynamodb_table = "terraform-state-lock"
encrypt = true
}
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
required_version = ">= 1.7"
}
CI/CDパイプラインでのIaC自動化
Atlantisとの連携
Antigravityプロンプト例:
「Atlantis用のatlantis.yamlを生成して。
プロジェクト構成:
- modules/vpc → 全環境で共有
- environments/dev → devアカウント
- environments/staging → stagingアカウント
- environments/prod → prodアカウント(plan自動、apply手動承認)
ワークフロー: tfsec → terraform plan → コスト見積もり → PR通知」
# Antigravityが生成するAtlantis設定の例
version: 3
automerge: false
parallel_plan: true
parallel_apply: false
projects:
- name: dev
dir: environments/dev
workflow: standard
autoplan:
when_modified: ["**/*.tf", "../modules/**/*.tf"]
enabled: true
- name: staging
dir: environments/staging
workflow: standard
autoplan:
when_modified: ["**/*.tf", "../modules/**/*.tf"]
enabled: true
- name: prod
dir: environments/prod
workflow: production
autoplan:
when_modified: ["**/*.tf", "../modules/**/*.tf"]
enabled: true
apply_requirements: [approved, mergeable]
workflows:
standard:
plan:
steps:
- run: tfsec . --format json || true
- init
- plan
apply:
steps:
- apply
production:
plan:
steps:
- run: tfsec . --minimum-severity HIGH
- init
- plan
- run: infracost breakdown --path .
apply:
steps:
- run: echo "Production apply requires manual approval"
- apply
IaCの基本的なCI/CD統合についてはGoogle Antigravity × CI/CD自動化ガイドも参照してください。
SES現場で使えるIaCテンプレート集
テンプレート1: 3層Webアプリケーション
以下の3層Webアプリケーションインフラを構築するTerraformを書いて。
構成:
- フロントエンド: CloudFront + S3(静的サイトホスティング)
- バックエンド: ECS Fargate + ALB
- データベース: RDS Aurora PostgreSQL(マルチAZ)
- キャッシュ: ElastiCache Redis
- モニタリング: CloudWatch + SNSアラート
セキュリティ要件:
- WAF(ALB前段)
- VPC内にプライベートサブネットのみ
- Secrets Managerで認証情報管理
テンプレート2: マルチアカウント管理
AWS Organizationsでマルチアカウント管理するTerraformを書いて。
アカウント構成:
- Management Account(請求統合)
- Security Account(GuardDuty, SecurityHub)
- Shared Services(Transit Gateway, DNS)
- Dev / Staging / Prod(各ワークロード)
SCPで最低限のガードレールも設定して。
テンプレート3: Google Cloud基本構成
Google CloudのTerraformでWebアプリ基盤を構築して。
構成:
- Cloud Run(バックエンドAPI)
- Cloud SQL PostgreSQL(プライベートIP)
- Cloud Storage(静的ファイル)
- Cloud CDN + Load Balancer
- Cloud Armor(WAF)
- VPC + Cloud NAT
Google Cloud固有のベストプラクティスに沿って。
Google Cloudの各サービスについてはGoogle Cloud完全攻略シリーズも参照してください。
まとめ
Google AntigravityはInfrastructure as Codeの全フェーズで威力を発揮します。コード生成だけでなく、レビュー・最適化・トラブルシューティングまで一貫してサポートします。
IaC開発でAntigravityを活用する際のポイント:
- コンテキストファイルにプロジェクトの技術スタック・命名規約を定義して精度を最大化
- モジュール設計はDRY原則に基づきAntigravityにリファクタリングを提案させる
- セキュリティレビュー(tfsec連携)とコスト分析を自動化する
- CI/CDパイプライン(Atlantis/GitHub Actions)にIaCを統合する
- マルチクラウド対応のスキルでSES案件の対応力を高める
IaCスキルはSES案件の単価を大きく左右する重要なスキルです。Antigravityを活用して効率的にスキルアップしましょう。