Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AI 駆動 Terraform 開発/SRE_BizReach_MIXI_2

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

AI 駆動 Terraform 開発/SRE_BizReach_MIXI_2

2026年9月9日開催「[SRE AI活用事例] 減らせ!TOIL削減大作戦!」の登壇資料です。
https://mixi.connpass.com/event/403987/

▼関連資料
WAF 運用改善の承認サイクル
https://speakerdeck.com/visional_engineering_and_design/bizreach-mixi-1

AI駆動開発が変える、大規模開発の前提 ーHuman in the Loop から Human on the Loop へ
https://speakerdeck.com/visional_engineering_and_design/aie2026

脅威モデリングからの​セキュリティ強化:Datadogで​実現する​Active Defense
https://speakerdeck.com/visional_engineering_and_design/jddug-meetup-13

「分からない」をゼロへ: BizReach SREが挑んだ プランニング改善と信頼性強化 / SRE Lounge #18
https://speakerdeck.com/visional_engineering_and_design/sre-lounge-number-18
https://engineering.visional.inc/blog/681/sre-scrum-improvement/

伴走から自律へ: 形式知へと導くSREイネーブリングによる プロダクトチームの信頼性オーナーシップ向上
https://speakerdeck.com/visional_engineering_and_design/sre-next-2025

ユーザー数100万人規模の事業成長を止めずに、レガシーコードと戦う
https://speakerdeck.com/visional_engineering_and_design/jjug-ccc-2022-fall

-----
Visionalのエンジニアリングに関する最新情報はX、ブログで発信しています!📣

▼Visional Engineering Blog
https://engineering.visional.inc/blog/

▼VISIONAL ENGINEERING / X
https://twitter.com/VISIONAL_ENG

Avatar for Visional Engineering & Design

Visional Engineering & Design

September 09, 2026

More Decks by Visional Engineering & Design

Other Decks in Technology

