# Terraform / HCL スタジオ（Terraform Studio）

.tf（HCL）を貼るか複数ファイルをドロップすると、resource・variable・module・provider の一覧を表示し、password などへの文字列の直書き、0.0.0.0/0 からの SSH・RDP、provider と module のバージョン未固定、未定義の var.・local.・module. の参照、重複した定義を行番号つきで指摘します。HCL の整形もできますが、terraform fmt と完全に同じ結果にはなりません。plan や apply は行いません。Kubernetes の YAML は Kubernetes スタジオ、CI の設定は GitHub Actions スタジオを使ってください。

- URL: https://tools.itlibra.com/ja/terraform-studio
- 端末内で処理・アップロードなし
- 最終更新: 2026-10-31

## 使い方

1. .tf を貼り付けるか、ファイルをドロップします（複数可。「ファイルを選択」でも可）。「サンプルで試す」でも動作を確認できます。
2. 「構成」で、ブロックの一覧と、変数（型・既定値・sensitive）、モジュールの source と version、プロバイダの version を確かめます。
3. 「指摘」で重要度つきの一覧を見ます。ファイル名と行番号が付き、秘密らしい値そのものは表示しません。変数が別のファイルにあるときは、そのファイルも入れてください。
4. 「整形」で字下げと = の位置を揃えた .tf をコピー・保存できます。構文エラーがあるときは整形しません。

## こんなときに

- password や access\_key などの秘密を .tf に直接書いていないか、コミットの前に確かめたい
- セキュリティグループが 0.0.0.0/0 から SSH・RDP を許していないか確かめたい
- provider と module のバージョンが固定されているか、一覧で確かめたい
- terraform を動かせない環境で、HCL の構文エラーの行を見つけたい

## できること

### 自前の HCL 解析

文字列の ${ } の補間、\<\<EOT と \<\<-EOT のヒアドキュメント、# と // と /\* \*/ のコメント、リスト、オブジェクトを読みます。解析できない箇所は、行番号つきで示します。

### 根拠のある指摘だけ

秘密らしい名前の属性への文字列の直書き、sensitive のない秘密らしい変数、バージョン未固定、aws\_security\_group などの 0.0.0.0/0 からの 22・3389、S3 の public-read 系 ACL、未定義の参照、重複を確かめます。

### 秘密の値は画面に出さない

指摘には属性の名前だけを出し、直書きされた値は出しません。変数の表の既定値も、秘密らしい名前の変数では伏せます。「整形」の結果は .tf をそのまま整えるので、値も含まれます。

### terraform fmt に近い整形

字下げを 2 空白に揃え、連続した 1 行の属性の = を揃えます。ヒアドキュメントの中は変えません。terraform fmt と完全に同じではありません。

### 複数ファイルをまとめて確認

main.tf と variables.tf など、複数のファイルをまとめて読みます。変数・ローカル値・モジュールの定義をファイルの間で突き合わせます。


## 対応状況

| 機能 | 対応 | 補足 |
| --- | --- | --- |
| .tf（HCL）の読み取り・ブロックの一覧（複数ファイル） | 対応 | — |
| 秘密の直書き・sensitive・バージョン未固定の確認 | 一部対応 | 名前と形で判定する項目だけです。見つからなくても安全とは言えません |
| aws\_security\_group などの 0.0.0.0/0 からの SSH・RDP、S3 の ACL | 一部対応 | AWS の一部のリソースだけです。変数で指定したポートは判定しません |
| 未定義の var.・local.・module. の参照と、重複した定義 | 対応 | — |
| 字下げと = の位置の整形 | 一部対応 | terraform fmt と完全に同じ結果にはなりません |
| plan・apply・state ファイルの読み込み | 非対応 | 実行も state の読み込みもしません |
| provider のスキーマ（属性名・型）の検証 | 非対応 | 属性名の誤字や型の誤りは指摘しません |
| .tf.json（JSON 形式）・.tfvars の検証 | 非対応 | .tf と同じ書き方のテキストだけを読みます |

## 制限・注意事項

- 入力は合計 400,000 文字まで、30 ファイルまで、1 ファイル 300 KB までです。超えた分は読み止めて通知します。
- provider のスキーマを持たないので、属性名の誤字・必須の属性の不足・値の型の誤りは指摘しません。
- 指摘は書かれた文字列と名前から判定します。変数や関数で組み立てた値、別のモジュールの中は追いません。
- 未定義の参照は、貼った範囲の中だけで探します。構文エラーがあるときは確認しません。

## プライバシーと安全性

貼り付けた .tf やドロップしたファイルはお使いの端末の中だけで処理され、サーバーへ送信・保存されることはありません。ブラウザに保存もしません。使用状況の記録にも内容やファイル名は含めません。

## よくある質問

### terraform fmt と同じ結果になりますか？

完全には同じになりません。このツールは字下げを 2 空白にし、連続した属性の = を揃えますが、コメントや式の細かい整え方は terraform fmt と異なることがあります。リポジトリへ入れる前は terraform fmt を使ってください。

### 0.0.0.0/0 から SSH を許すと何が問題ですか？

インターネット上のどこからでも 22 番ポートに接続を試せる状態になります。踏み台のアドレスや自社のアドレス範囲に絞るのが一般的です。このツールは、そのような書き方をした行を指摘します。

### sensitive = true にすれば秘密は安全ですか？

plan などの画面表示では値が伏せられますが、state ファイルには平文で残ります。公式のドキュメントでも state の保護が必要とされています。このツールは sensitive の有無だけを確かめます。

### provider のバージョンはどう固定しますか？

terraform ブロックの required\_providers で、source と version を書きます。例えば \~\> 5.0 は 5.0 以上 6.0 未満です。.terraform.lock.hcl は実際に選ばれた版を記録しますが、このツールはロックファイルを読みません。

### 未定義の参照が出るのに、実際は定義してあります。

別のファイルで定義しているときは、そのファイルも一緒に入れてください。このツールは貼った範囲の中だけで探します。
