REST 信者から見た
Ruby on Rails 2.0
      山本陽平
  YAMAMOTO Yohei
REST 信者から見た
Ruby on Rails 2.1
      山本陽平
  YAMAMOTO Yohei
REST 信者から見た
 Ruby and Rails
      山本陽平
  YAMAMOTO Yohei
自己紹介
               Who am I
• ソフトウェアエンジニア
 – Software Engineer
• XML 野郎
 – XML guy
• REST 信者
 – RESTian
• ルビー初心者
 – Javaか...
自慢
I’m very proud for…
Ruby スポン
サーな会社で
働いています

I’m working in Ruby
sponsor company
今日の話題
Today’s theme is…
REST と Ruby と
  Rails について
About REST and Ruby and Rails
まずは…
 First…
REST と Ruby について

  About REST and Ruby
REST と Ruby は仲良し

REST and Ruby are good friends
ruby-dev におけるRESTの議論

  REST discussion in ruby-dev
REST と Ruby は仲良し

REST and Ruby are good friends
REST と Rails も仲良し

REST and Ruby are also friends
REST と Rails は仲良し

REST and Rails are good friends
REST
Representational State Transfer
REST
• Web のアーキテクチャスタイル
 – Web Architectural style
• 制約の集合
 – Set of constrains
 – ULCODC$SS
抽象化レベル
     Abstraction Level
• Implementaion
  – Apache, Rails, Firefox, bot
• Architecture
  – User Agent, Server, HTTP,...
リソース指向アーキテクチャ


Resource Oriented Architecture
ROA の四つの構成要素
  Four features of the ROA
• (A) アドレス可能性
 – Addressability
• (S) ステートレス性
 – Statelessness
• (C) 接続性
 – Connec...
A > C > U >>>>>>>>>S

アドレス可能性>接続性>統一インターフェース>>>>>>>>>>ステートレス性

Addressability > Connectedness > A Uniform Interface>>>>>>>...
ROA の四つの構成要素
  Four features of the ROA
• (A) アドレス可能性
 – Addressability
• (S) ステートレス性
 – Statelessness
• (C) 接続性
 – Connec...
アドレス可能性
Addressability
アプリケーションがそのデータ
セットの重要な部分をリソースと
して公開する場合、そのアプリ
ケーションはアドレス可能である。

An application is
addressable if it exposes
the interestin...
リソースは URI を通じて提供される
ため、アドレス可能なアプリケーショ
ンは提供可能な情報ごとにURI を公
開する。

Since resources are exposed
through URIs, an addressable
ap...
リソース/URI 駆動開発
Resource/URI driven development
URI の設計
         ↓
     URI の実装
Design URI → Implement URI
URIの設計
URI design
Blog entries list resource
/entries
(GET/POST)

Blog entry resource
/entries/{entry_id}
(GET/PUT/DELETE)
URIの実装
URI implementation
map.resources :entries
シンプルだけど…
It’s simple, but…
Rails のルーティングは
素晴らしいが、コードの
構造に依存しがち

Routing of Rails is good, but
code structure dependent
URIは設計目標であって
  実装結果ではない
   URIs are design goal,
 not implementation result
Restlet
router.attach(“/entries”,
       EntryListResource.class);
