Ruby 画像ダウンロード編 (3) require について 【計算数学 I】

更新日時:

require について

require (正確には Kernel.#require )は、外部ファイルを読み込む際に使用する命令です。require で指定されたファイルを1度だけ読み込みます。 たとえば、

require './example.rb'

と書くと、Ruby処理系を実行しているディレクトリにある example.rb を実行する(読み込む)ということです。 引数にはファイル名がきます。その書き方によって、読み込む場所が異なります。

  • 絶対パスが指定された場合は、そのファイルを実行する。
  • ./ または ../ で始まる相対パスが指定された場合は、Ruby 処理系を実行しているディレクトリから見て、そのファイルを実行する。
  • それ以外の相対パスが指定された場合は、$LOAD_PATH から探す(そういう環境変数が知らず知らずのうちに設定されている)。

require の規約として、以下があります。

  • 拡張子を省略できる(勝手に補われる)
  • ファイル名だけを指定しておけば、$LOAD_PATH から探す(そういう環境変数が知らず知らずのうちに設定されている)。
  • ファイル名だけを指定して、拡張子も省略すると、事実上、標準添付ライブラリや gem ライブラリが読み込まれるという理解でよい。

たとえば、

require 'open-uri'
require 'fileutils'

などと使います。これは外部ファイルを読み込むというのが定義に基づいた理解ですが、 実際はライブラリを読み込むという意味合いで理解しています。この命令では、open-uri と fileutils という標準添付ライブラリを読み込みます。

他のものとの違い

load も、外部ファイルを読み込むという意味では同じです。違いは、load は拡張子を省略できないことと、 require はある例外を除いて 1 度しか実行されないのに対し、load は何度も、その都度実行されるということです。

includerequire / load とは全く違う命令です。include は module を class のインスタンスメソッドとして読み込む際に使用します。全く似ている部分はありませんし、混同すること自体おかしいです。

ナビゲーション

この教材は、東京大学理学部数学科専門科目「計算数学 I」のために執筆されたものです。 このサイトに掲載する際に、記事を分けてあります。 他の回はRuby 画像ダウンロード編 一覧 #ks1-ruby-downloadから御覧ください。

Ruby 入門 (計算数学実習資料集)には他の TA が書いた教材があります。

コメントする