mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2024-12-23 17:41:41 +00:00
192 lines
7.2 KiB
Markdown
192 lines
7.2 KiB
Markdown
---
|
||
filename: learnyaml-jp.yaml
|
||
contributors:
|
||
- [Leigh Brenecki, 'https://leigh.net.au']
|
||
- [Suhas SG, 'https://github.com/jargnar']
|
||
translators:
|
||
- [haru, 'https://haru52.com/']
|
||
---
|
||
|
||
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/)
|