TerraformをClaude Codeで 書いてもらう技術 一歩踏み込む Claude Code 活用LT会 〜新機能を使い倒す、現場の開発最前線〜 2026/2/25 ファインディ(株) / CTO室 プラットフォーム 開発チーム/SRE もずます (@mozumasu)
目次 agenda 1. ツール選定 2. Claude Codeの設定思想 3. ガードレール設定 mozumasu #claudecode活用_findy 2
01 ツール選定 #claudecode活用_findy 3
ツール選定 ● 選定の基準: カスタマイズできるかどうか ○ ワークフローをツールに合わせたくない ● ターミナル ● AIのセッション管理 #claudecode活用_findy 4
ツール選定 ● 選定の基準: カスタマイズできるかどうか ○ ワークフローをツールに合わせたくない ● ターミナル → WezTerm ● AIのセッション管理 → WezTerm #claudecode活用_findy 5
ツール選定 ● 選定の基準: カスタマイズできるかどうか ○ ● ターミナル → WezTerm ○ ● ワークフローをツールに合わせたくない Luaで設定できる AIのセッション管理 → WezTerm ○ ○ agent-deckはキーバインドを変更できないため断念 WezTermでセッション切り替えの機能を設定 agent-deck tmuxのセッションやworktreeを よしなにやってくれる便利ツール #claudecode活用_findy 6
WezTermでセッション管理 ● leader → c でセッション選択画面を表示 選択したClaude Codeのペインに飛ぶことができる 設定: https://github.com/mozumasu/dotfiles/blob/d27c867d040c1f3e2fde0590625596c799d83b5e/.config/wezterm/modules/claude_s ession.lua #claudecode活用_findy 7
Claude Codeが捗るWezTermの設定 ● ウィンドウとペインは最小限にしたい → CommandPalette + Overlay がオススメ ○ 選択したペインのプロジェクトでLazygitやNeovimを全画面で開ける ○ キーバインドを割り当てなくてよくなる ○ 選択ペイン作成/ペイン削除を自動でできるので気軽にプロセスを起動できる WezTermのCommandPalette https://zenn.dev/soramarjr/articles/ff6d80f7b524d6 8
その他のツール ● PR/issue管理 ○ ○ Octo.nvim スクラップ: https://zenn.dev/mozumasu/scraps/160817560eadd8 ● Git ○ lazygit ● Markdown Viewer ○ Arto #claudecode活用_findy 9
02 Claude Codeの設定思想 10
Claude Codeの設定思想 ● コンテキスト(Claude.md) に含めるもの ○ ● プロジェクト固有のルール コンテキストに含めないもの ○ Linterで縛れるものはコンテキストに含めない ○ AIが必要な時に必要な情報を参照する環境を作る #claudecode活用_findy 11
Linterで縛れるものはコンテキストに含めない ● ● pre-commit時に実行して品質を担保 ○ tflint : Terraformのリンター ○ trivy : セキュリティスキャン ○ gitleaks : シークレットスキャン Policy as Code を取り入れる ○ Checkov ○ Sentiel #claudecode活用_findy 12
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
03 ガードレール設定 #claudecode活用_findy 14
Claude Codeに特定のコマンドを実行させない ● 実行させたくないコマンド ○ terraform関連 ■ ○ apply / destroy / state push git関連 ■ git push #claudecode活用_findy 15
Claude Codeに特定のコマンドを実行させない ● 実行させたくないコマンド ○ terraform関連 ■ ○ git関連 ■ ● apply / destroy / state push git push 解決策は? ○ ○ permissions Hooks #claudecode活用_findy 16
Claude Codeに特定のコマンドを実行させない ● permissionsの課題 ○ オプションの順番が変ったりグローバルオプションがあったりで完全に防げない #claudecode活用_findy 17
Claude Codeに特定のコマンドを実行させない ● permissionsの課題 ○ ● オプションの順番が変ったりグローバルオプションがあったりで完全に防げない 細かく制御するならHooks ○ スクリプトを使ってトークン単位で確認すれば対応できる → ガードレールはHooksで設定 #claudecode活用_findy 18
Hooksの全体像 ● コマンドの実行のたびに複数のス クリプトが動かないようにしてい る ● PreToolUse ○ ● ツール実行前に検査・制御するフック PostToolUes ○ ツール実行後に検証・整形・後処理す るフック 設定: https://github.com/mozumasu/dotfiles/tree/main/.config/claude 19
Terraformのコマンドを制御するHooks ● ● apply / destroy / state pushを禁止 それ以外のコマンドはそのまま実行 20
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
編集が終わったらfmtとvalidateを実行するHooks ● ● Validateが通らないコミットを防ぐ terraformコマンドがコンテナ内でも 対応 設定: https://github.com/mozumasu/dotfiles/blob/main/.config/claude/scripts/ter raform-post-hook.py 22
まとめ ● ● ● ツール選定 ○ カスタマイズ性を重視(WezTerm, Lua設定) ○ AIセッション管理の統合 Claude Codeの設定思想 ○ プロジェクト固有ルールは `CLAUDE.md` へ ○ Linter / Policy as Code で品質担保 ガードレール設定(Hooks & Permissions) ○ terraform apply / destroy 等の危険なコマンドを Hooks で禁止 ○ Docker環境下での実行制御 ○ 編集後の自動フォーマットとバリデーション #claudecode活用_findy 23
ご清聴ありがとうございました! #claudecode活用_findy