堀之内 武
2007/08/23
Gfndavi を支える Web 開発フレームワークである Ruby on Rails について.
- 開発フレームワーク = ソフトウェア開発を支える「枠組み」(ライブラリー
その他支援機能もろもろ)
- 関係データベース
- html 関連
- html, Javascript
rhtml (Ruby埋め込みhtml), rjs (Ruby埋め込みJavascript)
- Web技術 -- オプショナル
- Ajax (Asyncronous Javascript And XML) -- XMLを使った
非同期通信によるページの部分書き換え. Google Map で使われて有名に.
- Web Service (狭義の)
- SOAP, xmlrpc -- いずれもXMLを使ったRPC (remote procedure call)
以上を Ruby により(with Ruby)、Rubyでの開発用に(for Ruby)、統一的に
パッケージ&ライブラリー化してある。
AjaxもWebサービスも Javascript を書かず Ruby から使える。
以下の難しい話はさておき、とにかく無駄なく素早く開発でき、
生成物は自然に整然となるようにできている。
- 関係データベースの利用
- 静的な表現は html で
- 動的な内容は関係データベースに
- つなぎは Ruby で
- MVC構成
- Model-View-Controllerを分離することで保守性を高めるデザインパターン.
Rails は MVC 強制ギブスとなっている (MVCにわけて開発する仕組みになっ
ている).
- Rails では、RDBMSのRubyオブジェクトへのマッピングが Model、
html (rhtml) による画面表現が View, ViewとModel間のデータの
流れを制御したり画面遷移を受け持つのが Controllerとなる。
- Convention over Configuration
- 自由度のあるところを一々 configure させるのは手間、
慣例 (convension) を作っておいて、それに従う限りは
何もしなくていいようにする。強固な convention の
おかげで一貫性が増し、可読性も高まる。
乱暴に言えば(一般に複数の)「表」(テーブル)を使うデータベース。
例えばこんな感じ。
テーブル: 学生
ID 名前 学年
-----------------------
1 もりかわ D3
2 しょうすけ D20
3 ともば M1
テーブル: 講義
ID 題名 担当
-----------------------
MR1 GFD概論 はやし
BS2 Rails超入門 ほりの
テーブル: 受講者
講義ID 学生ID
---------------
MR1 1
MR1 2
MR1 3
BS2 1
注目:
関係演算、検索のため SQL という言語が使われる:
- 関係データベースを実装した Relational DataBase Management
Sysytem (RDBMS) には、mysql, postgresql, sqlite (以上非商用),
Oracle Database, DB2, SQL Server (以上商用) など多数ある。
いずれも SQL をサポート。SQL には規格があり、
基本的に共通だが RDBMS 毎の方言や拡張機能は多い.
データ型も基本以外にそれぞれいろいろサポート.
SQLの例
学生は全部で何人いるか.
SELECT count(ID) FROM 学生;
「はやし」さん担当講義の受講者全員の名前を調べる.
SELECT 学生.名前
FROM 学生, 講義, 受講者
WHERE 講義.担当 = 'はやし' AND
講義.ID = 受講者.講義ID AND
受講者.学生ID = 学生.ID;