カテゴリ: Ruby 更新日: 2025/12/31

Ruby配列の完全入門!ネスト配列と多次元配列の扱い方をやさしく解説

ネスト配列の扱い:多次元配列のアクセス・flatten/transpose
ネスト配列の扱い:多次元配列のアクセス・flatten/transpose

先生と生徒の会話形式で理解しよう

生徒

「Rubyの配列の中に、さらに配列が入っているものを見たんですが、どうやって使うんですか?」

先生

「それはネスト配列や多次元配列と呼ばれるものですね。箱の中に箱が入っているイメージです。」

生徒

「取り出し方や、平らにする方法が難しそうで不安です…」

先生

「大丈夫ですよ。順番に見ていけば、初めてパソコンを触る人でも理解できます。」

1. ネスト配列・多次元配列とは?

1. ネスト配列・多次元配列とは?
1. ネスト配列・多次元配列とは?

Rubyの配列は、複数の値をひとまとめにして管理できる便利な仕組みです。 その配列の中に、さらに配列が入っている状態をネスト配列と呼びます。 また、表のように行と列を持つ形は多次元配列とも言います。

例えるなら、引き出しの中に小さな箱があり、その箱の中に物が入っている状態です。 Rubyでは、このような構造を自然に扱うことができます。 「ネスト」という言葉は「入れ子」という意味で、難しく感じますが、 実際は配列の中に配列があるだけです。

2. 多次元配列の基本的な書き方

2. 多次元配列の基本的な書き方
2. 多次元配列の基本的な書き方

Rubyで多次元配列を作るときは、配列の中に配列を書くだけです。 二次元配列は、表計算ソフトの行と列を思い浮かべると理解しやすくなります。


scores = [
  [80, 90, 70],
  [60, 85, 75],
  [90, 88, 92]
]

この例では、外側の配列に3つの配列が入っています。 それぞれが1行分のデータだと考えると、イメージしやすくなります。

3. ネスト配列から値を取り出す方法

3. ネスト配列から値を取り出す方法
3. ネスト配列から値を取り出す方法

ネスト配列の中身を取り出すには、インデックスを順番に指定します。 インデックスとは、配列の中での位置番号のことで、0から始まる点が特徴です。


scores = [
  [80, 90, 70],
  [60, 85, 75],
  [90, 88, 92]
]

puts scores[0][1]

90

最初の[0]で外側の配列の1番目を指定し、 次の[1]で内側の配列の2番目を指定しています。 二段階で箱を開けるイメージを持つと理解しやすくなります。

4. flattenで配列を平らにする

4. flattenで配列を平らにする
4. flattenで配列を平らにする

ネスト配列を扱っていると、「全部まとめて1つの配列にしたい」 という場面がよくあります。 そんなときに使うのがflattenメソッドです。

flattenは、重なっている配列を一気に広げて、1列に並べ直す働きをします。 山積みの箱をすべて床に並べるようなイメージです。


numbers = [[1, 2], [3, 4], [5, 6]]
flat = numbers.flatten
puts flat

1
2
3
4
5
6

flattenを使うと、ネストの深さを意識せずに扱えるようになります。 初心者のうちは、「配列が平らになる」と覚えるだけで十分です。

5. flattenの深さを指定する

5. flattenの深さを指定する
5. flattenの深さを指定する

flattenには、どこまで平らにするかを指定する方法もあります。 深いネスト構造の場合、一部だけを平らにしたいこともあります。


array = [1, [2, [3, 4]]]
puts array.flatten(1)

1
2
[3, 4]

数字は「どの段階まで広げるか」を意味しています。 無理に覚えなくても、「指定できる」ということを知っておくだけで安心です。

6. transposeで行と列を入れ替える

6. transposeで行と列を入れ替える
6. transposeで行と列を入れ替える

多次元配列を表として扱うときに便利なのがtransposeです。 transposeは、行と列をひっくり返すメソッドです。

例えば、縦に並んだデータを横に並べ替えたいときに使います。 表の向きを変えると考えると分かりやすいです。


table = [
  ["名前", "年齢"],
  ["田中", 20],
  ["佐藤", 22]
]

puts table.transpose

名前
田中
佐藤
年齢
20
22

transposeを使うと、データの見方を簡単に変えることができます。 配列の形を理解する力が、自然と身についていきます。

7. ネスト配列を扱うときの注意点

7. ネスト配列を扱うときの注意点
7. ネスト配列を扱うときの注意点

ネスト配列や多次元配列は便利ですが、 構造が分からなくなると混乱しやすいという特徴もあります。 そのため、紙に図を書いたり、箱のイメージで考えることが大切です。

Rubyではflattenやtransposeといった便利なメソッドが用意されているので、 無理に複雑な処理を書かなくても対応できます。 初心者のうちは、「取り出す」「平らにする」「向きを変える」 この3点を意識するだけで十分です。

関連記事:
カテゴリの一覧へ
新着記事
New1
Rails
Rails GoodJob入門!PostgreSQLベースのバックグラウンド処理を初心者向けに完全解説
New2
Ruby
Rubyで学ぶビット演算入門:&・|・^・~・<<・>>の基礎と実例
New3
Rails
RESTとRailsの関係を徹底解説!resources設計と7つの標準アクションを初心者向けにわかりやすく解説
New4
データベース
MySQLアーキテクチャ入門!初心者向けに基本構造と仕組みを徹底解説
人気記事
No.1
Java&Spring記事人気No1
Ruby
Rubyのreduceとinject入門!合計計算や集計を初心者向けに分かりやすく解説
No.2
Java&Spring記事人気No2
Ruby
Rubyの始め方ガイド:インストールから最初のHello Worldまで(Windows/Mac/Linux)
No.3
Java&Spring記事人気No3
Ruby
Rubyの文字列エンコーディング完全ガイド!Encoding・force_encoding・encodeを初心者向け解説
No.4
Java&Spring記事人気No4
データベース
PostgreSQLのWHERE句を徹底解説!初心者でもわかるSQLデータ抽出の基本
No.5
Java&Spring記事人気No5
Ruby
Rubyのfind/detect/find_indexを徹底解説!目的のデータを素早く探す方法
No.6
Java&Spring記事人気No6
Ruby
Rubyのselect/reject/filterの使い方を完全解説!初心者向けの条件抽出レシピ
No.7
Java&Spring記事人気No7
Ruby
Rubyで比較演算子を完全解説!==・===・<=>・eql? の使い分け
No.8
Java&Spring記事人気No8
データベース
PostgreSQLで順位付け!ROW_NUMBER関数の使い方を初心者向けに徹底解説