今回は、Ruby初心者の方々に向けて、配列を初期化する方法をまとめてご紹介させていただきます。
Webアプリケーションを開発する中で、配列は必ず使用することとなるオブジェクトになります。
しかし、配列を初期化すると言ってもその方法はいくつも存在しており、どれを使用したらよいかということは毎回悩んでしまいがちです。
そんな悩みをお持ちの方々に向けて分かりやすく簡潔にご説明していきますので、ぜひ最後まで読んでみてくださいね。
また、配列の便利なメソッドを用途別にもまとめてありますので、こちらもぜひ合わせてご覧になってください。
>> 配列に要素を追加する方法
>> 配列から要素を削除する方法
>> 配列の要素を検索する方法
>> 配列のサイズを調べる方法
フリーランス案件を探すならこのエージェント!
転職を考えているならこのエージェント!
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アプリケーションを開発する中で、配列は必ずと言ってよいほど使用することとなるオブジェクトになります。 […]
このブログを通じて少しでも「傍(はた)を楽(らく)にする」ことができていれば嬉しく思います。
最後まで読んで頂きありがとうございました。