【ruby Array(配列)】6つの基本をすっきり解説で最短理解

RubyのArray(配列)の使い方を手っ取り早く知りたい
Rubyの配列で要素を追加するにはどうすればいいの?
Rubyの配列で各要素を取得する方法を知りたい

こんにちは。フリーランスのWebコーダー・プログラマーとして主にPHP/WordPress/BuddyPress/VPSサーバー構築などの業務に携わっている貝原です。

今日は、Rubyの配列の基本文法について解説したいと思います。Rubyの配列と一言で言っても実はできることはたくさんあります。

そこで、この記事ではRubyの配列について使い方の基礎の基礎から、配列でよく使うメソッドまで網羅的に解説していきます。

この記事では、以下の内容で解説していきます。

  • 配列の基本形(リテラル)
  • 配列の6つの基本
  • 配列のpush、pop、shift、unshiftメソッド
  • 配列のsort、sort_byメソッド
  • 配列のeachメソッド

このページで、Rubyの配列の使い方をよく把握して自分のスキルとしていきましょう!

Rubyの配列の基本形(リテラル)

配列とは、Rubyの任意のオブジェクトを複数まとめて同じように取り扱うためのオブジェクトです。配列のリテラル表現は、[]で囲み、カンマ「,」区切りで記述します。

配列のリテラル表現とは、Rubyのコード中で配列とその内容を定義するためのコードによる配列の表現です。配列には、任意のRubyオブジェクトを要素としてもつことが可能です。

配列の中にハッシュを入れることや、配列の中にさらに配列を入れる入れ子の配列を作ることもできます。

以上のように、配列の要素には任意のオブジェクトを入れることができます。

任意のオブジェクトを入れることができるということは、数値やハッシュ、配列などを配列に入れることも可能だということです。配列の基礎については、下記の記事を参照してください。

【Rubyの配列】基礎から発展までを網羅しました!
更新日 : 2018年9月4日

Rubyの配列の6つの基本

初期化

配列の初期化は、空の配列のリテラル表現[]を代入することで可能です。また、Arrayクラスのnewメソッドにより配列を初期化することもできます。

初期化後の配列は通常、空の配列です。newメソッドに配列のサイズを指定して任意の要素数の配列を初期化できます。

また。newメソッドに配列のサイズと要素の初期値を指定して任意の要素数で同じ初期値を持った要素を持つ配列を初期化することもできます。

実行結果:

以上のように、空の配列として初期化できました。また、要素数や初期値を指定して配列を初期化できました。

なお、配列の初期化について、詳しくは下記の記事を参照してください。

【初心者必見】Ruby配列の初期化の方法まとめてみた!
更新日 : 2018年12月28日

要素の取得

配列の要素を取得するには、配列の入った変数に対して[]演算子にインデックス(添え字)を指定します。

例えば、array変数のインデックス0番目の要素を取得するには、以下のようなコードを書きます。

実際にサンプルコードで確認してみましょう。

実行結果:

以上のように、配列に対し[]演算子を使ってインデックスを指定することで、配列の要素を取得できました。

要素の追加

配列に要素を追加するには、配列の入った変数に[]演算子で存在しないインデックスを指定し、それに対し値を代入します。存在しなかったインデックスに対し、要素が追加されます。

また、簡単に配列に要素を追加する方法として、配列のpushメソッドがあります。pushメソッドは、配列の末尾に指定した値を追加します。

実際にサンプルコードをみてみましょう。

実行結果:

以上のように、配列の入った変数に[]演算子で存在しないインデックスを指定し、それに対し値を代入することで、配列の要素を追加できます。また、配列のpushメソッドにより、配列の末尾に要素を追加できます。

要素の更新

配列の要素を更新するには、配列の入った変数に[]演算子で既存のインデックスを指定し、それに対し値を代入します。例えば、array変数のインデックス1番目の要素を更新するには、以下のようなコードを書きます。

実際のサンプルコードをみていきましょう。

実行結果:

以上のように、配列の入った変数に[]演算子で既存のインデックスを指定し、それに対し値を代入することで、配列の要素を更新できます。

要素の削除

配列の要素を削除するには、配列のdeleteメソッドを使用します。deleteメソッドに値を指定すると、配列中の同じ値をもつ要素を削除します。

