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
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
730
Domain-Driven Transformation
hschwentner
2
2.3k
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.4k
Androidだけじゃない、DroidKaigiで広がった私の技術スタック
akkeylab
0
120
Rでドレミ/Do-Re-Mi_with_R
florets1
0
120
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
160
Jetpack Compose Mechanisms
skydoves
2
330
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
5
4.9k
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
120
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
550
スマートフォンでモールス信号を送受信する 〜スマートフォンのLEDとカメラで作る光通信の設計と実装〜
atsuki_seo
0
230
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
440
Featured
See All Featured
Large-scale JavaScript Application Architecture
addyosmani
515
110k
How to Talk to Developers About Accessibility
jct
2
560
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
460
The Mindset for Success: Future Career Progression
greggifford
PRO
0
530
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
490
How to build a perfect <img>
jonoalderson
1
6.1k
Raft: Consensus for Rubyists
vanstee
142
7.7k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
300
Balancing Empowerment & Direction
lara
6
1.3k
KATA
mclloyd
PRO
35
16k
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