狠狠撸

狠狠撸Share a Scribd company logo
Cubby で RESTful な Web アプリを 株式会社ヌーラボ 縣俊貴 Seasar Conference 2008 Autumn
自己紹介 縣俊貴 (id:agt) 株式会社ヌーラボ SI -  アジャイル開発のヌーラボ Web サービス プロジェクト管理ツール Backlog Seasar S2Pager/S2XML-RPC/ Cubby WEB+DB PRESS 連載:良いコードへの道 Seasar Conference 2008 Autumn
アジェンダ 私が Cubby を作った理由 Cubby の RESTful サポート アプリ作成のデモ 今後のロードマップ Seasar Conference 2008 Autumn
私が Cubby を 作った理由 Seasar Conference 2008 Autumn
2006 年 7 月 Seasar Conference 2008 Autumn
Web フレームワーク 戦国時代 Struts WebWork2 S2JSF Teeda Ruby on Rails etc… Seasar Conference 2008 Autumn
自分にとってぴったりの フレームワークがない! Seasar Conference 2008 Autumn
ぴったりな ものって? Seasar Conference 2008 Autumn
ぴったりなもの JSP 嫌われ者だけど、そんなにみんな嫌いなの? HTML テンプレートって、意外とつらくない? JSP2.0 JSTL/ ファンクション / シンプルタグ / タグファイル / クール URI 直感的に楽に使いたい 自由度は最大限に 設定ファイルレス ただし、わかりにくくなってはだめ Seasar Conference 2008 Autumn
では、 ぴったりなものを 作ろう! Seasar Conference 2008 Autumn
2006年8月 Cubby 開発開始 Seasar Conference 2008 Autumn
Seasar Conference 2008 Autumn 当初は社内の SI 案件をさくさくこなすために作成
Seasar Conference 2008 Autumn 今ではいろいろと おもしろいサービスに 使われはじめています。 http://tophatenar.com/ http://www.choistudy.jp/ http://hatenarmaps.com/
閑話休題 フレームワークやライブラリ作りは経験しておいて損はないと思います。 抽象化 パターン みんな俺フレームワークを作ればいいと思います。 1人1フレームワーク 似たフレームワークが乱立しても別にいいじゃない 失敗してもいいじゃない、人間だもの。 Seasar Conference 2008 Autumn
Cubby の RESTful サポート Seasar Conference 2008 Autumn
2 種類の REST API としての REST システム外部公開用の API GET/POST/PUT/DELETE による操作 AtomPP/XML/Json/XHTML などによるデータ構造 RESTful な Web アプリケーション Cool URI GET/POST HTML/XHTML によるデータ構造 Seasar Conference 2008 Autumn
http://twitter.com/ kis /statuses/ 471755892 Seasar Conference 2008 Autumn
RESTful な Web アプリケーションの嬉しさ 将来的にバックエンドのシステムが変わっても、 URI が変更されない 拡張子なし URI がリソースごとに階層化されていて整理されているので、気持ちいい。 /{ ユーザ名 }/{ タグ } パッケージ名などと同じ Seasar Conference 2008 Autumn
Cubby 以前 #httpd.conf RewriteRule ^\/users\/([0-9]+)? /user.do?userId=$1 mod_rewrite URLRewriteFilter <rule> <from>users/(.*)$</from> <to type=&quot;forward&quot;>user.do?useId=$1</to> </rule> Seasar Conference 2008 Autumn
Cubby 以前 URLRewriteFilter Struts など http://example.com/users/agt ?設定ファイルが2つの FW に分散 ?論理的な URI が2つあると、大変 Seasar Conference 2008 Autumn /user.do?userId=agt
Cubby では? Cubby http://example.com/users/agt ?設定はアクションクラスに一元化 ?処理の近くに設定があるのでわかりやすい @Path(“/users/{userId}”) Seasar Conference 2008 Autumn
@Path @Path(“todo”)  // TodoAction の場合省略可 public class TodoAction extends Action { // /todo/new  public ActionResult new() { … } // /todo/save @Path(”save&quot;) public ActionResult post() { … } } Seasar Conference 2008 Autumn
@Path (パステンプレート) @Path(“todo”)  // TodoAction の場合省略可 public class TodoAction extends Action { public String  id ; // /todo/{id} @Path(”{id}&quot;) public ActionResult index() { System.out.println(id); } } Seasar Conference 2008 Autumn
Cubby でエコ URI 貴重な URI をエコに利用する仕組み 正規表現 優先度 リクエストメソッド Submit されたボタンによる振り分け Seasar Conference 2008 Autumn
正規表現を使った 柔軟な URI 指定 @Path(”/todo/ {id} ”) -> [a-z][A-Z][0-9]+ 「 /todo/0fabd3f 」にマッチ @Path(”/todo/ {id,[0-9]+} ”) 「 /todo/10001 」にマッチ Path(”/icon/ {width,[0-9]+} x {height, [0-9]+} . {ext,png|jpg} ”) 「 /icon/100x200.png 」にマッチ Seasar Conference 2008 Autumn JSR-311 の仕様も だいたい同じ!
優先度 @Path(”/todo/ {id} ”) ( デフォルト値:        priority=Integer.MAX_VALUE) @Path(value=”/todo/ list ”, priority=0) /todo/ list のほうが優先される Seasar Conference 2008 Autumn
リクエストメソッド import static org.seasar.cubby.action.RequestMethod.*; @Accept(GET) public ActionResult index() { … } @Accept(POST) public ActionResult add() { … } @Accept(PUT) public ActionResult update() { … } @Accept(DELETE) public ActionResult delete() { … } Seasar Conference 2008 Autumn
URI マッピングの確認 コンソールログ 管理サーブレット アクションメソッドを登録します  [regex=^/todo/$,method=public org.seasar.cubby.action.ActionResult org.seasar.cubby.examples.todo.action.TodoListAction.index(),uriParameterNames=[],requestMethod=GET,onSubmit=null,priority=2147483647,auto=true] … Seasar Conference 2008 Autumn
Path to Entity RESTful の場合、パステンプレートの変数とエンティティの変換だらけ /agata/entries/123 name=‘agata’ の Account id=123 の Entry Conveter リクエストパラメータの変換機構 Seasar Conference 2008 Autumn
Converter の作成 Seasar Conference 2008 Autumn public AccountConverter extends AbstractConverter { public AccountDao accountDao; public Class<?> getObjectType() { return Account.class;  } public Object convertToObject(Object value, Class<?> objectType, ConvertionHelper helper) { if (value == null) { return null; } String name = String.class.cast(value); return accountDao.findByName(name); } public String convertToString(Object value, ConvertionHelper helper) { Account account = Account.class.cast(value); return account.getName(); } } 文字列 (agata) ↓ 変換処理 Entiy(Account) Entiy(Account) ↓ 変換処理 文字列 (agata)
Converter を使用した Action /agata/entries/123 Seasar Conference 2008 Autumn public EntryAction extends Action { @RequestParameter public Entry  entry ; @RequestParameter public Account  account ; @Path(“/ {account} /entries/ {entry} ”) public ActionResult index(){ … } } Converter で 自動変換!
その他 Cubby の特徴 設定ファイルレス Maven2 による雛形作成 直感的なカスタムタグ プログラムで書く Validation 続きはドキュメントで! Seasar Conference 2008 Autumn
デモ Seasar Conference 2008 Autumn
簡単な Wiki を つくってみます。 Seasar Conference 2008 Autumn
ページの構成 Seasar Conference 2008 Autumn ページ 表示 編集 保存処理 GET /pages/{page} POST /pages/{page} GET /pages/{page}/edit
1. プロジェクトの作成 Seasar Conference 2008 Autumn mvn archetype:generate  -DarchetypeCatalog=http://cubby.seasar.org  cd wiki mvn eclipse:eclipse
2. 各種設定 Seasar Conference 2008 Autumn ? WTP Server 登録 ? jdbc.dicon ? s2jdbc.dicon
3. 作成するファイル Seasar Conference 2008 Autumn 作成済み デモで作成
今後のロードマップ 2008 年 2 月  Ver1.0 基本機能提供 2008 年 8 月  Ver1.1 実践的機能の充実 2009 年  Ver2.0 他のコンテナ (Spring, Guice) 対応 Archetype の機能追加 プロジェクトの立ち上げをもっと便利に Scaffold Extenstion 今風アプリ作成のサポート Flash による進捗バー付きのファイルアップロードダイアログなど Seasar Conference 2008 Autumn
まとめ Cubby は RESTful な Web アプリケーション開発を助けるシンプルなフレームワークです。 クールな Web サービスから業務アプリまで。 まずは触ってみてください。 チュートリアルやサンプルから。 要望?フィードバックは ML まで。 Seasar Conference 2008 Autumn
ご清聴ありがとう ございました。 ご質問があればどうぞ。 CM : ヌーラボでは現在東京メンバーを募集中です。 詳しくは Web で! ヌーラボ Seasar Conference 2008 Autumn

