Ruby 配列の使い方

この記事のポイント

  • 複数の値を順序付きリストとして扱える便利なデータ構造
  • Rubyの配列は柔軟で多彩なメソッドを持ち、データ操作が簡単
  • 文字列から数値まで異なる型のデータを同時に格納できる汎用性

目次

Rubyの配列とは?

Rubyの配列は、複数の値を順序付きリストとしてまとめて扱えるデータ構造です。配列内の各要素には0から始まるインデックス番号が付与され、このインデックスを使って特定の要素にアクセスできます。

配列の基本的な役割は、関連するデータをまとめて1つの変数で管理することです。例えば、動物園の動物リスト、商品の価格一覧、ユーザー名のコレクションなど、似た種類のデータを一括で扱いたいときに便利です。     

Rubyの配列の特徴は、異なる型のデータを同じ配列に混在させられることです。整数、文字列、浮動小数点数、さらには他の配列やハッシュまで、様々なオブジェクトを一つの配列に格納できます。これにより、柔軟なデータ構造を作ることが可能です。

また、Rubyの配列は非常に多機能で、要素の追加、削除、検索、ソート、変換など便利なメソッドがたくさん用意されています。これらのメソッドを活用することで、少ないコードで効率よくデータを扱うことができます。     

Rubyを学び始めたばかりの人にとって、配列はぜひ最初に理解しておきたい重要なデータ構造です。配列の使い方に慣れておくと、今後のプログラミングがぐっとスムーズになるでしょう。

【関連】
Rubyをもっと詳しく学ぶならpaizaラーニング

配列の基本構文

Rubyでは、角括弧([])を使って配列を作成します。配列の中の要素には、インデックス番号でアクセスできます。インデックスは0から始まり、末尾の要素には-1を使ってアクセスすることもできます。

また、pushメソッドやpopメソッドを使えば、配列への要素の追加や削除も簡単に行えます。

# 配列の作成と基本操作 animals = ["ライオン", "ゾウ", "キリン"] puts animals[0] # ライオン(最初の要素) puts animals[-1] # キリン(最後の要素) animals.push("トラ") # 末尾に追加 animals.pop # 末尾から削除

このように、Rubyの配列は直感的に扱える構文と便利なメソッドで、基本操作がとてもわかりやすくなっています。

実用例

Rubyの配列は、日常的なプログラミングでとてもよく使われます。たとえば、データの一覧をまとめたり、ユーザーの入力を一時的に保存したり、計算結果を並べて処理したりと、さまざまな場面で活躍します。

ここでは、配列の基本的な使い方から少し応用的な操作までを、具体的なコード例と一緒に紹介します。これらを使いこなせるようになると、データの処理がぐっと効率的になります。

配列の作成方法

Rubyでは、いくつかの方法で配列を作ることができます。よく使われるのは、角括弧([])を使うリテラル記法です。そのほかにも、Array.newメソッドや、範囲オブジェクト(1..5など)を配列に変換したり、文字列を分割して配列を作ることもできます。

シチュエーションに応じて作り方を使い分けることで、効率よくデータを準備できます。初期値を入れて配列を作るのも簡単です。

# さまざまな配列の作成方法 animals = ["ライオン", "ゾウ", "キリン"] puts animals.inspect numbers = Array.new(3, 0) # [0, 0, 0] puts numbers.inspect range_array = (1..5).to_a # [1, 2, 3, 4, 5] puts range_array.inspect words = "犬,猫,兎".split(",") # ["犬", "猫", "兎"] puts words.inspect

実行結果:

["ライオン", "ゾウ", "キリン"]
[0, 0, 0]
[1, 2, 3, 4, 5]
["犬", "猫", "兎"]

配列の要素へのアクセス

配列の中の要素には、インデックス番号を使ってアクセスできます。インデックスは 0から始まる ことに注意しましょう。また、負の数を使うと後ろから数えた要素にアクセスできます。

範囲を指定して 複数の要素をまとめて取り出す こともできますし、first や last といった便利なメソッドを使えば、コードが読みやすくなります。

animals = ["パンダ", "コアラ", "カンガルー", "ワニ"] puts animals[1] # コアラ puts animals[-1] # ワニ puts animals[1..2].join(",") # コアラ,カンガルー puts animals.first # パンダ puts animals.last # ワニ

実行結果:

コアラ
ワニ
コアラ,カンガルー
パンダ
ワニ

