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

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

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

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

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

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

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


フリーランス案件を探すならこのエージェント!

運営会社 レバテック株式会社 株式会社Branding Engineer 株式会社Hajimari
対応エリア 東京・神奈川・埼玉・千葉
大阪・兵庫・京都・愛知・福岡
東京・神奈川・埼玉・千葉
大阪・兵庫・京都・奈良・和歌山・滋賀
東京・神奈川・埼玉・千葉
茨城・大阪・兵庫・福岡
案件数 約28,000件 約3,300件 約4,200件
平均単価 68.2万円 72.2万円
最高月収 145万円 200万円 176万円
特徴高単価な案件が多い
福利厚生サービスが受けられる
・首都圏の案件が中心
給与保証制度で安定した収入を得られる
・税務処理のサポートあり
・マージン率は実質20%
週2/週3の案件が多い
在宅/リモート案件が多い
・スタートアップ企業やベンチャー企業の案件が多い
紹介企業例 ・株式会社Gunosy
・株式会社バンダイナムコホールディングス
・株式会社ユーザベース
・Sansan株式会社
・株式会社一休
・株式会社FiNC Technologies など
・クックパッド株式会社
・株式会社カオナビ
・株式会社Kaizen Platform など
説明記事
公式サイト


転職を考えているならこのエージェント!

運営会社 レバテック株式会社 株式会社Branding Engineer 株式会社リブセンス
対応エリア 東京・神奈川・埼玉・千葉
大阪・兵庫・京都・愛知・福岡
東京・神奈川・埼玉・千葉
大阪・兵庫・京都・奈良・和歌山・滋賀
東京・神奈川・埼玉・千葉
茨城・大阪・兵庫・福岡
案件数 約13,000件 約800件
※非公開求人が多い

※ドラフト制のため、対象外
年齢層 20代:◎
30代:〇
40代:〇
20代:〇
30代:〇
40代:△
20代:〇
30代:〇
40代:〇
特徴エンジニア・デザイナーを専門としている
・カウンセリングに時間をかける
年収アップ率60%の実績
IT/Web/ゲーム業界専門の転職エージェント
・業界経験者がキャリアコンサルタントを務める
・丁寧なカウンセリングで入社後の離職率1%以下を実現
ドラフト制による採用を叶える特殊なサービス
スキル・経験重視で評価してもらえる
・他エンジニアの入札結果を見ることで
自分の市場価値が分かる
紹介企業例 ・サイボウズ株式会社
・株式会社サイバーエージェント
・Chatwork株式会社 など
・DMM.com
・Money Forward
・SmartHR など
・メルカリ
・ZOZOテクノロジーズ
・freee など
説明記事
公式サイト


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記法を使用すべき、ということになりますね。

最後に

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

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

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

おすすめ記事

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

プログラミングイメージ

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

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