router.attach(“/entries/{id}”,
       EntryResource.cla...
接続性
Connectedness
現在のページ == アプリケーション状態

 Current Page = Application State
ハイパーメディアを設計
== アプリケーションを設計

 Design hypermedia
 == design application
ハイパーメディアを設計
== リソースとリンクを設計

   Design hypermedia
== design resources and links
リンクの設計
 Link design
リンクの実装
Link implementation
url_for

link_to
シンプルだけど…
It’s simple, but…
リンクの意味を意識で
 きればもっといい
Semantics of a link is important
続きは WEB+DB
PRESS Vol. 45 で
まとめ
Conclusion
実際のところ Rails
は RESTful である
Actually, Rails is RESTful
アドレス可能性と
  接続性でよりよい設計を

               design by
        A better
addressability and connectedness
Rubykaigi2008: REST 信者から見た Ruby と Rails
Rubykaigi2008: REST 信者から見た Ruby と Rails
Rubykaigi2008: REST 信者から見た Ruby と Rails
Rubykaigi2008: REST 信者から見た Ruby と Rails
Rubykaigi2008: REST 信者から見た Ruby と Rails
Rubykaigi2008: REST 信者から見た Ruby と Rails
Rubykaigi2008: REST 信者から見た Ruby と Rails
Rubykaigi2008: REST 信者から見た Ruby と Rails
Rubykaigi2008: REST 信者から見た Ruby と Rails
Rubykaigi2008: REST 信者から見た Ruby と Rails
Upcoming SlideShare
Loading in...5
×

Rubykaigi2008: REST 信者から見た Ruby と Rails

6,029

Published on

Published in: Technology

Rubykaigi2008: REST 信者から見た Ruby と Rails

  1. 1. REST 信者から見た Ruby on Rails 2.0 山本陽平 YAMAMOTO Yohei
  2. 2. REST 信者から見た Ruby on Rails 2.1 山本陽平 YAMAMOTO Yohei
  3. 3. REST 信者から見た Ruby and Rails 山本陽平 YAMAMOTO Yohei
  4. 4. 自己紹介 Who am I • ソフトウェアエンジニア – Software Engineer • XML 野郎 – XML guy • REST 信者 – RESTian • ルビー初心者 – JavaからRubyへ – Ruby beginner – from Java to Ruby
  5. 5. 自慢 I’m very proud for…
  6. 6. Ruby スポン サーな会社で 働いています I’m working in Ruby sponsor company
  7. 7. 今日の話題 Today’s theme is…
  8. 8. REST と Ruby と Rails について About REST and Ruby and Rails
  9. 9. まずは… First…
  10. 10. REST と Ruby について About REST and Ruby
  11. 11. REST と Ruby は仲良し REST and Ruby are good friends
  12. 12. ruby-dev におけるRESTの議論 REST discussion in ruby-dev
  13. 13. REST と Ruby は仲良し REST and Ruby are good friends
  14. 14. REST と Rails も仲良し REST and Ruby are also friends
  15. 15. REST と Rails は仲良し REST and Rails are good friends
  16. 16. REST Representational State Transfer
  17. 17. REST • Web のアーキテクチャスタイル – Web Architectural style • 制約の集合 – Set of constrains – ULCODC$SS
  18. 18. 抽象化レベル Abstraction Level • Implementaion – Apache, Rails, Firefox, bot • Architecture – User Agent, Server, HTTP, URI, HTML • Architectural Style – Constrains, Styles
  19. 19. リソース指向アーキテクチャ Resource Oriented Architecture
  20. 20. ROA の四つの構成要素 Four features of the ROA • (A) アドレス可能性 – Addressability • (S) ステートレス性 – Statelessness • (C) 接続性 – Connectedness • (U) 統一インターフェース – A Uniform Interface
  21. 21. A > C > U >>>>>>>>>S アドレス可能性>接続性>統一インターフェース>>>>>>>>>>ステートレス性 Addressability > Connectedness > A Uniform Interface>>>>>>>>> Statelessness
  22. 22. ROA の四つの構成要素 Four features of the ROA • (A) アドレス可能性 – Addressability • (S) ステートレス性 – Statelessness • (C) 接続性 – Connectedness • (U) 統一インターフェース – A Uniform Interface
  23. 23. アドレス可能性 Addressability
  24. 24. アプリケーションがそのデータ セットの重要な部分をリソースと して公開する場合、そのアプリ ケーションはアドレス可能である。 An application is addressable if it exposes the interesting aspects of the data set as resources.
  25. 25. リソースは URI を通じて提供される ため、アドレス可能なアプリケーショ ンは提供可能な情報ごとにURI を公 開する。 Since resources are exposed through URIs, an addressable application exposes a URI for every piece of information it might conceivably serve.
  26. 26. リソース/URI 駆動開発 Resource/URI driven development
  27. 27. URI の設計 ↓ URI の実装 Design URI → Implement URI
  28. 28. URIの設計 URI design
  29. 29. Blog entries list resource /entries (GET/POST) Blog entry resource /entries/{entry_id} (GET/PUT/DELETE)
  30. 30. URIの実装 URI implementation
  31. 31. map.resources :entries
  32. 32. シンプルだけど… It’s simple, but…
  33. 33. Rails のルーティングは 素晴らしいが、コードの 構造に依存しがち Routing of Rails is good, but code structure dependent
  34. 34. URIは設計目標であって 実装結果ではない URIs are design goal, not implementation result
  35. 35. Restlet router.attach(“/entries”, EntryListResource.class); router.attach(“/entries/{id}”, EntryResource.class); Django urlpatterns = patterns( (r’^entries/$’, entry_list), (r’^entries/([¥w-]+)/$’, entry_detail), )
  36. 36. 接続性 Connectedness
  37. 37. 現在のページ == アプリケーション状態 Current Page = Application State
  38. 38. ハイパーメディアを設計 == アプリケーションを設計 Design hypermedia == design application
  39. 39. ハイパーメディアを設計 == リソースとリンクを設計 Design hypermedia == design resources and links
  40. 40. リンクの設計 Link design
  41. 41. リンクの実装 Link implementation
  42. 42. url_for link_to
  43. 43. シンプルだけど… It’s simple, but…
  44. 44. リンクの意味を意識で きればもっといい Semantics of a link is important
  45. 45. 続きは WEB+DB PRESS Vol. 45 で
  46. 46. まとめ Conclusion
  47. 47. 実際のところ Rails は RESTful である Actually, Rails is RESTful
  48. 48. アドレス可能性と 接続性でよりよい設計を design by A better addressability and connectedness
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×