yaml

yaml

[11] YAML (ヤムル) は、データ記述言語の一種です。

代替

[16] 互換性のためにやむを得ない場合を除き、 JSON を使うべきです。

特徴

[30] YAML はシンプルでわかりやすい、書きやすいといわれています。 (ここ笑うとこ?)

構文

[12] 一見わかりそうで実はよくわからない謎の構文を持っています。

MIME 型

[5] text/x-yaml, text/yaml, application/yaml, application/x-yaml が使われています。

[7] application/raml+yaml のように構造化構文接尾辞 +yaml も使われています。

文脈

[14] Ruby でよく使われます。かつては Perl でもよく使われていましたが、 Perl が衰退したためか余り見かけなくなりました。 クラウドWebサービスの設定ファイルとして使われることがしばしばあります (JSON の方が一般的ですが、 YAML しか選択できないこともよくあります)。 かつては Web API の入出力形式としても用いられることがありましたが、 現在では JSON に置き換わっています。

[25] YAML応用

なぜなくならないのか

[13] JSON が普及した現在、完全に置き換えられていても良さそうなものですが、 謎の支持層により一部で未だに根強く使われ続けています。

[22] JSONプログラミング言語に寄りすぎていて、 しかもコメントが無いなど機械処理寄りで、 設定ファイル手書きには使いにくいという問題があります。

[23] JSON と同じデータモデル手書きに適したわかりやすい単純な構文があって普及すれば良いのですが... そういう目論見の JSON の派生構文のようなものはいくつかありますが (JSON 参照)、 普及させるところがネックのようです。

YAML は JSON (笑)

[4] JSONYAML部分集合であると YAML 信者は主張していますが、実際には異なります。

[31] ただ、そのおかげで YAML が求められているところで JSON を与えてもだいたい動きます。 YAML につらみを感じるときは、 JSON で書けばいいのです。

[32] ただし YAML の構文が JSON のどの構造に対応しているのかを覚える必要が出てきてしまいますが... (これが意外と難しい。)

歴史

[15] データ構造の記述に XML が使われ始めた00年代初頭に、 XML は複雑過ぎるとして対抗馬として開発されたようです。

[24] 個人的には XML の方がずっと単純に見えますが...

[1] Matzにっき(2003-05-08) <http://www.rubyist.net/~matz/?date=20030508#p04>

[2] ただ、風のために。5 (2003/May) <http://www.rubycolor.org/maki/d/200305b.html#11>

[6] YAML::XS - search.cpan.org ( ( 版)) <http://search.cpan.org/dist/YAML-LibYAML/lib/YAML/XS.pm>

[3] YAML 使うのまじでやめてほしい・・・。

[8] なんでみんな YAML なんて使うんだろう。わけのわからない構文エラーとか出るし意味不明すぎる。早く滅んで欲しい。

[9] Apache2::UploadProgress - search.cpan.org ( ( 版)) <http://search.cpan.org/~ceeshek/Apache2-UploadProgress-0.2/lib/Apache2/UploadProgress.pm>

application/x-yaml

[10] ただ、風のために。5 (2003/May) ( 版) <http://www.rubycolor.org/maki/d/200305b.html#11>

xmlhack.comのYAMLの紹介記事にあるとおり、YAMLはsml-dev ML(メーリングリストのほう)で 議論していたSML(マークアップ言語のほう)から派生してできたものです。

sml-dev MLは、XMLのごちゃごちゃした仕様に嫌気が差してきたひとたちが 「もっとシンプルなXMLを!」という思いのもと、 xml-dev MLから分離して作ったMLです。

[17] Re: [Json] Human JSON (Hjson) ( ()) <https://www.ietf.org/mail-archive/web/json/current/msg03855.html>

> People seem to prefer JSON for

> configuration over YAML and other config formats.

Can't be. YAML *contains* JSON.

If you like JSON, you already like YAML, because every JSON file is a

YAML file.

[18] YAML では true は特別な意味を持つ値です。 YAML を使って実行するコマンドを記述する場合に、 true コマンドのつもりで true と書いても実行されずエラーになる場合があります。

だから YAML なんて使うべきではないのですが。。。

[19] YAML: Keys like "yes" or "no" evaluate to true and false - makandropedia ( ()) <https://makandracards.com/makandra/24809-yaml-keys-like-yes-or-no-evaluate-to-true-and-false>

[20] YAML 好きな人はこういうの全部暗記してるのかな?? 罠過ぎるよ・・・

[21] インデントの深さのルールが難しすぎる。意味わからない。

[26] What is the difference between YAML and JSON? When to prefer one over the other - Stack Overflow ( ()) <https://stackoverflow.com/questions/1726802/what-is-the-difference-between-yaml-and-json-when-to-prefer-one-over-the-other/1729545>

YAML is a superset of JSON

[27] JSON == YAML? It’s getting closer to truth - Ajaxian ( ()) <http://ajaxian.com/archives/json-yaml-its-getting-closer-to-truth>

[28] Frequently asked questions | Docker Documentation ( ()) <https://docs.docker.com/compose/faq/#can-i-use-json-instead-of-yaml-for-my-compose-file>

Yaml is a superset of json so any JSON file should be valid Yaml.

[29] Compose file version 3 reference | Docker Documentation () <https://docs.docker.com/compose/compose-file/#short-syntax>

When mapping ports in the HOST:CONTAINER format, you may experience erroneous results when using a container port lower than 60, because YAML will parse numbers in the format xx:yy as sexagesimal (base 60). For this reason, we recommend always explicitly specifying your port mappings as strings.

[33] What valid JSON files are not valid YAML 1.1 files? - Stack Overflow () <https://stackoverflow.com/questions/21584985/what-valid-json-files-are-not-valid-yaml-1-1-files>

[34] Timestamp Language-Independent Type for YAML™ Version 1.1 () <http://yaml.org/type/timestamp.html>