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 やるなら公式スタイルガイドを読もう 〜重要項目 10選〜
Search
hiyanger
August 02, 2025
Programming
4.2k
14
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Terraform やるなら公式スタイルガイドを読もう 〜重要項目 10選〜
2026/8/2 栃木ゆる勉強会
https://tochigi-study.connpass.com/event/352995/
オフライン / 20名程度
hiyanger
August 02, 2025
More Decks by hiyanger
See All by hiyanger
SREに優しいTerraform構成 modulesとstateの組み方
hiyanger
2
270
(Amazon Bedrock 基礎)生成 AI の活用に導くシステム構築の基本とセキュリティの実装
hiyanger
4
160
CIer に在籍した 3年間 でやったこと
hiyanger
2
460
これからクラウドエンジニアになるために本当に必要なスキル 5選
hiyanger
1
850
クラウド食堂とは?
hiyanger
0
500
Amazon ECS とマイクロサービスから考えるシステム構成
hiyanger
2
1.6k
全身全霊で取り組んだ 2024 Qiita アドベントカレンダー
hiyanger
0
140
Terraform で作る Amazon ECS の CI/CD パイプライン
hiyanger
1
550
【AWS】EC2 基本アーキテクチャ(ハンズオン付き)
hiyanger
0
360
Other Decks in Programming
See All in Programming
Agents on Rails - Rails at Scale 2026
irinanazarova
0
530
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
470
JAWS-UG 東京支部が始める、JAWS-UG支部コラボ / JAWS-UG lunchtime LT Collaboration
y0hgi
0
250
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
22
22k
ジョジョの世界をXRで再現する
mofurune
0
160
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
200
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
730
見えないものを探る要求要件定義に必要な基本的思考 / invisible-requirement-thinking
minodriven
15
8.3k
【加筆修正版】Laravel のアプリケーションをどこにデプロイするか #phpcon_ehime
akase244
0
150
速く作れる。その次は、速く確かめられる開発へ 〜AIネイティブ開発を支える、Shift Down〜 / Can build fast. Next, moving to development where we can verify fast.
rkaga
8
6k
Turning Architecture into Unit Tests in the AI Era (NSSpain XIV)
steliosf
PRO
1
140
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
330
Featured
See All Featured
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
1
280
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
710
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
400
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
520
Between Models and Reality
mayunak
4
490
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
280
Agile that works and the tools we love
rasmusluckow
331
22k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1.1k
Navigating Team Friction
lara
192
16k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
67k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
Transcript
Terraform 使うなら 公式スタイルガイドを読もう 〜重要項目 10選〜
自己紹介 名前 / 檜山 準(ひやんが) 職種 / AWS エンジニア (CIer
所属) 出身 / 栃木県 趣味 / ギター 🎸 @hiyanger
もくじ ※ Terraform とは ※ スタイルガイドとは 1. フォーマットしよう 2. ファイル名
3. Linter を使う 4. リソースの命名 5. リソース記述順 6. .gitignore への追加 7. バージョンの固定 8. モジュールの作り方 9. ディレクトリ構成 10. state の取り扱い
Terraformと スタイルガイド
Terraformとは シンプルな コード化が できる!!
スタイルガイドとは Terraformの利用における ベストプラクティスが書かれた資料! v1.12 のお話しです! ※スタイルガイド外の補足マーク→
スタイルガイド 10選!
1. フォーマットする gitへ push する前に terraform fmt (-recursive)
2. ファイル名 backend.tf main.tf outputs.tf provider.tf variables.tf network.tf storage.tf compute.tf
network.tf security _group.tf alb.tf route53.tf 左のファイルを基本に行数が増えてきたら分割を検討。 100~200行くらいが目安。 接続はスネークケース
3. Linterを使う tflint を導入して tflint
4. リソースの命名 NG resource aws_instance webAPI- aws-instance {...} OK resource
"aws_instance" "web_api" {...} 🙅 リソースタイプは含めない
5. リソース記述順 読みやすさ(依存関係)だけを考慮して並べる! (ビルド方法には影響しない)
6. .gitignore への追加 .terraform 配下 .tfstate 関連 .terraform.tfstate.lock.info .tfvars .terraform.lock.hcl
は プロバイダ固定のため除外しない!
7. バージョンの固定 provider と terraform は固定させておく! (チームで共有)
8. モジュールの作り方 リソースのグループ化を意識する! (大きすぎず、小さすぎず)
9 .(みんな大好き)ディレクトリ構成 main.tf → ファイル分割 → modulesの利用 → 環境分岐(prd/dev)→ state
分 割 スタイルガイドの言及部分 この仕組みだけ頭にいれておけばOK!
10. ステートファイルの取り扱い ‼ ステートファイルはシークレット情報を含むため共有しない 通常シークレット情報を使ってリソースをデプロイすると、 ステートに記録されてしまうが、v1.10で追加された write-only attributes(wo) を使うと回避できる! プロバイダ依存なとこだけ注意
まとめ
まとめ 1. フォーマットしよう → terraform fmt(-recursive) 2. ファイル名 → main
からすこずつ粒度を小さくする 3. Linter を使う → tflint 4. リソースの命名 → リソースタイプいれない & スネークケース 5. リソース記述順 → 依存順に上から 6. .gitignore への追加 → state 関連 7. バージョンの固定 → provider と terraform 8. モジュールの作り方 → リソースのグループ化を意識する 9. ディレクトリ構成 → 基本はmoduleで必要なら環境分岐 10. state の取り扱い → 共有しない(woで回避できる)
参考 ・モジュール 推奨パターン https://developer.hashicorp.com/terraform/tutorials/modules/pattern-module-creatio n ・モジュール 標準構造 https://developer.hashicorp.com/terraform/language/modules/develop/structure ・stateにシークレットを表示させない(Terraform
v1.11) https://zenn.dev/terraform_jp/articles/tf-write-only-attributes