More Related Content

Viewers also liked (20)

PPT
Section 1-2
chrismac47
?
PPT
B O D Y B O A R D F R I E N D S S H O W
davidebb85
?
PDF
Fluffy Puffy Cloud Pets App Engine Meetup
Bess Ho
?
PPT
ITU 04.03.08
Luckow
?
PDF
Mobile Marketing Platform v.4
Vagelis Antoniadis
?
KEY
Gmicsv 2012 oct
Bess Ho
?
PPT
Sticky gooey adhesive
tahiya
?
PPT
3.17.08 Combinations2
chrismac47
?
PDF
Some tips for your presentation
galongo
?
PPT
iPad for MN Realtors
Teresa Boardman
?
ZIP
The Chronicles of Web Standard III: The Voyage of the HTML5
Bess Ho
?
PPT
Dundee vineyards
Donnych Diaz
?
PPT
Names and Professions
Desh Kapoor
?
PPT
12 ways to use an i pad at an open house
Teresa Boardman
?
PDF
Case study touring
Marc Van Rymenant
?
PPT
компания TeamMotion
benial
?
PDF
Het open source paradigma ontleed
Fabrice Mous
?
PPT
Internetverzekeren 2009
Roger Schoenmakers
?
PPT
Limits At Infinity 12.14.07
chrismac47
?
PPT
UCM 4
zglazenburg
?
Section 1-2
chrismac47
?
B O D Y B O A R D F R I E N D S S H O W
davidebb85
?
Fluffy Puffy Cloud Pets App Engine Meetup
Bess Ho
?
ITU 04.03.08
Luckow
?
Mobile Marketing Platform v.4
Vagelis Antoniadis
?
Gmicsv 2012 oct
Bess Ho
?
Sticky gooey adhesive
tahiya
?
3.17.08 Combinations2
chrismac47
?
Some tips for your presentation
galongo
?
iPad for MN Realtors
Teresa Boardman
?
The Chronicles of Web Standard III: The Voyage of the HTML5
Bess Ho
?
Dundee vineyards
Donnych Diaz
?
Names and Professions
Desh Kapoor
?
12 ways to use an i pad at an open house
Teresa Boardman
?
Case study touring
Marc Van Rymenant
?
компания TeamMotion
benial
?
Het open source paradigma ontleed
Fabrice Mous
?
Internetverzekeren 2009
Roger Schoenmakers
?
Limits At Infinity 12.14.07
chrismac47
?

