0
Ruby on Rails 入門 2007-08-08 稚内北星学園大学 安藤 友晴
Ruby on Rails  概説
Ruby on Rails とは何か <ul><li>MVC アーキテクチャ による Web アプリケーションフレームワーク </li></ul><ul><li>プログラミング言語として Ruby を利用 </li></ul><ul><ul><...
諸元 <ul><li>作者 </li></ul><ul><ul><li>David Heinemeier Hansson </li></ul></ul><ul><ul><li>略して “ DHH”  と呼ばれることが多い </li></ul><...
DEMO
Ruby on Rails の考え方 <ul><li>Convention over Configuration </li></ul><ul><ul><li>CoC </li></ul></ul><ul><ul><li>「設定よりも規約」 </...
MVC アーキテクチャ (Model-View-Controller)
MVC アーキテクチャ (Model-View-Controller) <ul><li>Model </li></ul><ul><li>View </li></ul><ul><li>Controller </li></ul>
Rails の構成要素 <ul><li>ActiveSupport (Ruby クラスの拡張 ) </li></ul><ul><li>ActionPack </li></ul><ul><ul><li>ActionView (View) </li...
環境構築  (Windows 版 )
1. Ruby のインストール <ul><li>Windows なら  One-Click Ruby Installer  を利用すると楽 </li></ul><ul><li>http://rubyforge.org/projects/ruby...
2. RubyGems のインストール <ul><li>RubyGems は Ruby のパッケージ管理システム </li></ul><ul><li>One-Click Ruby Installer  を使っていれば既にインストールされている ...
3. PATH を通す <ul><li><Ruby のインストール先 >/bin  ディレクトリに PATH を通しておく </li></ul><ul><li>RubyGems を別途インストールしている場合にはそこにも PATH を通す </...
4. Rails のインストール <ul><li>次のコマンドで Rails をインストール </li></ul><ul><ul><li>gem install rails --include-dependencies </li></ul></...
5. MySQL のインストール <ul><li>root ユーザの再設定が必要 </li></ul><ul><li>文字コードは UTF-8 で </li></ul><ul><li>詳細は別紙プリントを参照 </li></ul>
Ruby 超特急
Ruby とは <ul><li>「まつもと ゆきひろ」氏が作成したプログラミング言語 </li></ul><ul><li>1995 年に発表 </li></ul><ul><li>オープンソースソフトウェア </li></ul><ul><li>「...
ビューとコントローラ
やりたいこと <ul><li>http://localhost:3000/hello/input   にアクセス </li></ul><ul><li>名前を入力すると </li></ul><ul><li>http://localhost:300...
Rails のプロジェクト作成 <ul><li>以下のコマンドを入力して、 hello というプロジェクトを作成する </li></ul><ul><ul><li>andoh$  rails hello </li></ul></ul>
コントローラの作成 <ul><li>hello  ディレクトリに移動して、次のコマンドを実行 </li></ul><ul><ul><li>andoh$ ruby script/generate controller hello input gr...
生成された app/controllers/hello_controller.rb <ul><li>#  コントローラ名は  Hello + Controller </li></ul><ul><li># ApplicationControlle...
URL とコントローラ <ul><li>http://localhost:3000/hello/input </li></ul><ul><li>http://localhost:3000/hello/greeting </li></ul><ul...
Rails アプリケーションの動作 <ul><li>Dispatcher が Request を受け取る  (HTTP) </li></ul><ul><li>コントローラとアクションを決定 </li></ul><ul><li>コントローラ中のア...
Rails のビュー <ul><li>eRuby フォーマットの実装である ERB が担当 </li></ul><ul><ul><li>eRuby は Ruby のテンプレートエンジン </li></ul></ul><ul><li>“ ( アク...
サーバを起動する <ul><li>ruby script/server  コマンドを実行 </li></ul><ul><li>WEBrick  という  Rails 組み込みの Web サーバが起動される </li></ul><ul><ul><...
app/views/hello/input.rhtml に フォームを追加 <ul><li><h1> お名前を入力 </h1> </li></ul><ul><li><% form_tag :action => :greeting do %> <...
app/controllers/hello_controller.rb を編集 <ul><li># @params  はパラメータ情報を管理するため </li></ul><ul><li>#  のインスタンス変数 </li></ul><ul><l...
app/views/hello/greeting.rhtml を編集 <ul><li><%= @str %> </li></ul><ul><li>greeting アクションの @str 変数の値を </li></ul><ul><li>表示 <...
実行 <ul><li>input  のテキストフィールドに「安藤友晴」と入力してボタンを押すと </li></ul><ul><li>greeting  で次の文字列が表示される </li></ul><ul><li>{  &quot;commit...
greeting で名前を表示する <ul><li>app/controllers/hello_controller.rb  を編集 </li></ul><ul><li>def greeting </li></ul><ul><li>  @nam...
config/routes.rb <ul><li>ActionController::Routing::Routes.draw do |map| </li></ul><ul><li>map.connect ':controller/servic...
データベースの取り扱い
基本的な作業手順 ( 本の管理アプリケーション ) <ul><li>データベース (MySQL) の準備 </li></ul><ul><li>rails books </li></ul><ul><li>config/database.yml  ...
database.yml <ul><li>development: </li></ul><ul><li>adapter: mysql </li></ul><ul><li>database: books_development </li></ul...
エンタープライズアプリケーションアーキテクチャパターン <ul><li>マーチン・ファウラー著 </li></ul><ul><li>翔泳社 </li></ul><ul><li>ISBN: 4-7981-0553-8 </li></ul><ul>...
データソースのアーキテクチャパターン <ul><li>Table Data Gateway </li></ul><ul><li>Row Data Gateway </li></ul><ul><li>Active Record </li></ul...
Active Record  パターン <ul><li>データと振る舞いの両方を持つオブジェクト。 Person クラス自身にデータベースにアクセスする処理が記述されている。 </li></ul>
データベースに対する CRUD <ul><li>Create </li></ul><ul><ul><li>テーブルへの情報の追加 </li></ul></ul><ul><ul><li>insert into  文 </li></ul></ul>...
Active Record  と CRUD <ul><li>Create </li></ul><ul><li>b = Book.new </li></ul><ul><li>b.title = ‘…’; </li></ul><ul><li>b.s...
Active Record  と CRUD <ul><li>Update </li></ul><ul><li>b = Book.find(id) </li></ul><ul><li>b.title = ‘…’ </li></ul><ul><li...
find メソッド <ul><li>books = Book.find(:all,  </li></ul><ul><li>:conditions=>[“title like ?”, % + Ruby + %] </li></ul><ul><li...
Ajax
Ajax  ということば <ul><li>“ Ajax” という名前のはじまり </li></ul><ul><ul><li>Ajax: A New Approach to Web Applications </li></ul></ul><ul>...
Ajax <ul><li>Ajax = Asynchronous JavaScript + XML </li></ul><ul><ul><li>Asynchronous =  非同期 </li></ul></ul><ul><li>技術的な特徴 ...
Ajax Engine を用いる <ul><li>従来のクライアントとサーバの間に  Ajax Engine  が入る </li></ul><ul><li>Ajax Engine </li></ul><ul><ul><li>ユーザインタフェース...
Web サーバと 非同期に通信する <ul><li>Web ブラウザと Web サーバが通信しているあいだ、クライアント側では待ち時間が発生しない </li></ul>
Ajax の構成技術
Ajax の構成技術 <ul><li>HTML (XHTML) </li></ul><ul><li>JavaScript </li></ul><ul><li>DOM (Document Object Model) </li></ul><ul><...
JavaScript <ul><li>( 基本的には )Web ブラウザ上で動作するプログラミング言語 </li></ul><ul><ul><li>Java 言語とは関係ない </li></ul></ul><ul><li>オブジェクト指向言語 ...
JavaScript:  世界で最も誤解されたプログラミング言語 <ul><li>( 原文 ) JavaScript: The World's Most Misunderstood Programming Language </li></ul>...
DOM (Document Object Model) <ul><li>HTML や XML 文書をアプリケーションから操作するための API </li></ul><ul><li>HTML や XML 文書をツリー構造として扱う </li></ul>
XMLHttpRequest <ul><li>Web サーバからデータを取得するためのオブジェクト </li></ul><ul><li>もともと  Microsoft  社が  Internet Explorer  に実装 </li></ul>...
XMLHttpRequest で できること <ul><li>“ XML” </li></ul><ul><ul><li>XML じゃなくても、テキストファイルや JSON での受け渡しが可能 </li></ul></ul><ul><li>“ H...
Ajax のプログラミング
JavaScript の利用 <ul><li>Ajax のプログラミングでは、 JavaScript を利用するのが基本 </li></ul><ul><li>配慮すべきことが多い </li></ul><ul><ul><li>Web ブラウザごと...
JavaScript ライブラリの利用 <ul><li>DOJO Toolkit </li></ul><ul><li>Prototype.js </li></ul><ul><li>Yahoo! UI Library </li></ul><ul>...
他のシステムとの連携 <ul><li>JavaScript のプログラムは、他のシステムと連動して動くことが多い </li></ul><ul><ul><li>たとえばデータベースへのアクセスなど </li></ul></ul>
Restful なサービス
REST <ul><li>分散システムのアーキテクチャスタイル </li></ul><ul><ul><li>「スタイル」であって仕様が存在しているわけではない </li></ul></ul><ul><li>Roy Fielding (HTTP ...
REST の考え方 <ul><li>すべてのリソースを URI で </li></ul><ul><li>すべてのリソースに HTTP でアクセス </li></ul><ul><li>ステートレスであること </li></ul><ul><li>X...
リソースへの “ CRUD” <ul><li>Create </li></ul><ul><ul><li>情報の追加 </li></ul></ul><ul><ul><li>POST メソッド  (HTTP) </li></ul></ul><ul>...
落ち穂拾い
サーバ <ul><li>WEBrick は遅いので実運用には不向き </li></ul><ul><li>よくある組み合わせ </li></ul><ul><ul><li>Lightty + FastCGI + Apache </li></ul><...
Mongrel + Pound + Apache <ul><li>Mongrel </li></ul><ul><ul><li>Rails での利用が一般的になりつつある Web サーバ </li></ul></ul><ul><ul><li>ge...
バリデータ <ul><li>入力された値を検証するためのもの </li></ul><ul><li>モデルに記述 </li></ul><ul><li>class Book < ActiveRecord::Base </li></ul><ul><l...
バリデータの種類  (1) <ul><li># 必須項目のチェック </li></ul><ul><li>validates_presence_of :title, $author </li></ul><ul><li># 長さチェック </li>...
バリデータの種類  (2) <ul><li># 値がユニークであるかチェック </li></ul><ul><li>validates_uniqueness_of :email </li></ul><ul><li># 正規表現によるチェック </...
アプリケーションの日本語化
日本語化の手法 <ul><li>Ruby Gettext Package  を使う </li></ul><ul><li>Ruby で書かれたアプリケーションを国際化するためのフレームワーク </li></ul><ul><li>インストール </...
準備 <ul><li>config/environment.rb  を編集 </li></ul><ul><li>require 'gettext/rails’ </li></ul><ul><li>app/controllers/applicat...
Gettext で利用するファイル <ul><li>po ファイル </li></ul><ul><ul><li>人間が利用するファイル </li></ul></ul><ul><li>mo ファイル </li></ul><ul><ul><li>ア...
Gettext Scaffold generator プラグイン <ul><li>プラグイン </li></ul><ul><ul><li>Rails の機能を拡張するためのしくみ </li></ul></ul><ul><li>Gettext S...
利用手順  (1) <ul><li>rake gettext:setup </li></ul><ul><ul><li>po ファイルと mo ファイル ( の雛形 ) を作成 </li></ul></ul><ul><li>rake gettex...
利用手順  (2) <ul><li>po/ja/books.po  ファイルの編集 </li></ul><ul><li>msgid &quot;Book|Author” </li></ul><ul><li>msgstr &quot; 著者 &q...
利用手順  (3) <ul><li>日本語化したい文字列を  _( )  メソッドで囲い、 po/ja/books.po  ファイルを編集 </li></ul><ul><li><%= link_to  _('Show') , … </li></...
利用手順  (4) <ul><li>rake gettext:make_mo </li></ul><ul><ul><li>mo ファイルの生成 </li></ul></ul>
Upcoming SlideShare
Loading in...5
×

PowerPointファイル

1,301

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,301
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "PowerPointファイル"

  1. 1. Ruby on Rails 入門 2007-08-08 稚内北星学園大学 安藤 友晴
  2. 2. Ruby on Rails 概説
  3. 3. Ruby on Rails とは何か <ul><li>MVC アーキテクチャ による Web アプリケーションフレームワーク </li></ul><ul><li>プログラミング言語として Ruby を利用 </li></ul><ul><ul><li>名前でわかるけど </li></ul></ul><ul><li>フルスタック </li></ul><ul><ul><li>Web 周りから DB 周りまで </li></ul></ul>
  4. 4. 諸元 <ul><li>作者 </li></ul><ul><ul><li>David Heinemeier Hansson </li></ul></ul><ul><ul><li>略して “ DHH” と呼ばれることが多い </li></ul></ul><ul><li>ライセンス </li></ul><ul><ul><li>MIT ライセンス </li></ul></ul><ul><li>歴史 </li></ul><ul><ul><li>2004 年 7 月 公開 </li></ul></ul><ul><ul><li>2005 年 12 月 13 日 1.0 </li></ul></ul><ul><ul><li>2007 年 3 月 14 日 1.2 </li></ul></ul>
  5. 5. DEMO
  6. 6. Ruby on Rails の考え方 <ul><li>Convention over Configuration </li></ul><ul><ul><li>CoC </li></ul></ul><ul><ul><li>「設定よりも規約」 </li></ul></ul><ul><li>Don't Repeat Yourself </li></ul><ul><ul><li>DRY </li></ul></ul><ul><ul><li>「同じことを繰り返さない」 </li></ul></ul>
  7. 7. MVC アーキテクチャ (Model-View-Controller)
  8. 8. MVC アーキテクチャ (Model-View-Controller) <ul><li>Model </li></ul><ul><li>View </li></ul><ul><li>Controller </li></ul>
  9. 9. Rails の構成要素 <ul><li>ActiveSupport (Ruby クラスの拡張 ) </li></ul><ul><li>ActionPack </li></ul><ul><ul><li>ActionView (View) </li></ul></ul><ul><ul><li>ActionController (Controller) </li></ul></ul><ul><li>ActiveRecord (DB 接続 , Model) </li></ul><ul><li>ActiveWebService (Web サービス ) </li></ul><ul><li>ActionMailer ( メールの送受信 ) </li></ul><ul><li>railties ( 周辺ライブラリ・ツール ) </li></ul>
  10. 10. 環境構築 (Windows 版 )
  11. 11. 1. Ruby のインストール <ul><li>Windows なら One-Click Ruby Installer を利用すると楽 </li></ul><ul><li>http://rubyforge.org/projects/rubyinstaller/ </li></ul><ul><li>ruby186-25.exe をダウンロード </li></ul><ul><li>ダブルクリックしてインストール開始 </li></ul>
  12. 12. 2. RubyGems のインストール <ul><li>RubyGems は Ruby のパッケージ管理システム </li></ul><ul><li>One-Click Ruby Installer を使っていれば既にインストールされている </li></ul><ul><li>そうでない人は下記サイトからダウンロード </li></ul><ul><ul><li>http://rubyforge.org/projects/rubygems/ </li></ul></ul>
  13. 13. 3. PATH を通す <ul><li><Ruby のインストール先 >/bin ディレクトリに PATH を通しておく </li></ul><ul><li>RubyGems を別途インストールしている場合にはそこにも PATH を通す </li></ul><ul><li>ruby -v コマンドの実行結果が次のようになれば OK </li></ul><ul><li>$ ruby -v </li></ul><ul><li>ruby 1.8.6 (…) </li></ul><ul><li>$ </li></ul>
  14. 14. 4. Rails のインストール <ul><li>次のコマンドで Rails をインストール </li></ul><ul><ul><li>gem install rails --include-dependencies </li></ul></ul><ul><ul><li>Rails( と関連するソフトウェア ) がインストールされる </li></ul></ul>
  15. 15. 5. MySQL のインストール <ul><li>root ユーザの再設定が必要 </li></ul><ul><li>文字コードは UTF-8 で </li></ul><ul><li>詳細は別紙プリントを参照 </li></ul>
  16. 16. Ruby 超特急
  17. 17. Ruby とは <ul><li>「まつもと ゆきひろ」氏が作成したプログラミング言語 </li></ul><ul><li>1995 年に発表 </li></ul><ul><li>オープンソースソフトウェア </li></ul><ul><li>「オブジェクト指向スクリプト言語」 </li></ul><ul><li>Ruby を使った「 Ruby on Rails 」によって、最近一躍有名に。 </li></ul><ul><li>http://www.ruby-lang.org/ </li></ul>
  18. 18. ビューとコントローラ
  19. 19. やりたいこと <ul><li>http://localhost:3000/hello/input にアクセス </li></ul><ul><li>名前を入力すると </li></ul><ul><li>http://localhost:3000/hello/greeting で挨拶してくれる </li></ul><ul><li>データベースは利用しない </li></ul>
  20. 20. Rails のプロジェクト作成 <ul><li>以下のコマンドを入力して、 hello というプロジェクトを作成する </li></ul><ul><ul><li>andoh$ rails hello </li></ul></ul>
  21. 21. コントローラの作成 <ul><li>hello ディレクトリに移動して、次のコマンドを実行 </li></ul><ul><ul><li>andoh$ ruby script/generate controller hello input greeting </li></ul></ul><ul><li>hello というコントローラと、 input と greeting というアクションを作成する。 </li></ul>
  22. 22. 生成された app/controllers/hello_controller.rb <ul><li># コントローラ名は Hello + Controller </li></ul><ul><li># ApplicationController を継承 </li></ul><ul><li>class HelloController < ApplicationController </li></ul><ul><li>#input アクション </li></ul><ul><li>def input </li></ul><ul><li>end </li></ul><ul><li># greeting アクション </li></ul><ul><li>def greeting </li></ul><ul><li>end </li></ul><ul><li>end </li></ul>
  23. 23. URL とコントローラ <ul><li>http://localhost:3000/hello/input </li></ul><ul><li>http://localhost:3000/hello/greeting </li></ul><ul><li>hello がコントローラ名 </li></ul><ul><li>input と greeting がアクション名 </li></ul># コントローラ名は Hello + Controller class HelloController < ApplicationController #input アクション def input end # greeting アクション def greeting end end
  24. 24. Rails アプリケーションの動作 <ul><li>Dispatcher が Request を受け取る (HTTP) </li></ul><ul><li>コントローラとアクションを決定 </li></ul><ul><li>コントローラ中のアクションが処理 </li></ul><ul><li>ビューを処理 </li></ul><ul><li>ブラウザに Response を返す (HTTP) </li></ul>
  25. 25. Rails のビュー <ul><li>eRuby フォーマットの実装である ERB が担当 </li></ul><ul><ul><li>eRuby は Ruby のテンプレートエンジン </li></ul></ul><ul><li>“ ( アクション名 ).rhtml” というファイル名 </li></ul>
  26. 26. サーバを起動する <ul><li>ruby script/server コマンドを実行 </li></ul><ul><li>WEBrick という Rails 組み込みの Web サーバが起動される </li></ul><ul><ul><li>デフォルトでは 3000 ポートで起動 </li></ul></ul><ul><li>アクションに対応したビューが表示される </li></ul><ul><ul><li>http://localhost:3000/hello/input </li></ul></ul><ul><ul><li>http://localhost:3000/hello/greeting </li></ul></ul>
  27. 27. app/views/hello/input.rhtml に フォームを追加 <ul><li><h1> お名前を入力 </h1> </li></ul><ul><li><% form_tag :action => :greeting do %> </li></ul><ul><li><%= text_field :input, :name %> </li></ul><ul><li><%= submit_tag 'OK' %> </li></ul><ul><li><% end %> </li></ul>ボタンを押したら greeting アクションに移る text_filed object_name, method, options = {}
  28. 28. app/controllers/hello_controller.rb を編集 <ul><li># @params はパラメータ情報を管理するため </li></ul><ul><li># のインスタンス変数 </li></ul><ul><li># アクションで定義されたインスタンス変数は </li></ul><ul><li># ビューで利用できる </li></ul><ul><li>def greeting </li></ul><ul><li> @str = @params.inspect </li></ul><ul><li>end </li></ul>
  29. 29. app/views/hello/greeting.rhtml を編集 <ul><li><%= @str %> </li></ul><ul><li>greeting アクションの @str 変数の値を </li></ul><ul><li>表示 </li></ul>
  30. 30. 実行 <ul><li>input のテキストフィールドに「安藤友晴」と入力してボタンを押すと </li></ul><ul><li>greeting で次の文字列が表示される </li></ul><ul><li>{ &quot;commit&quot;=>&quot;OK&quot;, &quot;action&quot;=>&quot;greeting&quot;, &quot;controller&quot;=>&quot;hello&quot;, </li></ul><ul><li>&quot;input&quot;=>{&quot;name&quot;=>&quot; 安藤友晴 &quot;} } </li></ul><ul><li>これがパラメータの情報になる </li></ul>
  31. 31. greeting で名前を表示する <ul><li>app/controllers/hello_controller.rb を編集 </li></ul><ul><li>def greeting </li></ul><ul><li> @name = @params[:input][:name] </li></ul><ul><li>end </li></ul><ul><li>app/views/hello/greeting.rhtml を編集 </li></ul><ul><li><h1> ごあいさつ </h1> </li></ul><ul><li><%= &quot; こんにちは、 #{@name} さん &quot; %> </li></ul><ul><li><% form_tag :action => :input do %> </li></ul><ul><li><%= submit_tag ' 戻る ' %> </li></ul><ul><li><% end %> </li></ul>
  32. 32. config/routes.rb <ul><li>ActionController::Routing::Routes.draw do |map| </li></ul><ul><li>map.connect ':controller/service.wsdl', :action => 'wsdl' </li></ul><ul><li>map.connect ':controller/:action/:id.:format' </li></ul><ul><li>map.connect ':controller/:action/:id' </li></ul><ul><li>end </li></ul><ul><li># map.connect ‘:controller/:action/:id’ に着目 </li></ul><ul><li># URL の形式が < コントローラ名 >/< アクション名 >/<id> で </li></ul><ul><li># あることを示している </li></ul><ul><li># このファイルに </li></ul><ul><li># map.connect 'h/:action/:id', :controller => 'hello' </li></ul><ul><li># を追加したらどのように動くだろうか? </li></ul>
  33. 33. データベースの取り扱い
  34. 34. 基本的な作業手順 ( 本の管理アプリケーション ) <ul><li>データベース (MySQL) の準備 </li></ul><ul><li>rails books </li></ul><ul><li>config/database.yml の編集 </li></ul><ul><li>MySQL でデータベース作成 </li></ul><ul><li>ruby script/generate model book title:string author:string publisher:string isbn:string published_on:date </li></ul><ul><li>rake db:migrate </li></ul><ul><li>ruby script/generate scaffold Book </li></ul><ul><li>サーバの立ち上げ </li></ul><ul><li>アプリケーションの修正 </li></ul>
  35. 35. database.yml <ul><li>development: </li></ul><ul><li>adapter: mysql </li></ul><ul><li>database: books_development </li></ul><ul><li>username: root </li></ul><ul><li>password: tomoharu </li></ul><ul><li>socket: /var/lib/mysql/mysql.sock </li></ul><ul><li>encoding: utf8 </li></ul><ul><li>test: </li></ul><ul><li>database: books_test </li></ul><ul><li>…… </li></ul><ul><li>production: </li></ul><ul><li>database: books_test </li></ul><ul><li>…… </li></ul>
  36. 36. エンタープライズアプリケーションアーキテクチャパターン <ul><li>マーチン・ファウラー著 </li></ul><ul><li>翔泳社 </li></ul><ul><li>ISBN: 4-7981-0553-8 </li></ul><ul><li>エンタープライズ・アプリケーションの設計技法について。オブジェクト指向設計全般で参考になる </li></ul><ul><li>原書名 : 「 Patterns of Enterprise Application Architecture 」 </li></ul><ul><li>翻訳の質は微妙 </li></ul><ul><li>「 PofEAA 」とか「 PoEAA 」と呼ばれる </li></ul><ul><li>http://capsctrl.que.jp/kdmsnr/wiki/PofEAA/ </li></ul>
  37. 37. データソースのアーキテクチャパターン <ul><li>Table Data Gateway </li></ul><ul><li>Row Data Gateway </li></ul><ul><li>Active Record </li></ul><ul><li>Data Mapper </li></ul>
  38. 38. Active Record パターン <ul><li>データと振る舞いの両方を持つオブジェクト。 Person クラス自身にデータベースにアクセスする処理が記述されている。 </li></ul>
  39. 39. データベースに対する CRUD <ul><li>Create </li></ul><ul><ul><li>テーブルへの情報の追加 </li></ul></ul><ul><ul><li>insert into 文 </li></ul></ul><ul><li>Read </li></ul><ul><ul><li>テーブルからの情報の読み出し </li></ul></ul><ul><ul><li>select 文 </li></ul></ul><ul><li>Update </li></ul><ul><ul><li>テーブルの情報の更新 </li></ul></ul><ul><ul><li>update 文 </li></ul></ul><ul><li>Delete </li></ul><ul><ul><li>テーブルの情報の削除 </li></ul></ul><ul><ul><li>delete 文 </li></ul></ul>
  40. 40. Active Record と CRUD <ul><li>Create </li></ul><ul><li>b = Book.new </li></ul><ul><li>b.title = ‘…’; </li></ul><ul><li>b.save </li></ul><ul><li>Read </li></ul><ul><li>b = Book.find(id) </li></ul>
  41. 41. Active Record と CRUD <ul><li>Update </li></ul><ul><li>b = Book.find(id) </li></ul><ul><li>b.title = ‘…’ </li></ul><ul><li>b.save </li></ul><ul><li>Delete </li></ul><ul><li>b = Book.find(id) </li></ul><ul><li>b.destroy </li></ul>
  42. 42. find メソッド <ul><li>books = Book.find(:all, </li></ul><ul><li>:conditions=>[“title like ?”, % + Ruby + %] </li></ul><ul><li># conditions の値は、 SQL の where 句の内容 </li></ul>
  43. 43. Ajax
  44. 44. Ajax ということば <ul><li>“ Ajax” という名前のはじまり </li></ul><ul><ul><li>Ajax: A New Approach to Web Applications </li></ul></ul><ul><ul><li>Jesse James Garrett 氏 </li></ul></ul><ul><ul><li>2005 年 2 月 18 日 </li></ul></ul><ul><ul><li>http://www.adaptivepath.com/publications/essays/archives/000385.php </li></ul></ul><ul><li>日本語訳 </li></ul><ul><ul><li>Ajax: Web アプリケーション開発の新しいアプローチ </li></ul></ul><ul><ul><li>けんたろ 氏 </li></ul></ul><ul><ul><li>http://antipop.gs/docs/translations/ajax.html </li></ul></ul>
  45. 45. Ajax <ul><li>Ajax = Asynchronous JavaScript + XML </li></ul><ul><ul><li>Asynchronous = 非同期 </li></ul></ul><ul><li>技術的な特徴 </li></ul><ul><ul><li>Ajax Engine を用いる </li></ul></ul><ul><ul><li>Web サーバと非同期に通信する </li></ul></ul>
  46. 46. Ajax Engine を用いる <ul><li>従来のクライアントとサーバの間に Ajax Engine が入る </li></ul><ul><li>Ajax Engine </li></ul><ul><ul><li>ユーザインタフェースのレンダリング </li></ul></ul><ul><ul><li>必要に応じてサーバと通信する </li></ul></ul>
  47. 47. Web サーバと 非同期に通信する <ul><li>Web ブラウザと Web サーバが通信しているあいだ、クライアント側では待ち時間が発生しない </li></ul>
  48. 48. Ajax の構成技術
  49. 49. Ajax の構成技術 <ul><li>HTML (XHTML) </li></ul><ul><li>JavaScript </li></ul><ul><li>DOM (Document Object Model) </li></ul><ul><li>CSS (Cascading Style Sheet) </li></ul><ul><li>XML </li></ul><ul><li>XMLHttpRequest </li></ul>
  50. 50. JavaScript <ul><li>( 基本的には )Web ブラウザ上で動作するプログラミング言語 </li></ul><ul><ul><li>Java 言語とは関係ない </li></ul></ul><ul><li>オブジェクト指向言語 </li></ul><ul><ul><li>「関数型言語」でもある </li></ul></ul><ul><li>“ ECMAScript” として標準化されている </li></ul>
  51. 51. JavaScript: 世界で最も誤解されたプログラミング言語 <ul><li>( 原文 ) JavaScript: The World's Most Misunderstood Programming Language </li></ul><ul><ul><li>http://www.crockford.com/javascript/javascript.html </li></ul></ul><ul><li>http://d.hatena.ne.jp/brazil/20050829/1125321936 </li></ul>
  52. 52. DOM (Document Object Model) <ul><li>HTML や XML 文書をアプリケーションから操作するための API </li></ul><ul><li>HTML や XML 文書をツリー構造として扱う </li></ul>
  53. 53. XMLHttpRequest <ul><li>Web サーバからデータを取得するためのオブジェクト </li></ul><ul><li>もともと Microsoft 社が Internet Explorer に実装 </li></ul><ul><li>ほかのブラウザも追随 </li></ul><ul><li>標準化された規格という訳ではない </li></ul>
  54. 54. XMLHttpRequest で できること <ul><li>“ XML” </li></ul><ul><ul><li>XML じゃなくても、テキストファイルや JSON での受け渡しが可能 </li></ul></ul><ul><li>“ Http” </li></ul><ul><ul><li>HTTP じゃなくても大丈夫 ( なこともある ) 。ローカルのテキストファイルなど。 </li></ul></ul>
  55. 55. Ajax のプログラミング
  56. 56. JavaScript の利用 <ul><li>Ajax のプログラミングでは、 JavaScript を利用するのが基本 </li></ul><ul><li>配慮すべきことが多い </li></ul><ul><ul><li>Web ブラウザごとの挙動の違い </li></ul></ul><ul><ul><li>機能が少ない </li></ul></ul>
  57. 57. JavaScript ライブラリの利用 <ul><li>DOJO Toolkit </li></ul><ul><li>Prototype.js </li></ul><ul><li>Yahoo! UI Library </li></ul><ul><li>script.aculo.us </li></ul><ul><li>Rico </li></ul><ul><li>Google Web Toolkit </li></ul><ul><li>Zimbra </li></ul><ul><li>Kabuki </li></ul><ul><li>…… </li></ul>
  58. 58. 他のシステムとの連携 <ul><li>JavaScript のプログラムは、他のシステムと連動して動くことが多い </li></ul><ul><ul><li>たとえばデータベースへのアクセスなど </li></ul></ul>
  59. 59. Restful なサービス
  60. 60. REST <ul><li>分散システムのアーキテクチャスタイル </li></ul><ul><ul><li>「スタイル」であって仕様が存在しているわけではない </li></ul></ul><ul><li>Roy Fielding (HTTP のプロトコル作成者の一人 ) が考案 </li></ul><ul><li>REST の考え方に従ったスタイル </li></ul><ul><ul><li>Restful </li></ul></ul>
  61. 61. REST の考え方 <ul><li>すべてのリソースを URI で </li></ul><ul><li>すべてのリソースに HTTP でアクセス </li></ul><ul><li>ステートレスであること </li></ul><ul><li>XML でリソースを扱うことが多い </li></ul>
  62. 62. リソースへの “ CRUD” <ul><li>Create </li></ul><ul><ul><li>情報の追加 </li></ul></ul><ul><ul><li>POST メソッド (HTTP) </li></ul></ul><ul><li>Read </li></ul><ul><ul><li>情報の読み出し </li></ul></ul><ul><ul><li>GET メソッド (HTTP) </li></ul></ul><ul><li>Update </li></ul><ul><ul><li>情報の更新 </li></ul></ul><ul><ul><li>PUT メソッド (HTTP) </li></ul></ul><ul><li>Delete </li></ul><ul><ul><li>情報の削除 </li></ul></ul><ul><ul><li>DELETE メソッド (HTTP) </li></ul></ul>
  63. 63. 落ち穂拾い
  64. 64. サーバ <ul><li>WEBrick は遅いので実運用には不向き </li></ul><ul><li>よくある組み合わせ </li></ul><ul><ul><li>Lightty + FastCGI + Apache </li></ul></ul><ul><ul><li>Mongrel + Pound + Apache </li></ul></ul><ul><ul><ul><li>DHH 推奨 </li></ul></ul></ul>
  65. 65. Mongrel + Pound + Apache <ul><li>Mongrel </li></ul><ul><ul><li>Rails での利用が一般的になりつつある Web サーバ </li></ul></ul><ul><ul><li>gem install mongrel でインストール </li></ul></ul><ul><ul><li>Mongrel をインストールすると、 ruby script/server コマンドで Mongrel が起動 </li></ul></ul><ul><li>Pound </li></ul><ul><ul><li>リバースプロキシ + ロードバランサ </li></ul></ul><ul><li>Apache Http Server </li></ul><ul><ul><li>静的コンテンツ </li></ul></ul>
  66. 66. バリデータ <ul><li>入力された値を検証するためのもの </li></ul><ul><li>モデルに記述 </li></ul><ul><li>class Book < ActiveRecord::Base </li></ul><ul><li>end </li></ul><ul><li>validates_presence_of :title, :author </li></ul><ul><li>validates_uniqueness_of :isbn </li></ul><ul><li>validates_format_of :isbn, :with => /[0-9xX¥-]+/ </li></ul>
  67. 67. バリデータの種類 (1) <ul><li># 必須項目のチェック </li></ul><ul><li>validates_presence_of :title, $author </li></ul><ul><li># 長さチェック </li></ul><ul><li>validates_length_of :username, :minimum => 6, :maximum => 8 </li></ul><ul><li># 数値であるかチェック </li></ul><ul><li>validates_numericality_of :number </li></ul>
  68. 68. バリデータの種類 (2) <ul><li># 値がユニークであるかチェック </li></ul><ul><li>validates_uniqueness_of :email </li></ul><ul><li># 正規表現によるチェック </li></ul><ul><li>validates_format_of :isbn, :with => /[0-9xX¥-]+/ </li></ul>
  69. 69. アプリケーションの日本語化
  70. 70. 日本語化の手法 <ul><li>Ruby Gettext Package を使う </li></ul><ul><li>Ruby で書かれたアプリケーションを国際化するためのフレームワーク </li></ul><ul><li>インストール </li></ul><ul><li>gem install gettext </li></ul>
  71. 71. 準備 <ul><li>config/environment.rb を編集 </li></ul><ul><li>require 'gettext/rails’ </li></ul><ul><li>app/controllers/application.rb を編集 </li></ul><ul><li>init_gettext 'book' # プロジェクト名を指定 </li></ul>
  72. 72. Gettext で利用するファイル <ul><li>po ファイル </li></ul><ul><ul><li>人間が利用するファイル </li></ul></ul><ul><li>mo ファイル </li></ul><ul><ul><li>アプリケーションが利用するファイル </li></ul></ul>
  73. 73. Gettext Scaffold generator プラグイン <ul><li>プラグイン </li></ul><ul><ul><li>Rails の機能を拡張するためのしくみ </li></ul></ul><ul><li>Gettext Scaffold generator </li></ul><ul><ul><li>これを使うと po ファイルや mo ファイルの作成が楽になる </li></ul></ul><ul><li>インストール </li></ul><ul><li>ruby script/plugin install svn://rubyforge.org/var/svn/gettextscaffold/gettext_scaffold </li></ul>
  74. 74. 利用手順 (1) <ul><li>rake gettext:setup </li></ul><ul><ul><li>po ファイルと mo ファイル ( の雛形 ) を作成 </li></ul></ul><ul><li>rake gettext:update_po </li></ul><ul><ul><li>ビューやモデルから日本語化すべき部分を追加する </li></ul></ul>
  75. 75. 利用手順 (2) <ul><li>po/ja/books.po ファイルの編集 </li></ul><ul><li>msgid &quot;Book|Author” </li></ul><ul><li>msgstr &quot; 著者 &quot; </li></ul>
  76. 76. 利用手順 (3) <ul><li>日本語化したい文字列を _( ) メソッドで囲い、 po/ja/books.po ファイルを編集 </li></ul><ul><li><%= link_to _('Show') , … </li></ul><ul><li>msgid &quot;Show” </li></ul><ul><li>msgstr &quot; 表示 &quot; </li></ul>
  77. 77. 利用手順 (4) <ul><li>rake gettext:make_mo </li></ul><ul><ul><li>mo ファイルの生成 </li></ul></ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×