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

PowerPointファイル

on

  • 1,825 views

 

Statistics

Views

Total Views
1,825
Slideshare-icon Views on SlideShare
1,821
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 ファイルの生成