堀之内 武
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;