TOPシステム開発> Ruby on RailsでREST実装
いまが旬!Ruby on Rails&OpenLaszlo
いまが旬!Ruby on Rails&OpenLaszlo

第2回:開発環境の構築と顧客管理アプリケーションの作成

著者:ネットエイト  十河 学   2007/9/11
前のページ  1  2  3   4  次のページ
Ruby on RailsでREST実装

   いよいよRoR側からアプリケーションの開発にとりかかります。今回は簡単な顧客管理RIAを作成しましょう。RESTによるデータ操作の基本であるCRUD-作成(Create)、取得(Read)、更新(Update)、削除(Delele)を利用したRIAが、Flash/Dhtml(Ajax)の両方で簡単に作成できるかを体験してください。

   まずお客様情報として次の項目をデータベースへ保存することにします。
項目 カラム名 タイプ
id id integer
郵便番号 zip integer
住所 address string
苗字 last_name string
名前 first_name string
誕生日 birthday date
電話番号 tel string
PCメール mail string
携帯メール mobile_mail string
備考 note string

表2:お客様情報の項目

   コマンドプロンプトまたはターミナルを立ち上げ、下記のコマンドを実行してください。このコマンドではデータベースにsqliteを使用し、laszlocustomerapp」という名前のRoRアプリケーションを作成しています。。

rails laszlocustomerapp -d sqlite3

   次に下記のコマンドで「laszlocustomerapp」ディレクトリに移動します。

cd laszlocustomerapp

   お客様情報を保存するテーブルとして「customer」を作成します。下記の「scaffold_resource」スクリプトを実行すると、customerにアクセスするために必要なコントローラ、モデル、ビューのすべてを一発で作成してくれます。ここではcustomerに含まれる「項目名:項目型」を指定しています。

script/generate scaffold_resource customer zip:integer address:string first_name:string last_name:string birthday:date tel:string mail:string mail_mobile:string note:string

   モデル定義ファイルからデータベースへテーブルを作成するため次のコマンドを入力します。

rake db:migrate

   ここまで完了できたら、下記のコマンドでサーバを立ち上げます。

script/server

   次にWebブラウザを立ち上げ、「http://127.0.0.1:3000/customers」にアクセスします。この時点ではまだデータが存在しないので、「new customer」をクリックしてデータ作成画面に移動します。

データ作成画面
図2:データ作成画面

   追加したカラムの情報を入力できるので、ここでデータを追加します。試しに2件ほど追加してみました。

データを2件追加したところ
図3:データを2件追加したところ
(画像をクリックすると別ウィンドウに拡大図を表示します)

   OpenLaszloと連携するにはデータをXMLとして取得する必要がありますが、コードの追加は必要ありません。Webブラウザから「http://127.0.0.1:3000/customer.xml」にアクセスしてみてください。「.xml」を追加しただけで次のようなXMLデータが表示されます。

表示されるXMLデータ
図4:表示されるXMLデータ

   「http://127.0.0.1:3000/customers/1」のように、URLにIDを指定してアクセスすると、指定したデータのみを表示することができます。XML形式で取得するには「http://127.0.0.1:3000/customers/1.xml」のように「.xml」を付加するだけです。

   「scaffold_resource」で生成されたコントローラはRESTfulです。RESTfulとはHTTPプロトコルのGET/POST/PUT/DELETEによってデータ操作を行います。表3で示したように、「HTTPメソッドでアクション」URLは「操作される対象」を指すという、わかりやすくシンプルな実装を利用することができます。

  • GETで /customers/1 を呼ぶと表示
  • POSTで /cusomers を呼ぶと作成
  • PUTで /customers/1 を呼ぶと更新
  • DELETEで /customers/1 を呼ぶと削除

表3:生成されたコントローラは完全にREST対応

   ただし、現在のブラウザはPOSTとGETしかサポートしていないため、RoRではPUTとDELETEの発行に「_method」パラメータを追加し、「put」または「delete」を付加してPOSTでリクエストすることになります。将来、WebブラウザがPUTとDELETEに対応しても、RoR側を変更する必要はありません。このあたりにRoRの作者の潔い設計思想があらわれているのではないかと思います。

前のページ  1  2  3   4  次のページ


株式会社ネットエイト 十河 学
著者プロフィール
株式会社ネットエイト  十河 学
2005年にOpenLaszloに出会う。RIAとオープンソースの可能性に感動し、OpenLaszloの情報交換を目的としたlaszlo.jpを勢いで開設。オープンソースアプリケーションはもちろん、iTunesやYouTubeから生まれるアーティストや、場所を問わないワークスタイルなどインターネットを中心として大きく変わりつつある世界の動きにも興味あり。現在はnet8のメンバーで沖縄県在住。

http://laszlo.jp


INDEX
第2回:開発環境の構築と顧客管理アプリケーションの作成
  Ruby On RailsとOpenLaszloを使ったRIAアプリケーション開発
  Rubyをインストール
Ruby on RailsでREST実装
  LZXアプリケーションにデータ表示