【Ruby】配列を初期化する方法をまとめてご紹介します!【初心者向け】

  • 2020年4月10日
  • 2021年10月15日
  • Ruby

今回は、Ruby初心者の方々に向けて、配列を初期化する方法をまとめてご紹介させていただきます。

Webアプリケーションを開発する中で、配列は必ず使用することとなるオブジェクトになります。

しかし、配列を初期化すると言ってもその方法はいくつも存在しており、どれを使用したらよいかということは毎回悩んでしまいがちです。

そんな悩みをお持ちの方々に向けて分かりやすく簡潔にご説明していきますので、ぜひ最後まで読んでみてくださいね。

また、配列の便利なメソッドを用途別にもまとめてありますので、こちらもぜひ合わせてご覧になってください。

>> 配列に要素を追加する方法
>> 配列から要素を削除する方法
>> 配列の要素を検索する方法
>> 配列のサイズを調べる方法


レバテックフリーランス … 業界最大級の案件数業界トップクラスの高単価報酬を誇る最大手のサービスです。実績豊富なコーディネーターが丁寧な対応をしてくれるため、案件の無理な提案はありません。フリーランスで生きていくためにはまず登録しておきましょう。
MidWorks … フリーランス賠償責任保障生命保険の折半など、フリーランスでありながらも正社員並みの保障を受けられるのが特徴です。また、経験豊富なキャリアコンサルタントによる手厚いサポートも受けられるため、安定したフリーランス生活を送りたい方には特におすすめのサービスです。
ポテパンフリーランス … IT業界・技術に詳しいコンサルタントが担当してくれるため、こちらの要望をきちんと理解した上で案件を紹介してくれます。また、案件情報のみならず、フリーランスのイロハについても教えてくれるため、フリーランスとして初めて活動される方には特におすすめのサービスです。

レバテックキャリア … ITエンジニアが利用したい転職エージェントNo.1にも選ばれており、年収600万円以上のハイクラス求人を5,000件以上も保有しています。エンジニアが転職を考えた時にまず初めに登録しておくべきサービスです。
Tech Stars Agent … Tech Stars Agentでは、担当エージェントが全員エンジニア出身のため、スキルやキャリアを見据えたきめ細かな転職支援が受けられます。運営元の株式会社Branding Engineerは、独立支援サービス「MidWorks」も展開しているため、独立を視野に入れたサポートも受けられます
転職ドラフト … 年収UP率93.8%/平均年収UP額126万円と圧倒的な年収UP率を誇るイベント型のエンジニア向け 転職サービスです。毎月1回開催され、厳選された優良IT/Web系企業約150社からダイレクトスカウトを受け取ることができます。年収アップを目指す方は登録必須です。

Rubyの配列とは

配列とは、任意のオブジェクトを複数まとめた上で、それらを同じように取り扱える/それらに対して同じ処理を加えられるようにしたオブジェクトです。

詳細については以下の記事にて詳しくご説明していますので、「まだ配列のイメージがイマイチ掴めていない…」という方はまずはこちらの記事からご覧くださいね。

おすすめ記事

今回は、Rubyの配列(Array)の基本的な使い方についてご紹介させていただきます。 Webアプリケーションを開発する中で、配列は必ずと言ってよいほど使用することとなるオブジェクトになります。 そのため、今回ご紹介する、基本[…]

プログラミングイメージ

【Ruby】配列を初期化する方法一覧

配列の初期化方法について、今回ご紹介しようと思っているものは、以下の種類になります。

  • 1. []
  • 2. Array[]
  • 3. Array.new()
  • 4. to_a
  • 5. %w
  • 6. %i

それぞれの主な用途や使い方、そして具体例を交えながらご説明させていただきますね。

【Ruby】配列を初期化する方法その1 []

まずご紹介するのは、「[]」です。

こちらはご説明するまでもないですが、最も簡単かつ分かりやすい初期化方法です。

[]の中にカンマ区切りで要素を追加するだけで配列が出来上がります

