オーダーメイドコース
icon
icon

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

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

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

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

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

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

 

田島悠介

今回は、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] 未経験からWebエンジニアを目指す方法とは

実際に書いてみよう

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

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