Search

検索したいワードを入力してください

2019年02月19日

初心者でもわかるRubyで配列を初期化する3つの方法を解説

Rubyの配列を初期化する方法について解説します。配列の初期化が必要な理由についての解説から、RubyのArrayクラスを用いた基本的な一次元配列の初期化から多次元配列の初期化、ハッシュを用いた配列の初期化までご説明します。

配列の初期化をする理由

Rubyに限らず、プログラム言語では配列を定義した後に初期化することが一般的です。

しかしどうして初期化をしなければならないのでしょうか?

思わぬエラーを防ぐため

配列は定義した直後は中身が不定な状態です。運用環境によってint型の配列の初期値が0になっていることもあれば、1だったり-10だったり、とても大きな値や小さな値が入っていることもあります。

そのような状況で0から1つずつ値を足していく配列として利用するとどうなってしまうでしょうか?

環境によって結果が変わってしまいます。それでは意図した結果が得られず、問題が発生してしまいます。

この問題を未然に防ぐためにも配列を定義した後、自分が利用したい値を明示的に反映してあげることで安全なプログラミングが可能となります。

Rubyのその他の配列操作に関する記事はこちら
Rubyの配列の要素や配列自体を削除する方法
Rubyの配列から要素を検索する方法
Rubyの配列の要素数を数える方法
Rubyの配列を結合する方法
Rubyの配列を並び替える(ソート)方法
Rubyで配列要素を追加する方法

Rubyの配列の初期化の方法

それでは本題のRubyでの配列の初期化の方法についてです。

配列の初期化は大きく分けて2種類の目的があると思います。

①配列の要素ごとに内容が異なっている。

②配列の要素すべてを同じ内容に初期化したい。


①の場合は配列リテラルを用いて要素ごとに内容を設定します。

②の場合はArray.newメソッドを利用して配列要素を一気に初期化できます。

RubyのArrayクラスメソッドを使った配列初期化方法

Rubyの配列に関する操作はArrayクラスのメソッドを利用します。

Arrayクラスとは

Rubyの配列はArrayクラスによって管理されています。

Arrayクラスについては初期化だけではなく、配列のための様々なメソッドが用意されています。詳しくはRuby公式のリファレンスマニュアルを参照してください。

今回は初期化のための方法のみを説明させていただきます。

Rubyの配列リテラル[]を使って配列を初期化

配列リテラルはRubyにおいてArrayクラスを初期化できる簡単な書き方の方法です。すでに配列の中身に設定したい要素が決まっているときに利用します。

[]の中に初期化したい項目を順に並べ、間をコンマで区切ります。そうすることでArrayクラスの配列変数が定義されますので後は利用したい変数名に代入してあげることで利用可能になります。

例えば配列に先頭から「First」「Second」「Third」の文字列を設定したい場合は以下のように記述します。

array = ["First", "Second", "Third"]

RubyのArray[]を使って配列を初期化

配列リテラルの前にArrayを記載する形でも同様に配列の初期化が可能です。

Arrayの記載はあってもなくても、パフォーマンスに影響はありませんので書きやすい方を利用するといいでしょう

この場合は以下のような記述になります。

array =Array ["First", "Second", "Third"]

RubyのコンストラクタArray.newを使って配列を初期化

Array.newは配列を指定した個数分同じ情報で初期化するためのメソッドです。配列に10個の「String」の文字列を設定したい場合は以下のように記述します。

array = Array.new( 10, "String" )

文字列リテラルで同じ処理を書こうとすると大変な労力がかかるので、たくさんの配列を一気に初期化したい場合はこちらの方法を使うことをおすすめします。

Rubyの多次元配列の初期化方法

ここまではシンプルな配列の例を見てきました。しかし実際に使う場合はもっと長くて複雑な配列を扱うことが多いのではないでしょうか。

多次元配列での使用方法を解説します。

一次元配列と多次元配列

一次元配列とは

ここまでで説明した配列は「一次元配列」と呼びます。

例えばint型の数値を一列に並べたようなデータ管理の方法です。

array = [ 1, 2, 3 ]

多次元配列とは

配列は更に配列を入れ子状に持つことが可能です。

そのような配列を一次元配列と区別するために多次元配列と呼ばれることがあります。細かい名称としては一次元配列を持つ配列が二次元配列と呼ばれます。

その配列を更に入れ子にすることで三次元、四次元と、どんどん数が増えます。

Rubyでの多次元配列の初期化

一次元配列を利用した初期化

多次元配列は初期化済みの一次元配列を利用して初期化することが可能です

# 一次元配列の初期化
array1 =[1, 2, 3]
array2 =[10, 20, 30]

# 多次元配列の初期化
arrays = [array1, array2]

多次元配列だけで初期化

一次元配列の定義を書かなくても、以下のようにそのまま書くことも可能です

arrays = [ [1, 2, 3], [10, 20, 30]]

さらに書き方も、様々な初期化方法が混在しても構いません。ここまでで説明した初期化手段が混在する方法でも可能です。

array1 = [1, 2, 3]
arrays = [ array1, [10, 20, 30], Array.new( 3, 100 ) ]

Rubyの配列は複数の型の変数を一度に入れられる

以下の配列の初期化は行えるでしょうか?

array = [1, ”Second”, [10, 20] ]

