PowerPointファイル

  • 1,240 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,240
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
5
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

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