irb(main):001:0> array1 = ["Ruby", "Rails", "Javascript", "Go", "PHP"]
irb(main):002:0> array1.class
=> Array

また、以下のようにスペースが不揃いな場合であっても、きちんとRuby側で整えてくれます(もちろん、これはあくまで例として挙げているだけなので、書くときはきちんと書きましょうね)。

irb(main):001:0> array2 = [1, 2 ,3, 4,5,6 ]
irb(main):002:0> array2.class
=> Array
irb(main):007:0> array2
=> [1, 2, 3, 4, 5, 6]

【Ruby】配列を初期化する方法その2 Array[]

続いてご紹介するのは、「Array[]」です。

こちらは、先ほどご紹介した[]と使い方は全く同じです。

irb(main):001:0> array = Array["Ruby", "Rails", "Javascript", "Go", "PHP"]
irb(main):002:0> array.class
=> Array

ご紹介こそしましたが、処理自体は[]と全く同じでかつArrayという文字を追加で書かないといけないため、実際の開発で使用することはほとんどありませんので、特に覚えておく必要はございません!

【Ruby】配列を初期化する方法その3 Array.new()

続いてご紹介するのは、「Array.new()」です。

Array.new()はこれまでとは違い、引数をとることができます

irb(main):001:0> array = Array.new(3)
irb(main):002:0> array
=> [nil, nil, nil]

このように引数に数字を設定することで、設定した数の要素を含む配列を作成することができます

上記の例では全てnilですが、第二引数にオブジェクトを指定することで、それらを含む配列を作成することも可能です

irb(main):001:0> array = Array.new(3, "Ruby")
irb(main):002:0> array
=> ["Ruby", "Ruby", "Ruby"]

このArray.new()ですが、配列の要素数を簡単に設定できる反面、要素ごとの値は設定できないため、「長さを指定して配列を作りたい」場合や「後々値を変更する前提で初期値を設定しておきたい」場合などに使用すると良いでしょう。

【Ruby】配列を初期化する方法その4 to_aメソッド

続いてご紹介するのは、「to_a」メソッドです。

to_aメソッドを使用すると、”1~10″や”a~z”などの連続した値を簡単に配列としてまとめることができます

irb(main):001:0> array1 = (1..10).to_a
irb(main):002:0> array1
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
irb(main):003:0> array2 = ('a'..'z').to_a
irb(main):004:0> array2
=> ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]

