Ruby配列の変換と加工を完全解説!map・flat_map・compactで初心者も安心
生徒
「配列の中身をまとめて変えたり、いらないものを消したりできますか?」
先生
「Rubyの配列には、変換や加工を簡単にする便利な命令があります。」
生徒
「難しそうで不安です……」
先生
「大丈夫です。一つずつ、身近な例で説明します。」
1. 配列の変換と加工とは?
Rubyの配列(Array)は、データを並べて保存できる便利な入れ物です。 その配列の中身を一括で変えたり、不要なデータを取り除いたりする操作を 変換や加工と呼びます。
例えば、全員のテスト点数を二倍にしたり、空白のデータを消したりする場面です。 手作業では大変な作業も、Rubyの命令を使えば一瞬で終わります。
2. map と collect の基本
mapは、配列のすべての要素に同じ処理をして、 新しい配列を作るための命令です。 collectはmapとまったく同じ意味で、書き方が違うだけです。
numbers = [1, 2, 3]
result = numbers.map { |n| n * 2 }
p result
[2, 4, 6]
これは工場のベルトコンベアで、流れてくる商品に同じ加工をするイメージです。 元の配列はそのままで、新しい配列が作られる点が特徴です。
3. flat_mapで配列を平らにする
flat_mapは、mapと配列を平らにする処理を同時に行います。 平らにするとは、入れ子になった配列を一段にすることです。
items = ["a", "b", "c"]
result = items.flat_map { |i| [i, i.upcase] }
p result
["a", "A", "b", "B", "c", "C"]
箱の中に箱が入っている状態を、全部広げて一列に並べる感覚です。 データ整理でとても役立つ命令です。
4. compactでnilを取り除く
配列の中には、nilという「何も入っていない」値が 含まれることがあります。 compactは、そのnilだけを取り除いてくれます。
data = [1, nil, 2, nil, 3]
p data.compact
[1, 2, 3]
空の箱だけを片付けて、中身のある箱だけ残すイメージです。 元の配列は変わらないので安心して使えます。
5. compact! の注意点
compact!は、compactと違い、 元の配列そのものを書き換えます。 感嘆符が付く命令は「直接変更する」意味を持つことが多いです。
data = [1, nil, 2]
data.compact!
p data
[1, 2]
元のデータを残したい場合は使わないように注意しましょう。
6. 変換と加工を使いこなす考え方
mapやflat_map、compactは、 配列を一つずつ手作業で処理する代わりに、 「まとめて処理する」ための道具です。
配列操作に慣れてくると、短く読みやすいプログラムが書けるようになります。 まずは例を真似して、動かしながら理解することが大切です。