wandfuldays

WindowsのJetBrains IDEでWSL上のTerraformファイルを保存時に自動整形する【terraform fmt対応】

2025-04-27

File Watchers 機能を用いて、 tf ファイル保存時に terraform fmt を自動実行する方法をご紹介。

こんにちは、wandです!

皆さんは JetBrains系 IDE(PhpStorm、WebStorm など)で Terraform ファイル(*.tf)を書くことはありますか?私はあります。
そして、保存時に自動でファイルを整形できたらいいな、と思ったことはないでしょうか?

今回は、そんな開発者向けに、JetBrains IDE上でファイル保存時に公式フォーマッタ terraform fmt を自動実行する設定方法をご紹介します。

IDEの「Reformat Code」機能を使ってファイルを整形している方も多いと思いますが、Terraform の場合、公式フォーマッタ terraform fmt とは微妙に異なるフォーマットが適用されてしまうため、CI との相性が悪く困ることがあります。

左: JetBrains IDE の Reformat Code 、 右: terraform fmt

そこで本記事では、Windows 11 + WSL環境で Terraformファイルを編集している私自身の環境を例に、JetBrains IDE で File Watchers 機能を活用してファイル保存時に公式フォーマッタを使うベストな設定方法をご紹介します。

同じような環境で開発している方の参考になれば嬉しいです。

環境

Windows 11 ホスト側の PhpStorm.exe で WSL 上の *.tf ファイルを編集しています。

ソフトウェア

バージョン

Windows

Windows 11 (24H2 OSビルド 26100.3775)

WSL

WSLg (Ubuntu 22.04 LTS)

PhpStorm

2025.1 Build #PS-251.23774.436

terraform

v1.11.2

※ terraform は asdf でバージョン管理しています。

asdf-plugins/plugins/terraform at master · asdf-vm/asdf-plugins

File Watchers で terraform fmt を実行する設定方法

今回は IDE 標準の Reformat Code は使わずに、 File Watchers を用いてファイルの整形を実現します。

File Watchers 機能では、ファイルの変更を検知して任意のプログラムを実行できます。

Settings > Tools > File Watchers を開き、 + を押下し、 terraform fmt のプリセットを選択します。

File Watchers 設定プリセット

以下のような設定プリセットが開きます。

File Watchers terraform fmt 設定前

ここで、下記項目を設定します:

  • Program
  • Working directory
File Watchers terraform fmt 設定後

このとき、 Program には \\wsl.localhost\ から始まる Windows 上のフルパスを指定し、 Working directory には / のような Linux 上のフルパスを指定するのがコツです。
(Working directory は設定適用時にバックスラッシュ (\ ) 区切りに自動変換されるので、区切り文字はどちらでも良いです)

私の環境では terraformasdf で管理しているので、 Program には \\wsl.localhost\Ubuntu\home\wand\.asdf\shims\terraform を指定しました。

terraform 実行ファイルの場所は下記のコマンドで調べられます:

$ wslpath -w $(which terraform)
\\wsl.localhost\Ubuntu\home\wand\.asdf\shims\terraform

設定不備がある時のエラー例

設定不備があると以下のようなエラーが出力されます。

Program が設定不備

Failed to run File Watcher 'terraform fmt'. The watcher has been disabled. Error: Invalid executable

Failed to run File Watcher 'terraform fmt'.
The watcher has been disabled.
Error: Invalid executable

Working directory が設定不備

/home/wand/.asdf/shims/terraform fmt /home/wand/path/to/tf/file/main.tf
bash: 端末プロセスグループを設定できません (-1): デバイスに対する不適切なioctlです
bash: このシェルではジョブ制御が無効になっています
bash: cd: //wsl.localhost/Ubuntu/home/wand/path/to/tf/file: そのようなファイルやディレクトリはありません

Process finished with exit code 1

まとめ

今回は、Windows 11 環境で PhpStorm や WebStorm などの JetBrains 製 IDE を使い、WSL上の Terraform ファイル(*.tf)を保存時に自動整形する方法をご紹介しました。

IDE 標準の「Reformat Code」ではなく、File Watchers 機能を使って terraform fmt を直接呼び出す設定にすることで、公式コマンドと同じフォーマットを適用でき、 CI ツールとの整合性も保つことができます。

インターネット上では wsl.exe を使った方法なども紹介されていますが、私の環境ではうまく動作せず、本記事で紹介した手順に落ち着きました。

同様の開発環境で、「Terraform ファイルを正しい形式で自動整形したい」と考えている方にとって、少しでも参考になれば嬉しいです!


wand

「wand」は魔法の杖を意味します。魔法のようにさまざまなものを自分の手で生み出せるようになりたい、そんな思いを込めました。 ハンドメイド、家庭菜園、DIY、プログラミング等、「つくる」をテーマに色々なことをしていきたいと思っています。 Amazonのアソシエイトとして、wand は適格販売により収入を得ています。 GitHub: https://github.com/wand2016