Cubby Web アプリケーションのためのシ ンプルなフレームワーク BABA Yasuyuki
自己紹介 馬場保幸 ( ばば やすゆき ) 株式会社ヌーラボ (
本日のアジェンダ Cubby って何? Cubby を使うと幸せになるポイント Maven2 と連携した簡単なデモ
Cubby って何? Java で Web アプリケーションを開発するための シンプルなフレームワーク 現在のバージョンは ▫ 近日中の 1.0 リリースを目指して、 seasar.org の sandbox で開発中 Cubby = 小さな整理箱
Cubby って何?
アーキテクチャ サーブレットフィ ルタ アクションク ラス ( ビジネスロジ ックを実行 ) JSP Seasar2 HTTP リクエス ト HTTP レスポン ス 実行 リクエストされた URL か ら実行するアクションク ラスを生成、メソッドを 決定 フォワー ド カスタムタ グ
Cubby を作った理由 Struts の設定ファイルにうんざり きれいな URI のアプリケーションを作りたい 作りたかったから
Cubby を使うと幸せになれるポイント その1
HTML に近い JSP カスタムタグ Struts の場合 <html:optionsCollection property="choices" value="id" label="name"/>
HTML に近い JSP カスタムタグ Cubby の場合 <t:select name="typeId" items="${action.todoTypes}" labelProperty="name" valueProperty="id"/> HTML タグに近い構文なので、直感的
JSP カスタムタグの種類が少ない カスタムタグは 5 つです。 ▫t:form ▫t:input ▫t:select ▫t:textarea ▫t:token 種類が少ないので、覚えることも少ない
Cubby を使うと幸せになれるポイント その2
メタ情報の記述 Struts の場合 ▫ 設定ファイル struts-config.xml にまとめて記述 <form-bean name="todoForm” type="example.form.TodoForm" /> <action path="/todoEdit.do” type="ex.action.TodoEditAction“ name="todo">
メタ情報の記述 Cubby の場合 ▫ アノテーションを用いてアクションクラスのメソッドに記述 public class TodoAction extends Action { public ValidationRules editValidation = new DefaultValidationRules(“todo.") public void initialize() { add("userId", new RequiredValidator());... } errorPage = "/todo/edit.jsp") public ActionResult edit() {... return new Forward("/todo/confirm.jsp"); }
アノテーションの種類 アクションにアクセスするためのパス (URL) アクションが受け付ける HTTP メソッド (GET や POST な ど ) リクエストパラメータを指定するためのオブジェクト ( デ フォルトはアクション自身 ) バリデーションを行うオブジェクト ソースコード上に記述するため、ソースコードを見 るだけでどのような動作をするかが明確になる
Cubby を使うと幸せになれるポイント その3
hashimoto/ /
35
Cool URI ▫ ▫ 一意のリソースを表す URI ウェブサイトを構築する際には、きれいな URI を設計することが重要 なにせ気持ちがいい
mod_rewrite の場合 httpd.conf RewriteRule ^\/todo\/([0-9]+)? /todo.do?id=$1
Ruby on Rails の場合 config/routes.rb ActionController::Routing::Routes.draw do |map| map.connect '/todo/:id', :controller => "todo", :action=> "show" end
Cubby の場合 アノテーションを用いてアクションクラスのメソッドに記述してい く // public class TodoAction extends Action { public String public ActionResult show() { System.out.println(id); } // 正規表現も使えます }
Cubby を使うと幸せになれるポイント その 4
Mayaa との連携 HTML テンプレートエンジン Mayaa と連携すること もできる ▫login.html ユーザ ID: パスワード : ▫login.mayaa
Maven2 との連携 Maven2 Archetype ▫ プロジェクトのひな形を作成する仕組み ▫Struts の blank.war や Rails の rails コマンドのような もの ▫Cubby による実際に動作するプロジェクトが生成 される Cubby が依存するライブラリが設定された pom.xml 基本的なパッケージ構成のディレクトリ Hello World
Maven2 との連携 ここで、実際にプロジェクトを作成してみます 。 $> mvn archetype:create -DgroupId=( 作成するプロジェクトのグループ ID 例 :com.foo.bar) -DartifactId=( 作成するプロジェクトのアーティファクト ID 例 :barapp) -Dversion=( 作成するプロジェクトのバージョン 例 :1.0-SNAPSHOT) -DarchetypeGroupId=org.seasar.cubby -DarchetypeArtifactId=cubby-archetype -DremoteRepositories= $> mvn eclipse:eclipse $> mvn tomcat:run
まとめ
Cubby は シンプルで習得が容易です。 きれいな URI が得意です。 まずは、 1 度触ってみてください。
今後の予定 Maven2 との連携 ▫URI 一覧などのドキュメント出力 ▫Scaffold サンプルアプリケーションの充実 シンプルであり続けること
ありがとうございました ご意見、ご要望をお待ちしております。 ▫ user