配列(はいれつ/Array)とは、同じ種類の値を並べて、ひとまとまりとして扱える仕組みのことです。一つひとつに別々の名前を付ける代わりに、一つの名前と番号の組み合わせで、何十件でも何万件でも扱えるようになります。
現実世界に例えると、配列は番号の振られた下駄箱のようなものです。全体には一つの名前があり、個々の場所は番号で指し示します。三番目の靴を取り出す、というように、番号さえ分かれば目的の中身にたどり着けます。
配列(Array)図解
似た仕組みとの違い
| 仕組み | 指し示し方 | 向いている場面 |
|---|---|---|
| 配列 | 0から始まる番号 | 順番に意味がある並び |
| 連想配列 | 名前や文字列 | 項目名で引きたいとき |
| リスト | 番号(可変長) | 件数が変わる並び |
番号は0から始まる
初学者が必ずつまずく決まりです。多くの言語では、先頭の要素を指す番号が1ではなく0で、五つ入っていれば最後は4番になります。これは、先頭からいくつ分ずれているかという考え方から来ています。うっかり最後の番号を間違えるのが、典型的な不具合の原因です。
まとめて繰り返し処理できる
配列の存在意義はここにあります。「並んでいるものを最初から最後まで順に処理する」という書き方ができるため、件数が何件であっても同じ数行で済みます。一件ずつ変数を用意していては、件数が変わるたびにコードを書き直すことになってしまいます。
メモリ上で連続して並ぶ
内部の仕組みを知っておくと理解が深まります。要素が記憶領域の上で隣り合って置かれているため、番号から位置を計算でき、何番目であっても一瞬で取り出せます。この速さが配列の強みで、大量のデータを順に処理する場面で効いてきます。
途中への追加は苦手
裏返しの弱点です。連続して並んでいる以上、途中に一つ挿し込むと、その後ろにあるすべてを一つずつずらす必要があります。頻繁に出し入れするならリストなど別の仕組みのほうが向きます。何をしたいかで使い分ける、という判断が求められます。
大きさが固定のものと可変のもの
言語による違いです。あらかじめ何件入るかを決めておく方式と、必要に応じて自動的に広がる方式があります。固定のものは速くて無駄がありませんが、あふれると重大な不具合につながります。可変のものは扱いやすい代わりに、裏側で作り直しが起きています。
範囲外を指すと危険
安全面での注意点です。用意した件数を超える番号を指定すると、エラーで止まるか、言語によっては関係のない領域を読み書きしてしまいます。後者は深刻な脆弱性の原因として長く問題にされてきました。番号を扱う処理では、範囲の確認を必ず入れます。
入れ子にして表を表す
応用として広く使われます。配列の中に配列を入れると、行と列を持つ表のような構造を作れます。画像を縦横の点の並びとして扱う、表計算のようなデータを持つ、といった場面で使われます。二重の番号で位置を指定する形になり、考え方は同じまま広がります。
あわせて知っておきたい用語
- 変数(Variable):
値を一時的に入れておく名前付きの入れ物です。 - ハッシュ:
名前をもとに値を取り出す仕組みのことです。 - ポインタ:
データの置き場所そのものを指す値です。 - ループ:
同じ処理を繰り返し実行する書き方です。



コメント