バナー画像

Rubyも他言語と同様に配列を扱うことができます。突然ですが、2つの配列array1とarray2を使った以下の条件式、何をしているか分かりますか?

p array1 <=> array2

見慣れない<=>というのも気になるし、文全体で何をしているか見えてこないですよね。でも、これはRubyの中ではごく普通の記述なんです。

本記事では、Rubyにおける配列の基本を解説します。さらに応用として、

・配列の要素を削除
・配列の要素を追加
・配列の比較
・配列の連結やマージ

といった、実際の開発でよく使う配列の操作を解説します。ひととおり読むと、先の不思議な式が何をしているのか分かるだけでなく、配列の基本知識を得ることができますよ!
[linkPotefuri word=フリーランス案件をお探しの方はこちら ]

配列の基本

配列の作り方

変数名のあとに、[ ]で要素を並べるだけで配列ができます。配列を表示するときは、pメソッドを使います。

numbers = [0, 1, 2, 3, 4, 5]
strings = ["a", "b", "c", "d" ]

p numbers
p strings

[実行結果]

[0, 1, 2, 3, 4, 5]
["a", "b", "c", "d"]

それぞれ、初期値を与えつつ配列を作ることができました。また「a = []」と要素がない配列を宣言し、「a[0] = 0」として要素を入れていくことも可能です。

ここでちょっと意地悪しましょう。上記の配列numbersの11番目、つまり間を飛ばして値を入れるとどうなるでしょうか?

numbers = [0, 1, 2, 3, 4, 5]
numbers[10] = 6
p numbers

[実行結果]

[0, 1, 2, 3, 4, 5, nil, nil, nil, nil, 6]

エラーとはならず、6〜9番目を飛ばして(つまり間はnil)10番目に値6を入れることができました。このように、Rubyの配列では、間を詰める必要はありません。これは大きな特徴ですよね。

配列の生成は、Arrayクラスのnewメソッドを使う方法もあります。

array = Array.new(3,100)
p array

[実行結果]

[100, 100, 100]

100という要素を3つ持つ配列ができました。

何らかの区切り文字(カンマや空白)で区切られた文字列から配列を作れます

array = "あああ, いいい, ううう, えええ, おおお".split(",")
p array

[実行結果]

["あああ", " いいい", " ううう", " えええ", " おおお"]

1つの文字列から配列ができました。

配列の要素を指定する

番号を指定して要素を取り出します。2つ目を取り出すには、以下のようにします。

array = ["a", "b", "c", "d"]
puts array[2]

[実行結果]

c

マイナスを使うと、後ろから何番目か、という指定ができます。-1が一番最後、-2, -3 … と増えていくたびに前にいきます。

array = ["a", "b", "c", "d"]
puts array[-2]

[実行結果]

c

後ろから2つめが表示されました。

配列を部分的に取り出し、別の配列にすることもできます。例えば、2〜4つ目を取り出してみましょう。

array = ["a", "b", "c", "d"]
p array[1..3]

[実行結果]

["b", "c", "d"]

2つ目から4つ目の要素で、新たに配列ができたのがわかります。

配列の要素を削除する

要素を削除するには、delete(要素の中身)を使います。

array = ["a", "b", "c", "d"]
array.delete("c")
p array

[実行結果]

["a", "b", "d"]

cと一致する3番目の要素が消えました。

要素番号を指定する場合は「array.delete_at(2)」と書き換えればOKです。

その他便利なメソッドとして、compact! をご紹介します。compact! は、配列からnilの要素だけを消してしまうことができます。

numbers = [0, 1, 2, 3, 4, 5]
numbers[9] = 7
p numbers

numbers.compact!
p numbers

[実行結果]

[0, 1, 2, 3, 4, 5, nil, nil, nil, 7]
[0, 1, 2, 3, 4, 5, 7]

nilの要素が消えました。とりあえず配列に値をまばらに入れておき、最後にnilだけ一気に消してしまうことができるので、とても便利です。
[linkPoteCan word=3ヶ月間のRuby実践研修プログラムはこちら ]

配列の要素を追加する

配列の先頭に要素を追加するときは、unshift()を使います。

array = ["a", "b", "c", "d"]
array.unshift("m")
p array

[実行結果]

["m", "a", "b", "c", "d"]

末尾に追加するときは、push()を使います

array = ["a", "b", "c", "d"]
array.push("m")
p array

[実行結果]

["a", "b", "c", "d", "m"]

配列を比較する

2つの配列の要素がすべて等しいかどうかを判定するには==を使います。以下の実行結果は、要素は全て等しいのでtrueと表示されます

array1 = ["a", "b", "c", "d", "e"]
array2 = ["a", "b", "c", "d", "e"]
p array1 == array2

比較と同時に、どちらが大きかったのか、つまりどちらの要素が多かったのかも知りたい場合は、<=>を使います

array1 = ["a", "b", "c", "d", "e"]
array2 = ["a", "b", "c", "d"]

p array1 <=> array2

[実行結果]

1

<=>演算子は、先頭から順に2つの配列を比較し、すべて等しいまま最後まで達すると0、array1の方が短ければ-1を、そうでなければ1を返します。どちらかが異なっていれば-1を返します
[linkPoteCan word=Rubyへのスキルチェンジを目指すなら! ]

配列を結合する

2つの配列を結合するには、|か+を使います。|は同じ要素が含まれていれば集約し、+は重複に関係なく結合します。

array1 = ["a", "b", "c", "d", "e"]
array2 = ["a", "b", "c", "d"]

p array1 | array2
p array1 + array2

[実行結果]

["a", "b", "c", "d", "e"]
["a", "b", "c", "d", "e", "a", "b", "c", "d"]

違いがお分かりいただけたでしょうか?

配列は列?それとも集合体?

配列のもつさまざまな挙動を学習するとき、ぜひ覚えておいてほしいことがあります。配列は、列と集合体という2つの側面を持つ、ということをです。

連結するときは、 | を使うと和集合の意味になります。しかしpushを使うと、配列を列(つまりキュー)として扱うことになります。こういった列と集合の違いを押さえておいてください。

まとめ

この記事では、配列の基本や応用を解説しました。自分で何度も配列を作っては操作してみて、理解を深めてくださいね!

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。