また、配列に[]演算子でインデックスの範囲を指定し、それに空の配列リテラル[]を代入することで、指定したインデックスの範囲分だけ配列から要素を削除できます。

実際のサンプルコードをみていきましょう。

実行結果:

以上のように、deleteメソッドに値を指定して配列中の同じ値を持つ要素を削除できます。また、配列にインデックスの範囲を指定し、空の配列リテラル[]を代入することで配列のインデックスの範囲を削除できます。

要素数の取得

配列の要素数を取得するには、sizeメソッドを実行します。また、sizeメソッドのエイリアスであるlengthメソッドでも、配列の要素数を取得できます。

さらにcountメソッドでも配列の要素数を取得できます。countメソッドの引数に値を指定すると、配列中で同じ値を持つ要素数を取得できます。

実際のサンプルコードをみていきましょう。

実行結果:

以上のように、配列のsize、length、countメソッドで配列の要素数を取得できます。また、countメソッドの引数に値を指定することで、配列中の同じ値をもつ要素数を取得できます。

なお、配列のsize、length、countメソッドについて、詳しくは下記の記事を参照してください。

【Ruby入門】length,size,countの使い方まとめ
更新日 : 2019年4月24日

Rubyの配列のよく使うメソッド

以降は、配列でよく使うメソッドを紹介していきます。なお、配列でよく使うメソッドについて、詳しくは下記の記事を参照してください。

【Ruby】Array(配列)の基礎からさまざまな使い方まで徹底解説!
更新日 : 2018年12月26日

配列のpush、pop、shift、unshiftメソッド

配列の末尾に要素を1つ追加するにはpushメソッドを使用します。対して配列の末尾から要素を1つ削除するにはpopメソッドを使用します。

配列の先頭に要素を1つ追加するにはunshiftメソッドを使用します。対して配列の先頭から要素を1つ削除するにはshiftメソッドを使用します。

実際のサンプルコードをみていきましょう。

実行結果:

以上のように、配列の末尾の要素を追加・削除するには、push、popメソッドを使用します。配列の先頭の要素を追加・削除するには、unshift、shiftメソッドを使用します。

配列のsort、sort_byメソッド

配列の要素を、値の昇順に並び替えるにはsortメソッドを使用します。配列の要素を、好きな順番で並び替えるにはsortメソッドにブロックを与えます。

ブロックのブロック変数に配列を並び替えるために比較する2要素が与えられます。この2要素の比較基準を変えることで、好きな順番でsortできます。ここでは、sortの並び替えの具体的な例として、配列の要素を降順に並び替えるコードを紹介します。

上記コードで、ブロックの返り値は「b <=> a 」です。「b <=> a 」は、bがaより大きいときに1を返し、bがaより小さいときに-1を返します。bとaが等しいときは0を返します。

この返値により、sortメソッド中でbが大きいときにbをそのままの順番に置いたままにし、bが小さいときにbとaの順番を入れ替えます。bとaが等しいときには何もしません。このsortの挙動により、結果的に配列が降順に並び替えられます。

この例はsortの一例ですが、例えば「a <=> b」とした場合は、配列が昇順に並び替えられます。

実際のサンプルコードをみていきましょう。

実行結果:

以上のように、sortメソッドにより昇順に配列が並び替えられます。

また、sortメソッドにブロックを渡すことにより、好きな順番で配列を並び替えることができます。別の方法で配列を好きな順番で並び替える方法として、sort_byがあります。

sort_byでは並び替える要素をブロック引数として受け取ります。そのブロックの返値で、並び替える基準となる値を指定することで、その基準で並び替えられます。

以下のサンプルコードでは、文字列の長さを基準にして昇順で並び替えています。

実行結果:

以上のように、sort_byのブロック引数aに対し、a.sizeと文字列長をブロックの返値に指定することで、配列の並び替えの基準を文字列長の昇順にしています。

配列のeachメソッド

配列の要素を1つ1つずつループさせて、各ループでブロックを実行させる方法としてeachメソッドがあります。eachメソッドは配列の要素数分、繰り返し実行されます。

