8.1 リスト

# リスト

このセクションでは、非常に有用なデータ構造であるリストについて見ていきます。以前に我々はランダム化の章でリストについて簡単に触れました。音符のリストから無作為に選んで再生する次のようなコードです。

```
play choose([50, 55, 62])
```

ここでは、コードやスケールを表現するためのリストの使い方についても見ていきます。最初に、コードを演奏する方法をおさらいしてみましょう。`sleep`を使用しない場合、すべての音が同時に演奏されることを思い出してください。

```
play 52
play 55
play 59
```

このコードの別の表現方法を見てみましょう。

## リストの演奏

1つの方法は、\[52, 55, 59\]のように、すべての音符をリストに配置することです。使いやすいplay関数は、リストになった音符をどのように演奏するかをすぐに理解します。次のコードを試してみてください。

```
play [52, 55, 59]
```

おー、これは読みやすいですね。音符リストの演奏は、通常のオプションのいずれも妨げになりません。

```
play [52, 55, 59], amp: 0.3
```

もちろん、MIDIの代わりに伝統的な音符の名前を使うこともできます。

```
play [:E3, :G3, :B3]
```

多少の音楽理論の知識を持っている方なら、3オクターブで*Eマイナー*のコードが演奏されたことがわかるでしょう。

## リストへのアクセス

もう1つの非常に便利なリストの機能は、リストから情報を取得する機能です。これは少し奇妙に聞こえるかもしれなませんが、本の23ページを開いてくださいと誰かに頼まれることよりも簡単なことです。リストの場合は、インデックス23の要素は何ですか？ と尋ねればいいのです。唯一、奇妙なことは、プログラミングのインデックスは通常、1ではなく0から開始されることです。

リストのインデックスは1,2,3と数える代わりに、0,1,2と数えていきます。

それではもう少し詳細にみてみましょう。次のリストを見てください。

```
[52, 55, 59]
```

これは特に難しいことは何もありません。リストの2番目の要素は何でしょうか？ そう、もちろん`55`です。簡単ですね。それでは、同様にコンピュータが答えることができるかどうかを見てみましょう。

```
puts [52, 55, 59][1]
```

以前にこのようなものを見たことがない場合、少し奇妙に見えるかもしれませんが、大丈夫。私を信頼してください。難しいことはありません。上記の行には、`puts`という命令、リストの`52, 55, 59` 、インデックスが`[1]`の3つの部分があります。まずはじめに、Sonic Piへログの中から答えを出力させるためputsを命令します。次にリストを与えています。そして最後に第2の要素を問い合わせています。角括弧でインデックスを囲む必要があり、カウントは`0`で始まるので、2番目の要素のインデックスは`1`となります。下記、みてみましょう。

```
# indexes:  0   1   2
           [52, 55, 59]
```

コード`puts [52, 55, 59][1]`を実行してみてください。ログに`55`と表示されるでしょう。インデックス`1`を別のインデックスに変えてみてください。さらに長い`list`を与えて、どのように演奏で使えるのか考えてみてください。例えば、どのような音楽の構造が音符の連続として表現されるか？ などです。