この(#{first}..#{last})は範囲オブジェクトと呼ばれ、その範囲オブジェクトにto_aメソッドを組み合わせることで連続した値を配列にまとめることができます。

連続した数字アルファベット一覧五十音一覧などを取得したい場合には非常に便利ですよね。

【Ruby】配列を初期化する方法その5 %w記法

続いてご紹介するのは、「%w」記法です。

%w記法を使用すると、()で囲った要素を配列に変換することができます

irb(main):001:0> array1 = %w(Ruby Rails Javascript Go PHP)
irb(main):002:0> array1
=> ["Ruby", "Rails", "Javascript", "Go", "PHP"]
irb(main):003:0> array2 = %w(1 2 3 4)
irb(main):004:0> array2
=> ["1", "2", "3", "4"]

このように、%w記法を使うことで()内の要素を文字列に変換した上で配列を作成することが可能です。

通常通り[]を使用して配列を作成するのと比べて少しばかり記述が簡潔になるので、私も頻繁に使用しています。

【Ruby】配列を初期化する方法その6 %i記法

続いてご紹介するのは、「%i」記法です。

%i記法も%w記法と同様に、()で囲った要素を配列に変換することができます

irb(main):001:0> array1 = %i(Ruby Rails Javascript Go PHP)
irb(main):002:0> array1
=> [:Ruby, :Rails, :Javascript, :Go, :PHP]
irb(main):003:0> array2 = %i(1 2 3 4)
irb(main):004:0> array2
=> [:1, :2, :3, :4]

%w記法との違いとしては、%i記法を使うと、要素をシンボルに変換した上で配列を作成するということです。

文字列とシンボルの違いとは?

さて、ここで「文字列」と「シンボル」という2つの概念が出てきましたが、両者はどのような違いがあるのでしょうか?

この点については、説明するとすごく長くなってしまうので、詳しくはまた別の機会にご説明させていただこうと思うのですが、簡単に言うと以下のように整理できます。

文字列:シングルクォーテーション或いはダブルクォーテーションで囲われ、同じ文字列であっても、異なるオブジェクトとして存在している。

シンボル:コロン(":")を用いて表現され、同じシンボルであれば同じオブジェクトとして存在している。見た目は文字列と同じだが、内部的には数値として扱われている。

さて、文章の説明だけを見ていてもさっぱりだと思いますので、具体例を見ながらその違いを確認していきましょう。

# 文字列の場合
irb(main):001:0> ruby1 = "Ruby"
irb(main):002:0> ruby2 = "Ruby"
irb(main):003:0> ruby1.equal?(ruby2)
=> false
irb(main):004:0> ruby1.object_id
=> 180
irb(main):005:0> ruby2.object_id
=> 200

# シンボルの場合
irb(main):001:0> ruby1 = :Ruby
irb(main):002:0> ruby2 = :Ruby
irb(main):003:0> ruby1.equal?(ruby2)
=> true
irb(main):004:0> ruby1.object_id
=> 2024228
irb(main):005:0> ruby2.object_id
=> 2024228

上記のように、変数 “ruby1/ruby2” を文字列として定義した場合には、厳密には “ruby1” と “ruby2” は異なっており、オブジェクトのIDも異なっております

その一方で、それぞれをシンボルとして定義すると、両者が全く同じオブジェクトとして存在しているのがお分かりいただけるかと思います。

さて、両者の違いが何となく分かったところで、それぞれどのように使い分ければよいのでしょうか?

ここで注目すべき点は、シンボルが「内部的には数値として扱われている」ということです。

コンピュータにとっては、文字列を処理するよりも数値を処理する方が楽ちんになる(処理速度が早くなる)ため、比較したり検索したりする場合には速度面で有利になります

ですので、詳細はまた別の機会にということで、一旦は以下のように使い分けていただければ問題はありません。

文字列:その文字列自体がデータである場合に使用する。
(例)名前、住所、性別 など

シンボル:データに名前をつける際に使用する。
(例)ハッシュのキー、メソッド名、変数名、定数名 など

これを踏まえて、上記の例(%w記法, %i記法)に戻ると、今回使用しているデータはそれ自体が文字列であるため、%w記法を使用すべき、ということになりますね。

お仕事の途中ですが、少し一休みして、転職独立について考えてみませんか🙌?

現役エンジニアが選ぶおすすめの転職エージェント11選【成功談・失敗談もあります】

レバテックフリーランスの評判ってどう?【現役エンジニアが徹底解説します】

MidWorks(ミッドワークス)の評判ってどう?【現役エンジニアが徹底解説します】

日々の業務に追われて自分を見失わないよう、
定期的にキャリアを振り返るようにしておきましょう🤲

最後に

さて、ここまで、Rubyで配列を初期化する方法をご紹介してきましたがいかがでしたか?

今回ご紹介したものを頭に入れておけば、普段の開発でも特段困ることはなくなるはずですので、どんどん積極的に配列を使っていきましょう。

なお、配列を扱う際に知っておくべきその他の便利なメソッドについては以下の記事にてご説明していますので、こちらもぜひご確認くださいね。

おすすめ記事

今回は、Ruby初心者の方々に向けて、配列(Array)を扱う際に最低限知っておくべきメソッドをご紹介させていただきます。 Webアプリケーションを開発する中で、配列は必ずと言ってよいほど使用することとなるオブジェクトになります。 […]

プログラミングイメージ

このブログを通じて少しでも「傍(はた)を楽(らく)にする」ことができていれば嬉しく思います。

最後まで読んで頂きありがとうございました。