Transcript

  1. 自己紹介 大島 拓人 / Takuto Oshima 株式会社ビズリーチ / SRE •

    金融営業 → SIer → 株式会社ビズリーチ • SIer 時代に Azure, AWS インフラをメインに仕事に従事 • SREチーム所属、現在はアプリケーションチームの新規開発 PJにて、AI 駆動の Terraform 設計を主に担当 • 趣味はバスケ・スノーボード・お笑い・飲み会 • AI のレビューのせいでタバコの本数が一向に減らない。
  2. 今回の発表における AI 駆動 Terraform 開発とは 名前の通り AI に Terraform を書かせるための開発手法

    ここでは、Terraform の設定値まで正しく AI に判断させ、 Terraform を書いてもらうことを指す 本発表の内容(本内容で扱う Skill や知見)は以下を前提とする ・「新規開発にて利用する」 ・「Terraform やインフラに一定の精通をしている人が利用する」
  3. 要求 → 仕様の変換が難しい APP INFRA 要求から仕様が直接的 要求から仕様が間接的 ユーザー要求 「条件を指定して求人を検索したい」 仕様をそのまま整理できる

    勤務地・職種を受け取り、 条件に一致する求人一覧を返す 非機能レベルで整理 ピーク 100 RPS p95 500ms以下 可用性 99.9% コストはなるべく安く 導出が大変 決めきれない/オーバーワーク
  4. 要求 → 仕様の変換が難しい APP INFRA 要求から仕様が直接的 要求から仕様が間接的 ユーザー要求 「条件を指定して求人を検索したい」 仕様をそのまま整理できる

    勤務地・職種を受け取り、 条件に一致する求人一覧を返す 非機能レベルで整理 設定値レベルで整理 ピーク 100 RPS p95 500ms以下 可用性 99.9% コストはなるべく安く desired_count = xxx timeout = yyy retention_days = zzz 導出が大変 決めきれない/オーバーワーク ほぼ実装
  5. さらに分解してみる フェーズ 作業単位 要求把握 どんなアプリケーションが動くか理解する ざっくりと全体のインフラ構成を決める 全体の設計 ざっくりと state の分割方針を決める

    詳細の設計 Terraform 実装 state A state B state C リソース同士の 構造を決める リソース同士の 構造を決める リソース同士の 構造を決める
  6. さらに分解してみる フェーズ 作業単位 要求把握 どんなアプリケーションが動くか理解する ざっくりと全体のインフラ構成を決める 全体の設計 ざっくりと state の分割方針を決める

    詳細の設計 Terraform 実装 state A state B state C リソース同士の 構造を決める リソース同士の 構造を決める リソース同士の 構造を決める 個々の設定値を 決める 個々の設定値を 決める 個々の設定値を 決める
  7. さらに分解してみる フェーズ 作業単位 要求把握 どんなアプリケーションが動くか理解する ざっくりと全体のインフラ構成を決める 全体の設計 ざっくりと state の分割方針を決める

    詳細の設計 Terraform 実装 state A state B state C リソース同士の 構造を決める リソース同士の 構造を決める リソース同士の 構造を決める 個々の設定値を 決める 個々の設定値を 決める 個々の設定値を 決める Terraform 実装 Terraform 実装 Terraform 実装
  8. 整理した流れを振り分けてみる 作業単位 どんなアプリケーションが動くか理解する 人間が得意そう ざっくりと全体のインフラ構成を決める ざっくりと state の分割方針を決める 仕様整理 state

    リソース同士の構造を決める リソース同士の構造を決める 個々の設定値(パラメータ)を決め る 個々の設定値(パラメータ)を決め る Terraform コードに落とす Terraform コードに落とす ここから小さくなるので AI でもできそう? コーディング AI が得意そう
  9. 整理した流れを振り分けてみる 作業単位 どんなアプリケーションが動くか理解する 人間が得意そう ざっくりと全体のインフラ構成を決める ざっくりと state の分割方針を決める 仕様整理 state

    リソース同士の構造を決める リソース同士の構造を決める 個々の設定値(パラメータ)を決め る 個々の設定値(パラメータ)を決め る Terraform コードに落とす Terraform コードに落とす ここから小さくなるので AI でもできそう? 高速化 コーディング AI が得意そう
  10. 先を踏まえて、今 PJ で使ってみている Skill 1 どんなアプリケーションが動くか理解する 2 ざっくりと全体のインフラ構成を決める 人間がざっくりとした要件を整理する 一応人間の判断をチェックする

    3 ざっくりと state の分割方針を決める 4 リソース同士の構造を決める 5 個々の設定値(パラメータ)を決める 6 Terraform コードに落とす AIが推奨を出し、人間がチェックする
  11. 先を踏まえて、今 PJ で使ってみている Skill 作業単位 どんなアプリケーションが動くか理解する 人間の判断が問題ないかチェックする ざっくりと全体のインフラ構成を決める ・人間は issue

    に作りたいリソースを state 単位で分割して おく ざっくりと state の分割方針を決める リソース同士の構造を決める 個々の設定値(パラメータ)を決める Terraform コードに落とす ・issue ベースで入力を受け取り、作成リソース、 state 分割 などに懸念がないかチェックを行う
  12. 先を踏まえて、今 PJ で使ってみている Skill 作業単位 どんなアプリケーションが動くか理解する リソース同士の構造を決める ざっくりと全体のインフラ構成を決める リソースの依存・接続関係を整理し、 state

    内のリソースのトポロジーを決める ざっくりと state の分割方針を決める リソース同士の構造を決める ・インフラのアーキテクチャに関わるような設定値を決定す る ex : ・ ecs cluster とアプリを n : m で作るか? ・log bucket は集約するか?個別に作るか? ...etc 個々の設定値(パラメータ)を決める ・Terraform レベルの設定値、書き方などについては一切 触れない Terraform コードに落とす ・判断結果はそのタイミングの決定のスナップショットとして 残す
  13. 先を踏まえて、今 PJ で使ってみている Skill 作業単位 どんなアプリケーションが動くか理解する Terraform の設定値を判断する ざっくりと全体のインフラ構成を決める 前段の決定をもとに、

    Terraform リソース単位で設定値を判断する ざっくりと state の分割方針を決める ・Terraform MCP Server を利用して、設定値を網羅的に 取得 リソース同士の構造を決める ・設定値の重要度(高・中・低)を分類し、人間が判断しやす く 個々の設定値(パラメータ)を決める ・全ての設定値に推奨値、根拠、採用しなかった選択肢を 提示する Terraform コードに落とす ・同様にスナップショットに落とし込み、判断結果を見直せる ようにする
  14. 先を踏まえて、今 PJ で使ってみている Skill 作業単位 どんなアプリケーションが動くか理解する Terraform の記述方式を合意する ざっくりと全体のインフラ構成を決める for_each・dynamic・local

    変数など、 Terraform の書き方を人間と合意する ざっくりと state の分割方針を決める ・Terraform の文法的な記載方法を判断する リソース同士の構造を決める 個々の設定値(パラメータ)を決める Terraform コードに落とす ・合意が取れたら、実際にリソース単位でコードを出力し、 人間と合意を得る ・全てのフェーズが完了したら全体の整合性チェックを行 い、必要に応じて修正が必要なフェーズに戻る
  15. それっぽいものは生成されるが、質はまだまだ とりあえず AI に terraform を書かせると起きがちな悩み • 命名が適当でバラバラ • validation

    をとりあえず入れまくる • とりあえずコメントを入れまくる • 片っ端から local 変数に突っ込む ...etc
  16. どんなハーネスを入れているか? 命名規則・ディレクトリ構成・タグ構成・module 利用方針・ファイル分割基準などをガイドライン化 AI がやりがちな過剰・複雑な生成を抑えるようにする • validation は module 以外では原則利用しない

    • 「IaC は宣言的に記述し、リソースと設定値が読み手に理解できる状態を重視すること」を記載する • 保守性に寄与しない DRY・抽象化・複雑な関数の組み合わせは避けるよう記載する ...etc コードの書き方が揺らがないよう、規約として固定する • main.tf 内部のリソース順序は依存関係の順 • variables.tf 内部の順序はアルファベット順 • 既定値と同じ設定値であっても、セキュリティ・コストなどのような影響の大きい場合には省略しない ...etc
  17. Terraform 開発が楽になっても、AI向けのハーネス整備が増える AFTER BEFORE AI活用後 従来 Terraform開発 ⼈間 ⼈間が担う アプリケーションを理解する

    NEW AI向けハーネス開発 人間が担う インフラ構成を決める state の分割方針を決める リソース構造を決める 設定値を決める Terraform コードに落とす Terraform開発 AI が担う