その際、eachメソッドのブロックのブロック変数に、配列の1つの要素が与えられます。この機能を使って、配列の要素を1つ1つputsメソッドで出力した例が、以下のサンプルコードです。

実行結果:

以上のように、eachメソッドにより配列の要素が1つ1つブロックのブロック引数に与えられ、ブロックが各要素分だけ実行されます。そのブロックのコードは自由に記述が可能で、配列の要素ごとに実行するコードをカスタマイズできます。

まとめ

今回は、Rubyの配列の基本文法について学習しました!

学習のポイントを振り返ってみましょう!

  • 配列はリテラル表現とオブジェクト表現がある
  • 配列はリテラルやArray.newメソッドで初期化できる
  • 配列の要素は取得・追加・更新・削除できる
  • 配列の要素の追加・削除はpush、pop、unshift、shiftメソッドで実行できる
  • 配列の要素はsort、sort_byメソッドで並び替えできる
  • 配列の要素を1つ1つ数え上げてブロックを実行できる

以上の内容を再確認し、ぜひ自分のプログラムに生かし学習を進めてください!

Rubyカリキュラム無料公開中!

この記事はRuby入門完全攻略ガイド【基礎学習/アプリ開発/仕事獲得】の一部になります。このカリキュラムは、プログラミング入門者が、基礎学習からアプリ開発、さらには仕事獲得まで体系的に学べる内容となっています。

Ruby学習に必要な情報を一つにまとめていますので効率よくRubyを学ぶことが出来ます。この機会に是非活用していただければと思います。

【Ruby入門ガイド】アプリ開発で知っておくべき知識を総ざらい
更新日 : 2018年11月23日

Rubyを最短で習得したい方へ

近年では様々なWEBサービスが流通するようになりました。

WEBサービスの普及が進むにつれて、それらを素早く開発するのに長けたRubyの人気は今後さらに増し、Rubyエンジニアの需要も自ずと増えることは間違いなしでしょう。

元々ITリテラシーの高い方や他言語を習得している方であれば、独学でRubyを習得することが可能です。

ただし、プログラミング学習をしている方の多くは

「自分に合った教材が見つけられずに挫折してしまった」
「勉強のための勉強になってしまい、ゴールが見えない」
「情報が少なくどう調べればいいかわからない」
「エラーを解決するのに何日もかかってしまう」

このような悩みを抱えたまま挫折してしまうのが現実となっています。

  • もう挫折したくない
  • 本業と両立しながら、好きな時間で自分のペースで勉強を続けていきたい
  • 自分だけのカリキュラムで効率的に勉強したい
  • WEBアプリケーション開発までしっかりサポートして欲しい
そんな方はお気軽に侍エンジニア塾までご相談ください。

お一人お一人に専属のインストラクターがつくので、初心者の方がつまづきがちな、「CookPad」、「Wantedly」、「食べログ」のようなWEBアプリケーション開発方法もスムーズに学習することできます。

実際にオリジナルWEBアプリを開発し、成果物として認められて仕事獲得に成功した塾生は数多くいます。

このように、オリジナルアプリ開発から仕事獲得まで徹底的にサポートすることでプログラミング初心者の方でも安心して基礎学習に取り組むことができます。

まずは『無料体験レッスン』で、弊社のコンサルタントと一緒にあなた専用の学習方法やカリキュラムを考えてみませんか?

Rubyならではの学習方法や、現役フリーランスRubyエンジニアから貴重なアドバイスを受けることができます。

詳しくは下の画像から弊社サービス内容をご確認ください。

ruby_a2
LINEで送る
Pocket

書いた人

貝原 輝昌

貝原 輝昌

こんにちは!貝原(@touhicomu)と申します。
現在は、Web業界のフリーランスとして、主にPHP/WordPress/BuddyPress/VPSサーバー構築などの業務を受注しています。
現住所は、日本の西海岸、長崎県は波佐見町です。田舎ライフです。^^
地元の観光団体「笑楽井石」にボランティアでほたる撮影会やそば塾などのスタッフとして参加させて頂いています。
以下の活動も行っています。
 ・笑楽井石のブログ
 ・エクセル関数を日本語化するソフト
 ・エクセルVBAを日本語で記述するソフト

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説