主な機能
- Terraformスタイルのブロック、属性、リスト/マップ、ヒアドキュメントに対応したHCL2対応フォーマット
- =、カンマ、括弧、ネストされたブロック周りの一貫したインデントとスペース
- 可読性のためにコメントと意図的な空行を可能な限り保持
- .tf、.hcl、HCLベースの.tfvars、Packer .pkr.hclファイルに対応
- 冪等出力:フォーマッターを再度実行しても同じ結果が得られます
- 最小限の操作領域:単一の「フォーマット」アクションのみ、スタイル設定の議論は不要
- エディターからフォーマット結果をワンクリックでコピーまたはダウンロード
- 安全なエンドポイントを介したサーバーバックエンド処理 — クイックフィックスに最適、高機密コードにはローカルCLIを推奨
🔧 HCLフォーマッターの使用方法 for hcl-formatter
1. コードを貼り付けるまたはドロップ
HCL/Terraformファイル(.tf、HCLベースの.tfvars、.hcl、.pkr.hclなど)を開き、エディターに内容を貼り付けるか、ブラウザが対応している場合はファイルをドロップしてください。
2. 「フォーマット」をクリック
フォーマットボタンをクリックします。設定は安全なバックエンドに送信され、terraform fmtスタイルのルールがインデント、スペース、レイアウトに適用され、フォーマットされたHCL2が返されます。
3. 確認、コピーまたはダウンロード
エディターで結果を確認し、IDEにコピーするか、フォーマットされたファイルをダウンロードしてリポジトリにコミットしてください。
技術仕様
実行モデル
フォーマッターはサーバーバックエンドで動作し、HCL2に対するterraform fmtスタイルのレイアウト正規化を模倣するように設計されています。
| 項目 | 詳細 |
|---|---|
| モード | サーバーバックエンド(ブラウザ内WASMなし) |
| 範囲 | 空白、インデント、スペース、基本的なレイアウト |
| 並べ替え | リソースやブロックの意味的な並べ替えは行わない |
| オプション | なし — 予測可能な出力のための単一のフォーマットアクション |
| 制限 | 約1〜2MBの入力、〜25秒のサーバータイムアウト(調整の対象) |
| 保持 | 一時的な処理 — 入力はフォーマット後に破棄されます |
言語対応範囲
Terraformおよび他のHashiCorpツールで使用される一般的なHCL2構文を理解します。
| 構文 | 例 | 備考 |
|---|---|---|
| ブロック | resource, variable, output, module, locals, job, task | ネストされたブロック構造は保持されます |
| 属性 | name = "web", count = 2 | =の周囲および属性間のスペースが正規化されます |
| コレクション | [1, 2, 3], { key = value } | リストとマップ/オブジェクトの統一されたレイアウト |
| ヒアドキュメント | <<-EOF ... EOF | マーカーは保持され、可能な場合はインデントが正規化されます |
| コメント | # および // スタイルのコメント | 意図とドキュメントを保持するため可能な限り維持されます |
ミニ ビフォー/アフター
Terraformリソースにおけるインデントとスペースのクリーンアップの小さな例です。
# ビフォー
resource "aws_s3_bucket" "b"{bucket="demo"
tags={Name="demo"}}
# アフター
resource "aws_s3_bucket" "b" {
bucket = "demo"
tags = {
Name = "demo"
}
}
エラーとエッジケース
フォーマットが失敗するかエラーを返す場合、通常はHCL2入力の解析問題が原因です。
| 症状 | 考えられる原因 | 確認事項 |
|---|---|---|
| 出力なし / 解析エラー | 閉じられていない中括弧、角括弧、丸括弧 | { }、[ ]、( ) のペアを数えて一致させ、すべてのブロックを閉じてください |
| ヒアドキュメントの問題 | 欠落または不一致の終端記号 | EOFなどのマーカーが正確に独自の行に表示されることを確認してください |
| 混合スタイル | タブ/スペースまたは余分な文字 | インデントを正規化し、余分な制御文字を削除してください |
| .tfvarsの混乱 | JSONとHCLの構文 | *.tfvars.jsonファイルにはJSONフォーマッターまたはterraform fmtを使用してください |
コマンドライン代替手段
日常的なInfrastructure as Codeワークフローでは、ローカルおよびCIで公式フォーマッターを使用し、このオンラインツールは迅速なアドホックなクリーンアップに使用してください。
macOS / Linux
Terraform: その場でフォーマット
terraform fmt現在のディレクトリ内の.tfおよびHCLベースの.tfvarsファイルを書き換えます。
Terraform: 再帰的CIチェック(書き込みなし)
terraform fmt -check -recursiveフォーマットが必要なファイルがある場合に非ゼロで終了します — CIおよびpre-commitフックに最適です。
Packer: テンプレートのフォーマット
packer fmt path/to/template.pkr.hcl指定されたPacker HCLファイルをその場でフォーマットします。
Windows (PowerShell)
すべてのTerraformファイルを再帰的にフォーマット
Get-ChildItem -Recurse -Filter *.tf | ForEach-Object { terraform fmt $_.FullName }カレントディレクトリ以下の各.tfファイルに対してterraform fmtを実行します。
CIスタイルのフォーマットチェック
terraform fmt -check -recursiveビルドパイプラインで使用し、フォーマットが古い場合に失敗させます。
GitHub Actions
フォーマットが必要な場合にビルドを失敗させる
steps:
- uses: hashicorp/setup-terraform@v3
- run: terraform fmt -check -recursiveTerraformファイルが適切にフォーマットされていない場合、ワークフローを停止します。
プルリクエストでの自動フォーマット(オプション)
steps:
- run: terraform fmt -recursive
- run: git diff --quiet || (git config user.name "bot" && git config user.email "bot@example" && git commit -am "chore: terraform fmt" && git push)terraform fmtを適用し、フォーマットのみのコミットをブランチにプッシュバックします。
実用的なアプリケーション
PRの健全性とレビュー
レビュアーが実際のインフラストラクチャの変更に集中できるよう、空白とインデントを標準化します。
- プルリクエストを開く前にフォーマットを実行
- Terraformレビューでの細かいスタイルコメントを削減
- git差分を小さく意味のあるものに保つ
Terraformモジュール開発
チーム、リポジトリ、レジストリ間でモジュールの一貫性を保ちます。
- 共有モジュール内の変数と出力ブロックを整列
- サンプル設定が単一の社内スタイルに一致することを保証
CIゲートキーピング
CIでterraform fmtチェックを使用し、時間の経過によるスタイルの逸脱を防止します。
- 必須パイプラインステップとして`terraform fmt -check -recursive`を追加
- すべての.tfファイルがフォーマットされるまでマージをブロック
オンボーディングとドキュメント
読みやすい例は、新しいチームメンバーがTerraformと社内スタイルの両方を素早く学ぶのに役立ちます。
- READMEに一貫してフォーマットされたスニペットを公開
- 内部Terraformトレーニングセッションでクリーンな例を使用
❓ Frequently Asked Questions
🔒私のコードはローカルで処理されますか?
🛡️ここにシークレットを貼り付けても大丈夫ですか?
🧩フォーマットを変更すると設定の動作は変わりますか?
📄.tfvarsファイルをフォーマットできますか?
JSONベースの変数もサポートしていますが、これらはJSONルールに従い、JSONフォーマッタまたは`terraform fmt`自体で処理する方が適しています。⚙️これは`terraform fmt`とどう違いますか?
🧯フォーマットが失敗したのはなぜですか?
JSONスタイルのtfvarsとHCL構文の混在など。構造的な問題を修正する(または正しい方言/フォーマッタを使用する)と再試行できます。Pro Tips
CIで`terraform fmt -check -recursive`を適用し、大規模なインフラストラクチャリポジトリ全体でのフォーマットのずれを防ぎましょう。
シークレットや状態関連データをオンラインツールに貼り付けることは避け、設定例は無害化し、実際のインフラストラクチャコードにはローカルのCLIフォーマッタを使用してください。
エディタで末尾の改行とインデントを正規化し、Terraformファイルがプラットフォーム間でクリーンで安定した差分を生成するようにしましょう。
`terraform fmt`を実行するプリコミットフックを追加し、プルリクエストが既にフォーマットされた状態で届き、レビューの議論をアーキテクチャとリスクに集中させられるようにしましょう。
Additional Resources
Other Tools
- CSSビューティファイア
- HTMLビューティファイア
- JavaScriptビューティファイア
- PHPビューティファイア
- カラーピッカー
- スプライト抽出ツール
- Base64デコーダー
- Base64エンコーダー
- C#フォーマッタ
- CSVフォーマッタ
- Dockerfile Formatter
- Elmフォーマッタ
- ENVフォーマッタ
- Goフォーマッタ
- GraphQLフォーマッタ
- INIフォーマッタ
- JSONフォーマッタ
- LaTeXフォーマッタ
- Markdownフォーマッタ
- Objective-Cフォーマッタ
- Php Formatter
- Protoフォーマッタ
- Pythonフォーマッタ
- Rubyフォーマッタ
- Rustフォーマッタ
- Scalaフォーマッタ
- シェルスクリプトフォーマッタ
- SQLフォーマッタ
- SVG フォーマッタ
- Swift フォーマッタ
- TOML フォーマッタ
- Typescript Formatter
- XML フォーマッタ
- YAML フォーマッタ
- Yarn フォーマッタ
- CSSミニファイア
- Html Minifier
- Javascript Minifier
- JSONミニファイア
- XML ミニファイア
- HTTPヘッダービューア
- PDFからテキストへ
- 正規表現テスター
- SERPランクチェッカー
- Whois ルックアップ