Ruby

【初心者向け】Rubyで外部ファイルを読み込むことができるrequireメソッドについて解説

Ruby

 

今回は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
requireメソッドで呼び出すファイルの拡張子は省略可能です。

 

このコードを実行することで、正常に「読み込み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メソッドはカレントディレクトリを起点とした相対パスで記載しなければならないということに注意しておきましょう。

JavaScript
【プログラミング初心者向け】相対パスの書き方について例を用いて簡単に解説相対パスの書き方についてプログラミング初心者向けに簡単に解説しています。階層構造を移動する「相対パス」と「絶対パス」は、どのプログラミング言語でも使う知識なので、ぜひこの機会にマスターしましょう。...

ライブラリを読み込む場合

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ライブラリを読み込むことができるようになります。

Rails
【Rails】Rails開発者に絶対おすすめしたいデバッグ手法5選(初心者向け)Railsの開発で活躍するデバッグ方法5選を紹介しています。Railsでは様々なデバッグ手法やgemが用意されていますが、今回はその中でも頻繁に使われるもののみをまとめてみました。デバッグ手法に迷った時の参考にしてください。...

まとめ

  • requireメソッドとは、外部ファイルやライブラリ、モジュールといった別ファイルで管理されているものを読み込むことができるメソッドである
  • 「uninitialized constant Error」はファイル名の記述間違いや、requireメソッドの記述漏れで発生するケースが多い
  • requireメソッドで呼び出すファイルの拡張子は省略が可能
  • requireメソッドはカレントディレクトリを起点とした相対パスで記載しなければならない

 

 

今回はRubyで外部ファイルやライブラリを読み込むことができる「requireメソッド」について解説しました。保守性が高いコードや可読性を高める上では必須の知識になるので、ぜひ使いこなせるようにしておきましょう。