icon
icon

Rubyのmap/map!メソッドの書き方を現役エンジニアが解説【初心者向け】

初心者向けにRubyのmap/map!メソッドの書き方について現役エンジニアが解説しています。配列の各要素に対して処理を行いたい場合に全ての要素を展開しても良いのですが、mapやeachメソッドなどの便利なメソッドを使った方が良いです。それぞれの違いも見ていきましょう。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

Rubyのmap/map!メソッドの書き方について解説します。

 
そもそもRubyについてよく分からないという方は、Rubyとは何なのか解説した記事を読むとさらに理解が深まります。

なお本記事は、TechAcademyのオンラインブートキャンプRuby講座の内容をもとに紹介しています。

 

田島悠介

今回は、Rubyに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

Rubyのmap/map!メソッドの書き方について詳しく説明していくね!

大石ゆかり

お願いします!

 

map/map!メソッドとは

map/map!は、配列の要素の数だけブロック内の処理を実行し、作成された配列を返すメソッドです。

mapは、元となった配列を変更しないのに対し、map!は元の配列も書き換えます。いわゆる破壊的メソッドです。

eachは戻り値が元の配列ですが、mapはブロック処理をした後の値を集めた配列を戻り値に持ちます。

そのため、配列を元に新たな配列を作成する場合などにはmap/map!を、それ以外の繰り返しの処理にはeachを使うのが良いでしょう。

 

map/map!メソッドの書き方

map/map!は以下のように使用します。

 

配列.map{|ブロック引数|
  処理
}

 
戻り値が新しく作成された配列だということに注意しましょう。
 

[PR] 未経験からWebエンジニアを目指す方法とは

実際に書いてみよう

それでは実際に書いてみましょう。比較として、eachを使用した場合も載せておきます。

 

numbers = [1,2,3,4,5]

puts "each"
numbers_each = numbers.each {|n| n*2}
# 返り値は元の配列なので、[1,2,3,4,5]が出力される
p numbers_each

puts "map"
numbers_map = numbers.map {|n| n*2}
# 返り値はブロック処理の結果を集めた配列なので、
# 2倍になった配列が出力される
p numbers_map

puts "map!"
numbers.map! {|n| n*2}
# 破壊的メソッドは元の配列を書き換える
p numbers

 

実行結果は以下の通りです。

 

each
[1, 2, 3, 4, 5]
map
[2, 4, 6, 8, 10]
map!
[2, 4, 6, 8, 10]

 

配列の処理はeachを使うことが多いですが、状況に合わせてmapを使用すると、より短くわかりやすいコードになります。

 

筆者プロフィール

メンター金成さん

フリーランスエンジニア。
Railsの案件を中心に、様々なアプリケーションを開発してます。

使える言語は、ruby python go 。最近はgoにハマってます。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でもRuby on Railsを使ったプログラミングを習得できるオンラインブートキャンプRuby講座を開催しています。

挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。