記載されている内容は2019年04月10日時点のものです。現在の情報と異なる可能性がありますので、ご了承ください。記事に記載されている情報は自己責任でご活用いただき、本記事の内容に関する事項については、専門家等に相談するようにしてください。この記事ではfindメソッドの紹介と使い方、また利用の際の注意点について解説しています。Rubyプログラミングでは、配列からある条件を満たす要素を検索して取り出す処理を行う機会は多いのでしっかりと使い方を理解するようにしましょう。シェアツイートはてブ目次RubyのfindメソッドとはRubyのfindメソッドの使い方findメソッドに似たany?メソッドとはfindメソッドのまとめRubyのfindメソッドとはhttps://www.ruby-lang.org/images/head...Rubyのfindメソッドとは、配列の要素から条件を満たす要素を一つ返すメソッドです。配列要素の探索は、Rubyプログラミングをしている中でもかなり頻繁に行う処理です。このfindメソッドを利用することで、この探索を簡単にすばやく行うことが可能です。findメソッドは少し特殊な返り値を返すため、その返り値の扱いに注意が必要になります。注意しておかないとエラーやバグを引き起こす原因となります。この注意点についても以下で解説していきますので、しっかりと理解してエラーを引き起こさないようにしましょう。RailsというRubyのフレームワークも一緒に学んでいるかと思います。Railsの中にもfindという処理が登場しますが、このfindと今回解説するfindは全く別物です。Railsに出てくるfindは、モデルが所有してるメソッドです。モデルの対象テーブルから指定したidを持つデータを取得するためのメソッドとなります。今回解説するfindは、配列に対するものなのでこの点に注意しながら以下の解説を読んでいってください。Rubyのfindメソッドの使い方この章では、Rubyのfindメソッドの使い方について解説します。主な使い方についての解説はもちろん、記事冒頭でお話した注意点についても解説していますのでしっかりと理解するようにしましょう。条件式}」と記述します。変数には、配列の各要素の値が渡されます。条件式の部分には、検索する値が満たすべき条件式を記述します。falseを返却するような処理を記述します。処理の返却値がtrueだったときの配列要素が返されます。findメソッドで指定した条件に一致した要素を取り出すでは、実際にfindメソッドを利用していきます。以下のサンプルコードを見てください。#2上記のサンプルコードでは、配列の値が2である要素の値を返却しています。このように、find内の条件がtrueとなった要素だけを返却してくれます。条件がtrueとなる要素が複数ある場合は、一番最初にtrueになった要素のみが返されます。条件がtrueになる要素が全部返却されるわけではないので注意しましょう。#2また条件がtrueになる要素が配列内に存在しない場合、このfindメソッドはnilを返却します。次に、findeメソッドでハッシュの値を検索する方法を解説します。findメソッドは、配列だけではなくハッシュの検索にも利用できます。条件式}と記述します。キー変数とバリュー変数には、それぞれ各ハッシュ要素のキーとバリューが順番に渡されます。バリューの値]という配列で返却します。以下にサンプルコードを示します。#75このサンプルコードでは、「キーの値が4文字以下で、バリューの値が80未満の要素」を条件にしています。75なので、この要素が配列になって返されています。返り値は配列なので、キーの値とバリューの値をそれぞれ取得する場合は、配列で取得するのと同様にインデックス番号を指定して取得します。キーがインデックス番号0、バリューがインデックス番号1です。感覚とは異なる返り値となるので、返り値の扱いには注意が必要です。条件式に合致する要素が複数あったとしても、返却される要素は最初に条件に合致した要素になります。この点にも注意しましょう。#89また条件に合致する要素が存在しない場合は、nilが返されます。空配列が返されるわけではないので注意が必要です。#(nil)上記の注意点から、ハッシュをfindメソッドを利用して検索し、その返り値をなにかに利用する場合、nilに対する処理を必ず考慮する必要があります。nilを考慮せず実装してしまうと、どこかでバグを生じさせてしまう可能性がありますので注意したほうがよいです。(NoMethodError)が生じるfindメソッドに似たany?メソッドとはRubyのfindメソッドに似た処理を行うメソッドに、any?メソッドが存在します。条件式}と記述し、条件式に合致する要素が配列内に存在するかどうかを判定します。条件式に合致する要素が配列内に存在すればtrueを返し、存在しなければfalseを返却します。false」を返却するかだけです。以下にサンプルコードを記述します。#false配列内の要素のうち、条件に合致する要素が一つでもあればtrueが返り、一つも無ければfalseが返されているのがわかります。any?メソッドはハッシュに対しても利用できます。falseとなること以外は、findメソッド使い方と変わりません。以下にサンプルコードを示します。#falsefindメソッドとany?メソッドは非常に似ていますので、使い分けをしっかりしましょう。以下のように使い分けるとよいです。・配列に条件を満たす要素が存在するかどうかのみを調べる場合:any?・配列から条件を満たす要素を抜き出す場合find前章で解説したとおり、findメソッドは条件に合致する要素が存在しない場合、nilを返してしまいます。これによるバグを防ぐために、あらかじめany?メソッドで条件に合致する要素の存在を調べておくのも良い方法です。findメソッドのまとめ今回は、findメソッドについて解説しました。配列要素の検索には必須なメソッドとなりますので、使い方と注意点をしっかりと理解しましょう。any?メソッドとその使い方、findメソッドとの使い分け方についても解説しました。こちらについてもしっかりと違いを理解して、状況に応じた使い分けができるようにしておきましょう。エラーやバグを引き起こさないプログラムをかけるようにしておくことが重要です。file.2:営業マンとして活躍し、海外留学。file.4:独学よりもスクールで。他人と同じことはしない。