rails.20110405

Post on 19-Jan-2015

3.219 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

第21回あしたのオープンソース研究所 Ruby on Rails 座談会資料

TRANSCRIPT

Ruby on Rails とは何か

Ruby on Rails とは �

�  オープンソースのWebアプリケーションフレームワーク �  RoRまたは単にRailsと呼ばれる。 �  Rubyで書かれている。 �  MVCアーキテクチャに基づいて構築されている。

�  Railsの特徴 「実アプリケーションの開発を他のフレームワークより少ないコードで簡単に開発できるよう考慮し設計されている。」Wikipedia

Railsの歴史

�  David Heinemeier Hanssonが開発 プロジェクト管理ツール“basecamp”の開発に用いられた知見やコードを抽出し、一般化することにより作成された。

�  2004年7月 最初のバージョン公開 �  2005年12月13日 バージョン1.0リリース �  2007年12月7日 バージョン2.0リリース �  2010年8月29日 バージョン3.0リリース �  最新版は2011.2.27リリースのバージョン3.0.5

Railsの実用例

他多数⇛ http://rubyonrails.org/applications

Rails の特徴

「Rails は Webの新しいデファクトスタンダードを

追いかけるのではない。 むしろそれを定義する。」

『RailsによるアジャイルWebアプリケーション開発第2版』p.2

�  Ajax �  REST

Rails の哲学

DRY (Don’t Repeat Yourself) 同じことを繰り返さない

�  システムのあらゆるピースは1箇所にのみ記述される。

CoC (Convention over Configuration) 設定より規約

�  記述すべき箇所はMVCアーキテクチャの規約が提案してくれる。

RailsのMVCアーキテクチャ �  Model

「データベース駆動のMVC WebアプリケーションではModelはRDBMSのテーブルを表すクラスを意味する。 RailsではActive Recordを通じてModelクラスを扱う。通常プログラマはActiveRecord::Baseクラスのサブクラスを作る必要がある。そうすることでRDBMSのどのテーブルを使うべきか、どういったカラムを持つべきかを自動的に決定してくれる。」

�  View 「MVCではViewは表示のためのロジックであり、コントローラクラスからのデータをどのように表示するかを規定している。 WebアプリケーションではHTML内に若干のコードを埋め込むことで実現される。」

�  Controller 「MVCではControllerはRailsのAction Packに含まれるアプリケーションコントローラクラスによって扱われる。 WebベースMVCアプリケーションではWebブラウザを操作するユーザによりコントローラのメソッドが起動される。」

Wikipediaより引用

Active Record

�  Active Record = Railsが提供するORM層 「クラス定義において、データベースから読み取るべき属性名等を指定する必要はない。ActiveRecordはRDBMSの表定義から自動的にその情報を取得する。従ってプログラムとRDBMSの両方にそれを定義するというような冗長な作業を行う必要はない。」

Wikipedia 2011.4.4より引用

�  ORM(Object-Relational Mapping) �  データベーステーブルをクラスにマッピング

Action Pack

�  Action Pack = Action Controller + Action View �  Action Pack はRailsアプリケーションの心臓部 �  この2つのモジュールで、受け取ったリクエストを処理し、レスポンスを生成して返す。

Action Controller

Action View

�  Helper

�  レイアウト

�  コンポーネント

RESTful なwebサービスとは何か

REST(Representational State Transfer)の定義

�  RESTは「ウェブのような分散ハイパーメディアシステムのためのソフトウェアアーキテクチャのスタイルのひとつ」(出典Wikipedia)

�  2000年にHTTPプロトコル規格の主要著者の一人であるRoy Fieldingがウェブについて書いた博士論文で初めて使った。

�  RESTは初めはアーキテクチャの原則と制約の集まりを指していたが、次第に、XMLやHTTPを使った簡易なウェブベースのインターフェイスのうち、WebサービスのSOAPプロトコルのような MEP(Message Exchange Pattern; SOAPノード相互のメッセージ交換のパターンを確立するための雛型)ベースの特別な抽象化をしないもののことを、大まかに意味する用語として使われるようになった。(出典Wikipedia)

RESTという用語の使われ方

RESTは次に述べるように2つのやや異なる意味で使われている。

�  FieldingのRESTアーキテクチャスタイルの原則に合わせたWebサービスシステム。

�  RPCスタイルに合わせた簡易な XML+HTTP インターフェイスを採用したシステム(SOAPは使わない) 。

出典:Wikipedia

RESTful なwebサービスの特徴

�  シンプルな動詞セットで多様な名詞を操作する

�  動詞=HTTPメソッド �  GET �  PUT �  POST �  DELETE

�  名詞=リソース �  URLによってリソースに名前を付ける

RESTful なwebサービスの意味

�  Webを「分散プログラミングのプラットフォーム」と解釈する。

�  Webを構成する要素はすべて「リソース」だと解釈する。

�  RESTは新しいリソースをWebというプラットフォームにシームレスに統合するための方法or視点or考え方である。

COMやCORBAとどこが違うか

�  「Webサービス」はCOMやCORBAでも実装できるが…

�  それらは「Webを成功させるためのすべての機能を一から作り直すか、それらを無視するかである。」『RESTful Webサービス』p.ix

�  「そのままのHTTPで問題なく処理できるジョブに対し、プログラマや企業が大Webサービスを導入することはしょっちゅうある。これにより、HTTPは(中略)膨大なXMLペイロードのトランスポートプロトコルになり下がってしまう。結果として得られるサービスは極端に複雑で、デバッグが不可能で、クライアント側にサーバー側とまったく同じ構成がなければうまくいかない。」同書p.xii

SOAP vs. REST

�  SOAPとRESTに関する論争…2000~2003