配列の追加・削除操作

Ruby の配列は 動的にサイズを変えられる ので、あとから要素を足したり消したりするのがとても簡単です。代表的なメソッドと演算子は次のとおりです。

操作

メソッド

演算子

動き

末尾に追加

push

<<

配列の一番後ろに要素を加える

先頭に追加

unshift

無し

配列の一番前に要素を加える

末尾から削除

pop

無し

最後の要素を取り出して配列から消す

先頭から削除

shift

無し

最初の要素を取り出して配列から消す

任意の位置を削除

delete_at(index)

無し

指定したインデックスの要素を削除 

例:動物の配列を操作する

zoo = ["トラ", "ライオン"] zoo.push("ヒョウ") # 末尾に追加 zoo << "チーター" # 同じく末尾に追加 zoo.unshift("ジャガー") # 先頭に追加 zoo.pop # 末尾から削除 zoo.delete_at(1) # 指定位置の要素を削除 puts zoo.join(", ")

上記のコードでは

["トラ", "ライオン"] だった配列に、pushと << で ヒョウとチーターを追加。

unshiftで先頭にジャガーを挿入。

popで末尾の要素を取り出してチーターを削除。

delete_at(1)でインデックス1(2番目のトラ)を削除。

を実行しています。

実行結果:

ジャガー, ライオン, ヒョウ

このように、メソッドを組み合わせるだけで 順序を保ったまま柔軟に配列を操作 できます。

配列の繰り返し処理

配列の要素を順番に処理したいとき、Rubyでは each メソッドを使うのが基本です。

処理内容をブロックとして記述することで、短くわかりやすいコードになります。

さらに、each_with_index を使えばインデックス番号も一緒に扱えますし、map を使えば処理結果を新しい配列として受け取ることもできます。

よく使う繰り返しメソッド

メソッド名

概要

each

各要素に対して処理を実行(値のみ)

each_with_index

各要素とそのインデックスを使って処理

map

各要素を変換し、新しい配列として返す

例:ペットに関する処理

pets = ["イヌ", "ネコ", "ウサギ"] # 基本的な繰り返し pets.each { |pet| puts "#{pet}は人気のペットです" } # インデックス付き繰り返し pets.each_with_index { |pet, i| puts "#{i+1}位: #{pet}" } # 変換を伴う繰り返し puts pets.map { |pet| "かわいい#{pet}" }.join("と")

実行結果:

イヌは人気のペットです
ネコは人気のペットです
ウサギは人気のペットです
1位: イヌ
2位: ネコ
3位: ウサギ
かわいいイヌとかわいいネコとかわいいウサギ

押さえておきたいポイントとして、map で生成された新しい配列は、そのまま出力や別の処理にも活用できます。繰り返し処理を使いこなすことで、Rubyでのデータ操作がよりスマートになります。

配列の変換処理

Rubyの配列は、条件に応じたフィルタリングや、各要素の変換・集約処理をシンプルに記述できます。

select や map、reduce などのメソッドを活用すれば、複雑なデータ処理も簡潔に実現可能です。

主な変換系メソッド

メソッド名

概要

select

条件に一致する要素だけを抽出

map

各要素を変換し、新しい配列を生成

reduce / inject

配列の要素を一つの値に集約

例:動物リストの加工

animals = ["ゾウ", "キリン", "カバ", "ライオン", "シマウマ"] # 条件でフィルタリング long_name_animals = animals.select { |a| a.length >= 3 } puts "名前の長い動物: #{long_name_animals.join(', ')}" # 要素の変換 lengths = animals.map { |a| "#{a}(#{a.length}文字)" } puts lengths.join(", ")

実行結果:

名前の長い動物: キリン, ライオン, シマウマ
ゾウ(2文字), キリン(3文字), カバ(2文字), ライオン(4文字), シマウマ(4文字)

必要に応じてmapとselectを組み合わせたり、reduceを使って合計・平均を求めたりすることで、より柔軟なデータ処理が行えます。

こうしたメソッドに慣れると、Rubyでのコーディング効率が格段にアップします。

多次元配列の扱い

Rubyでは、配列の中に別の配列を格納することで多次元配列を扱うことができます。

2次元配列は表形式のデータに、3次元以上はより複雑な階層構造の表現に適しています。

主な特徴

  • 配列の中にさらに配列を持つことで階層的なデータ構造を表現できる
  • 複数のインデックスを指定することで要素にアクセス可能
  • each をネストすれば、階層的な繰り返し処理も直感的に記述できる

