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

PowerPointファイル

on

  • 1,850 views

 

Statistics

Views

Total Views
1,850
Views on SlideShare
1,846
Embed Views
4

Actions

Likes
0
Downloads
5
Comments
0

1 Embed 4

http://www.slideshare.net 4

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

PowerPointファイル PowerPointファイル Presentation Transcript

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