�  2002年 Amazon Webサービス登場 �  SOAP形式とREST形式の両方でサービスを提供 �  利用比率は SOAP形式:REST形式=20:80 �  これでSOAP対RESTの論争に火がついた

�  2004年以降のWeb2.0でGoogleやAmazonがRESTを選択 �  RESTのシンプルさがマッシュアップに有利だった �  SOAPは標準化に手間取り実装が先行>相互運用性欠如 �  結論としてRESTの勝利に終わる

出展:山本陽平『Webを支える技術』pp.22-24

RESTfulアプローチの特徴1

�  ネットワーク設計者にとっての利点「いつどこでリクエストに対するレスポンスをキャッシュできるかネットワークを設計した人にわかるのが、RESTfulなアプローチの特徴です。RESTfulなアプローチでは、負荷をネットワークに分散したり、遅延を軽減しながらパフォーマンスや障害回復力を向上させたりすることができます。」 『RailsによるアジャイルWebアプリケーション開発第2版』p.378

RESTfulアプローチの特徴2

�  アプリケーション開発者にとっての利点「RESTによってもたらされる制約によって、アプリケーションが書きやすくなり、保守も容易になります。RESTfulなアプリケーションでは、リモートでアクセスできるサービスの実装に気をもむ必要はありません。その代わり、リソースセットに対する標準の(シンプルな)インタフェースが用意されています。」 『RailsによるアジャイルWebアプリケーション開発第2版』p.379

公開されたRESTfulアプリケーション

�  Amazon.com …デベロッパーインターフェイスをRESTバージョンとSOAPバージョンの両方で提供(RESTバージョンがトラフィックの大部分を占める)

�  eBay…REST デベロッパーインターフェイスを提供

�  Yahoo!…REST デベロッパーインターフェイスを提供

�  Zope のオブジェクト出版システム

�  他多数  

出典:Wikipedia

Rails以外のREST向けフレームワーク

�  Restlet(Java) RESTfulアプリ構築のための軽量(Lightweight)Javaフレームワーク

�  Django(Python) データベース主体の複雑なWebサイトを簡単に構築するためのMVCベースのフレームワーク

�  BEAR(PHP) リソース指向、ページ指向のPHP5専用イベント駆動型DI Webアプリケーションフレームワーク

Rails 3 の紹介

Rails3 の新機能

�  Action Dispatch

�  Bundler & Action Mailer

�  Active Relation & Active Model

�  Cross-site scripting & Unobtrusive JavaScript

�  New Action Controller

Dive into Rails 3

Action Dispatch

�  Action Dispatch contains a new syntax for routing which is even more concise and readable.

Bundler & Action Mailer

�  Rails 3 ships with Bundler, a Ruby library that makes Dependency Management a painless process.

Active Relation & Active Model

�  Active Relation gives you a more powerful syntax for pulling data into your application. We'll learn about the new syntax and discover how to leverage Active Model to enhance our plain old Ruby objects.

Cross-site scripting & Unobtrusive JavaScript �  Cross-site scripting (XSS) protection has been improved

in Rails 3. Html 5 standards have also been adopted to encourage unobtrusive javascript and allow for seamless integration of any Javascript Framework.

New Action Controller

�  The Action Controller stack has been completely overhauled to allow for increased modularity and code reuse. We'll learn about Abstract Controller and the new respond_to syntax to help simplify RESTful controllers.

簡単なデモ

Railsのインストール

�  Ruby �  Rails用の推奨バージョン 1.8.7 or 1.9.2 �  Mac OS X 10.5 以降はデベロッパーツールに含まれている

�  RubyGems �  Rubyのパッケージマネージャ

�  Rails �  gem install rails

Railsのアップデート

�  Mac OS X では出荷時から Ruby と Rails がインストール済みだがバージョンが旧いので Rails と RubyGems を更新 �  sudo gem update --system �  sudo gem install rails

�  これだけで必要なパッケージ類をfetchしてインストール �  gem list …インストール済みパッケージを一覧表示 �  gem server �  http://localhost:8088 …ブラウザでパッケージを一覧表示

サンプルアプリケーションの作成

サンプルアプリケーション名 expenses

�  rails new expenses

�  cd expenses

�  rails server

�  http://localhost:3000

ディレクトリ構成

Hello, Rails!

サンプルアプリケーション名 Hello, World!

�  rails generate controller Say

�  cd expenses

�  rails server

�  http://localhost:3000

処理の基本的な流れ

1.  ユーザがアプリケーションを呼び出す。

2.  指定したURLがRailsによって解析される。

3.  URLパスの次に指定されたアクション名

4.  結果を表示するためのテンプレートを検索する。

5.  ERbを使用してこのテンプレートを処理する。

6.  結果がブラウザに返されてリクエストの処理が完了する。

Manifesto for Agile Software Development

We are uncovering better ways of developing software by doing it and helping others do it.

Through this work we have come to value:

�  Individuals and interactions over processes and tools

�  Working software over comprehensive documentation

�  Customer collaboration over contract negotiation

�  Responding to change over following a plan

That is, while there is value in the items on the right, we value the items on the left more.

http://agilemanifesto.org/

アジャイルソフトウェア開発宣言

私たちは、ソフトウェア開発の実践あるいは実践を 手助けをする活動を通じて、よりよい開発方法を

見つけだそうとしている。この活動を通して、私たちは 以下の価値に至った。

�  プロセスやツールよりも個人と対話を、

�  包括的なドキュメントよりも動くソフトウェアを、

�  契約交渉よりも顧客との協調を、

�  計画に従うことよりも変化への対応を、

価値とする。すなわち、左記のことがらに価値があることを 認めながらも、私たちは右記のことがらにより価値をおく。

出典 http://agilemanifesto.org/iso/ja/

top related