Ruby on Rilasを使った今のWebシステム開発は、優れたライブラリを組み合わせて作るのが常識です。Rubyの使い方を学ぶなら、ライブラリの使い方も学んでください。今回はライブラリとはどんなものか良く解らない、という方のために、ライブラリとはどのようなものか、また、Rubyでライブラリを利用する方法について解説します。
Rubyにとってライブラリとは
Rubyには標準ライブラリと外部ライブラリがあります。そしてRubyといっしょにインストールされるのが標準ライブラリであり、Ruby on RailsのようにRubyGemsなどからダウンロードして利用するのが外部ライブラリです。RubyのプログラムやRuby on Railsを利用するにはこのようなライブラリが欠かせません。
まずはRubyにとってライブラリとはどのようなものかについて解説します。
そもそもライブラリとは
IT用語のライブラリとは、特定の機能を実現するためのプログラムを部品化し、それを呼び出して利用できる形式にしたファイルのことです。そのため単体では実行できず、その機能を利用するプログラムに読み込まれ、呼び出されることでその機能が実行されます。
なおライブラリの形式は呼び出されるプログラムによって決まっており、CPUでそのまま実行される形式のものや、ソースファイルと同じテキスト形式のものなどがあります。そしてRubyのようなスクリプト言語では、ソースファイルと同じテキストのライブラリが使われます。
オブジェクト指向とライブラリの関係
Rubyはオープンソースのオブジェクト指向なスクリプト言語です。そしてオブジェクト指向とは、機能とその機能で用いる変数を1つのパッケージにして管理する方法で、機能を部品として切り出し、別のプログラムで利用しやすくする仕組みです。
このようにそれだけで動作する部品を切り出し、1つのファイルにまとめたものがライブラリです。なおオブジェクト指向のプログラム言語では、クラスの中に機能とその機能で用いる変数を記述できるので、そのクラスをそのまま別のファイルに切り出し、ライブラリとして利用できます。
Rubyのライブラリとは
Rubyには外部のソースファイルを読み込む機能があり、読み込んだソースファイルのプログラムを実行するソースファイルの一部として利用できます。Rubyにとってのライブラリとは、そのような外部ファイルを特定のフォルダに集めたソースコードのことです。
なおRubyのプログラムで使われる変数のほとんどは、対応したクラスを継承したオブジェクトです。そのため基になったクラスが定義されたライブラリがあり、標準ライブラリとしてrubyのプログラムといっしょにインストールされます。またRubyGemsなどから入手したソースコードをライブラリとして利用することが可能です。
Rubyで使えるライブラリ
先ほど紹介したようにRubyには標準ライブラリと外部ライブラリがあり、どちらもRubyのプログラムから同じように利用できます。次から、この2つの違いなどについて紹介します。
Rubyの標準ライブラリ
Rubyをインストールするとrubyコマンドと標準ライブラリがインストールされます。なおrubyコマンドは、Rubyのプログラムを解析して、プログラムとして実行するための仕組みです。そしてRubyのプログラムで使える変数は、標準ライブラリとしてソースファイルに定義されており、それが読み込まれているので利用できます。
なお、Rubyの標準ライブラリの中には、外部ファイルを読み込むrequireを使うライブラリと不要なライブラリとがあります。マニュアルをチェックして必要ならrequireで読み込んでから利用してください。
Rubyの外部ライブラリ
Rubyを使う仕事と言えばRuby on RailsによるWebシステムの構築と言えるくらい、Ruby on Railsは使われています。そしてRuby on Railsは、RubyGemsで公開されているライブラリの1つです。さらにRubyGemsにはWebシステムなどで使われる多くのライブラリが公開されており、それらはgemと呼ばれています。
このgemのようにRubyをインストールした後、導入するライブラリが外部ライブラリです。そして外部ライブラリを利用するには、先ほど紹介したのと同じようにrequireで取り込みます。gemコマンドを使ってRubyGemsからインストールした場合は、requireに続けてライブラリ名を指定してください。ただし独自に作成した外部ライブラリを利用する場合、格納したパスを含めて指定する必要があります。
ライブラリを読み込む方法
Rubyでライブラリを読み込むにはrequireでライブラリ名のみを指定するか、パスを含むライブラリ名を指定します。なお、読み込むシステム変数にパスを登録しておけば、パスを省略することも可能です。次にrequireの使い方と、システム変数の設定方法を紹介します。
requireの使い方
Rubyでライブラリを読み込む際に使うメソッドがrequireです。なおrequireは、引数でfeature名を指定し、feature名に対応するRubyのソースファイルを読み込みます。そしてfeature名とは、拡張子を除いたファイル名です。なお、requireは一度だけしかロードしないので、通常はソースファイルの最初に指定します。
requireの使い方
require feature名
requireの使用例
(実行するファイルと同じパスにある"common.rb"を読み込む例) require "common" (絶対パス"/exports/service/cust/"にある"common.rb"を読み込む例) require "/exports/service/cust/common" (相対パス"../cust/"にある"common.rb"を読み込む例) require "../cust/common"
loadの使い方
loadは先ほど紹介したrequireと同じく引数でfeature名指定し、それに該当するファイルを読み込みます。ただし、requireは一度だけ読み込みますが、loadは再読み込みが可能です。そのためライブラリの中で変数に初期値を設定している場合、loadを使って再読み込みすることで変数を初期値に再設定できます。
loadの使い方
load feature名
ライブラリのパスを指定するシステム変数
Rubyにはライブラリをロードするときの検索パスを設定するシステム変数があり、この変数にパスを追加しておくことで、独自に用意したライブラリのパスを指定せずにfeature名だけで利用できます。ライブラリの検索パスを格納するシステム変数は次の3つです。
$LOAD_PATH
$;
$-I
例えば、下記の例のように$LOAD_PATHに開発中のWebシステム独自に作成したライブラリのパスを指定することで、requireでパスを省略したライブラリ名を利用できます。
“/exports/service/cust/”をライブラリのパスに追加する例
$LOAD_PATH << "/exports/service/cust/"
なおRubyのプログラムの中で上記の方法でライブラリのパスに追加した場合、それに続くrequireのみ追加されたパス名が適用されます。
まとめ
今のソフトウェア開発では、利用する機能をゼロから開発するのは稀で、既に用意されているライブラリを組み合わせるのが一般的です。特にRubyで作られたWebシステム向けのフレームワークのRuby on Railsはその典型で、Ruby用に作られた優れたライブラリを組み合わせることでWebシステムを開発できます。
そのためRuby on RailsによるWebシステムの開発は、アイデアを実現するためにどのライブラリを組み合わせるかが重要です。ぜひRubyとライブラリの関係と、ライブラリを利用する方法をマスターしてください。
gemとは
gemとは、RubyGemsが公開しているRubyのパッケージのことで、Rubyをインストールした際に同時にインストールされるgemコマンドを使ってそのパッケージを管理できます。そしてgemコマンドを使ってライブラリをインストールすると、Rubyの標準ライブラリと同じようなgem専用パスに格納されるので、標準ライブラリと同じように使用することが可能です。
RubyGemsには多くのエンジニアが利用する優れたライブラリが多数揃っているので、ぜひ活用してください。