配列の要素を追加・削除しよう

学習の目標

本章では、以下の内容を学びます。

  • 配列の末尾に要素を追加する方法を習得する
  • 配列の末尾から要素を取り出す方法を理解する
  • 配列の先頭に要素を追加する方法を学ぶ
  • 配列の先頭から要素を取り出す方法を習得する
  • 配列から特定の要素を削除する方法を理解する

はじめに

前回は配列の基本的な使い方を学びました。配列を作成する方法や、要素を参照する方法などを理解したことと思います。

本章では、もう一歩進んで配列の要素を追加したり削除したりする方法を学びます。これらの操作は、データの管理において非常に重要です。例えば、新しい学生が転校してきたときにリストに名前を追加したり、退校した学生の名前を削除したりするといった場面で使います。

配列の最後に要素を追加する

配列の最後に要素を追加するには、pushメソッドを使います。このメソッドは、指定した要素を配列の末尾に追加します。

fruits = ["りんご", "バナナ"]
fruits.push("みかん")
puts fruits # りんご、バナナ、みかんが表示される

この例では、fruits配列に「みかん」という要素を追加しています。pushメソッドを実行すると、配列自体が変更されます。

<< 演算子を使う方法

pushの代わりに<<演算子を使うこともできます。この演算子は「追加演算子」や「シフト演算子」とも呼ばれ、配列の末尾に要素を追加するという意味です。

fruits = ["りんご", "バナナ"]
fruits << "みかん"
puts fruits # りんご、バナナ、みかんが表示される

<<演算子はpushメソッドと同じ働きをしますが、より簡潔に書けるため、Rubyのコードでよく使われています。

配列の最後から要素を取り出す

配列の最後から要素を取り出して削除するには、popメソッドを使います。このメソッドは配列の最後の要素を返し、同時にその要素を配列から削除します。

fruits = ["りんご", "バナナ", "みかん"]
last_fruit = fruits.pop
puts last_fruit # みかん
puts fruits # りんご、バナナが表示される

この例では、popメソッドによって「みかん」が取り出され、last_fruit変数に代入されています。その結果、fruits配列には「りんご」と「バナナ」だけが残ります。

popメソッドはスタック(後入れ先出し)というデータ構造の操作に似ています。スタックとは、積み重ねた皿のように、最後に置いたものを最初に取るという考え方です。

配列の先頭に要素を追加する

配列の先頭に要素を追加するには、unshiftメソッドを使います。このメソッドは指定した要素を配列の先頭に追加します。

fruits = ["りんご", "バナナ"]
fruits.unshift("みかん")
puts fruits # みかん、りんご、バナナが表示される

この例では、fruits配列の先頭に「みかん」という要素を追加しています。unshiftメソッドを実行することで、他の要素は後ろにずれて、新しい要素が先頭に入ります。

配列の先頭から要素を取り出す

配列の先頭から要素を取り出して削除するには、shiftメソッドを使います。このメソッドは配列の先頭の要素を返し、同時にその要素を配列から削除します。

fruits = ["りんご", "バナナ", "みかん"]
first_fruit = fruits.shift
puts first_fruit # りんご
puts fruits # バナナ、みかんが表示される

この例では、shiftメソッドによって「りんご」が取り出され、first_fruit変数に代入されています。その結果、fruits配列には「バナナ」と「みかん」だけが残ります。

shiftメソッドはキュー(先入れ先出し)というデータ構造の操作に似ています。キューとは、列に並んだ人のように、最初に並んだ人が最初に出ていくという考え方です。

指定した要素を削除する

配列から特定の要素を削除するには、deleteメソッドを使います。このメソッドは指定した値と同じ要素をすべて削除します。

fruits = ["りんご", "バナナ", "みかん", "バナナ"]
fruits.delete("バナナ")
puts fruits # りんご、みかんが表示される

この例では、deleteメソッドによって「バナナ」という要素がすべて削除されています。配列内に同じ値が複数ある場合、それらすべてが削除されます。

存在しない要素を削除しようとした場合

指定した値が配列の中に存在しない場合は、nilが返ってきます。

fruits = ["りんご", "バナナ", "みかん"]
result = fruits.delete("メロン")
puts result # nil

この例では、「メロン」という要素は配列内に存在しないため、deleteメソッドはnilを返します。配列自体の内容は変わりません。

実用的な配列操作の例

これまで学んだメソッドを使って、実際の場面でどのように配列を操作するか見てみましょう。

待ち行列の管理

銀行やレストランなどの待ち行列を管理するシステムを考えてみます。

# 待ち行列を初期化
queue = []
# お客様が到着(末尾に追加)
queue.push("山田さん")
queue.push("鈴木さん")
queue.push("佐藤さん")
puts "現在の待ち人数: #{queue.length}人"
puts "待ち行列: #{queue.join(', ')}"
# 先頭のお客様を呼び出す
next_person = queue.shift
puts "#{next_person}、どうぞお入りください"
puts "待ち行列: #{queue.join(', ')}"

履歴の管理

Webブラウザの「戻る」ボタンのような履歴機能を実装する例です。

# 閲覧履歴を初期化
history = []
# ページを訪問するたびに履歴に追加
history.push("ホームページ")
history.push("ニュースページ")
history.push("スポーツページ")
puts "現在のページ: #{history.last}"
# 「戻る」ボタンをクリック
history.pop
puts "戻ったページ: #{history.last}"

まとめ

本章では、配列の要素を追加・削除する方法を学びました。以下の内容を理解できたことと思います。

  • pushメソッドまたは<<演算子で配列の最後に要素を追加する
  • popメソッドで配列の最後の要素を取り出して削除する
  • unshiftメソッドで配列の先頭に要素を追加する
  • shiftメソッドで配列の先頭の要素を取り出して削除する
  • deleteメソッドで指定した値と同じ要素をすべて削除する

これらのメソッドを使いこなすことで、配列を動的に操作し、データをより柔軟に管理できるようになります。

このセクションは有料サブスクリプションへの登録、またはログインが必要です。完全なコンテンツにアクセスするには、料金ページ(/pricing)をご覧ください。購入済みの場合は、ログインしてください。

Starterプランでより詳しく学習

この先のコンテンツを読むにはStarterプラン以上が必要です。より詳細な解説、実践的なサンプルコード、演習問題にアクセスして学習を深めましょう。

作成者:とまだ
Previous
配列の作成と基本操作を学ぼう