Ruby配列の検索と取得を完全解説!index・rindex・include?・find・bsearch入門【初心者向け】
生徒
「配列にたくさんデータが入ってきたら、目的のデータを探すのが大変そうです…」
先生
「Rubyには、配列の中身を簡単に検索できる命令が用意されています。」
生徒
「文字を探したり、数字を見つけたりもできますか?」
先生
「もちろんできます。探し方はいくつかあるので、基本から順番に見ていきましょう。」
1. 配列の検索と取得とは?
Rubyの配列(Array)は、複数のデータを順番にまとめて保存できます。 しかし、数が増えてくると「どこに何があるか分からない」状態になります。 そこで必要になるのが検索と取得です。
検索とは「条件に合うデータがあるか調べること」、 取得とは「見つかったデータや場所を取り出すこと」を指します。 本棚から特定の本を探す作業と同じイメージです。
2. index:最初に見つかった位置を調べる
indexは、配列の中から指定した値を探し、 最初に見つかった場所の番号を返します。 この番号をインデックスと呼び、0から始まります。
fruits = ["りんご", "みかん", "バナナ"]
puts fruits.index("みかん")
1
もし見つからなかった場合は、何もないことを表す値が返ります。 これは「存在しない」という意味になります。
3. rindex:後ろから探して位置を取得する
rindexは、indexと似ていますが、 配列の後ろ側から検索します。 同じ値が複数ある場合、最後に見つかった位置を知りたいときに使います。
numbers = [1, 2, 3, 2, 1]
puts numbers.rindex(2)
3
最後に登場する場所を調べたいときに便利な命令です。
4. include?:含まれているかを調べる
include?は、配列の中に指定した値が 「含まれているかどうか」だけを調べます。 結果はtrueかfalseで返ります。
colors = ["赤", "青", "黄"]
puts colors.include?("青")
true
場所は不要で、「あるかどうか」だけ知りたいときに使います。 チェック作業にとても向いています。
5. find:条件に合う要素を取り出す
findは、条件に合う要素を 配列の先頭から順番に探し、最初に見つかった要素を返します。 条件とは「数字が大きい」「文字が一致する」などの決まりです。
numbers = [10, 20, 30, 40]
result = numbers.find { |n| n > 25 }
puts result
30
「条件に合う最初の一つ」を取得したいときに活躍します。
6. bsearch:効率よく探す特別な検索
bsearchは、整列された配列を前提に、 効率よく検索を行う特別な命令です。 本の索引を使って探すようなイメージです。
配列は、あらかじめ小さい順や大きい順に 並んでいる必要があります。
numbers = [10, 20, 30, 40, 50]
result = numbers.bsearch { |n| n >= 35 }
puts result
40
データが多いときでも素早く探せるのが特徴ですが、 初心者は「並び順が必要」という点を覚えておきましょう。
7. 検索方法を使い分けるコツ
配列の検索には、それぞれ得意な場面があります。 場所を知りたいならindexやrindex、 存在確認ならinclude?、 条件付き取得ならfind、 効率重視ならbsearchが向いています。
Rubyの配列検索を理解すると、 データの扱いが一気に楽になります。 初心者のうちは、動きをイメージしながら 一つずつ試すことが大切です。