Rubyのrequire / loadとは?外部ファイルの読み込み方法と使い分け
Rubyでは、別のファイルに定義されたクラスやメソッドを読み込んで再利用するために、require
と load
という命令を使います。
この仕組みにより、コードをファイル単位で整理し、保守性や再利用性を高めることができます。
require の基本
# greeting.rb
def say_hello
puts "こんにちは!"
end
# main.rb
require "./greeting"
say_hello # → こんにちは!
require
は、指定されたファイルを一度だけ読み込む命令です。
すでに読み込まれていれば、再度は読み込みません。
load の基本
load "./greeting.rb"
load
は、呼び出すたびに毎回読み込む命令です。
変更を即時反映させたい場合に使われます。
拡張子の扱い
require
では.rb を省略可能
load
では拡張子を明示する必要があります
require "my_lib" # → my_lib.rb を読み込む
load "my_lib.rb" # → OK
load "my_lib" # → エラー
相対パスと絶対パス
require "./utils/tool" # カレントディレクトリから相対的に読み込む
require "/home/user/lib/module" # 絶対パスで読み込む
require
では、$LOAD_PATH に含まれていないディレクトリから読み込む場合、相対パスまたは絶対パスを使う必要があります。
ファイルの2重読み込み防止(requireの特徴)
require "./module"
require "./module" # 2回目は無視される
require
は同じファイルを重複して読み込まないため、効率が良く、ライブラリの読み込みに適しています。
load の使いどころ
- ファイルの内容を何度も読み込みたいとき
- ファイルを途中で書き換えるような特殊な処理をしたいとき
require_relative(同一プロジェクト内の読み込み)
require_relative "sub/hello"
require_relative
は、現在のファイルからの相対パスでファイルを読み込む便利な方法です。
require
よりも明示的で、同一プロジェクト内の読み込みに適しています。
まとめ
項目 | require | load |
読み込み回数 | 一度だけ | 毎回 |
拡張子 | 省略可 | 必要 |
主な用途 | ライブラリや共通処理 | 動的な再読み込み |
Rubyの require
/ load
を使うことで、コードをファイルに分割して整理でき、保守性や再利用性を向上させることができます。
通常は require
や require_relative
を使い、特別なケースでのみ load
を使うようにしましょう。