前回の続きです。
- フレームワークの話(非エンジニアにRails2.0を説明する -1)
- Rails自体の話(今回)
- Rails2.0の話
Ruby on Railsは、その名の通りRubyというプログラミング言語のフレームワークで、Railsと略されてよばれています。Railsの実体はいくつかのライブラリの集まりです。
ちなみにライブラリとは、
ある目的や規則に沿ってまとめられたソフトウェア部品の集合体のこと。「複数のソフトウェア部品をまとめた」ものであってもそのまとめ方が無目的・無規則な場合は、ライブラリと呼ぶにはふさわしくない。(はてなキーワード)
という意味です。
このライブラリがあると、プログラムが楽になります。たとえばデータベースにデータを保存したいと思ったときには、SQL文というものを書かなくてはなりませんが、ライブラリがあると楽に書くことができます。具体的には後ほど例を出しますね。
Railsはざっくり言って下記のライブラリで構成されています。
- メール担当 : ActionMailer
- 縁の下担当 : ActionPack
- データベース担当 : ActiveRecord
- ActiveResource
- 便利屋担当 : ActiveSupport
引用部分に「ある目的・規則」とありますが、もちろんこれらのライブラリもそれぞれ目的を持っています。
※わかりやすく説明しようとしているので、正確さを欠いている部分がありますが、そのようなものだという認識を持っていただくためですので、ご了承くださいー
メール担当 : ActionMailer
前も紹介したのですが、ActionMailerとはメールを操作するためのライブラリです。
ウェブアプリのなかでユーザ登録完了メールを送信したり、メールを受け取ってなにか処理をしたりするものがありますが、このActionMailerを使うことによって、より手軽にメールを扱えるようになります。
参考URL
http://wota.jp/ac/?date=20050731
縁の下担当:ActionPack
ActionPackとはRailsでつくるウェブアプリの基本部分を担っています。このライブラリは大きく二つに分かれています(参考URL参照)。
ActionController
ブラウザからのリクエストを受け取って、それを処理して、レスポンスを返す。これが Web アプリの基本。例えば http://my.shop.com/store/add_to_cart/123 という URL にリクエストしたとしよう。すると StoreController クラスの add_to_cart メソッドが呼び出される。このときパラメータ id=123 が一緒に渡される。(中略)
このように URL を解析してアクションメソッドを呼び出してレスポンスを返すことが ActionPack の大事な仕事その一。
クラス、メソッド、という言葉が出てきますが、ここでは気にしないでください。ActionPackが http://my.shop.com/store/add_to_cart/123 というURLを解析してくれて、決められた機能を実行してくれるのです。
ActionView
ActionPack の大事な仕事その二はテンプレートを元にレスポンスを作ること。このうち、テンプレートを作成するのに役立つ機能が ActionView としてまとめられている。
Rails では ERB で HTML テンプレートを書く。このテンプレートを書きやすくするのが ActionView の仕事。
ここでのテンプレートは、ブログの「テンプレート」とほとんど同じものです。ActionViewとはあのテンプレートを書きやすくするためのものだと思ってください。たとえば、HTMLのformタグを書きやすくしたり、とかですね。
参考URL
http://jp.rubyist.net/magazine/?0008-RubyOnRails
データベース担当 : ActiveRecord
ActionMailer同様、これも前に触れたライブラリです。ActiveRecordはDBの操作を行うライブラリです。
たとえば、fruits(フルーツ)というテーブルがあるとして、そこに「name(名前)」と「price(値段)」があるとします。ここに下記のようにスイカが2800円であるというデータをいれたいとします。
| ID | 名前 | 値段 |
|---|---|---|
| 1 | スイカ | 2800 |
DBにデータを追加するとき、通常はSQL文というものでデータを入れていきます。
INSERT INTO fruits (name, price) VALUES ('スイカ', 2800);
ActiveRecordを使うと、これが
fruit = Fruit.new fruit.name = "スイカ" fruit.price = 2800 fruit.save
となるんです。とても冗長に見えるかもしれませんが、2行目などは「フルーツ」の「名前」は「スイカ」と、とても直感的にわかる書き方になっています。もちろんActiveRecordを使って一行で書くこともできます。
参考URL
http://jp.rubyist.net/magazine/?0006-RubyOnRails
ActiveResource
これは飛ばします。。
便利屋担当 : ActiveSupport
ActiveSupportとは、Railsを便利にするさまざまなユーティリティクラスと標準ライブラリの拡張を集めたものです。
たとえば、Rubyでは月末の日時を返すメソッド(機能)は備わっていないのですが、ActiveSupportの「at_end_of_month」を使うと、月末の日付を返してくれます。
time = Time.now time.at_end_of_month
非常に細かい例ですが、直感的にわかりやすい機能がActiveSupportにはたくさん実装されています。
参考URL
http://wiki.fdiary.net/rails/?ActiveSupport
http://d.hatena.ne.jp/walf443/20060605/1149514808

