UML のユースケース図と Ruby
Menu Menu
UMLを書くツール
OmniGraffle でも良い
ユースケース図
ユースケース図から始める。ユースケースにはプログラムを書かない。
ユースケースには状態遷移を書かない。
ユーザの視点から書く
問題3.1
既存のサービス/アプリケーションのユースケース図Ruby
新しい言語を勉強する時には、まず、Documentを手元に置く。Tutorial をひと通りやってくる。Tutorial Tutorialを固めたもの 元は、WWW server 経由で読むようになっているらしい。
Ruby 1.9 を使う
EasyPackage から入れる。/usr/local/bin に入るので注意。Ruby 1.8 との互換性の問題があるので、重ならないようにする。(またですか...)
rvm などを使っても良い。
Ruby は、必ずFile経由で実行する。必要なら irb を使う。
Web Framework
ユーザはブラウザ(IE/Safari/Chrome)からHTTPでアクセスする。
HTTPには get/put がある。
get/put は、Web server から、Web framework に渡される。(どこの誰にいつ?)
Web framework は、必要に応じて Database にアクセスする。
RESTful Architecture
HTTP で渡す情報には以下のものがある
get/put の区別URI
URI は以下の構造を持っている
http://hostname/filename?optionこのうち、hostname はIP addressに対応するので変更できない。
Resource
filename 部分は Web service の resource (資源) を表している。資源に対して、
get database のread put database へのwriteという対応を取る。そうすると URI が Database の情報と一対一に対応することになる。
これを Representational State Transfer(REST) といい、それを採用した Web service を RESTful という。
正確には、get/put の他に post/delete がある。
RESTful でないもの
http://hostname/filename?option の filename?option 部分に、オブジェクトへのメソッド名を 当てる手法もある。これは、RPC (remote procedure call) と呼ばれる。この手法だと、URI と database は直接には対応しない。
Session
RESTful architecture は、Stateless と呼ばれるが、状態をサービスから完全になくすことは難しい。例えば、
空席を調べて 予約するの二つを関係ないサービスとして実装するよりも、調べた空席を覚えておく方が良い。特に、Web framework が状態を覚えていると、複数の http get/put が一つの状態を持つ Session で構成される。
Session を作るにはいくつかの方法がある。
Web framework 内部で覚えておく (状態) URI の一部に session id を入れる Cookie を使うSession のような状態を作ることは REST とは両立しないが、状態が悪いというわけではない。実際、login しているかしていないかの状態を持つのは一般的に行われている。
これらは un-RESTful なアプローチになる。
Routing
Web Server に来る入力は URI である。したがって、URI を Web framework の script の適切な部分に適切な引数で送る必要がある。
Rendering
Web Browser に表示されるのは HTML (XML) である。XML のノードは、HTMLの内容を表すべきである。さらに、CSS (Cascading style sheets) という表示のための情報が別に存在する。Web frame work は HTML と CSS を生成することになる。
また、Browser 上で処理を行うために JavaScript が使われることが多い。
これらの生成は主にマクロ置換で行われる。特別なパターン(macro)が実行時にデータベースの値などで置換されて、Web Browser に送られる。
データベースの正規化
データベースの関数従属性と正規化を理解する。データベースを UML のクラス図で表現する問題3.2
データベースの設計問題3.3
Ruby on Rails 上に自分で作成したデータベースを作る。Debugging
Debugging Rails application% sudo gem install ruby-debug19 % rails server --debugger