カテゴリ: 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
Ruby
Ruby学習ロードマップ完全ガイド!基礎からOOP・テスト・Web開発・運用まで効率的に進める方法
New2
Ruby
RubyでWeb/API開発を始めるには?RailsとSinatraの選び方と学習ロードマップ
New3
Rails
Railsのリアルタイム通信を完全理解!初心者でもわかる認証付きWebSocketとAction Cableの安全設計
New4
Rails
Railsの設定ファイルをやさしく解説!application.rb・credentials・environmentsの違いと役割
人気記事
No.1
Java&Spring記事人気No1
Ruby
Rubyのreduceとinject入門!合計計算や集計を初心者向けに分かりやすく解説
No.2
Java&Spring記事人気No2
Ruby
OpenSSL関連エラーの直し方を完全解説!証明書・ビルドオプション・brew対策まとめ
No.3
Java&Spring記事人気No3
データベース
PostgreSQLのWHERE句を徹底解説!初心者でもわかるSQLデータ抽出の基本
No.4
Java&Spring記事人気No4
Rails
Rails認可をやさしく理解!CanCanCan入門:ability.rbの定義とload_and_authorize_resource実例
No.5
Java&Spring記事人気No5
Ruby
Rubyの文字列エンコーディング完全ガイド!Encoding・force_encoding・encodeを初心者向け解説
No.6
Java&Spring記事人気No6
Ruby
Rubyで比較演算子を完全解説!==・===・<=>・eql? の使い分け
No.7
Java&Spring記事人気No7
Ruby
Rubyのsortとsort_byの違いを徹底比較!性能や安定ソートのコツを初心者向けに解説
No.8
Java&Spring記事人気No8
Ruby
Rubyのchunk/chunk_while/slice_whenを完全解説!連続データを塊で扱う方法