Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
より綺麗なTerraformコードをチームで書き続ける取り組み
Search
KiyamaMizuki
May 31, 2026
Programming
46
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
より綺麗なTerraformコードをチームで書き続ける取り組み
KiyamaMizuki
May 31, 2026
More Decks by KiyamaMizuki
See All by KiyamaMizuki
TerraformリファクタリングでSGを消した話
kiyamamizuki
0
71
AWS公式のIaC自動レビューツール使ってみた
kiyamamizuki
0
140
沖縄出身の新卒が振り返るシナマケでの社会人生活
kiyamamizuki
0
540
AWS使いすぎ注意! コスト管理とSlackアラート構築術
kiyamamizuki
0
860
Other Decks in Programming
See All in Programming
Heart of Swift Concurrency
koher
0
1.2k
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
610
Atomic Design, Enforced: Scaling Mobile Design Systems (next.app devCon / droidCon Berlin 2026)
steliosf
PRO
0
110
AI Agent時代のリアーキテクチャ戦略と実践
hokaccha
9
5.4k
Embedded Swiftで作る自作USBデバイス によるiOSデバイスの自動テスト / iOSDC Japan 2026 glassfiber
glassfiber
0
290
RAG の “R” を Swift で覗いてみる 〜「意味から探す」検索の仕組み〜
nao_randd
0
120
Androidだけじゃない、DroidKaigiで広がった私の技術スタック
akkeylab
0
120
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
巨大モノリシックアプリ モダン化大作戦
ktcryomm
1
1.3k
【加筆修正版】Laravel のアプリケーションをどこにデプロイするか #phpcon_ehime
akase244
0
140
Streamlitで実現する自然言語データアプリ開発
ayumu_yamaguchi
1
340
SREの越境 / SRE Collaboration
y0hgi
2
300
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
Designing Powerful Visuals for Engaging Learning
tmiket
1
590
Chasing Engaging Ingredients in Design
codingconduct
0
340
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
490
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
620
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
860
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
350
Transcript
より綺麗なTerraformコードを チームで書き続ける取り組み 木山瑞基 2026/05/29 インフラの「ムリ・ムダ・ムラ」をなくしたい! 最適化・効率化LT会 1
自己紹介 名前:木山瑞基 所属:シナジーマーケティング株式会社 業務:CRMシステムのインフラ運用 AWS / Mail server 趣味:ボルダリング、旅行、ジョジョ好き Terraform歴:1年半
2
今日話すこと こんな方に向けた話です Terraformを書いているが、チームに明文化されたルールがない方 最近Terraformを書き始めて体系的に知りたい方 話すこと 1. 公式スタイルガイドの読み合わせをやってみた経緯 2. 読み合わせで出てきた "チーム独自ルール"
と "誤用" 3. やってみての所感 3
当時抱えていたモヤモヤ Terraformは書けるようになったが、書き方に自信がない 既存のtfコードを確認してある程度真似て書いていた Terraform自体プログラミング言語と異なり書式の自由度が低く気にしなくて もよかった チームには"こうしている"がある コードを書いていて気になる部分など都度聞く形 > 「先輩の書き方を真似てる」だけになっていた 4
アプローチ:公式スタイルガイドの読み合わせ HashiCorp公式 Terraform Style Guide をチームで読み合わせ 1. 自分(新人)が叩き台をまとめる a. チームでの運用と公式の見解で異なる(と感じた)部分を記載
2. チームメンバーと読み合わせながらFBをもらう 3. 「公式と違う点」を意図的 / 誤用 に仕分ける ポイント:新人の自分が"分からない"を表明できる立場だった 5
読み合わせで分かったこと ① 個人の気づき編 / ② チーム独自ルール編 / ③ 誤用発見編 6
① 個人の気づき編: 見よう見まねが、ガイドに書かれていた これまで意識せずに書いてた書式がスタイルガイドに明文として書かれていた 命名規則 定義するリソースごとのグルーピング方法 引数の並び方 → チームの書き方は、ガイドに沿った判断の積み重ねだった →
自分の "なんとなくの真似" に、はじめて根拠が付いた 7
② チーム独自ルール編 「公式と違うが、意図的に違う」= 残すべきルール 観点 チームの選択 理由 ファイル分割 terraform.tf →
versions.tf に分離 プロバイダ管理が見やすい リソースを main.tf に集約 リソース全集約はしない PoC向け、本運用ではアン チパターン moduleのリポジトリ 構成 モノレポ 公式推奨と異なるがチーム 事情で採用 > 暗黙知だったものを、理由付きで明文化できた 8
③ 誤用発見編 「公式と違い、かつ間違っていた」部分 1. variable を locals で代替できるケースを見落とし -. どちらも変数を扱うための記法
9
variable と locals の使い分け variable locals 役割 外部からの入力 内部の計算・再利用 変更タイミング
実行時に上書き可 コード変更時のみ 使いどころ 環境ごとに変えたい値 命名・タグ・派生値 チームの運用フロー上、多くの値は実行時に変えない → 本来は locals で十分なものが variable になっていた 10
variable と locals の使い分け 補足 locals は後から追加された記法 ブロック 登場時期 variable
Terraform 0.1(2014年)から存在 locals Terraform 0.10.3(2017年9月)で追加 → 最初の約3年間は variable しかなかった → 古くからTerraformを使用していたチームは variable を使用していたため、その癖 が残りやすい 11
成果 チームで一番の若手が構文を体系的に学ぶことで、品質を落とすようなコードを 生成する可能性が無くなった チームの共通言語・コーディングルールが言語化できた クリティカルな問題では無かったが構文の誤用も見つかった 12
おまけ:LLMへの指示書・タスク仕様書になる 明文化したルールは、 CLAUDE.md / .cursorrules などにそのまま転用可 # Terraform Coding Rules
(抜粋) - providerは versions.tf に分離する - 派生値は locals を使う(variableは外部入力のみ) さらに:読み合わせ資料が、そのままリファクタリング指示書になった 公式との差異を言語化した読み合わせ資料をそのままコーディングエージェント に投入 → 人にもLLMにも効くドキュメントになった 13
まとめ 14
まとめ ① 新人・若手こそやる価値がある 先入観がないからこそ、素朴な疑問が暗黙知を掘り起こす 体系的に学ぶことで若手自身が綺麗なコードを書けるように ② 綺麗なコードは「チームの共通言語」から生まれる 個人の努力より、揃った言語のほうが効く ③ 公式スタイルガイドは"読み合わせ教材"として最適
> 「動いてるから正しい」は危険、一度立ち止まって読み合わせを 15