【Ruby】配列に要素を追加するメソッドをまとめてご紹介!

  • 2020年4月7日
  • 2021年10月16日
  • Ruby

今回は、Ruby初心者の方々に向けて、配列に要素を追加する際に知っておくと便利なメソッドをご紹介させていただきます。

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

そのため、今回ご紹介するメソッドを知っているだけで、コードをかなり簡素化することができ、開発スピードもグンと向上すること間違いなしです。

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

>> 配列を初期化する方法
>> 配列から要素を削除する方法
>> 配列の要素を検索する方法
>> 配列のサイズを調べる方法


レバテックフリーランス … 業界最大級の案件数業界トップクラスの高単価報酬を誇る最大手のサービスです。実績豊富なコーディネーターが丁寧な対応をしてくれるため、案件の無理な提案はありません。フリーランスで生きていくためにはまず登録しておきましょう。
MidWorks … フリーランス賠償責任保障生命保険の折半など、フリーランスでありながらも正社員並みの保障を受けられるのが特徴です。また、経験豊富なキャリアコンサルタントによる手厚いサポートも受けられるため、安定したフリーランス生活を送りたい方には特におすすめのサービスです。
ポテパンフリーランス … IT業界・技術に詳しいコンサルタントが担当してくれるため、こちらの要望をきちんと理解した上で案件を紹介してくれます。また、案件情報のみならず、フリーランスのイロハについても教えてくれるため、フリーランスとして初めて活動される方には特におすすめのサービスです。

レバテックキャリア … ITエンジニアが利用したい転職エージェントNo.1にも選ばれており、年収600万円以上のハイクラス求人を5,000件以上も保有しています。エンジニアが転職を考えた時にまず初めに登録しておくべきサービスです。
Tech Stars Agent … Tech Stars Agentでは、担当エージェントが全員エンジニア出身のため、スキルやキャリアを見据えたきめ細かな転職支援が受けられます。運営元の株式会社Branding Engineerは、独立支援サービス「MidWorks」も展開しているため、独立を視野に入れたサポートも受けられます
転職ドラフト … 年収UP率93.8%/平均年収UP額126万円と圧倒的な年収UP率を誇るイベント型のエンジニア向け 転職サービスです。毎月1回開催され、厳選された優良IT/Web系企業約150社からダイレクトスカウトを受け取ることができます。年収アップを目指す方は登録必須です。


Rubyの配列とは

配列とは、任意のオブジェクトを複数まとめた上で、それらを同じように取り扱える/それらに対して同じ処理を加えられるようにしたオブジェクトです。

詳細については以下の記事にて詳しくご説明していますので、「まだ配列のイメージがイマイチ掴めていない…」という方はまずはこちらの記事からご覧くださいね。

おすすめ記事

今回は、Rubyの配列(Array)の基本的な使い方についてご紹介させていただきます。 Webアプリケーションを開発する中で、配列は必ずと言ってよいほど使用することとなるオブジェクトになります。 そのため、今回ご紹介する、基本[…]

プログラミングイメージ

【Ruby】配列に要素を追加する際に便利なメソッド一覧

今回ご紹介しようと思っているメソッドは、以下の6種類になります。

  • 1. <<
  • 2. push
  • 3. concat
  • 4. insert
  • 5. unshift
  • 6. +(演算子)

それぞれの主な用途や使い方、そして具体例を交えながらご説明させていただきますね。

【Ruby】配列に要素を追加する際に便利なメソッドその1 << メソッド

まずご紹介するのは、「<<」メソッドです。

「<<」メソッドを使用すると、配列の末尾に要素を追加することができます

irb(main):001:0> array = ["Ruby", "Rails", "Javascript", "Go", "PHP"]
irb(main):002:0> array << "HTML"
=> ["Ruby", "Rails", "Javascript", "Go", "PHP", "HTML"]

上記のように、配列の最後に “HTML” が追加されているのがお分かりいただけるかと思います。視覚的にも分かりやすく、直感的に使用できますよね。

【Ruby】配列に要素を追加する際に便利なメソッドその2 pushメソッド

続いてご紹介するのは、「push」メソッドです。

pushメソッドも同様に、配列の末尾に要素を追加することができます

irb(main):001:0> array = ["Ruby", "Rails", "Javascript", "Go", "PHP"]
irb(main):002:0> array.push("HTML")
=> ["Ruby", "Rails", "Javascript", "Go", "PHP", "HTML"]

「<<」メソッドと異なる点としては、pushメソッドは一度に複数の要素を追加することができるということです。

irb(main):001:0> array = ["Ruby", "Rails", "Javascript", "Go", "PHP"]
irb(main):002:0> array.push("HTML", "CSS")
=> ["Ruby", "Rails", "Javascript", "Go", "PHP", "HTML", "CSS"]

このように、”HTML”と”CSS”が同時に追加されているのがお分かりいただけるかと思います。

この他、エイリアスとしてappendメソッドも存在しています。

【Ruby】配列に要素を追加する際に便利なメソッドその3 concatメソッド

続いてご紹介するのは、「concat」メソッドです。

concatメソッドでは、配列に対して配列を追加(結合)することができます

具体例を見ながら使い方を見ていきましょう。