Similar to Cubby 2008-09-06 (20)

PDF
初めての Data api cms と?うて?しょう - 大阪夏の陣
Yuji Takayama
?
PDF
ソーシャルアプリ勉强会(第一回资料)配布用
Yatabe Terumasa
?
PDF
初めての Data api
Yuji Takayama
?
PPT
Cubby 2006-08-23
Agata Toshikata
?
PDF
Data apiて?実現 進化するwebの世界
Yuji Takayama
?
PDF
初めての Data API CMS と?うて?しょう - 仙台編 -
Yuji Takayama
?
PDF
厂别补蝉补谤プロジェクト彻底攻略
takezoe
?
PPT
厂迟谤耻迟蝉2を始めよう!
Shinpei Ohtani
?
PDF
PHP 2大 web フレームワークの徹底比較!
Shohei Okada
?
PDF
蝉肠补濒补+濒颈蹿迟で游ぼう
youku
?
PPT
丸山先生レクチャーシリーズ2007-2008
Yoichiro Tanaka
?
PPTX
エンタープライズ分野での実践础苍驳耻濒补谤闯厂
Ayumi Goto
?
PDF
ASP.NET シングル ページ アプリケーション (SPA) 詳説
Akira Inoue
?
PDF
データマイニング+奥贰叠勉强会资料第6回
Naoyuki Yamada
?
PDF
Let's build a simple app with .net 6 asp.net core web api, react, and elasti...
Shotaro Suzuki
?
PPT
Scala on Hadoop
Shinji Tanaka
?
PDF
Rx java x retrofit
Shun Nakahara
?
PDF
WordBench京都12月、WordCampUSからのWP REST APIな話
Hidetaka Okamoto
?
PDF
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
Hiroaki KOBAYASHI
?
PPTX
JavaScriptテンプレートエンジンで活かすData API
Hajime Fujimoto
?
初めての Data api cms と?うて?しょう - 大阪夏の陣
Yuji Takayama
?
ソーシャルアプリ勉强会(第一回资料)配布用
Yatabe Terumasa
?
初めての Data api
Yuji Takayama
?
Cubby 2006-08-23
Agata Toshikata
?
Data apiて?実現 進化するwebの世界
Yuji Takayama
?
初めての Data API CMS と?うて?しょう - 仙台編 -
Yuji Takayama
?
厂别补蝉补谤プロジェクト彻底攻略
takezoe
?
厂迟谤耻迟蝉2を始めよう!
Shinpei Ohtani
?
PHP 2大 web フレームワークの徹底比較!
Shohei Okada
?
蝉肠补濒补+濒颈蹿迟で游ぼう
youku
?
丸山先生レクチャーシリーズ2007-2008
Yoichiro Tanaka
?
エンタープライズ分野での実践础苍驳耻濒补谤闯厂
Ayumi Goto
?
ASP.NET シングル ページ アプリケーション (SPA) 詳説
Akira Inoue
?
データマイニング+奥贰叠勉强会资料第6回
Naoyuki Yamada
?
Let's build a simple app with .net 6 asp.net core web api, react, and elasti...
Shotaro Suzuki
?
Scala on Hadoop
Shinji Tanaka
?
Rx java x retrofit
Shun Nakahara
?
WordBench京都12月、WordCampUSからのWP REST APIな話
Hidetaka Okamoto
?
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
Hiroaki KOBAYASHI
?
JavaScriptテンプレートエンジンで活かすData API
Hajime Fujimoto
?
Ad

