JSONとHCLを比較【前編】
いまさら聞けない「JSON」と「HCL」 “2大設定言語”の違いとは?
インフラの設定管理で目にする「JSON」ファイルと「HCL」ファイル。それぞれどのような場面で役立つのか。両者の特徴と基本構文を、サンプルを交えて解説する。
ソースコードでインフラの構成を管理する「IaC」(Infrastructure as Code)は、現代のシステム管理の重要な要素だ。「Ansible」「Puppet」「Terraform」といった構成管理ツールは、設定言語で記されたファイルを認識して動作する。
本連載は、代表的な設定言語である「JSON」と「HCL」を取り上げる。両者にはそれぞれ特定の用途と要件がある。自社で用いるにはどちらが適しているのか。それを判断するために、まずはJSONとHCLの重要性を押さえておこう。
JSONとHCLはなぜ必要?
JSONとHCLは、どちらもIaCで用いる構成言語だが、目的や特徴は異なる。
JSONの主な役割は、サーバとWebアプリケーションなどシステム間でのデータ転送だ。その他の主要な用途としては以下がある。
- 設定管理
- アプリケーションやシステムの設定を記録
- IaCでのパラメーターやシステム設定
- NoSQLデータベースにおける構造化データの保管
- データのインポートとエクスポート
- ログやパフォーマンスデータの構造化、解析
Terraformで利用するために、運用管理ツールベンダーHashiCorp(2024年4月にIBMが買収を発表)が開発した設定言語がHCLだ。そのためTerraformを利用している企業は、HCLを使用することになる。
HCLは主にオンプレミスシステムとクラウドサービスを使うシステムの構成に用いる。具体的な用途を以下に示す。
- ハードウェアの設定
- ソフトウェア定義ネットワーク(SDN)の設定
- PaaS(Platform as a Service)の設定
Ansibleなど一部の構成管理ツールでは、データシリアライズ言語(データを保存、転送しやすい形式に変換するための言語)「YAML」を用いた構成管理も可能だ。用途に応じて3つの言語を使い分けるとよい。
JSONファイルの書き方とサンプル
JSONは、波かっこ(中かっこ)内に記述されるキーと値のペアでデータを表す。ファイルの拡張子は「.json」だ。波かっこで囲まれたブロック(オブジェクト)内には関連するデータをまとめることができ、入れ子構造にすることも可能だ。
キーは二重引用符で囲んだ文字列で、同じ階層では重複するキーを使用できない。一般的には、スペースの代わりにアンダースコアで空白を表す。値として使えるデータ型は以下の通りだ。
- 文字列
- 数値
- 真偽値
- オブジェクト
- 配列(同じデータ型を持つ一連のデータ群)
- NULL
以下はアプリケーションに関する情報の例だ。「appName」(アプリケーション名)というキーに対して「App1」、「appVersion」(バージョン番号)というキーに対して「1.2.3」という値がそれぞれひも付けられている。
"appName": "App1"
"appVersion": "1.2.3"
以下は、真偽値を用いて「logging」(ログ記録)機能を有効化または無効化する例だ。
"logging": true
最後に、データベースへの接続設定の例を見てみよう。上から接続先のデータベース名、ポート番号、ユーザー名、パスワードを記録している。
"host": "localhost",
"port": "5000",
"username": "dbadmin",
"password": "Pa$$w0rd",
このように、JSONではオブジェクトを使って関連するデータをグループ化し、階層構造で表現する。シンプルで可読性に優れたデータ表現が可能な一方で、標準ではコメントを記入できない。何の設定なのかを別途ドキュメントに残しておくとよい。
HCLファイルの書き方
HCLは波かっこでブロックを定義し、各ブロックを設定要素として扱う。JSONと同様に、HCLはキーと値のペアを利用する。この仕組みによって、文字列や数値、真偽値などのデータ型を用いた設定の定義が可能になる。
ファイルの拡張子は「.hcl」「.tf」で、スクリプト(簡易プログラム)言語「JavaScript」と同じ方法でコメントを記入できる。1行のみのコメントには行頭に「//」を置き、複数行にわたるコメントは「/」と「/」で該当部分を囲む。
HCLはJSONと互換性があり、どちらもキーと値のペアでデータを定義する。ただし異なる要素も幾つかある。真偽値や数値など、値に利用できるデータ型は共通だが、記述形式が異なる。具体的には、キーと値のペアを定義するためにHCLは等号を用いるのに対し、JSONはコロンを用いる。HCLからJSONへの互換性はあるが、JSONからHCLへの互換性が完全ではない点にも注意が必要だ。
次回は、JSONファイルとHCLファイルを扱う際に注意すべき点や知っておきたい点を解説する。
TechTarget発 エンジニア虎の巻
米国TechTargetの豊富な記事の中から、開発のノウハウや技術知識など、ITエンジニアの問題解決に役立つ情報を厳選してお届けします。
Copyright © ITmedia, Inc. All Rights Reserved.
TechTarget発 エンジニア虎の巻
米国TechTargetの豊富な記事の中から、開発のノウハウや技術知識など、ITエンジニアの問題解決に役立つ情報を厳選してお届けします。
この記事の著者
関連記事
新着ホワイトペーパー PR
-
製品資料
[LRM株式会社] 「標的型攻撃メール」事例・サンプル集 -
製品資料
[LRM株式会社] セキュリティ教育はなぜ「年間計画」を立てる必要があるのか? -
製品資料
[LRM株式会社] セキュリティの重要性が伝わらない…… 効果がない社員教育から脱却する方法 -
製品資料
[LRM株式会社] 「標的型攻撃メール訓練」導入ガイド 社員の意識を確実に高める仕組みの作り方 -
事例
[株式会社マクニカ] アイカ工業に学ぶ脆弱性対策 情シスが把握できずにいたアセットも正確に把握
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
「VMware離れ」は本当か 3000社がVCF 9にかじを切った現実的な理由
-
2
100億円の「Linux更新」を回避 みずほ銀行が選んだ“おきて破り”のRHEL延命策
-
3
Microsoft製品でここまで自動化できる 情シスがやめられる手作業10選
-
4
「Microsoft 365」が乗っ取られる 跡形もなくMFAを破る手口
-
5
Oracle巨大ITプロジェクトはなぜつまずいたのか 8年で導入1割、追加で170億ドル
-
6
Netflixのバックエンドは「ほぼJava」 3000超のアプリを支える開発基盤の裏側
-
7
エンジニアが選考を辞退する本当の理由 7割が隠す“面接の違和感”とは
-
8
ISMSの“コンサル丸投げ”が招く数千万円の無駄 NTTドコモビジネスの脱出劇
-
9
AI全部入り「Microsoft 365 E7」に企業が二の足を踏む訳 移行意向はわずか4%
-
10
「Windows派」「Linux派」を分ける決定的な違い
ホワイトペーパーランキング PR
-
1
AIエージェントで多様な日常業務を効率化するための入門ガイド
-
2
AIが「わざわざ使うツール」になっていない? 業務で自然に使う導線にする秘訣
-
3
5回聞くだけじゃ足りない? トヨタ式「なぜなぜ分析」の正しい実践方法
-
4
JR西日本ITソリューションズが「監視業務の属人化」を解消した方法とは?
-
5
「脱Excel」か「Excel快適化」か? 現場にやさしい業務改善の進め方
-
6
インシデント対応工数を約3割削減、東京ガスの事例に学ぶ監視体制刷新のコツ
-
7
PostgreSQLの「機能」「性能」「運用」「拡張性」に関する悩みの解消法
-
8
5分で分かる「セキュア大容量ファイル転送サービス」の機能とメリット
-
9
Macの安全神話は崩壊? 最新の脅威動向から見えた攻撃のトレンドと有効な対策
-
10
情報セキュリティ対策早分かりガイド:25の自社診断で弱点と解決策を理解
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー