【初心者向け】Rubyプログラミングで配列を初期化する方法

プログラム

プログラミングを学習していると、複数のデータを1つの変数に代入したい!と思うことがあります。
そこで“配列”というデータ形式をよく使います。
大抵のプログラミング言語で見られるとても便利なデータ形式ですね。
配列はこのような形式で表現されます。

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

文字列や数値などのデータを複数格納できるこのデータ形式はとても便利で、よく活用されます。
そんな便利な配列ですが、無作為にデータを追加していると後で「一部の中身を取り出して別の配列を作りたい!」と思うことがあります。

['a', 1, 'b', 3, 'c', 2, 'd', 4, 'e']

こんなグチャグチャの配列だと、数字とアルファベットで分けたり、順番に並べたくなりますね!
そこで、一度初期化した配列をデータの箱として定義しておくと非常に便利です。
今回はRubyプログラミングで配列を初期化する方法を紹介していきます!

Array.new

最初に、Array.newで初期化する方法を紹介していきます。
書き方は以下の通りです。

配列名 = Array.new

読んで字のごとく、Array(配列)をnew(初期化)する、という書き方で空の配列が定義できます。
早速、実際にコードに書いてみましょう。

array_new.rb
array = ['a', 'b', 'c', 'd', 'e']
print array
array = Array.new
print "\n"
print array

実行して確認してみましょう。

$ruby array_new.rb
["a", "b", "c", "d", "e"]
[]

Array.newを使って空の配列が出来たことが確認できました。
実はこのArray.newには引数を使って色々な配列を作ることができます。
より詳しく知りたい方は、以下の公式ドキュメントを参考にして下さいね。
singleton method Array.new

[]で定義

次に[]で再定義して初期化する方法を紹介していきます。
使い方はこの通りです。

変数 = []

シンプルな記述で、配列を初期化していることが分かりやすいですね。
それでは、コードを書いて初期化されていることを確かめてみましょう。

kakko_array.rb
array = ['a', 'b', 'c', 'd', 'e']
print array
array = []
print "\n"
print array

実行してみましょう。

$ruby kakko_array.rb
["a", "b", "c", "d", "e"]
[]

定義した配列arrayと初期化したarrayを表示してみました。
変数を上書きするのと同様で、問答無用で空の配列を代入して初期化します。
新しく配列を作るのにも使うことができて、便利に使える方法ですね。

%wと%i

次に%wと%iで配列を初期化する方法を紹介していきます。
書き方はこのようになります。

配列名 = %w()
配列名 = %i()

シンプルな書き方ですが、%wと%iで違っています。
これは%wと%iで配列に入れるデータのルールが違うからなんですね。
%wの場合、文字列限定のデータを入れる配列
%iの場合、シンボル限定のデータを入れる配列です。
文字列は”文字の列”という意味ですが、一方でシンボルとは何でしょうか?
シンボルとは、class SymbolRubyプログラミングで扱っている様々な”名前”は整数として管理されていて、その整数をコード上で表現されたものです。
より詳しい内容は公式ドキュメントを参考にしてみてくださいね。
class Symbol
それでは、コードを書いてみましょう。

w_i.rb
array_w = %w(This is a pen)
print array_w
array_w = %w()
print "\n"
print array_w
array_i = %i(This is a pen)
print "\n"
print array_i
array_i = %i()
print "\n"
print array_i

実行してみましょう。

$ruby w_i.rb
["This", "is", "a", "pen"]
[]
[:This, :is, :a, :pen]
[]

文字列とシンボルの配列を作って、初期化してみました。
%wと%iは、それぞれスペースで区切って配列を作るんですね。
この方法は、配列のデータ型に文字列やシンボルしか許可しない場合にしっかりと管理できます。
記述もシンプルでコードが見やすくなりますね♪

応用編:多次元配列の初期化

最後に多次元配列を初期化する方法を紹介していきます。
多次元配列は、1つのデータ自体に複数の情報があって、そのデータを幾つも格納したい時に使います。
もう少し分かりやすく言うと配列の中に配列がある構造の配列ですね。
例えば、こんな感じでユーザのデータに住所や電話番号など色々な情報があって、そのユーザを複数格納したい時とかに使いますね。

[
 ["user1", "address1", "phone_num1"],
 ["user2", "address2", "phone_num2"],
 ["user3", "address3", "phone_num3"],
 …
]

そんな多次元配列を初期化するには、先程紹介したArray.newを応用します。
元々、Array.newに引数を指定して、このような使い方ができます。

Array.new(配列内のデータ数, データの内容)

なので、”データの内容”に更にArray.newを指定してあげると、配列の中に配列を作ることができます。

Array.new(配列の数, Array.new(配列内の要素数))

早速コードを書いてみましょう!

multi_array.rb
array = [["a", "b", "c", "d", "e"], ["f", "g", "h", "i", "j"], ["k", "l", "m", "n", "o"]]
print array
array = Array.new(3, Array.new(5))
print "\n"
print array

実行してみましょう。

$ruby multi_array.rb
[["a", "b", "c", "d", "e"], ["f", "g", "h", "i", "j"], ["k", "l", "m", "n", "o"]]
[[nil, nil, nil, nil, nil], [nil, nil, nil, nil, nil], [nil, nil, nil, nil, nil]]

Array.newの引数の意味を理解するとシンプルに活用できると思います。
多次元配列は、データが複雑になってくると必ず使われる程のデータ構造です。
Array.newを活用すると、データ管理を効率的に扱えるので、抑えておくと良いですね♪

まとめ

今回はRubyプログラミングで配列を初期化する方法を3つ紹介しました。
・Array.new:配列を再定義。引数で初期データを挿入可能
・[]:空の配列を生成
・%wと%i:文字列、シンボルのデータ型に限定した配列を生成

それぞれ特徴があって扱いやすいものばかりだと思います。
それに、記述がシンプルなのでコードが見やすくて良いですね。
色々試しながら自分のコードにあった方法を見つけて下さいね。