Recently uploaded (13)

PDF
渔船に搭载されている电子装备と渔法について冲痴搁颁海洋学研究会冲海の尝罢会発表资料
Yuuitirou528 default
?
PDF
第3回テ?シ?タル理学疗法学会のシンポジウム「デジタル理学疗法の组织活用:教育?管理?研究を繋ぐ新たな地平」での话题提供
Matsushita Laboratory
?
PDF
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
?
PDF
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
?
PDF
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
?
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2024_報告会資料_増野さ...
IGDA Japan SIG-Audio
?
PDF
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
?
PDF
AIツールを使った研究の効率化 Improving Research Efficiency with AI Tools
Tohoku University
?
PDF
第3回デジタル理学疗法研究会学术大会シンポジウム「デジタル理学疗法の组织活用:教育?管理?研究を繋ぐ新たな地平」の讲演资料.
Matsushita Laboratory
?
PDF
マルチAIエージェントの産業界での実践に向けたオープンソース活動の展望 - Japan Regional User Group (RUG) Meet-Up
Kosaku Kimura
?
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2025_報告会資料_渡辺さ...
IGDA Japan SIG-Audio
?
PDF
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
?
PDF
API認可を支えるKeycloakの基本と設計の考え方 ~ OAuth/OIDCによるAPI保護のベストプラクティス ~
Hitachi, Ltd. OSS Solution Center.
?
渔船に搭载されている电子装备と渔法について冲痴搁颁海洋学研究会冲海の尝罢会発表资料
Yuuitirou528 default
?
第3回テ?シ?タル理学疗法学会のシンポジウム「デジタル理学疗法の组织活用:教育?管理?研究を繋ぐ新たな地平」での话题提供
Matsushita Laboratory
?
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
?
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
?
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
?
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2024_報告会資料_増野さ...
IGDA Japan SIG-Audio
?
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
?
AIツールを使った研究の効率化 Improving Research Efficiency with AI Tools
Tohoku University
?
第3回デジタル理学疗法研究会学术大会シンポジウム「デジタル理学疗法の组织活用:教育?管理?研究を繋ぐ新たな地平」の讲演资料.
Matsushita Laboratory
?
マルチAIエージェントの産業界での実践に向けたオープンソース活動の展望 - Japan Regional User Group (RUG) Meet-Up
Kosaku Kimura
?
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2025_報告会資料_渡辺さ...
IGDA Japan SIG-Audio
?
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
?
API認可を支えるKeycloakの基本と設計の考え方 ~ OAuth/OIDCによるAPI保護のベストプラクティス ~
Hitachi, Ltd. OSS Solution Center.
?
Ad

