このツールの動作
.properties ファイルが YAML になり、点が構造になります。
# サービス
app.name=Demo
app.port=8080
app.debug=true
app:
name: Demo
port: 8080
debug: true
キーと値は = でも : でも区切れます。コメント行は # か ! で始まり、行末が逆斜線なら次の行へ続きます。.properties の逃がし表記、\:、\=、\n、\uXXXX は解かれるので、caf\u00e9 は café として届きます。
添字付きのキーは配列になる
app.hosts[0]=alpha
app.hosts[1]=beta
app:
hosts:
- alpha
- beta
配列を持たないファイルに並びを書くとき、Spring はこう書きます。この場所の YAML から properties への変換が作るのも、この形です。ところが読み取ると hosts[0]、hosts[1] という文字どおりのキーが二つ出てきました。自分の出力を自分で認識できず、往復で並びが失われていたのです。いまは添字が 0 から抜けなく続くとき、並びになります。抜けがある、重なりがある、隣に素の hosts がある。そうした場合はキーをそのまま残します。穴を埋めるために値を動かせば、順序を作り出すことになるからです。
同じキーが二度あれば断る
app.port=8080
app.port=3000
Duplicate key "app.port": it already has a different value
Properties.load は最後の代入を採り、ひと言もありません。最初の値は消えていました。YAML から properties への向きでは、同じ名前に潰れる二つのキーを書くことをすでに拒んでいます。こちらで黙って受け入れていたのは、同じ穴を反対から見た姿でした。まったく同じ行は通ります。繰り返すこと自体は何も語らないからです。
値がどうなるか
- 数と真偽値には型が付きます。 CSV の道具と同じで、
8080は数、trueは真偽値です。 007は文字列のまま。1e3も同じで、文字が値以上のものを運んでいるものはそのままです。- 紛らわしいスカラーには引用符。
y、on、NOは YAML 1.2 の読み手には文字列ですが、YAML 1.1 を読む PyYAML には真偽値です。そこだけ引用符で囲めば、二つの読み手の解釈が揃います。 - 空の値は空の文字列であって、null ではありません。ファイルはキーがあって中身が無いと言っており、YAML もそう言います。
プライバシー
すべての処理はブラウザ内のJavaScriptだけで完結します。データがアップロードされることはないため、機密情報でも安心して利用でき、オフラインでも動作します。