今回はRubyで外部ファイルやライブラリを読み込むことができる「requireメソッド」について解説したいと思います。膨大なコードを1ファイルに全て書き込むことは効率的ではなく、requireメソッドを使いこなすことで保守性が高いコードを書くことができます。
requireメソッドとは
requireメソッドとは、外部ファイルやライブラリ、モジュールといった別ファイルで管理されているものを読み込むことができるメソッドです。requireメソッドを使用することで、使い回すコードや冗長なコードを分割できるようになります。
例を見てみましょう。
sample.rbというファイルを作成し、以下のようなコードを記述しました。
# sample.rb
class Sample
def test
puts '読み込みOK!'
end
end
sample = Sample.new
sample.test
Sampleクラスを別ファイルである「test.rb」で管理してみましょう。
# sample.rb
sample = Sample.new
sample.test
# test.rb
class Sample
def test
puts '読み込みOK!'
end
end
しかし、このコードをそのまま実行してしまうと「uninitialized constant Sample (NameError)」といったエラーが吐かれてしまいます。
「uninitialized constant Sample (NameError)」は直訳すると「初期化されていない定数Sample」という意味になります。言い換えると、定数Sampleが定義されていませんよということになります。
これはファイル名の記述間違いや、requireメソッドの記述漏れで発生するエラーなのでぜひ覚えておきましょう。
このエラーを解決するのが今回のrequireメソッドです。
定数Sampleが定義されていない(= 読み込めていない)というエラーですので、以下のようにrequireメソッドを記述してみましょう。
# sample.rb
require './test'
sample = Sample.new
sample.test
# test.rb
class Sample
def test
puts '読み込みOK!'
end
end
このコードを実行することで、正常に「読み込みOK!」という文言が表示されたかと思います。
これがrequireメソッドの基本的な使い方になります。
requireメソッドの注意点
requireメソッドを使用する上で注意点が1つあります。
それはrequireメソッドはカレントディレクトリを起点とした相対パスで記載しなければならないという点です。
先ほどのコードでカレントディレクトリを示す「./」を削除してみましょう。
# sample.rb
require 'test'
sample = Sample.new
sample.test
# test.rb
class Sample
def test
puts '読み込みOK!'
end
end
これを実行してみると「test.rb」が読み込めないというエラー「`require’: cannot load such file — test (LoadError)」が吐かれるはずです。
このことからも、requireメソッドはカレントディレクトリを起点とした相対パスで記載しなければならないということに注意しておきましょう。

ライブラリを読み込む場合
Rubyでは様々なライブラリが用意されており、requireメソッドを用いて読み込むことでそれらを自身のアプリケーションで利用することができます。
今回は試しに「pry-byebug」と呼ばれるデバッグ用のライブラリを読み込んでみましょう。「pry-byebug」はgemとして提供されているため、Gemfileに「gem ‘pry-byebug’」を記載後、bundle installを実行する必要があります。
# Gemfile
gem 'pry-byebug'
% bundle install
これで「pry-byebug」を使用する準備ができました。
あとはrequireメソッドを使用し「pry-byebug」を読み込むだけです。「pry-byebug」を使用したいファイルの冒頭に「require ‘pry’」を記述しましょう。
# test.rb
require 'pry'
このように、requireメソッドを用いることでRubyライブラリを読み込むことができるようになります。

まとめ
- requireメソッドとは、外部ファイルやライブラリ、モジュールといった別ファイルで管理されているものを読み込むことができるメソッドである
- 「uninitialized constant Error」はファイル名の記述間違いや、requireメソッドの記述漏れで発生するケースが多い
- requireメソッドで呼び出すファイルの拡張子は省略が可能
- requireメソッドはカレントディレクトリを起点とした相対パスで記載しなければならない
今回はRubyで外部ファイルやライブラリを読み込むことができる「requireメソッド」について解説しました。保守性が高いコードや可読性を高める上では必須の知識になるので、ぜひ使いこなせるようにしておきましょう。