Cubby 2008-09-06

  • 1. Cubby で RESTful な Web アプリを 株式会社ヌーラボ 縣俊貴 Seasar Conference 2008 Autumn
  • 2. 自己紹介 縣俊貴 (id:agt) 株式会社ヌーラボ SI - アジャイル開発のヌーラボ Web サービス プロジェクト管理ツール Backlog Seasar S2Pager/S2XML-RPC/ Cubby WEB+DB PRESS 連載:良いコードへの道 Seasar Conference 2008 Autumn
  • 3. アジェンダ 私が Cubby を作った理由 Cubby の RESTful サポート アプリ作成のデモ 今後のロードマップ Seasar Conference 2008 Autumn
  • 4. 私が Cubby を 作った理由 Seasar Conference 2008 Autumn
  • 5. 2006 年 7 月 Seasar Conference 2008 Autumn
  • 6. Web フレームワーク 戦国時代 Struts WebWork2 S2JSF Teeda Ruby on Rails etc… Seasar Conference 2008 Autumn
  • 8. ぴったりな ものって? Seasar Conference 2008 Autumn
  • 9. ぴったりなもの JSP 嫌われ者だけど、そんなにみんな嫌いなの? HTML テンプレートって、意外とつらくない? JSP2.0 JSTL/ ファンクション / シンプルタグ / タグファイル / クール URI 直感的に楽に使いたい 自由度は最大限に 設定ファイルレス ただし、わかりにくくなってはだめ Seasar Conference 2008 Autumn
  • 10. では、 ぴったりなものを 作ろう! Seasar Conference 2008 Autumn
  • 11. 2006年8月 Cubby 開発開始 Seasar Conference 2008 Autumn
  • 12. Seasar Conference 2008 Autumn 当初は社内の SI 案件をさくさくこなすために作成
  • 13. Seasar Conference 2008 Autumn 今ではいろいろと おもしろいサービスに 使われはじめています。 http://tophatenar.com/ http://www.choistudy.jp/ http://hatenarmaps.com/
  • 14. 閑話休題 フレームワークやライブラリ作りは経験しておいて損はないと思います。 抽象化 パターン みんな俺フレームワークを作ればいいと思います。 1人1フレームワーク 似たフレームワークが乱立しても別にいいじゃない 失敗してもいいじゃない、人間だもの。 Seasar Conference 2008 Autumn
  • 15. Cubby の RESTful サポート Seasar Conference 2008 Autumn
  • 16. 2 種類の REST API としての REST システム外部公開用の API GET/POST/PUT/DELETE による操作 AtomPP/XML/Json/XHTML などによるデータ構造 RESTful な Web アプリケーション Cool URI GET/POST HTML/XHTML によるデータ構造 Seasar Conference 2008 Autumn
  • 17. http://twitter.com/ kis /statuses/ 471755892 Seasar Conference 2008 Autumn
  • 18. RESTful な Web アプリケーションの嬉しさ 将来的にバックエンドのシステムが変わっても、 URI が変更されない 拡張子なし URI がリソースごとに階層化されていて整理されているので、気持ちいい。 /{ ユーザ名 }/{ タグ } パッケージ名などと同じ Seasar Conference 2008 Autumn
  • 19. Cubby 以前 #httpd.conf RewriteRule ^\/users\/([0-9]+)? /user.do?userId=$1 mod_rewrite URLRewriteFilter <rule> <from>users/(.*)$</from> <to type=&quot;forward&quot;>user.do?useId=$1</to> </rule> Seasar Conference 2008 Autumn
  • 20. Cubby 以前 URLRewriteFilter Struts など http://example.com/users/agt ?設定ファイルが2つの FW に分散 ?論理的な URI が2つあると、大変 Seasar Conference 2008 Autumn /user.do?userId=agt
  • 21. Cubby では? Cubby http://example.com/users/agt ?設定はアクションクラスに一元化 ?処理の近くに設定があるのでわかりやすい @Path(“/users/{userId}”) Seasar Conference 2008 Autumn
  • 22. @Path @Path(“todo”) // TodoAction の場合省略可 public class TodoAction extends Action { // /todo/new public ActionResult new() { … } // /todo/save @Path(”save&quot;) public ActionResult post() { … } } Seasar Conference 2008 Autumn
  • 23. @Path (パステンプレート) @Path(“todo”) // TodoAction の場合省略可 public class TodoAction extends Action { public String id ; // /todo/{id} @Path(”{id}&quot;) public ActionResult index() { System.out.println(id); } } Seasar Conference 2008 Autumn
  • 24. Cubby でエコ URI 貴重な URI をエコに利用する仕組み 正規表現 優先度 リクエストメソッド Submit されたボタンによる振り分け Seasar Conference 2008 Autumn
  • 25. 正規表現を使った 柔軟な URI 指定 @Path(”/todo/ {id} ”) -> [a-z][A-Z][0-9]+ 「 /todo/0fabd3f 」にマッチ @Path(”/todo/ {id,[0-9]+} ”) 「 /todo/10001 」にマッチ Path(”/icon/ {width,[0-9]+} x {height, [0-9]+} . {ext,png|jpg} ”) 「 /icon/100x200.png 」にマッチ Seasar Conference 2008 Autumn JSR-311 の仕様も だいたい同じ!
  • 26. 優先度 @Path(”/todo/ {id} ”) ( デフォルト値:       priority=Integer.MAX_VALUE) @Path(value=”/todo/ list ”, priority=0) /todo/ list のほうが優先される Seasar Conference 2008 Autumn
  • 27. リクエストメソッド import static org.seasar.cubby.action.RequestMethod.*; @Accept(GET) public ActionResult index() { … } @Accept(POST) public ActionResult add() { … } @Accept(PUT) public ActionResult update() { … } @Accept(DELETE) public ActionResult delete() { … } Seasar Conference 2008 Autumn
  • 28. URI マッピングの確認 コンソールログ 管理サーブレット アクションメソッドを登録します [regex=^/todo/$,method=public org.seasar.cubby.action.ActionResult org.seasar.cubby.examples.todo.action.TodoListAction.index(),uriParameterNames=[],requestMethod=GET,onSubmit=null,priority=2147483647,auto=true] … Seasar Conference 2008 Autumn
  • 29. Path to Entity RESTful の場合、パステンプレートの変数とエンティティの変換だらけ /agata/entries/123 name=‘agata’ の Account id=123 の Entry Conveter リクエストパラメータの変換機構 Seasar Conference 2008 Autumn
  • 30. Converter の作成 Seasar Conference 2008 Autumn public AccountConverter extends AbstractConverter { public AccountDao accountDao; public Class<?> getObjectType() { return Account.class; } public Object convertToObject(Object value, Class<?> objectType, ConvertionHelper helper) { if (value == null) { return null; } String name = String.class.cast(value); return accountDao.findByName(name); } public String convertToString(Object value, ConvertionHelper helper) { Account account = Account.class.cast(value); return account.getName(); } } 文字列 (agata) ↓ 変換処理 Entiy(Account) Entiy(Account) ↓ 変換処理 文字列 (agata)
  • 31. Converter を使用した Action /agata/entries/123 Seasar Conference 2008 Autumn public EntryAction extends Action { @RequestParameter public Entry entry ; @RequestParameter public Account account ; @Path(“/ {account} /entries/ {entry} ”) public ActionResult index(){ … } } Converter で 自動変換!
  • 32. その他 Cubby の特徴 設定ファイルレス Maven2 による雛形作成 直感的なカスタムタグ プログラムで書く Validation 続きはドキュメントで! Seasar Conference 2008 Autumn
  • 34. 簡単な Wiki を つくってみます。 Seasar Conference 2008 Autumn
  • 35. ページの構成 Seasar Conference 2008 Autumn ページ 表示 編集 保存処理 GET /pages/{page} POST /pages/{page} GET /pages/{page}/edit
  • 36. 1. プロジェクトの作成 Seasar Conference 2008 Autumn mvn archetype:generate -DarchetypeCatalog=http://cubby.seasar.org cd wiki mvn eclipse:eclipse
  • 37. 2. 各種設定 Seasar Conference 2008 Autumn ? WTP Server 登録 ? jdbc.dicon ? s2jdbc.dicon
  • 38. 3. 作成するファイル Seasar Conference 2008 Autumn 作成済み デモで作成
  • 39. 今後のロードマップ 2008 年 2 月 Ver1.0 基本機能提供 2008 年 8 月 Ver1.1 実践的機能の充実 2009 年 Ver2.0 他のコンテナ (Spring, Guice) 対応 Archetype の機能追加 プロジェクトの立ち上げをもっと便利に Scaffold Extenstion 今風アプリ作成のサポート Flash による進捗バー付きのファイルアップロードダイアログなど Seasar Conference 2008 Autumn
  • 40. まとめ Cubby は RESTful な Web アプリケーション開発を助けるシンプルなフレームワークです。 クールな Web サービスから業務アプリまで。 まずは触ってみてください。 チュートリアルやサンプルから。 要望?フィードバックは ML まで。 Seasar Conference 2008 Autumn
  • 41. ご清聴ありがとう ございました。 ご質問があればどうぞ。 CM : ヌーラボでは現在東京メンバーを募集中です。 詳しくは Web で! ヌーラボ Seasar Conference 2008 Autumn