diff --git a/ja-jp/yaml-jp.html.markdown b/ja-jp/yaml-jp.html.markdown new file mode 100644 index 00000000..28a5d870 --- /dev/null +++ b/ja-jp/yaml-jp.html.markdown @@ -0,0 +1,193 @@ +--- +language: yaml +filename: learnyaml-jp.yaml +contributors: +- [Leigh Brenecki, 'https://leigh.net.au'] +- [Suhas SG, 'https://github.com/jargnar'] +translators: +- [haru, 'https://haru52.com/'] +lang: ja-jp +--- + +YAMLはデータのシリアライズ用言語で、 +人間が直接読み書きしやすいようにデザインされています。 + +YAMLはJSONの厳格なスーパーセットで、 +改行とインデントが構文的に意味を持つというPythonに似た仕様を追加しています。 +しかしPythonとは異なりYAMLではインデントにタブ文字を使うことはできません。 + +```yaml +--- # ドキュメント開始 + +# YAMLのコメントはこんな感じです。 + +############## +# スカラー型 # +############## + +# (ドキュメント全体を含む)ルートオブジェクトはマップになります。 +# これは他言語における辞書型、ハッシュ、オブジェクトなどと等価です。 +キー: 値 +別のキー: 別の値。 +数値: 100 +指数表記: 1e+12 +# 1 はbooleanでなく数値として解釈されます。 +# もしbooleanとして解釈してほしい場合はtrueを使います +boolean: true +null値: null +スペースを 含む キー: 値 +# 文字列をクォートで囲う必要がないことに注意してください。 +# しかし囲うこともできます。 +しかし: 'クォートで囲まれた文字列。' +'キーもクォートで囲えます。': "keyの中で ':' を使いたいときに有用です。" +シングルクォート: 'には ''1つの'' エスケープパターンがあります' +ダブルクォート: "には多くのエスケープパターンがあります:\", \0, \t, \u263A, +\x0d\x0a == \r\n, など、他にもあります。" +# UTF-8/16/32文字はエンコードされている必要があります +上付き2: \u00B2 + +# 複数行の文字列は(| を使う)「リテラルブロック」、 +# または、('>' を使う)「折り畳みブロック」として書くことができます +リテラルブロック: | + この文章のブロック全体が「リテラルブロック」キーの値になり、 + 改行は保持されます。 + + リテラルはインデントを解除するまで続き、先頭行のインデント文字数分を + 各行のテキストの先頭から取り除きます。 + + 「よりインデントの深い」行はその分のインデントを保持します - + この2行はスペース4個分インデントされます。 +折り畳みスタイル: > + この文章のブロック全体が「折り畳みスタイル」の値になります。 + しかしこちらの場合、全ての改行がスペース1個に置き換わります。 + + 直前のような空行は改行文字に変換されます。 + + 「よりインデントの深い」行も改行を保持します - + このテキストは2行にわたって表示されます。 + +################## +# コレクション型 # +################## + +# 入れ子を表現するにはインデントを使います。 +# スペース2個のインデントが好まれます(が必須ではありません)。 +入れ子のマップ: + キー: 値 + 別のキー: 別の値 + 別の入れ子のマップ: + こんにちは: こんにちは + +# マップのキーは文字列である必要はありません。 +0.25: 小数のキー + +# 複数行オブジェクトのような複雑なキーも使用可能です。 +# ? の後にスペースを入れることで複雑なキーの開始を宣言できます。 +? | + これはキーです + 複数行あります +: そしてこれがその値です + +# YAMLではシーケンスを複雑なキー構文で使うこともできます +# しかし、言語パーサーによってはエラーになるかもしれません +# 例 +? - マンチェスター・ユナイテッド + - レアル・マドリード +: [2001-01-01, 2002-02-02] + +# シーケンス(リストや配列と等価)はこんな感じです +# ('-' はインデントとしてカウントしてください): +シーケンス: + - アイテム1 + - アイテム2 + - 0.5 # シーケンスには異なる型の値を混在させられます + - アイテム4 + - キー: 値 + 別のキー: 別の値 + - + - これはシーケンスです + - 別のシーケンス内部 + - - - 入れ子のシーケンス表記は + - 折り畳めます + +# YAMLはJSONのスーパーセットなので、 +# JSON形式のマップとシーケンスを書くこともできます: +jsonマップ: {"キー": "値"} +jsonシーケンス: [3, 2, 1, "発進"] +クォートは任意: {キー: [3, 2, 1, 発進]} + +###################### +# その他のYAMLの機能 # +###################### + +# YAMLには「アンカー」と呼ばれる便利な機能もあります。これによりコンテンツを +# ドキュメント内で簡単に複製できます。これらのキーはどちらも同じ値を持ちます: +アンカーされたコンテンツ: &anchor_name この文字列は2つのキーの値になります。 +他のアンカー: *anchor_name + +# アンカーは複製/継承プロパティとして使えます +ベース: &base + 名前: みんな同じ名前を持ちます + +# 記号 << はマージキー言語非依存型(Merge Key Language-Independent Type) +# と呼ばれます。これは指定された1つ以上のマップの全てのキーを現在のマップに +# 挿入することを示すために使われます。 + +foo: + <<: *base + 年齢: 10 + +bar: + <<: *base + 年齢: 20 + +# fooとbarも「名前: みんな同じ名前を持ちます」を持ちます + +# YAMLにはタグもあり、明示的に型を宣言できます。 +明示的な文字列: !!str 0.5 +# 言語特有のタグを実装したパーサーもあり、例えばPythonの複素数型が使えます。 +pythonの複素数型: !!python/complex 1+2j + +# YAMLの複雑なキーでは言語特有のタグも使えます +? !!python/tuple [5, 7] +: 五十七 +# Python上で {(5, 7): '五十七'} として扱われます + +#################### +# その他のYAMLの型 # +#################### + +# 文字列と数値がYAMLの理解できる唯一のスカラーではありません。 +# ISO形式の日付や日時リテラルもパースされます。 +日時: 2001-12-15T02:59:43.1Z +スペースを含む日時: 2001-12-14 21:59:43.10 -5 +日付: 2002-12-14 + +# !!binaryタグは文字列の実体がバイナリblobのbase64エンコード表現であることを +# 示します。 +gifファイル: !!binary | + R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5 + OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+ + +f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLC + AgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs= + +# YAMLにはセット型もあり、それはこんな感じです: +セット: + ? アイテム1 + ? アイテム2 + ? アイテム3 +または: {アイテム1, アイテム2, アイテム3} + +# セットは値がnullのただのマップで、直前のセットは以下と等価です: +セット2: + アイテム1: null + アイテム2: null + アイテム3: null + +... # ドキュメント終了 +``` + +### 補足資料 + ++ [YAML公式ウェブサイト](https://yaml.org/) ++ [オンラインYAMLバリデーター](http://www.yamllint.com/)