summaryrefslogtreecommitdiffhomepage
path: root/ja-jp
diff options
context:
space:
mode:
Diffstat (limited to 'ja-jp')
-rw-r--r--ja-jp/asciidoc.html.markdown3
-rw-r--r--ja-jp/bash-jp.html.markdown1
-rw-r--r--ja-jp/julia-jp.html.markdown1
-rw-r--r--ja-jp/php-jp.html.markdown1
-rw-r--r--ja-jp/python-jp.html.markdown13
-rw-r--r--ja-jp/r-jp.html.markdown6
-rw-r--r--ja-jp/rust-jp.html.markdown351
-rw-r--r--ja-jp/yaml-jp.html.markdown193
8 files changed, 552 insertions, 17 deletions
diff --git a/ja-jp/asciidoc.html.markdown b/ja-jp/asciidoc.html.markdown
index 7347589a..7c050429 100644
--- a/ja-jp/asciidoc.html.markdown
+++ b/ja-jp/asciidoc.html.markdown
@@ -5,7 +5,7 @@ contributors:
- ["Abel Salgado Romero", "https://twitter.com/abelsromero"]
translators:
- ["Ryota Kayanuma", "https://github.com/PicoSushi"]
-filename: asciidoc-ja.md
+filename: asciidoc-ja.adoc
lang: ja-jp
---
@@ -84,7 +84,6 @@ _アンダースコアで斜体になります。_
==== Level 3 <h4>
===== Level 4 <h5>
-
```
リスト
diff --git a/ja-jp/bash-jp.html.markdown b/ja-jp/bash-jp.html.markdown
index ea8fa49f..ac8474f2 100644
--- a/ja-jp/bash-jp.html.markdown
+++ b/ja-jp/bash-jp.html.markdown
@@ -168,5 +168,4 @@ sort file.txt
uniq -d file.txt
# 1行ごとに、','が最初に出てくる前の部分を表示します
cut -d ',' -f 1 file.txt
-
```
diff --git a/ja-jp/julia-jp.html.markdown b/ja-jp/julia-jp.html.markdown
index 0c3160a2..209e4a87 100644
--- a/ja-jp/julia-jp.html.markdown
+++ b/ja-jp/julia-jp.html.markdown
@@ -15,7 +15,6 @@ Julia は科学技術計算向けに作られた、同図像性を持った(homo
この文章は、Julia の2013年10月18日現在の開発バージョンを元にしています。
```ruby
-
# ハッシュ(シャープ)記号から改行までは単一行コメントとなります。
#= 複数行コメントは、
'#=' と '=#' とで囲むことで行えます。
diff --git a/ja-jp/php-jp.html.markdown b/ja-jp/php-jp.html.markdown
index a02ae56a..191d3174 100644
--- a/ja-jp/php-jp.html.markdown
+++ b/ja-jp/php-jp.html.markdown
@@ -758,7 +758,6 @@ try {
} catch (MyException $e) {
// Handle my exception
}
-
```
## より詳しい情報
diff --git a/ja-jp/python-jp.html.markdown b/ja-jp/python-jp.html.markdown
index 18e7d1b8..363d00a0 100644
--- a/ja-jp/python-jp.html.markdown
+++ b/ja-jp/python-jp.html.markdown
@@ -11,6 +11,7 @@ contributors:
translators:
- ["kakakaya", "https://github.com/kakakaya"]
- ["Ryota Kayanuma", "https://github.com/PicoSushi"]
+ - ["Kenryu Shibata", "https://github.com/kenryuS"]
filename: learnpython-jp.py
lang: ja-jp
---
@@ -180,7 +181,7 @@ bool({}) # => False
bool(()) # => False
####################################################
-# 2. Variables and Collections
+# 2. 変数と集合
####################################################
# Python にはprint関数があります。
@@ -400,7 +401,7 @@ filled_set | other_set # => {1, 2, 3, 4, 5, 6}
####################################################
-# 3. 制御の流れとiterable
+# 3. 制御の流れと反復可能オブジェクト
####################################################
# まずは変数を作りましょう。
@@ -429,7 +430,7 @@ for animal in ["dog", "cat", "mouse"]:
print("{} is a mammal".format(animal))
"""
-"range(数値)" は、ゼロから与えられた数値までのiterableを返します。
+"range(数値)" は、ゼロから与えられた数値までのiterable(反復可能オブジェクト)を返します。
出力:
0
1
@@ -649,7 +650,7 @@ print(ceil(3.7)) # => 4.0
print(floor(3.7)) # => 3.0
# 全部の関数をモジュールからインポートすることができます。
-# Warning: この方法は推奨されません。
+# 注意: この方法は推奨されません。
from math import *
# 短い名前でモジュールをインポートすることができます。
@@ -990,9 +991,9 @@ print(say()) # Can you buy me a beer?
print(say(say_please=True)) # Can you buy me a beer? Please! I am poor :(
```
-## Ready For More?
+## さらなる学習の準備ができましたか?
-### Free Online
+### 無料のオンラインコンテンツ
* [Automate the Boring Stuff with Python](https://automatetheboringstuff.com)
* [Ideas for Python Projects](http://pythonpracticeprojects.com)
diff --git a/ja-jp/r-jp.html.markdown b/ja-jp/r-jp.html.markdown
index a8dd7c9c..c01a4168 100644
--- a/ja-jp/r-jp.html.markdown
+++ b/ja-jp/r-jp.html.markdown
@@ -759,12 +759,6 @@ ll <- as.data.table(list1)
pp <- ggplot(ll, aes(x=time,price))
pp + geom_point()
# ggplot2 には、素晴らしい関連ドキュメントがそろっています (http://docs.ggplot2.org/current/)
-
-
-
-
-
-
```
diff --git a/ja-jp/rust-jp.html.markdown b/ja-jp/rust-jp.html.markdown
new file mode 100644
index 00000000..3eb381ab
--- /dev/null
+++ b/ja-jp/rust-jp.html.markdown
@@ -0,0 +1,351 @@
+---
+language: Rust
+contributors:
+ - ["P1start", "http://p1start.github.io/"]
+filename: learnrust-jp.rs
+translators:
+ - ["Takashi Takeda", "https://github.com/Takashicc"]
+lang: ja-jp
+---
+
+RustはMozilla Researchによって開発されたプログラミング言語です。
+Rustは低レベルの性能制御と高レベルの利便性と、安全性の保証を兼ね備えています。
+
+ガベージコレクションやランタイムを必要としないことから上記の目標が達成出来ます。
+それによってRustライブラリをC言語の「完全互換品」として使用することが可能です。
+
+Rustの最初のリリースである0.1は、2012年1月にリリースされ、
+その後3年間の開発は非常に速く進み、最近までは安定板リリースの利用は推奨されていませんでした。
+代わりにナイトリービルドを使用することが一般的なアドバイスでした。
+
+2015年5月15日、後方互換性を完全に保障したRust 1.0がリリースされました。
+コンパイル時間などの改善は、現在ナイトリービルドで提供されています。
+Rustはトレインリリースモデルを採用しており、6週間ごとにリリースしています。
+Rust 1.1 ベータ版は、Rust 1.0がリリースされたのと同時にリリースされました。
+
+Rustは比較的低レベルの言語ですが、一般的に高水準言語に見られるようないくつかの概念を持っています。
+これによりRustはただ速いだけではなく、コーディングが簡単で効率的に書くことが出来ます。
+
+```rust
+// これはコメントです。 行コメントはこのように書けます...
+// そしてこのように複数行に分けて書くこともできます。
+
+/// ドキュメントコメントはこのように書けて、マークダウン記法をサポートしています。
+/// # Examples
+///
+/// ```
+/// let five = 5
+/// ```
+
+////////////
+// 1. 基本 //
+////////////
+
+#[allow(dead_code)]
+// 関数
+// `i32` は32ビットの符号付き整数の型です
+fn add2(x: i32, y: i32) -> i32 {
+ // 暗黙の戻り値 (セミコロンなし)
+ x + y
+}
+
+#[allow(unused_variables)]
+#[allow(unused_assignments)]
+#[allow(dead_code)]
+// Main関数
+fn main() {
+ // 数値 //
+
+ // 不変な変数
+ let x: i32 = 1;
+
+ // 整数/浮動小数点の型を数値の末尾に
+ let y: i32 = 13i32;
+ let f: f64 = 1.3f64;
+
+ // 型推論
+ // ほとんどの場合、Rustコンパイラは変数の型を推測することができるため、
+ // 明示的に型アノテーションを書く必要はありません。
+ // このチュートリアルでは、多くの場所で明示的に型がアノテーションされていますが、
+ // あくまで説明目的です。型推論はほとんどの場合処理することができます。
+ let implicit_x = 1;
+ let implicit_f = 1.3;
+
+ // 算術
+ let sum = x + y + 13;
+
+ // 可変な変数
+ let mut mutable = 1;
+ mutable = 4;
+ mutable += 2;
+
+ // 文字列 //
+
+ // 文字列リテラル
+ let x: &str = "hello world!";
+
+ // プリント
+ println!("{} {}", f, x); // 1.3 hello world
+
+ // `String`はヒープに割り当てられた文字列です。
+ // `Vec<u8>`としてヒープに格納され、
+ // 常に有効なUTF-8シーケンス(ヌル文字で終了していない)を保持します。
+ let s: String = "hello world".to_string();
+
+ // 文字列スライスは不変なビューを別の文字列に変換します。
+ // これは基本的に文字列への不変のポインタのペアを保持しており、
+ // 文字そのものは保持していません。
+ // 文字列バッファの先頭と末尾へのポイントだけを保持しています。
+ // 静的割り当てられるか、別のオブジェクトに含まれます。(この場合は`s`)
+ // 文字列スライスは`&[u8]`を`Vec<T>`に変換するようなものです。
+ let s_slice: &str = &s;
+
+ println!("{} {}", s, s_slice); // hello world hello world
+
+ // ベクター/配列 //
+
+ // 固定サイズの配列
+ let four_ints: [i32; 4] = [1, 2, 3, 4];
+
+ // 動的配列(ベクター)
+ let mut vector: Vec<i32> = vec![1, 2, 3, 4];
+ vector.push(5);
+
+ // スライスは不変なビューをベクターまたは配列に変換します。
+ // これは文字列スライスによく似ていますが、ベクターに対してのものです。
+ let slice: &[i32] = &vector;
+
+ // デバッグ形式で何かを表示する際は、`{:?}`を使用できます。
+ println!("{:?} {:?}", vector, slice); // [1, 2, 3, 4, 5] [1, 2, 3, 4, 5]
+
+ // タプル //
+
+ // タプルは固定サイズの値の集合でできており、値それぞれが異なる型でもよい
+ let x: (i32, &str, f64) = (1, "hello", 3.4);
+
+ // `let`をデストラクト
+ let (a, b, c) = x;
+ println!("{} {} {}", a, b, c); // 1 hello 3.4
+
+ // インデックス
+ println!("{}", x.1); // hello
+
+ ///////////
+ // 2. 型 //
+ ///////////
+
+ // 構造体
+ struct Point {
+ x: i32,
+ y: i32,
+ }
+
+ let origin: Point = Point { x: 0, y: 0 };
+
+ // 名前のないフィールドで構成された構造体は、タプル構造体と言われる。
+ struct Point2(i32, i32);
+
+ let origin2 = Point2(0, 0);
+
+ // C言語風列挙型
+ enum Direction {
+ Left,
+ Right,
+ Up,
+ Down,
+ }
+
+ let up = Direction::Up;
+
+ // フィールドがある列挙型
+ enum OptionalI32 {
+ AnI32(i32),
+ Nothing,
+ }
+
+ let two: OptionalI32 = OptionalI32::AnI32(2);
+ let nothing = OptionalI32::Nothing;
+
+ // ジェネリクス //
+
+ struct Foo<T> { bar: T }
+
+ // 以下は標準ライブラリで定義されている`Option`です。
+ enum Optional<T> {
+ SomeVal(T),
+ NoVal,
+ }
+
+ // メソッド //
+
+ impl<T> Foo<T> {
+ // メソッドは明示的に`self`パラメータを受け取ります。
+ fn bar(&self) -> &T { // `self`は借用されています。
+ &self.bar
+ }
+ fn bar_mut(&mut self) -> &mut T { // `self`は可変に借用されています。
+ &mut self.bar
+ }
+ fn into_bar(self) -> T { // `self`は消費されています。
+ self.bar
+ }
+ }
+
+ let a_foo = Foo { bar: 1 };
+ println!("{}", a_foo.bar()); // 1
+
+ // トレイト (他の言語ではインターフェースや型クラスとして知られています) //
+
+ trait Frobnicate<T> {
+ fn frobnicate(self) -> Option<T>;
+ }
+
+ impl<T> Frobnicate<T> for Foo<T> {
+ fn frobnicate(self) -> Option<T> {
+ Some(self.bar)
+ }
+ }
+
+ let another_foo = Foo { bar: 1 };
+ println!("{:?}", another_foo.frobnicate()); // Some(1)
+
+ // 関数ポインタの種類 //
+
+ fn fibonacci(n: u32) -> u32 {
+ match n {
+ 0 => 1,
+ 1 => 1,
+ _ => fibonacci(n - 1) + fibonacci(n - 2),
+ }
+ }
+
+ type FunctionPointer = fn(u32) -> u32;
+
+ let fib : FunctionPointer = fibonacci;
+ println!("Fib: {}", fib(4));
+
+ /////////////////////////
+ // 3. パターンマッチング //
+ /////////////////////////
+
+ let foo = OptionalI32::AnI32(1);
+ match foo {
+ OptionalI32::AnI32(n) => println!("it’s an i32: {}", n),
+ OptionalI32::Nothing => println!("it’s nothing!"),
+ }
+
+ // 応用的なパターンマッチング
+ struct FooBar { x: i32, y: OptionalI32 }
+ let bar = FooBar { x: 15, y: OptionalI32::AnI32(32) };
+
+ match bar {
+ FooBar { x: 0, y: OptionalI32::AnI32(0) } =>
+ println!("The numbers are zero!"),
+ FooBar { x: n, y: OptionalI32::AnI32(m) } if n == m =>
+ println!("The numbers are the same"),
+ FooBar { x: n, y: OptionalI32::AnI32(m) } =>
+ println!("Different numbers: {} {}", n, m),
+ FooBar { x: _, y: OptionalI32::Nothing } =>
+ println!("The second number is Nothing!"),
+ }
+
+ //////////////////
+ // 4. 制御フロー //
+ //////////////////
+
+ // `for`ループ/イテレーション
+ let array = [1, 2, 3];
+ for i in array {
+ println!("{}", i);
+ }
+
+ // 範囲
+ for i in 0u32..10 {
+ print!("{} ", i);
+ }
+ println!("");
+ // 右記にある文をプリントします `0 1 2 3 4 5 6 7 8 9 `
+
+ // `if`
+ if 1 == 1 {
+ println!("Maths is working!");
+ } else {
+ println!("Oh no...");
+ }
+
+ // 式として使う`if`
+ let value = if true {
+ "good"
+ } else {
+ "bad"
+ };
+
+ // `while` loop
+ while 1 == 1 {
+ println!("The universe is operating normally.");
+ // break文でwhileループから抜け出せます。
+ // 無駄な繰り返しを避けることができます。
+ break
+ }
+
+ // 無限ループ
+ loop {
+ println!("Hello!");
+ // break文でループから抜け出せます。
+ break
+ }
+
+ ///////////////////////////
+ // 5. メモリ安全とポインタ //
+ ///////////////////////////
+
+ // 所有ポインタはポインタを「所有」できるのは、一度に1つだけです。
+ // つまり、`Box`がそのスコープから離れると、自動的に安全に解放されます。
+ let mut mine: Box<i32> = Box::new(3);
+ *mine = 5; // デリファレンス
+ // ここで`now_its_mine`が`mine`の所有権を取得します。言い換えると`mine`がムーブしました。
+ let mut now_its_mine = mine;
+ *now_its_mine += 2;
+
+ println!("{}", now_its_mine); // 7
+ // println!("{}", mine); // これは`now_its_mine`がポインタを所有しているため、コンパイルができません。
+
+ // 参照は他のデータを参照する不変なポインタです。
+ // 値を参照する場合、値を「借用」したと言います。
+ // 値が不変に借用されている間は、値を変更したり、ムーブすることはできない。
+ // 借用は借用されている変数が使用されている最後まで有効です。
+ let mut var = 4;
+ var = 3;
+ let ref_var: &i32 = &var;
+
+ println!("{}", var); // `mine`と違って、`var`はまだ使用できます。
+ println!("{}", *ref_var);
+ // var = 5; // `var`が借用されているため、コンパイルができません。
+ // *ref_var = 6; // `ref_var`が不変な参照であるため、コンパイルできません。
+ ref_var; // 操作は行っていませんが、使用されているとみなされ、借用が有効になります。
+ var = 2; // `ref_var`上記行以降使用されていないため、借用は終了しています。
+
+ // 可変な参照
+ // 値が可変な借用である間は、一切アクセスできません。
+ let mut var2 = 4;
+ let ref_var2: &mut i32 = &mut var2;
+ *ref_var2 += 2; // '*'は可変な参照をされた`var2`を指すために使用されます。
+
+ println!("{}", *ref_var2); // 6 , // `var2`はコンパイルされません。
+ // `ref_var2`は型が&mut i32であるため、i32への可変な参照が格納されています。値は入っていません。
+ // var2 = 2; // `var2`が借用されているため、コンパイルできません。
+ ref_var2; // 操作は行っていませんが、使用されているとみなされ、借用が有効になります。
+}
+```
+
+## 補足資料
+
+Rustにはまだまだ多くの魅力がありますが、ここではRustの基本的な知識をお伝えします。
+Rustについてもっと知りたい場合は、[The Rust Programming
+Language](http://doc.rust-lang.org/book/index.html)
+を読んで、[/r/rust](http://reddit.com/r/rust)をチェックしてみてください。
+irc.mozilla.orgの#rustチャンネルにいる人たちも、新参者にも熱心に助けてくれます。
+
+また、Rustの機能を公式のオンラインコンパイラで試すこともできます。
+[Rust playpen](http://play.rust-lang.org) またはメインの
+[Rust website](http://rust-lang.org).
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/)