[Rails5] Railsの主要なライブラリ構成

こんにちは、hachi8833です。今回はRails 5の主要なライブラリ構成について書いてみたいと思います。

Railsの主要なライブラリ構成

  • 対象バージョン: 特記しない限りRails 5とします。

Railsは多数のライブラリから構成されている

Ruby on Railsは、Active RecordAction ViewAction Controllerといったさまざまな巨大ライブラリが多数組み合わさってできています。

主なライブラリ 主な機能
Active Record データベースのモデル、モデル内データへのアクセス、モデル間のリレーション、バリデーションなど
Active Model データベースを使わないモデルの作成など
Action View ビューでのERB出力(レンダリング)など
Action Controller ルーティングをコントローラに渡す、コントローラとモデルやビューを結びつけるなど
Action Mailer オプションのメール送受信
Active Job ジョブ管理、他のジョブフレームワークとの仲介
Active Support 「コア拡張機能」を中心とする文字列や日付時刻などの膨大なメソッド集

なお、Action PackはRails 2まではAction ControllerとAction Viewを含んでいましたが、現在Action ViewはAction Packから分離されました。ルーティングなどを担当するAction DispatchもAction Packに含まれます。

Railsを実行するとこれらのライブラリが自動で読み込まれるので、普段は読み込みについて特に意識することはないと思います。

そうしたライブラリの多くは実はRails専用というわけではなく、Rails以外のRubyプログラムで使っても構いません。実際、これらのライブラリの一部はSinatraなど他のRubyフレームワークでもよく使われています。

Railsではライブラリをgemとして持つ

Railsでは、多くの機能をライブラリとして持っています。

そしてライブラリはRubyのgemという形式で扱い、bundlerで統一して管理されます。

  • Railsの歴史では、当初は本体の機能だったものが後にgem化されることがよくあります。たとえば最近では、Active SupportのEnumerable#sumがRuby標準ライブラリに移行しました
  • また、特定の機能を非推奨(deprecated)にする場合も、いったんgem化してリリースし、次のバージョンでgemを外す、といった方法で行うことがよくあるようです。

追記: 「プラグイン」という呼び方

少々ややこしいのですが、Railsを拡張するライブラリは正式にはプラグインと呼ばれます。

ここ数年の記事では、Railsを拡張するライブラリは単にライブラリまたはgemと呼ばれることが多く、「プラグイン」という呼び方はあまりされていないようです。

体験したことはありませんが、Rails 1や2の時代は、プラグインをgemまたは「pluginスクリプト」としてインストールしていたそうです。現在のRailsではプラグインをgemのみを使うインストールに統一されています。

今後

Rails 5の主要ライブラリのうち、Active Supportについて順次探訪してみようと思います。ご期待ください。

参考

Ruby on RailsによるWEBシステム開発、Android/iPhoneアプリ開発、電子書籍配信のことならお任せください この記事を書いた人と働こう! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

hachi8833

Twitter: @hachi8833、GitHub: @hachi8833 コボラー、ITコンサル、ローカライズ業界、Rails開発を経てTechRachoの編集・記事作成を担当。 これまでにRuby on Rails チュートリアル第2版の半分ほど、Railsガイドの初期翻訳ではほぼすべてを翻訳。その後も折に触れてそれぞれ一部を翻訳。 かと思うと、正規表現の粋を尽くした日本語エラーチェックサービス enno.jpを運営。 実は最近Go言語が好き。 仕事に関係ないすっとこブログ「あけてくれ」は2000年頃から多少の中断をはさんで継続、現在はnote.muに移転。

hachi8833の書いた記事

週刊Railsウォッチ

インフラ

BigBinary記事より

ActiveSupport探訪シリーズ