irb(main):001:0> array1 = ["Ruby", "Rails", "Javascript", "Go", "PHP"]
irb(main):002:0> array2 = ["HTML", "CSS"]
irb(main):003:0> array1.concat(array2)
=> ["Ruby", "Rails", "Javascript", "Go", "PHP", "HTML", "CSS"]

「あれ、これならpushメソッドでもできそうじゃない?」と思われた方、残念ながらpushメソッドを使っても、上記のような結果は得られないのです。

pushメソッドを使って同じ処理を行ってみると以下のようになってしまいます。

irb(main):001:0> array1 = ["Ruby", "Rails", "Javascript", "Go", "PHP"]
irb(main):002:0> array2 = ["HTML", "CSS"]
irb(main):003:0> array1.push(array2)
=> ["Ruby", "Rails", "Javascript", "Go", "PHP", ["HTML", "CSS"]]

このように、配列の中に配列が入ってしまうのですね…。flattenメソッドを使用すればconcatメソッドを使った時と同じ配列を得られるのですが、2つのメソッドを組み合わせるより1つの方がもちろん楽ですよね

【Ruby】配列に要素を追加する際に便利なメソッドその4 insertメソッド

続いてご紹介するのは、「insert」メソッドです。

insertメソッドを使うことで、指定した位置に要素を追加することができます

irb(main):001:0> array = ["Ruby", "Rails", "Javascript", "Go", "PHP"]
irb(main):002:0> array.insert(2, "HTML")
=> ["Ruby", "Rails", "HTML", "Javascript", "Go", "PHP"]

このように、insertメソッドを使用する際には、引数を二つ指定する必要があり、第1引数には挿入したい位置を、第2引数には挿入したい要素を指定します。

なお、元々の配列以上の添え字を第1引数に指定すると、追加される要素との間にnilが挿入されてしまいますのでご注意くださいね。

irb(main):001:0> array = ["Ruby", "Rails", "Javascript", "Go", "PHP"]
irb(main):002:0> array.insert(8, "HTML")
=> ["Ruby", "Rails", "Javascript", "Go", "PHP", nil, nil, nil, "HTML"]

【Ruby】配列に要素を追加する際に便利なメソッドその5 unshiftメソッド

続いてご紹介するのは、「unshift」メソッドです。

unshiftメソッドを使うと、配列の先頭に要素を追加することができます

irb(main):001:0> array = ["Ruby", "Rails", "Javascript", "Go", "PHP"]
irb(main):002:0> array.unshift("HTML")
=> ["HTML", "Ruby", "Rails", "Javascript", "Go", "PHP"]

また、pushメソッドと同様に、複数の要素を追加することも可能です

irb(main):001:0> array = ["Ruby", "Rails", "Javascript", "Go", "PHP"]
irb(main):002:0> array.unshift("HTML", "CSS")
=> ["HTML", "CSS", "Ruby", "Rails", "Javascript", "Go", "PHP"]

この他、エイリアスとしてprependメソッドも存在しています。

【Ruby】配列に要素を追加する際に便利なメソッドその6 +(演算子)

最後にご紹介するのは、+(演算子)です。

これまでとは少し毛色が違っているのですが、四則演算で使われる「+」を使うことで、配列に配列を追加する(結合)ことができます

irb(main):001:0> array1 = ["Ruby", "Rails", "Javascript", "Go", "PHP"]
irb(main):0020> array2 = ["HTML", "CSS"]
irb(main):003:0> array1 + array2
=> ["Ruby", "Rails", "Javascript", "Go", "PHP", "HTML", "CSS"]
irb(main):004:0> array1
=> ["Ruby", "Rails", "Javascript", "Go", "PHP"]
irb(main):005:0> array2
=> ["HTML", "CSS"]

上記のように無事2つの配列が結合されているのがお分かりいただけるかと思います。

しかしここで1つ注意点があります。

上記の通り、戻り値は「結合後の配列」ではあるのですが、元々の配列にはその変更は加わっていない(非破壊的)ということです。

この点、先ほどご紹介したconcatメソッドを使用すると元々の配列も変更してしまう(破壊的)ため、両者の違いにはくれぐれもご注意くださいね。

irb(main):001:0> array1 = ["Ruby", "Rails", "Javascript", "Go", "PHP"]
irb(main):0020> array2 = ["HTML", "CSS"]
irb(main):003:0> array1.concat(array2)
=> ["Ruby", "Rails", "Javascript", "Go", "PHP", "HTML", "CSS"]
irb(main):004:0> array1
=> ["Ruby", "Rails", "Javascript", "Go", "PHP", "HTML", "CSS"]
irb(main):005:0> array2
// レシーバである配列(array1)のみ変更され、引数の配列(array2)には変更は加わりません。
=> ["HTML", "CSS"]

お仕事の途中ですが、少し一休みして、転職独立について考えてみませんか🙌?

現役エンジニアが選ぶおすすめの転職エージェント11選【成功談・失敗談もあります】

レバテックフリーランスの評判ってどう?【現役エンジニアが徹底解説します】

MidWorks(ミッドワークス)の評判ってどう?【現役エンジニアが徹底解説します】

日々の業務に追われて自分を見失わないよう、
定期的にキャリアを振り返るようにしておきましょう🤲

最後に

さて、ここまで、Rubyで配列に要素を追加する際に知っておくと便利なメソッドについてご説明してきましたがいかがでしたか?

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

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

おすすめ記事

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

プログラミングイメージ

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

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