例:動物園の各エリアと動物

# 動物園の各エリアと動物 zoo_areas = [ ["アフリカ", ["ライオン", "ゾウ"]], ["北極", ["シロクマ", "ペンギン"]] ] # 多次元配列へのアクセス puts "#{zoo_areas[0][0]}の動物: #{zoo_areas[0][1].join(', ')}" zoo_areas.each { |area, animals| puts "#{area}: #{animals.join(', ')}" }

実行結果:

アフリカの動物: ライオン, ゾウ
アフリカ: ライオン, ゾウ
北極: シロクマ, ペンギン

多次元配列をうまく使うことで、現実世界の複雑なデータ構造もシンプルなコードで表現できます。表やツリー構造など、階層的なデータを扱う場面で活用してみましょう。

配列のソートと検索

Rubyでは、配列の並び替えや検索を簡単に行える便利なメソッドが豊富に用意されています。特に sort や sort_by を使えば、要素を自然な順序や任意の条件に基づいて並べ替えることができ、find や index を使えば特定条件の要素を素早く探し出せます。

主なメソッド

メソッド名

概要  

sort

要素を昇順で並び替え(文字列なら辞書順、数値なら数値順)

sort_by

ブロック内で指定した条件に基づいてソート

find

条件に合う最初の要素を返す

index

指定した要素のインデックス(位置)を返す

例:動物リストのソートと検索

animals = ["ゾウ", "キリン", "カバ", "ライオン"] # ソート puts "名前順: #{animals.sort.join(', ')}" puts "長さ順: #{animals.sort_by { |a| a.length }.join(', ')}" # 検索 puts "ラ行の動物: #{animals.find { |a| a.start_with?("ラ") }}" puts "キリンの位置: #{animals.index("キリン")}番目"

実行結果:

名前順: カバ, キリン, ゾウ, ライオン
長さ順: ゾウ, カバ, キリン, ライオン
ラ行の動物: ライオン
キリンの位置: 1番目

これらの機能を活用することで、配列データの整列や条件抽出が簡潔に書けるようになります。特に大量データを扱う際には、ソートや検索の使い方をしっかり理解しておくことが重要です。

配列の結合と分割

Rubyでは、複数の配列をまとめたり、文字列との相互変換を行ったりする操作が簡単にできます。

+ 演算子や concat メソッドを使えば、複数の配列を一つにまとめることができ、join メソッドで配列を文字列に変換したり、split メソッドで文字列を配列に分解したりできます。

配列を結合・変換する例

animals = ["フクロウ", "カラス", "ワシ"] cats = ["ライオン", "トラ"] birds = ["ワシ", "ハト"] # 配列の結合 all_animals = cats + birds puts "全動物: #{all_animals.join(', ')}" # 文字列への変換と分割 animal_str = all_animals.join("-") puts "文字列:#{animal_str}" puts "再分割:#{animal_str.split("-").inspect}"

実行結果:

全動物: ライオン, トラ, ワシ, ハト
文字列:ライオン-トラ-ワシ-ハト
再分割:["ライオン", "トラ", "ワシ", "ハト"]

このように、配列の結合・分割はデータの形式を柔軟に切り替える際にとても便利です。データを加工したり、他のシステムとやり取りしたりする場面でもよく使われるテクニックなので、しっかり押さえておきましょう。

まとめ

Rubyの配列は、複数の値を順序付きで管理できる便利なデータ構造です。

インデックスによるアクセス、要素の追加・削除、繰り返し処理や変換といった操作が簡単に行える点が大きな特徴です。

また、Rubyには配列操作に特化した多くのメソッドが用意されており、少ないコードで柔軟な処理が書けるのも魅力です。この記事で紹介した基本操作をマスターすれば、日々のプログラミングでもきっと役立ちます。

特に今回解説した配列は、ユーザー情報の管理や履歴の記録など、実践的なアプリケーションでもよく使われる基本スキルです。

初心者のうちにしっかりと使い方に慣れておくことで、今後のステップアップがスムーズになるでしょう。

ぜひ、自分のプロジェクトでも実際に配列を使って試してみてください!

レベルを更に上げたい方はpaizaプログラミングスキルチェックへ

  1. paizaラーニングトップ
  2. リファレンス
  3. Rubyのリファレンス記事一覧
  4. Ruby 配列の使い方