バナー画像

Rubyでライブラリを読み込む際に使うrequireに、独自のライブラリパスを追加できるのをご存じでしょうか。標準ライブラリやRubyGemsのライブラリだけ使っているのであれば、ライブラリのパスを気にすることはありません。しかし複数のソースファイルを使う場合や独自のライブラリを使う場合は、requireの使い方に注意が必要です。

今回はRubyのrequireの使い方と、requireを使う場合に知っておきたいライブラリパスの仕組みについて解説します。

Rubyのrequireとは

RubyのプログラムではRubyGemsなどの外部ライブラリを利用する際に、requireで読み込みます。さらに複数のソースファイルを利用するプログラムで、ソースファイルを取り込む際に使うのもrequireです。

まずはRubyのrequireの使い方について紹介します。

ライブラリを取り込む

Rubyのプログラムで利用できる全ての変数やメソッドは必ずいずれかのクラスに属しています。Rubyで標準に組み込まれたクラスだけでもある程度のプログラムが組めますが、利用実績のあるクラスが組み込まれた外部のライブラリを利用するのが一般的です。

そして、そのような外部ライブラリとしてよく使われているのがRubyGemsに登録されたライブラリです。そのためRubyGemsからダウンロードしたライブラリを利用するケースも少なくありません。

このようにRubyのコマンド付属のクラス以外の、標準ライブラリや外部ライブラリをプログラムで利用できるようにする機能がrequireです。

requireでライブラリを読み込む書き方

require “ライブラリ名”

プログラムを複数に分ける

Rubyは少ない記述でプログラムが書ける言語ですが、短いプログラムで複雑なシステムを構築できる訳ではありません。プログラムが長くなると複数に分割して管理するケースがよくあります。

そのような場合、分割したソースファイルの読み込みにもrequireが使われます。なおこのようなソースファイルの読み込みには、相対パスでファイル名を指定するのが一般的です。

Rubyのソースコードを読み込む書き方

require “ソースファイル”

Rubyのソースコードを読み込む例

require "../common/file.rb"

requireをカスタマイズする

requureでライブラリを読み込む際はパスを指定する必要が無いのに、ソースファイルを取り込むのに相対パスで指定する点を不思議に思われた方がいたのではないでしょうか。

requireは、相対パスが指定されていればそのパスを参照し、パスが無い場合はデフォルトで設定されているパスから指定されたライブラリを探します。

なおデフォルトで設定されているパスは、Rubyの実行時やプログラムの中で特定のパスを追加することが可能です。必要に応じてrequireをカスタマイズしてください。

requireで読み込むライブラリはどこにある

先ほど紹介したようにrequireで読み込むライブラリはデフォルトで設定されているパスから参照されます。そしてそのパスをチェックしたり変更することが可能です。

次からrequireを使うためにRubyのライブラリの格納場所について解説します。

標準ライブラリの格納場所

requireで参照するライブラリのパスは、Rubyのコマンドをコンパイルした際に決められています。Rubyの公式サイトからソースコードをダウンロードして自分で作る場合はライブラリのパスを自由に決めることが可能です。

とはいえ自分でソースファイルからコンパイルするケースは少ないでしょう。CentOSやUbuyntuなどのLinuxで標準にインストールできるRubyでは、それぞれのディストリビューションで決めた場所にライブラリが格納されています。そして格納場所は次のコマンドで簡単に調べることが可能です。

標準ライブラリの格納場所を調べるコマンド

$ ruby -e 'puts $:'
または
$ ruby -e 'puts $LOAD_PATH'

CentOSの実行例
/usr/share/gems/gems/did_you_mean-1.2.0/lib
/usr/local/share/ruby/site_ruby
/usr/local/lib64/ruby/site_ruby
/usr/share/ruby/vendor_ruby
/usr/lib64/ruby/vendor_ruby
/usr/share/rubygems
/usr/share/ruby
/usr/lib64/ruby

requireの参照先を追加する方法

requireはデフォルトで設定されているパスを参照し、指定されたライブラリやソースファイルを読み込みます。外部のソースファイルを読み込む際に相対パスで記述することも可能ですが、そのソースファイルがあるディレクトリを参照パスに追加し、ファイル名だけを指定することも可能です。

次からrequireの参照先を追加する手順について解説します。

requireの参照先は組み込み変数

requireの参照先は組み込み変数「$:」に格納されているので、この変数を表示すればデフォルトの参照パスをチェックできます。

そして「$:」を編集することで新しいパスを追加することが可能です。requireを実行する前にパスを追加すれば、外部のソースファイルを相対パスの指定ではなくファイル名だけで読み込めます。

requireの参照先としてカレントディレクトリを追加する例

$:.unshift File.dirname(__FILE__)
require 'local_lib.rb'

「$:」の別名を使う

先ほどrequireの参照先は組み込み変数「$:」を紹介しましたが、この変数には別名があり、それらを「$:」と同じように扱うことが可能です。「$:」の別名とは「$LOAD_PATH」と「$-I」の2つです。

「$:」の別名
$LOAD_PATH
$-I

$LOAD_PATHを使った例

$LOAD_PATH.unshift File.dirname(__FILE__)
require 'local_lib.rb'

$-Tを使った例

$-I.unshift File.dirname(__FILE__)
require 'local_lib.rb'

rubyコマンドの-Iオプションを使う

rubyを実行する際、「-I」オプションにライブラリの参照パスを指定することで、先ほど紹介した組み込み変数「$:」にそのパスを追加できます。ターミナルなどからrubyコマンドを実行する場合、この方法も利用してください。

-Iオプションの使い方

ruby -I デフィレクトリ名

-Iオプションを使う例

$ ruby -I /home/www/lib

まとめ

Rubyでライブラリの読み込みに使うrequireは、相対パスでファイル名を指定できますが、通常はライブラリ名のみ指定します。

これまで説明したようにreauireでパスを指定しなかった場合のデフォルトの参照パスは決まっています。ただし、その参照パスは組み込み変数「$:」や-Iオプションで変更することが可能です。

もしRubyで大きなプログラムを作る場合、requireの仕組みを理解していると幾つものファイルをrequireで簡潔に取り込むプログラムを書けます。ぜひRubyのプログラミングで活用してください。

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

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

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

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

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

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

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

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

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

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

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