JSONNET
概要
編集JSONNETは、アプリケーションおよびツール開発者向けの設定言語です。JSONを拡張した構文を持ち、設定データの生成や管理を効率化します。
主な特徴
編集基本機能
編集- 設定データの生成
- 副作用のない純粋な処理
- 設定の整理、単純化、統合
- 大規模な設定の管理
JSONの拡張として
編集- オープンソース(Apache 2.0ライセンス)
- 親しみやすい構文
- フォーマッタとリンターの提供
- エディタとIDE統合
- 形式的な仕様定義
プログラミング例
編集オブジェクト指向による重複排除
編集例1:基本的なオブジェクトの継承
{ person1: { name: "Alice", welcome: "Hello " + self.name + "!", }, person2: self.person1 { name: "Bob" }, }
関数の使用
編集例2:関数によるオブジェクト生成
// オブジェクトを返す関数 local Person(name='Alice') = { name: name, welcome: 'Hello ' + name + '!', }; { person1: Person(), person2: Person('Bob'), }
複数フォーマットの生成
編集例3:異なる設定ファイルの生成
local application = 'my-app'; local module = 'uwsgi_module'; local dir = '/var/www'; local permission = 644; { 'uwsgi.ini': std.manifestIni({ sections: { uwsgi: { module: module, pythonpath: dir, socket: dir + '/uwsgi.sock', 'chmod-socket': permission, callable: application, logto: '/var/log/uwsgi/uwsgi.log', }, }, }), 'init.sh': ||| #!/usr/bin/env bash mkdir -p %(dir)s touch %(dir)s/initialized chmod %(perm)d %(dir)s/initialized ||| % {dir: dir, perm: permission}, 'cassandra.conf': std.manifestYamlDoc({ cluster_name: application, seed_provider: [ { class_name: 'SimpleSeedProvider', parameters: [{ seeds: '127.0.0.1' }], }, ], }), }
歴史
編集JSONNETという名前は、JSONと「sonnet」(ソネット)を組み合わせた造語で、「ジェイ・ソネット」と発音します。2014年初頭にGoogleの20%プロジェクトとして始まり、8月6日に公開されました。設計はGoogleの社内で使用されている複数の設定言語の影響を受けており、世界で最も複雑なITシステムの設定経験が反映されています。
現状
編集- 多くの企業やプロジェクトで使用
- Googleによるオフィシャルプロダクトではない
- オープンソースとしてGoogleが所有権を持つ
ライセンス
編集特に明記がない限り、このコンテンツはCreative Commons Attribution 2.5でライセンスされています。