設定ファイル形式リファレンス:INI、ENV、PLIST、HCL など
現代のソフトウェア開発やシステム管理では、何十種類もの異なる設定ファイル形式を扱います。現在は JSON、YAML、TOML が業界の主流ですが、Linux システム、Windows レジストリ、Apple macOS、Java、Infrastructure-as-Code (IaC) などの特定のエコシステムでは、他にも多くの拡張子が使われ続けています。
このリファレンスガイドでは、遭遇する可能性が高い、最も一般的な「レガシー」および専門的な設定ファイルの拡張子について解説します。
クイックリファレンス表:設定ファイル形式
| 拡張子 | 正式名称 | エコシステム | 構文タイプ |
|---|---|---|---|
.ini, .conf, .cfg |
Initialization / Configuration | Linux, Windows, PHP, Python | キー・バリュー / セクション |
.env |
Environment Variables | Web 開発 (Node.js, Docker, Python) | Key=Value |
.properties |
Java Properties | Java, Spring, Android | Key=Value (または XML) |
.plist |
Property List | macOS, iOS, Apple | XML または バイナリ |
.hcl, .tf, .tfvars |
HashiCorp Configuration Language | Terraform, Nomad, Consul | ドメイン固有言語 (DSL) |
.ovpn, .wg |
OpenVPN / WireGuard Config | ネットワーク, VPN | ディレクティブベース |
1. システム & レガシー設定 (.ini, .conf, .cfg)
これらは設定ファイルの「元祖」とも言える存在です。シンプルで、テキストベースで、人間が読みやすいのが特徴です。
- INI ファイル: Windows や古いソフトウェアでよく使われます。
[Sections]を使用してキー・バリューのペアをグループ化します。[database] host = 127.0.0.1 port = 5432 - CONF / CFG: 主に Linux の
/etc/ディレクトリ(例:nginx.conf,redis.conf)で使用されます。構文は様々で、シンプルなキー・バリュー形式のものもあれば、中括弧やカスタムディレクティブを使用するものもあります。
2. 環境変数 (.env)
.env ファイルは、現代の Web 開発において、Git にコミットすべきではない「機密情報」や環境固有の設定(データベース URL や API キーなど)を保存するための標準的な方法です。
- 構文: 非常にシンプルな
KEY=VALUE形式です。 - ベストプラクティス:
.envをソース管理にコミットしないでください。代わりに.env.exampleファイルを使用して、必要な変数を示します。
3. エンタープライズ & Java (.properties)
Java 仮想マシン (JVM) で数十年にわたって使用されています。.env ファイルに似ていますが、より複雑なエスケープをサポートしており、XML 形式にすることも可能です。
- 主な用途: Spring Boot アプリケーションの
application.properties。 - 構文:
database.url=jdbc:mysql://localhost:3306/db
4. Apple エコシステム (.plist)
Property List(プロパティリスト)は、macOS および iOS アプリの標準です。ユーザーの好みやアプリのメタデータ(Info.plist など)を保存します。
- 形式: 人間が読める XML または最適化された バイナリ ファイルとして保存できます。
- 表示方法: macOS の「プロパティリストエディタ」を使用するか、
plutilコマンドラインツールを使用して JSON に変換します。
5. Infrastructure as Code (.hcl, .tf, .tfvars)
HCL は、人間が読める YAML とマシンが読める JSON の間のギャップを埋めるために HashiCorp によって作成されました。Terraform の主要言語です。
- HCL: 表現力が非常に高く、コメント、変数、関数をサポートしています。
- TF: 特に Terraform のリソース定義に使用されます。
- TFVARS: Terraform プランに変数の値を渡すために使用されます。
6. ネットワーク & VPN (.ovpn, .wg)
セキュアな接続を設定したことがあるなら、これらを見たことがあるでしょう:
- OVPN: OpenVPN サーバのアドレス、ポート情報、およびしばしば埋め込まれた証明書 (
<ca>,<cert>,<key>) を含む、複雑なスクリプトのようなファイルです。 - WG: よりシンプルな WireGuard の設定です。クリーンな INI スタイルの形式を使用して
[Interface]と[Peer]を定義します。
設定ファイルを扱うためのツール
- エディタ: VS Code、Sublime Text、JetBrains IDE には、構文ハイライトと検証を提供するために、上記のリステッドされたほぼすべての形式のプラグインがあります。
- CLI コンバータ:
yq: 移植性の高いコマンドライン YAML、JSON、XML、CSV、TOML プロセッサ(jqに類似)。plutil:.plistファイルを変換するための macOS 内蔵ツール。terraform fmt:.tfおよび.hclファイルを整形するため。
よくある質問 (FAQ)
Q: .env ファイルでコメントは使えますか?
A: ほとんどの .env パーサ(Node.js の dotenv など)は # で始まるコメントをサポートしています。ただし、インラインではなく、コメント専用の行に記述するのが最も安全です。
Q: バイナリ形式の .plist を XML に変換するにはどうすればよいですか?
A: macOS では、次のコマンドを実行します:plutil -convert xml1 filename.plist。
Q: .ini ファイルに [ブラケット] があるのはなぜですか?
A: ブラケットは セクション を表します。これにより、関連する設定をグループ化し、名前の衝突を防ぐことができます(例:[http] の下の port と、[ssh] の下の別の port)。
Q: .hcl は JSON と互換性がありますか?
A: はい! HCL は JSON と完全に互換性があるように設計されています。お好みであれば、実際に Terraform ファイルを .tf.json で記述することも可能です(人間にとっては読みにくくなりますが)。
Tool3M の関連ツール
- JSON フォーマッタ: JSON 設定ファイルを整形および検証します。
- YAML JSON 変換: 一般的なデータ形式の関係について学びます。