Your SlideShare is downloading. ×
PowerPointファイル
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

PowerPointファイル

1,260
views

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,260
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
6
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 ファイルの生成