CubbyでRESTfulなWebアプリを

Slides:



Advertisements
Similar presentations
ECLフレームワー ク 近畿大学 理工学部 情報学 科 間野 哲 弥.
Advertisements

テストについて 近畿大学大学院 田中大介 資料:
Ruby on Rails (RoR) 講習会 近畿大学大学院 田中大介. 本日の目標 Web アプリケーションを作ろう!
Struts VS SAStruts ・ STRUTS と SAStruts を比較します。. Struts のメリット1 STRUTS はディファクトスタンダード。 ↓ プログラマがたくさんいる。 ライブラリ、ツールがたくさんある。 ビジネス案件が豊富。 書籍などの情報元が豊富。
Cubby Web アプリケーションのためのシ ンプルなフレームワーク BABA Yasuyuki.
Genius Framework について 吉津 卓保( S2 ファクトリー株式会社). 自己紹介.
Web アプリをユーザー毎に カスタマイズ可能にする AOP フレームワーク
Apache Camel Data Format Component Apache Camel
オープンソースCMS「ZOMEKI」を利用した 業務システムの開発手法
本気で導入するOpenOffice.org 3つのポイント
2004年度 サマースクール in 稚内 JSFによるWebアプリケーション開発
JPAを利用した RESTful Webサービスの開発
2006年11月15日 植田龍男 Webサービス II (第8回) 年11月15日 植田龍男.
2006年11月22日 植田龍男 Webサービス II (第9回) 年11月22日 植田龍男.
CakePHPを業務に導入する Shin x blog 新原 雅司.
Applet 岡部 祐典 鈴木 敬幸.
Flash 書き換え PHP extension “SWF Editor”
Win32APIとMFC H107102 古田雅基 H107048 佐藤一樹 H107126 山下洋平.
Apache Camel Data Format Component Apache Camel
Struts1.xの脆弱性(CVE ) に対するSDEの対処:wrapタイプ (パッチのご提供)
talend活用事例 ・ナビゲータグラフのカスタマイズにおける事例 ・CSVダウンロードでのカスタマイズ事例
6-2 データベース 1.SQLite SQLを単純化した SQLite を使ってデータベースを操作 表「fruit」
WebサービスII (第10回) 2007年11月28日 植田龍男.
rails under “production”
コンポーネントの再利用に必要な情報 えムナウ (児玉宏之)
Mavenによる プロジェクト管理 近畿大学理工学部 情報学科3年  小野実.
コンポーネントの再利用に必要な情報 えムナウ (児玉宏之)
JSFによるWebアプリケーション開発 第11回
続 Entity Framework 入門 SQLWorld #8 サヴロウ.
Apache Camel Data Format Component Apache Camel
JavaServlet&JSP入門 01K0018 中村太一.
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
稚内北星学園大学 情報メディア学部 助教授 安藤 友晴
PHP Framework Update symfony 編 株式会社ディノ 月宮紀柳.
共同ローカリゼーション フレームワーク 井上 謙次.
はじめてのASP.NET 楽しいアプリ制作の会 #1 TWorks.
WebサービスII (第8回) 2007年11月14日 植田龍男.
Day3 Day4 Day3 Day4.
JSPの作成 J2EE II 第3回 2005年4月10日.
データ構造と アルゴリズム 第四回 知能情報学部 新田直也.
プログラミング演習3 第2回 GUIの復習.
技術参照モデルとシステム要件定義 に関する学習システム
2004年度 サマースクール in 稚内 JavaによるWebアプリケーション入門
2003年度 データベース論 安藤 友晴.
~手続き指向からオブジェクト指向へ[Ⅱ]~
第12回 2007年7月13日 応用Java (Java/XML).
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
第11回 2007年7月6日 応用Java (Java/XML).
理学部 情報科学科 指導教官 千葉 滋 助教授 学籍番号 03_03686 内河 綾
2006年度 東京サテライト校 エンタープライズ・アプリケーション II
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
プログラミング演習3 第2回 GUIの復習.
Jakarta Struts (2) ソフトウェア特論 第11回.
Javaによる Webアプリケーション入門 第2回
7.4 intanceof 演算子 7.5~7.9パッケージ 2003/11/28 紺野憲一
Javaによる Webアプリケーション入門 第11回
Garoon on cybozu.com 2014年9月版 新機能 Copyright© 2014 Cybozu.
一歩進んだ Views の使い方 スタジオ・ウミ 山中.
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
ASP.NET 2.0による Webサービスの構築 2008年10月18日 こくぶんまさひろ.
WebアプリケーションとTomcat ― これまでの復習とこれからの予習 ―
JSPの基本 データベース論 第2回.
Jakarta Struts (1) ソフトウェア特論 第10回.
稚内北星学園大学 情報メディア学部 専任講師 安藤 友晴
JSPの基本 J2EE I (データベース論) 第8回 /
JSFによるWebアプリケーション開発 第5回
ASP.NET 2.0による Webサービスの構築 2008年10月18日 こくぶんまさひろ.
How To WPF アプリケーション Part4 By 中博俊.
:: の扱い 長谷川啓.
How To WPF アプリケーション Part3 By 中博俊.
Presentation transcript:

