Rubyのmaxで最大値を求める方法【初心者向け】

初心者向けにRubyでmaxを使う方法について解説しています。これによって配列の中の最大値を求めることができます。応用も含めてコードを書きながら習得していきましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

Rubyのmaxを使って配列内の最大値を求める方法を解説します。

Rubyについてそもそもよく分からないという方は、Rubyとは何なのか解説した記事をまずご覧ください。

 

なお本記事は、TechAcademyのWebアプリケーションオンラインブートキャンプの内容をもとに紹介しています。

 

田島悠介

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

大石ゆかり

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

田島悠介

maxの使い方について詳しく説明していくね!

大石ゆかり

お願いします!

 

maxとは

配列の中の最大値を持つ要素を取得することができるメソッドです。

空の配列の場合はnilを返します。

また最大値だけでなく、値の大きいもの順にいくつ取得するか引数で指定することもできます。

その場合、返却値は配列となります。

`<=>`で比較可能な要素でのみ利用可能で、そうでない要素を含む配列の場合はエラーになります。

またmaxにブロックを渡した場合、ブロックの戻り値によって要素を比較します。

 

maxの使い方

$ irb
irb(main):001:0> [5, 6, 2, 9, 8, 3].max
=> 9
irb(main):002:0> [5, 6, 2, 9, 8, 3].max(3)
=> [9, 8, 6]
irb(main):003:0> [].max
=> nil
irb(main):004:0> [].max(2)
=> []
irb(main):005:0> ["tech", "academy"].max
=> "tech"
irb(main):006:0> ["tech", "academy"].max {|a, b| a.length <=> b.length}
=> "academy"

 

[PR] Rubyのプログラミングで挫折しない学習方法を動画で公開中

実際に書いてみよう

$ irb
irb(main):001:0> [10, 6, 5.3, 8, 2.2].max
=> 10
irb(main):002:0> ['10', '6', '5.3', '8', '2.2'].max # 文字列の場合はアルファベット順で比較されます
=> "8"
irb(main):003:0> ['10', '6', '5.3', '8', '2.2'].max {|a, b| a.to_f <=> b.to_f} # ブロックを渡して、数値として比較しています
=> "10"
irb(main):004:0> [true, false, false, true].max # <=>演算子で比較できないものはエラーになります
Traceback (most recent call last):
  3: from /usr/local/bin/irb:11:in `<main>'
  2: from (irb):4
  1: from (irb):4:in `max'
ArgumentError (comparison of FalseClass with true failed)
irb(main):005:0> [{name:'taro', score:60}, {name:'jiro', score:88}].max {|a, b| a[:score] <=> b[:score]}
=> {:name=>"jiro", :score=>88}

 

以下のバージョンでサンプルコードを動かしています。

$ ruby -v
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux]

 

回答してくれたメンター

阿部祐也

職種: エンジニア

普段の業務: リモートワークで勤務しながら、自社・受託サービスの開発に従事
Ruby on Rails, Node.js, TypeScript, React, AWSなどを利用したWeb系のシステムの開発を主に担当

開発実績: ソーシャルゲーム、ツール系アプリ、広告システム、ヘルスケア系アプリのプロジェクトに参加しており、PHP, Ruby on Rails, Objective-C, Swiftでの開発を担当
その他: リモートワークを活かして毎日愛猫と一緒にコードを書いています。

 

大石ゆかり

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

田島悠介

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

大石ゆかり

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

TechAcademyでは初心者でも最短4週間でエンジニアになれるRuby on Railsオンラインブートキャンプを開催しています。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間でオリジナルWebサービスを開発することが可能です。

また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。