Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

Rubyでは対象のオブジェクトで使えるメソッドの一覧を表示させたい、といった場面があります。Rubyにはほかのプログラミング言語のような関数はなく、使えるのはオブジェクトに定義されたメソッドです。そのため使いたいメソッドが、対象のオブジェクトに定義されていなければ、別の方法を検討しなければなりません。

今回はオブジェクトに定義されたメソッドの一覧を表示するmethodsメソッドの使い方を中心に、オブジェクトに定義されたメソッドの確認方法について解説します。

Rubyの変数はオブジェクト


プログラミング言語Rubyはオープンソースのオブジェクト指向言語です。そしてRubyではプログラムの中で扱う変数のほとんどがオブジェクトです。では変数がオブジェクトだとどんなメリットがあるのでしょうか。次からRubyの変数がオブジェクトであるメリットについて紹介します。

そもそもオブジェクトとは

オブジェクトを簡単に表現すると、ある機能を実現するための動作と、その動作で使う変数を1つにまとめたものです。アプリケーションの機能の一部となる処理と、その処理で使うデータを1つのパッケージとしてまとめられるため、グラフィック処理など高度なスキルを必要とする処理を、手軽に使う技術として、いろいろな分野のプログラムで広く使われています。

そしてRubyのようなオブジェクト指向のプログラミング言語では、このようなオブジェクトを利用しやすい仕組みを備えているのが特徴です。特にRubyでは、クラスを使って新しいオブジェクトを作ることも可能ですが、外部のオブジェクトを利用しやすく、さらにプログラムの中で扱う変数が全てオブジェクトという特徴を持っています。

オブジェクトを使うメリット

オブジェクトを使うメリットとは、既にある優れたプログラムを簡単に部品として組み込める点です。オブジェクトには特定の処理で使われる変数と、その変数を使うための処理が定義されているため、そのプログラムの詳細を理解していなくても、使い方さえ知っていれば高度な処理を利用できます。

例えばRubyで作られたWebシステムのフレームワークであるRuby on Railsは、Web開発に必要な処理がオブジェクトとして用意されています。そのため、Ruby on Railsの規約に従って利用することで、Webシステムで使われる技術の詳細を理解していなくても、手軽にWebシステムを開発することが可能です。

メソッドを利用するには

オブジェクトを活用するにはそのオブジェクトに定義されたデータの仕様と、そのデータを扱うメソッドの使い方を知らなければなりません。せっかく便利なメソッドが用意されているのに、同じ処理を別に作ってしまったのでは時間の無駄です。

オブジェクトを活用するなら、そのオブジェクトに用意されているメソッドの使い方を調べて活用できるようになりましょう。とはいえドキュメントが不十分な場合は、事前にオブジェクトで使えるメソッドを調べて、その使い方をオブジェクトのソースリストで確認する、といった作業も必要です。

メソッドの一覧を取得する機能


先ほど解説したようにオブジェクトを活用するには、そのオブジェクトで利用できるメソッドをしらなければなりません。オブジェクトで利用できるメソッドを調べられると便利です。そのためRubyには、対象のオブジェクトに定義されたメソッドの一覧を調べる機能としてmethodsメソッドが用意されています。次から、その機能の使い方について紹介します。

methodメソッドの概要

Rubyで扱えるほぼ全ての変数がオブジェクトです。そしてオブジェクトには継承機能があり、基になったオブジェクトの機能を引き継いで、新しいオブジェクトを定義できます。そのためRubyの変数の基になるクラスは階層構造になっており、もっとも上位にあたるクラスがスーパークラスです。今回紹介するmthodsメソッドは、そのようにスーパークラスのメソッドです。

methodメソッドはスーパークラスのメソッドのため、Rubyのほぼ全ての変数で利用できます。ただし、このメソッドの対象のオブジェクトはnewメソッドでインスタンスしたものでなければなりません。クラスを宣言しただけ、または、requireでライブラリを読み込んだだけでは利用できないので注意してください。

methodsメソッドの使い方

methodsメソッドは、必ずオブジェクトに接続して利用します。そして戻り値は、そのオブジェクトが利用できるメソッド名の一覧にあたる配列です。

methodsメソッドの文法

オブジェクト.methods

methodsメソッドを使った例

strs = "test"
pp strs.methods

この例では、変数に文字列”test”を代入することで、自動的に文字列クラスのオブジェクト、strsが作られます。そしてstrsにmethodsメソッドを適用し、ppメソッドで表示することで、文字列クラスに定義されている全てのメソッドが表示されます。

methodsメソッドの結果

methodsメソッドで作られたメソッド一覧には、メソッド名に「:」が付いたシンボル名が使われます。

methodsメソッドの実行結果の例

[:to_c, :to_str, :to_sym, :to_s, :to_i, :to_f, :to_r, :to_enum]

上記の「:to_c」などは文字列オブジェクトではなくシンボルオブジェクトです。Rubyでは文字列とシンブルは全く別のオブジェクトなので注意してください。

methodsメソッドの実行例


先ほど紹介したようにRubyではmethodsメソッドを利用することで対象のオブジェクトで利用できるメソッドの一覧を得られます。そしてその一覧は配列なので、さらに配列のオブジェクトで使えるメソッドを組み合わせることで調べる対象を絞り、目的のメソッドの有無をチェックすることが可能です。

次からmethodsメソッドにさらにメソッドを組み合わせた実行例を紹介します。

grepメソッドを組み合わせる

Rubyのgrepメソッドは、配列の各要素と引数で指定したオブジェクトを評価して、該当する要素の配列を返します。そしてmethodsメソッドの返す配列の要素をgrepメソッドで評価することで、探したいメソッドの絞り込みに利用可能です。

methodsメソッドにgrepメソッドと組み合わせた例

strs = "test"
pp strs.methods.grep(/to_/)

この例では、RubyのStringクラスで使える全てのメソッドの中から、”to_”を含むメソッドのみ絞り込んだ配列を作成します。

上の例の実行結果

[:to_c, :to_str, :to_sym, :to_s, :to_i, :to_f, :to_r, :to_enum]

eachメソッドで文字列として扱う

先ほど紹介したようにmethodsメソッドで作成した一覧はシンボルの配列です。配列のためeachメソッドが使えるのでブロック内で加工して表示できます。ただし、配列の要素はシンボルのため、文字列のように操作できません。そこで次のように、シンボルを文字列にして加工したうえで探したいメソッドを絞ることも可能です。

methodsメソッドにeachメソッドと組み合わせた例

strs = "test"
arr = strs.methods
arr.each { |x| 
   if x.to_s.include?('?') then
     p x
   end
}

この例では、methodsメソッドの結果に対してeachメソッドを適用し、さらにto_sメソッドでシンボルを文字列に変換したうえでinclude?メソッドで評価した結果を表示しています。

まとめ


これまで紹介したようにRubyで扱う変数のほとんどはオブジェクトであり、そのオブジェクトで利用できるメソッドの一覧をmethodsメソッドで作成できます。そしてこの一覧はシンボルの配列のため、配列を対象にしたメソッドを組みわせることで、対象のオブジェクトで利用できる調べたいメソッドを絞ることが可能です。

今回紹介したように簡単なスクリプトを組み込むことでメソッドの有無をチェックできるため、Rubyのプログラム作成時に利用してください。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。