---
title: TerraformをClaude Codeで書く技術
tags: 
author: [mozumasu](https://convert.docswell.com/user/mozumasu)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/8JDKWG5NEG.jpg?width=480
description: TerraformをClaude Codeで書く技術 by mozumasu
published: February 25, 26
canonical: https://convert.docswell.com/s/mozumasu/KEY6MD-2026-02-25-claude-code-terraform
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/8JDKWG5NEG.jpg)

TerraformをClaude Codeで
書いてもらう技術
一歩踏み込む Claude Code 活用LT会 〜新機能を使い倒す、現場の開発最前線〜 2026/2/25
ファインディ(株) / CTO室 プラットフォーム 開発チーム/SRE
もずます (@mozumasu)


# Page. 2

![Page Image](https://bcdn.docswell.com/page/VEPK93GN78.jpg)

目次
agenda
1.
ツール選定
2.
Claude Codeの設定思想
3.
ガードレール設定
mozumasu
#claudecode活用_findy
2


# Page. 3

![Page Image](https://bcdn.docswell.com/page/27VVM46Y7Q.jpg)

01
ツール選定
#claudecode活用_findy
3


# Page. 4

![Page Image](https://bcdn.docswell.com/page/5JGLG1NW7L.jpg)

ツール選定
●
選定の基準: カスタマイズできるかどうか
○
ワークフローをツールに合わせたくない
●
ターミナル
●
AIのセッション管理
#claudecode活用_findy
4


# Page. 5

![Page Image](https://bcdn.docswell.com/page/47QYXDQQEP.jpg)

ツール選定
●
選定の基準: カスタマイズできるかどうか
○
ワークフローをツールに合わせたくない
●
ターミナル → WezTerm
●
AIのセッション管理 → WezTerm
#claudecode活用_findy
5


# Page. 6

![Page Image](https://bcdn.docswell.com/page/KE4W6ZNYJ1.jpg)

ツール選定
●
選定の基準: カスタマイズできるかどうか
○
●
ターミナル → WezTerm
○
●
ワークフローをツールに合わせたくない
Luaで設定できる
AIのセッション管理 → WezTerm
○
○
agent-deckはキーバインドを変更できないため断念
WezTermでセッション切り替えの機能を設定
agent-deck
tmuxのセッションやworktreeを
よしなにやってくれる便利ツール
#claudecode活用_findy
6


# Page. 7

![Page Image](https://bcdn.docswell.com/page/L71YVR5NJG.jpg)

WezTermでセッション管理
●
leader → c でセッション選択画面を表示
選択したClaude Codeのペインに飛ぶことができる
設定:
https://github.com/mozumasu/dotfiles/blob/d27c867d040c1f3e2fde0590625596c799d83b5e/.config/wezterm/modules/claude_s
ession.lua
#claudecode活用_findy
7


# Page. 8

![Page Image](https://bcdn.docswell.com/page/G7WGL1WME2.jpg)

Claude Codeが捗るWezTermの設定
●
ウィンドウとペインは最小限にしたい
→ CommandPalette + Overlay がオススメ
○
選択したペインのプロジェクトでLazygitやNeovimを全画面で開ける
○
キーバインドを割り当てなくてよくなる
○
選択ペイン作成/ペイン削除を自動でできるので気軽にプロセスを起動できる
WezTermのCommandPalette
https://zenn.dev/soramarjr/articles/ff6d80f7b524d6
8


# Page. 9

![Page Image](https://bcdn.docswell.com/page/4JZLMP5ME3.jpg)

その他のツール
● PR/issue管理
○
○
Octo.nvim
スクラップ: https://zenn.dev/mozumasu/scraps/160817560eadd8
● Git
○
lazygit
● Markdown Viewer
○
Arto
#claudecode活用_findy
9


# Page. 10

![Page Image](https://bcdn.docswell.com/page/YE6WNM95EV.jpg)

02
Claude Codeの設定思想
10


# Page. 11

![Page Image](https://bcdn.docswell.com/page/GE5M5ZNGE4.jpg)

Claude Codeの設定思想
●
コンテキスト(Claude.md) に含めるもの
○
●
プロジェクト固有のルール
コンテキストに含めないもの
○
Linterで縛れるものはコンテキストに含めない
○
AIが必要な時に必要な情報を参照する環境を作る
#claudecode活用_findy
11


# Page. 12

![Page Image](https://bcdn.docswell.com/page/9729NR5DJR.jpg)

Linterで縛れるものはコンテキストに含めない
●
●
pre-commit時に実行して品質を担保
○
tflint : Terraformのリンター
○
trivy : セキュリティスキャン
○
gitleaks : シークレットスキャン
Policy as Code を取り入れる
○
Checkov
○
Sentiel
#claudecode活用_findy
12


# Page. 13

![Page Image](https://bcdn.docswell.com/page/DJY4PDKM7M.jpg)

Claude Codeのどの機能を使うか
●
●
subagents
○
○
独立したコンテキストを持たせたいもの
レビューなど
○
設定: https://github.com/mozumasu/dotfiles/blob/HEAD/.config/claude/agents/terraform-reviewer.md
スラッシュコマンド
○
○
ユーザーが判断したタイミングで読み込ませたい内容
コミットやPRなど
○
設定:
https://github.com/mozumasu/dotfiles/blob/f77757ab8a17c7114c649d0e6558068b95b76190/.config/claude/commands/pr-terr
aform.md
Claude Codeのユーザー設定プロンプトを使い分けてコンテキスト管理を最適化
する (CLAUDE.md, rules, slash commands, skills, subagents)
13


# Page. 14

![Page Image](https://bcdn.docswell.com/page/V7NY56R3E8.jpg)

03
ガードレール設定
#claudecode活用_findy
14


# Page. 15

![Page Image](https://bcdn.docswell.com/page/YJ9PYLMP73.jpg)

Claude Codeに特定のコマンドを実行させない
●
実行させたくないコマンド
○
terraform関連
■
○
apply / destroy / state push
git関連
■
git push
#claudecode活用_findy
15


# Page. 16

![Page Image](https://bcdn.docswell.com/page/GJ8D6XLXJD.jpg)

Claude Codeに特定のコマンドを実行させない
●
実行させたくないコマンド
○
terraform関連
■
○
git関連
■
●
apply / destroy / state push
git push
解決策は?
○
○
permissions
Hooks
#claudecode活用_findy
16


# Page. 17

![Page Image](https://bcdn.docswell.com/page/LJLM98LNER.jpg)

Claude Codeに特定のコマンドを実行させない
●
permissionsの課題
○
オプションの順番が変ったりグローバルオプションがあったりで完全に防げない
#claudecode活用_findy
17


# Page. 18

![Page Image](https://bcdn.docswell.com/page/47MYZ6MQ7W.jpg)

Claude Codeに特定のコマンドを実行させない
●
permissionsの課題
○
●
オプションの順番が変ったりグローバルオプションがあったりで完全に防げない
細かく制御するならHooks
○
スクリプトを使ってトークン単位で確認すれば対応できる
→ ガードレールはHooksで設定
#claudecode活用_findy
18


# Page. 19

![Page Image](https://bcdn.docswell.com/page/P7R96PVKE9.jpg)

Hooksの全体像
●
コマンドの実行のたびに複数のス
クリプトが動かないようにしてい
る
●
PreToolUse
○
●
ツール実行前に検査・制御するフック
PostToolUes
○
ツール実行後に検証・整形・後処理す
るフック
設定:
https://github.com/mozumasu/dotfiles/tree/main/.config/claude
19


# Page. 20

![Page Image](https://bcdn.docswell.com/page/PJXQM3Z57X.jpg)

Terraformのコマンドを制御するHooks
●
●
apply / destroy / state pushを禁止
それ以外のコマンドはそのまま実行
20


# Page. 21

![Page Image](https://bcdn.docswell.com/page/3JK9GY8RJD.jpg)

Terraformのコマンドを制御するHooks
●
●
apply / destroy / state pushを禁止
それ以外のコマンドは docker
compose exec 経由かチェック
●
Terraformのコマンドがローカルか
コンテナかで実行するコマンドを制
御
コンテナがある場合の考慮
Terraformの設
定:https://github.com/mozumasu/dotfiles/blob/main/.config/claude/script
s/terraform-hook.py
gitの設定:
https://github.com/mozumasu/dotfiles/blob/main/.config/claude/hoo
ks/prevent-git-push.py
21


# Page. 22

![Page Image](https://bcdn.docswell.com/page/LE3WN92GE5.jpg)

編集が終わったらfmtとvalidateを実行するHooks
●
●
Validateが通らないコミットを防ぐ
terraformコマンドがコンテナ内でも
対応
設定:
https://github.com/mozumasu/dotfiles/blob/main/.config/claude/scripts/ter
raform-post-hook.py
22


# Page. 23

![Page Image](https://bcdn.docswell.com/page/8EDKWGZN7G.jpg)

まとめ
●
●
●
ツール選定
○
カスタマイズ性を重視（WezTerm, Lua設定）
○
AIセッション管理の統合
Claude Codeの設定思想
○
プロジェクト固有ルールは `CLAUDE.md` へ
○
Linter / Policy as Code で品質担保
ガードレール設定（Hooks &amp; Permissions）
○
terraform apply / destroy 等の危険なコマンドを Hooks で禁止
○
Docker環境下での実行制御
○
編集後の自動フォーマットとバリデーション
#claudecode活用_findy
23


# Page. 24

![Page Image](https://bcdn.docswell.com/page/V7PK93DNJ8.jpg)

ご清聴ありがとうございました！
#claudecode活用_findy