CubbyでRESTfulなWebアプリを 株式会社ヌーラボ 縣俊貴 Seasar Conference 2008 Autumn

Seasar Conference 2008 Autumn 自己紹介 縣俊貴(id:agt) 株式会社ヌーラボ SI - アジャイル開発のヌーラボ Webサービス プロジェクト管理ツールBacklog Seasar S2Pager/S2XML-RPC/Cubby WEB+DB PRESS 連載:良いコードへの道 Seasar Conference 2008 Autumn

Seasar Conference 2008 Autumn アジェンダ 私がCubbyを作った理由 CubbyのRESTfulサポート アプリ作成のデモ 今後のロードマップ Seasar Conference 2008 Autumn

Seasar Conference 2008 Autumn 私がCubbyを 作った理由 Seasar Conference 2008 Autumn

Seasar Conference 2008 Autumn 2006年7月 Seasar Conference 2008 Autumn

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 ぴったりな ものって? Seasar Conference 2008 Autumn

Seasar Conference 2008 Autumn ぴったりなもの JSP 嫌われ者だけど、そんなにみんな嫌いなの? HTMLテンプレートって、意外とつらくない? JSP2.0 JSTL/ファンクション/シンプルタグ/タグファイル/ クールURI 直感的に楽に使いたい 自由度は最大限に 設定ファイルレス ただし、わかりにくくなってはだめ Seasar Conference 2008 Autumn

Seasar Conference 2008 Autumn では、 ぴったりなものを 作ろう! Seasar Conference 2008 Autumn

Seasar Conference 2008 Autumn 2006年8月 Cubby開発開始 Seasar Conference 2008 Autumn

Seasar Conference 2008 Autumn 当初は社内の SI案件をさくさくこなすために作成 Seasar Conference 2008 Autumn

Seasar Conference 2008 Autumn 今ではいろいろと おもしろいサービスに 使われはじめています。 http://www.choistudy.jp/ http://tophatenar.com/ http://hatenarmaps.com/ Seasar Conference 2008 Autumn

Seasar Conference 2008 Autumn 閑話休題 フレームワークやライブラリ作りは経験しておいて損はないと思います。 抽象化 パターン みんな俺フレームワークを作ればいいと思います。 1人1フレームワーク 似たフレームワークが乱立しても別にいいじゃない 失敗してもいいじゃない、人間だもの。 7分 Seasar Conference 2008 Autumn

Seasar Conference 2008 Autumn Cubbyの RESTfulサポート Seasar Conference 2008 Autumn

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

Seasar Conference 2008 Autumn http://twitter.com/kis/statuses/471755892 Seasar Conference 2008 Autumn

RESTfulなWebアプリケーションの嬉しさ 将来的にバックエンドのシステムが変わっても、URIが変更されない 拡張子なし URIがリソースごとに階層化されていて整理されているので、気持ちいい。 /{ユーザ名}/{タグ} パッケージ名などと同じ Seasar Conference 2008 Autumn

Seasar Conference 2008 Autumn Cubby以前 mod_rewrite URLRewriteFilter #httpd.conf RewriteRule ^\/users\/([0-9]+)? /user.do?userId=$1 <rule> <from>users/(.*)$</from> <to type="forward">user.do?useId=$1</to> </rule> Seasar Conference 2008 Autumn

