【Ruby入門】Rubyのincludeは機能が2つ!includeの2つの機能を解説
  • facebookページ
  • twitterページ
  • 2019.09.20

    【Ruby入門】Rubyのincludeは機能が2つ!includeの2つの機能を解説

    Rubyには、「include」と「include?」とがあるのをご存じでしょうか。include?について検索したのに、全然関係ない内容が表示されて困惑した経験がある方もいるかもしれません。この「include」と「include?」は、全く別の機能です。そして、それぞれどんな機能か知っていれば、その機能についての使い方を検索できます。そこで、今回はRubyで使えるincludeを含む2つの機能について解説します。

    Rubyにはincludeとinckude?とがある

    「include」は、Ruby以外のプログラムでもよく見かける機能です。特にC言語のプログラムを学んだ方にとってはおなじみの機能でしょう。

    しかし、Rubyには、includeを使った機能として、モジュールを使えるようにする「include」と、文字列の検索メソッドである「include?」の2つの機能があります。次から、この2つの機能の概要についてご紹介します。

    includeの意味

    元々「include」は、「含む」や「含める」という意味の英語の動詞です。そして、プログラム言語の多くが「include」を採用しており、別のファイルに記述されたソースコードを追加する機能として使われています。

    例えばC言語では、別ファイルとして用意されたライブラリを利用する際に必要なヘッダファイルを読み込むために、プログラムの先頭に「#include 」と記述します。これは、標準インクルードライブラリにある「stdio.h」に書かれたソースコードをプログラムに含めるという機能として使われます。

    しかし、Rubyでは、C言語など他のプログラム言語の機能とは違う機能としてincludeが採用されています。英語の意味としては合っているので、間違えないようにしましょう。

    includeはモジュールに対して使う

    Rubyにおけるincludeの1つ目は、モジュールに対して使う機能です。なお、オブジェクト指向プログラム言語のRubyでは、クラスに変数と処理を記述して利用するのが一般的ですが、モジュールという機能も利用できます。なお、モジュールとは処理を外部に記述する機能です。そして、クラスを利用するためにnewでインスタンス化しますが、モジュールの場合はincludeを使用します。

    include?は文字列の検索

    Rubyにおけるincludeの2つ目は、文字列に対する検索機能です。これは「include」に「?」の付いた「include?」が該当し、文字列の中に検索したい文字列を含むかをチェックし、trueまたはfalseを返します。

    なお、他のプログラム言語では、indexやstrstrといった関数名が使われていますが、Rubyの「include?」は英語の「含む?」という意味のため、文字列検索をより解りやすく書けると言えるでしょう。

    文字列を検索する「include?」の使い方は、モジュールを参照する「include」の次にご紹介します。

    モジュールを使うために使うinclude

    まずは、モジュールに登録したメソッドを使えるようにする、「include」について解説します。なお、先ほども簡単に説明しましたが、Rubyにおけるモジュールは、メソッドだけを別に記述できる機能です。includeは、そのように別に書いたメソッドを使うために使用します。次から、includeで使用するモジュールについて詳しく解説します。

    Rubyにおける外部参照の仕組み

    オブジェクト指向のプログラム言語として開発されたRubyでは、他のプログラム用に作られたメソッドや変数を、新しく作るプログラムでも利用しやすいように作られています。そのため、外部のファイルに用意したメソッドや変数を利用し、それを利用するのが一般的です。

    このような外部のファイルにメソッドを記述する機能がクラスとモジュールです。そして、外部のファイルを取り込む機能がrequireです。ただし、クラスやモジュールをプログラムに取り込んだとしても、その関数が無条件に使える訳ではありません。クラスではnewでインスタンス化しなければならず、また、モジュールを利用する方法は幾つかありますが、大抵はincludeでクラスの一部として取り込んで使用します。

    モジュールの役割とクラスとの関係

    Rubyの文法を学んだ方であれば、クラスの役割や機能、使い方などはもちろんご存じでしょう。そして、クラスにメソッドを書いた経験もあるのではないでしょうか。その場合、他の
    クラスで書いたメソッドと同じメソッドを書いた経験はありませんか。モジュールを使えば
    そういったメソッドを共通化できます。

    このようにモジュールの役割は、クラス内で使われるメソッドの再利用性を高めることです。そして、クラス内で、モジュールに記述されたメソッドを有効にするためにincludeが使われます。

    includeの使い方

    モジュールの書き方は基本的にクラスと同じで、まずモジュールを定義し、その中にメソッドを記述します。

    モジュールの書き方の基本
    module モジュール名
    def メソッド名()
    メソッドの機能
    end
    end

    そして、クラスの中でincludeでモジュール名を指定し、モジュールに記載されたメソッドをクラスに取り込みます。

    クラス内でモジュールを使う方法
    class クラス名
    include モジュール名
    end

    次に、includeを使い、クラス内でモジュールを使用した例を紹介します。

    文字列を検索するinclude?

    Rubyで「include」を使った機能のもう一つが、文字列を検索する「include?」です。次から、「include?」の使い方について解説します。

    include?の基本的な使い方

    長い文字列の中に、特定のキーワードが含まれているかをチェックする機能は、実際のプログラムでもよく使われます。そして、オブジェクト指向プログラム言語のRubyでは、文字列はオブジェクトとして扱うので、include?はオブジェクトの中から検索対象の文字列を検索するメソッドと定義されています。

    include?の基本的な使い方
    オブジェクト.include?(検索文字列)

    なお、include?の戻り値は、引数が含まれていればtrueであり、含まれていなければfalseです。そのため、if文などに組み合わせて、条件分岐の方法として使われます。

    include?は配列にも使える

    先ほどinclude?が対象とするのはオブジェクトと説明しましたが、そのおかげで他のプログラム言語と違い、検索文字に文字列以外のものを指定できます。そして、よくinclude?で検索文字に使われるのが配列です。具体的には次の例を参考にしてください。

    なお、上記とは逆の使い方、つまり、配列に検索文字が含まれていない場合に処理するケースでは、include?の代わりにexclude?を使います。

    include?の応用例

    これまで解説したように、Rubyの文字検索は配列も使えて便利ですが、検索文字列に正規表現を直接書くことはできません。しかし、使い方によっては特殊な検索方法も可能です。

    例えば、大文字小文字を区別せずに検索したいケースもあるでしょう。そのようなケースでは、検索対象の文字列と検索文字を小文字に変換してinclude?を実行することで、大文字小文字を区別せずに検索できます。

    また、include?の対象は文字列や配列だけではありません。日付もオブジェクトであり、配列のように期間のオブジェクトも作れます。そして、これを活用すれば、予定日が期間に含まれるかどうかをチェックする処理も、include?で作れます。

    rubyにはincludeの機能は2つある

    GoogleなどでRubyのincludeを検索すると、探しているのと違う記事がヒットする、と感じた方は疑問が解消されたでしょうか。Rubyには、モジュールを使えるようにする「include」と、文字列の検索メソッドである「include?」と、incliudeを使った機能が2つあります。どちらの機能も正しく理解して、Rubyの「include」を使いこなせるようになりましょう。


    Ruby on Railsのフリーランスは高収入でおすすめ!

    Rubyができる方は多くはいないのが現状です。 プロジェクトは右肩上がりで増えているので、エンジニアが全く足りておりません。 Rubyの実務経験が1年以上ある方はフリーランスになることもできるので、ぜひご興味があればポテパンの無料カウンセリングをご利用下さいませ! Ruby案件に関する情報は下記にまとまっていますのでぜひご覧下さい。

    Ruby on Rails案件のイマがわかる!知って見つかる最適案件


    ポテパンが提供するサービスについて

    本メディア「ポテパンスタイル」を運営する株式会社ポテパンは、エンジニアキャリア領域で複数サービスを提供しています。

    ポテパンフリーランス

    ポテパンフリーランス

    フリーランスエンジニアの方に高単価案件をご紹介しております。弊社ではフリーランス案件を常時300件ほど保有しており、その中からあなたに適した案件をご案内いたします。また、これから独立してフリーランスになる方の無料個別相談も承っております。フリーランスになった後の案件獲得方法やお金面(税金や保険など)についてお答えいたします!フリーエンジニアになりたい方向けのコンテンツも盛りだくさんです。

    ポテパンキャリア

    ポテパンキャリア

    エンジニア職専門の転職エージェントです。ポテパンキャリアでは、技術のわかるエージェントがあなたの転職をサポートします。エージェント自身がエンジニアなので、あなたと同じ目線で仕事内容や今後のキャリアについて一緒に考えることができます。年収800万円以上のハイスペック転職をご希望の方は「ポテパンプロフェッショナル」もご用意しておりますのでご利用下さいませ。

    ポテパンキャンプ

    ポテパンキャンプ

    ポテパンキャンプでは、RubyにてゼロからオリジナルのECサイトを作り上げてる3ヶ月間の実践型カリキュラムを提供しております。すでに本スクールの卒業生は、エンジニア職として様々な企業様に就職しております。なお、本スクールは受講料25万円と他社スクールに比べ格安となっており、またポテパンからご紹介させていただいた企業へ就職が決まった場合は、全額キャッシュバックいたします。



    株式会社ポテパンは、企業とエンジニアの最適なマッチングを追求しています。気になるサービスがあれば、ぜひ覗いてみてください!

    ポテクラバナー ポテプロバナー

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE

    ポテパンおすすめ案件