Rubyではこのような初期化も可能です。特に他の言語からRubyを勉強した方は驚かれる書き方かもしれませんね。

一見すると、この配列は先頭から

1 →int型の数値
"Second" →string型の文字列
[10, 20] →int型の配列

という値を設定しようとして見えます。

型が異なる値を同じ配列で管理できない言語もありますが、Rubyは配列の中で変数の型を混合しても管理することが可能です。

ハッシュを使ってRubyの配列を初期化する方法

配列とハッシュの違い

配列は1つの値を並べて管理するための機能です。

arrayString=[ "First", "Second", "Third" ]
arrayValue=[ 1, 2, 3]


ハッシュは2つで1組の値を並べて管理するための機能です。

hash={ "First":1, "Second":2, "Third":3}

"First"、"Second"、"Third"の部分はキー(KEY・鍵)と呼ばれます。1、2、3の部分はバリュー(VALUE・値)と呼ばれます。

配列は[]、ハッシュは{}と、囲っているカッコが変わります。

ハッシュのキーで配列を初期化

ハッシュのキーのみで配列を初期化したい場合、以下のように記述します

hash={ "First":1, "Second":2, "Third":3}
# arrayKey = [ "First", "Second", "Third" ] が設定されます。

arrayKey = hash.keys

ハッシュのバリューで配列を初期化

ハッシュのバリューのみで配列を初期化したい場合、以下のように記述します

hash={ "First":1, "Second":2, "Third":3}
# arrayValue = [ 1, 2, 3 ] が設定されます。

arrayValue = hash.values

ハッシュの1要素を配列として配列を初期化

ハッシュのキーとバリューを2個の配列として初期化することも可能です

hash={ "First":1, "Second":2, "Third":3}
# array = [ ["First",1], ["Second", 2], ["Third", 3] ] が設定されます。

array = hash.to_a

まとめ

一次元配列の初期化

Rubyの配列はArrayクラスを利用することで簡単に管理することが可能です。初期化にもArrayクラスを用いることになります。

配列の初期化内容が要素ごとに異なるのであれば配列リテラルを用いて1要素ごとに初期化します。以下のどちらかの書き方が可能です。

array = ["First", "Second", "Third"]

array =Array ["First", "Second", "Third"]

配列の初期化内容が要素ごとにすべて同じであればArray.newメソッドですべての要素を同じ内容に初期化します。以下の書き方が可能です。

array = Array.new( 10, "String" )

配列の初期化を行いたいときの利用したい目的に応じて使い分けてください。

多次元配列の初期化

多次元配列は一次元配列で初期化する配列です。

配列を更に配列で初期化します。

arrays = [ [1, 2, 3], [10, 20, 30]]

配列をハッシュで初期化

以下のようなハッシュが定義されているとします。

hash={ "First":1, "Second":2, "Third":3}

キーのみの配列を初期化したいときは以下の書き方が可能です。

arrayKey = hash.keys

バリューのみの配列を初期化したいときは以下の書き方が可能です。

arrayValue = hash.values

キーとバリューの組み合わせを配列として初期化したいときは以下の書き方が可能です。

array = hash.to_a

Rubyのその他の配列操作に関する記事はこちら
Rubyの配列の要素や配列自体を削除する方法
Rubyの配列から要素を検索する方法
Rubyの配列の要素数を数える方法
Rubyの配列を結合する方法
Rubyの配列を並び替える(ソート)方法
Rubyで配列要素を追加する方法

【PR】多くの人がプログラミングを諦めてしまう理由をご存知ですか?



近年プログラミングを勉強する人が増えています。

プログラミング学習者の多くは独学から取り組もうとしますが、だいたい80%ほどは3ヶ月も続かずに諦めてしまいます。早い人は1日目で。

多くの人がプログラミングを独学しようとして諦める理由は、次の3つ。
●モチベーションが維持できない
●エラーの原因・解決方法が分からない
●どう学習すればよいか分からない

TechBoostというプログラミングスクールでは、みんなと一緒にプログラミングをするのでモチベーションの維持ができ、分からないことがあればマンツーマンで教えてくれ、徹底的に研究された初心者向けの教材が揃っています。

TechBoostを卒業後、実際にエンジニアとして転職した方もいるほど。

本気でプログラミングを学びたい方は、一度無料のカウンセリングでご相談ください。プログラミングを嫌いになる前に。

tech boostについて

オーダーメイド型の学習コンテンツを提供する「tech boost」 は、エンジニアのキャリア支援に特化したサービスを複数展開している株式会社Branding Engineerが運営しているプログラミングスクールです。最短3ヶ月間で、未経験から『プログラミングの基礎』、『実際に業務で必要となるスキル』、『今のトレンドとなっている知識』まで学べ、ご希望の方にはプロのキャリアアドバイザーによる就業支援を行うことができます。

tech boost卒業生インタビュー

tech boostの卒業生の声を聞きました。あなたがプログラミングを学びたい理由を、一度考えてみてください。
営業→Javaエンジニア→Rubyエンジニアと転向し、第一志望のFinTech企業で働く山下さん
元営業、ビジネスのわかるエンジニアを目指す菅原さん
サンフランシスコに交換留学し、シリコンバレーのVCでインターン中の梅本さん
予備校の営業から半年でエンジニア転職を果たした小田島さん

tech boostの口コミ



Related