Seasar Conference 2008 Autumn Cubby以前 http://example.com/users/agt URLRewriteFilter Strutsなど /user.do?userId=agt ・設定ファイルが2つのFWに分散 ・論理的なURIが2つあると、大変 Seasar Conference 2008 Autumn

Seasar Conference 2008 Autumn Cubbyでは? http://example.com/users/agt @Path(“/users/{userId}”) Cubby ・設定はアクションクラスに一元化 ・処理の近くに設定があるのでわかりやすい Seasar Conference 2008 Autumn

Seasar Conference 2008 Autumn @Path @Path(“todo”) // TodoActionの場合省略可 public class TodoAction extends Action { // /todo/new public ActionResult new() { … } // /todo/save @Path(”save") public ActionResult post() { … } } Seasar Conference 2008 Autumn

Seasar Conference 2008 Autumn @Path(パステンプレート) @Path(“todo”) // TodoActionの場合省略可 public class TodoAction extends Action { public String id; // /todo/{id} @Path(”{id}") public ActionResult index() { System.out.println(id); } Seasar Conference 2008 Autumn

Seasar Conference 2008 Autumn CubbyでエコURI 貴重なURIをエコに利用する仕組み 正規表現 優先度 リクエストメソッド Submitされたボタンによる振り分け Seasar Conference 2008 Autumn

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」にマッチ JSR-311の仕様も だいたい同じ! Seasar Conference 2008 Autumn

Seasar Conference 2008 Autumn 優先度 @Path(”/todo/{id}”) (デフォルト値: priority=Integer.MAX_VALUE) @Path(value=”/todo/list”, priority=0) /todo/listのほうが優先される Seasar Conference 2008 Autumn

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

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

Seasar Conference 2008 Autumn Path to Entity RESTfulの場合、パステンプレートの変数とエンティティの変換だらけ /agata/entries/123 name=‘agata’のAccount id=123のEntry Conveter リクエストパラメータの変換機構 Seasar Conference 2008 Autumn

Seasar Conference 2008 Autumn Converterの作成 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) Seasar Conference 2008 Autumn

Converterを使用したAction /agata/entries/123 public EntryAction extends Action { @RequestParameter public Entry entry; public Account account; @Path(“/{account}/entries/{entry}”) public ActionResult index(){ … } } Converterで 自動変換! Seasar Conference 2008 Autumn

Seasar Conference 2008 Autumn その他Cubbyの特徴 設定ファイルレス Maven2による雛形作成 直感的なカスタムタグ プログラムで書くValidation 続きはドキュメントで! Seasar Conference 2008 Autumn

Seasar Conference 2008 Autumn デモ Seasar Conference 2008 Autumn

Seasar Conference 2008 Autumn 簡単なWikiを つくってみます。 Seasar Conference 2008 Autumn

Seasar Conference 2008 Autumn ページの構成 GET /pages/{page} ページ 表示 編集 GET /pages/{page}/edit 保存処理 POST /pages/{page} Seasar Conference 2008 Autumn

Seasar Conference 2008 Autumn 1.プロジェクトの作成 mvn archetype:generate -DarchetypeCatalog=http://cubby.seasar.org cd wiki mvn eclipse:eclipse Seasar Conference 2008 Autumn

Seasar Conference 2008 Autumn 2.各種設定 ・WTP Server登録 ・jdbc.dicon ・s2jdbc.dicon Seasar Conference 2008 Autumn

Seasar Conference 2008 Autumn 3.作成するファイル ・wiki.action.PageAction ・wiki.converter.PageConverter ・wiki.entity.Page ・wiki.service.WikiService ・JSP - index.jsp - edit.jsp 作成済み デモで作成 Seasar Conference 2008 Autumn

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

Seasar Conference 2008 Autumn まとめ CubbyはRESTfulなWebアプリケーション開発を助けるシンプルなフレームワークです。 クールなWebサービスから業務アプリまで。 まずは触ってみてください。 チュートリアルやサンプルから。 要望・フィードバックはMLまで。 Seasar Conference 2008 Autumn

ご清聴ありがとう ございました。 ご質問があればどうぞ。 CM: ヌーラボでは現在東京メンバーを募集中です。 詳しくはWebで! ヌーラボ Seasar Conference 2008 Autumn