S1 - Seasarイベントサイト

Seasar Conference
2006 Spring
JSFの波に乗れ!
~TeedaではじめるJSF
2006.05.14
Teedaプロジェクトリーダ
大谷 晋平
© The Seasar Project and the others 2006. all rights reserved.
1
自己紹介
•
•
•
•
名前:大谷 晋平
ハンドルネーム:shot
ブログ:http://d.hatena.ne.jp/shot6/
某社システムエンジニア
– オープンソースとは無縁の生活・・・・
– Seasarに出会うまでは。
• メール:[email protected]
Seasar Conference
2006 Spring
© The Seasar Project and the others 2006. all rights reserved.
2
質問たーいむ
• Struts使ったことある人?
• JSF使ったことある人?
• Teedaって聞いたことある人?
Seasar Conference
2006 Spring
© The Seasar Project and the others 2006. all rights reserved.
3
アジェンダ
•
•
•
•
•
•
•
•
プレゼンテーション層の変革
JSFとは?
JSFの問題点
Teedaとは?
TeedaとS2JSF
TeedaのJSF問題点へのアプローチ
Teedaのロードマップ
まとめ
Seasar Conference
2006 Spring
© The Seasar Project and the others 2006. all rights reserved.
4
プレゼンテーション層の変革
• プレゼンテーション層の変革
– オープンソースからの改善点の取り込み
• よりリッチなWebアプリケーションの構築に向けて
– 標準化への動き(JavaEE仕様)
• WebフレームワークではStrutsからJSFへ
• JSFはWebフレームワークの新しい標準
Seasar Conference
2006 Spring
© The Seasar Project and the others 2006. all rights reserved.
5
JSFとは?
• JSFとは?
– JavaServer Facesの略
– JavaEEの仕様の一部(JSR127、252)
– UIコンポーネントフレームワーク
• 単純なrequest/responseではなく、GUIプログラミングの
ようなコンポーネントモデル
• イベントドリブン
• 標準コンポーネント提供による開発効率向上
– JSFの実装
• MyFaces、SunのRIなど
Seasar Conference
2006 Spring
© The Seasar Project and the others 2006. all rights reserved.
6
JSFの問題点
• JSFの問題点
– 相変わらず、、、
• XML地獄
– 簡易DI機能
• JSFに備わっている簡易DIでは機能不足
– 高機能なDIコンテナ(DIとAOP)があるので余計見劣りする
– JSF実装の未成熟さ
• Strutsで出来ることを上回っていない
• ViewのデフォルトがJSP
• テスタビリティの低さ
Seasar Conference
2006 Spring
© The Seasar Project and the others 2006. all rights reserved.
7
Teedaとは?
• Teedaとは?
– SeasarファンデーションのJSFベース
• Teeda(てぃーだ)とは沖縄の言葉で「太陽」という意味。
– コンセプト
• 「JSF meets DI x AOP」
• 信頼性の高い「最強」Webフレームワーク
• 全ての面で今のデファクトを上回る
– Teedaの構成
• JSF標準実装 → Teeda Core
• JSF拡張機能 → Teeda Extension
Seasar Conference
2006 Spring
© The Seasar Project and the others 2006. all rights reserved.
8
Teeda Core
• Teeda Core
– 純粋なJSF実装(JSF1.1に準拠)
– ところがそれだけだと使いにくい
• 開発者の使いやすさ >> 仕様準拠
• 開発者の使いやすさ重視
– Seasar2利用による使いやすさの追求
– S2JSFのノウハウの再利用
– 独自で組み込んだ使いやすさのための機能
• Test重視
– テスティングフレームワークTeedaUnit
Seasar Conference
2006 Spring
© The Seasar Project and the others 2006. all rights reserved.
9
Teeda Extension
• Teeda Extension
– JSF拡張機能
• ページ駆動アーキテクチャ
– 1ページ=HTML+Pageクラス(POJO)
– 必要な機能を任意で選択
• HTMLテンプレート機能、レイアウト機能
• Ajax機能、クライアントサイドバリデーション
• ダブルサブミット防止、URL直叩き防止
– でもS2JSFがもうあるじゃん?
– Teeda Extensionは、S2JSFの進化系
Seasar Conference
2006 Spring
© The Seasar Project and the others 2006. all rights reserved.
10
TeedaとS2JSF
• TeedaとS2JSF
過去
現在
未来
S2JSF 1.0
S2JSF 1.1
Teeda Ext
MyFaces
Teeda Core
Teeda Core
Seasar Conference
2006 Spring
© The Seasar Project and the others 2006. all rights reserved.
11
XML地獄へのアプローチ
• XML地獄解消に向けて
– Less Configuration & アノテーション
– 開発者が設定ファイルに記述するのはほとんどが
managed-beanとnavigation-ruleの設定
• managed-beanの自動登録
– Teedaは内部でSeasar2でコンポーネントを一括管理
– Seasar2で出来ることはTeedaで全て可能
• navigation-ruleのアノテーション化
Seasar Conference
2006 Spring
© The Seasar Project and the others 2006. all rights reserved.
12
managed-beanの自動登録
• managed-beanの自動登録(BEFORE)
<managed-bean>
<managed-bean-name>helloBean</managed-bean-name>
<managed-bean-class>examples.jsf.bean.HelloBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>addBean</managed-bean-name>
<managed-bean-class>examples.jsf.bean.AddBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
・
・
・
Seasar Conference
2006 Spring
managed-beanの数だけ記述
© The Seasar Project and the others 2006. all rights reserved.
13
managed-beanの自動登録
• managed-beanの自動登録(AFTER)
<component
class="org.seasar.framework.container.autoregister.FileSystemComponentAuto
Register"
>
<property name="instanceDef">
@org.seasar.framework.container.deployer.InstanceDefFactory@REQUEST
</property>
<initMethod name="addClassPattern">
<arg>"examples.jsf.bean"</arg>
<arg>".*Bean"</arg>
</initMethod>
</component>
コンポーネントの数が増えても設定はこれのみ
Seasar Conference
2006 Spring
© The Seasar Project and the others 2006. all rights reserved.
14
managed-bean数と設定量
• managed-bean数と設定量
設定量
BEFORE
AFTER
managed-bean数
Seasar Conference
2006 Spring
© The Seasar Project and the others 2006. all rights reserved.
15
navigation-ruleの自動登録
• navigation-ruleの自動登録
public class HogeAction {
@Navigation(to=FooPage.class)
public static final String SUCCESS = “success”;
}
<navigation-rule>
<from-view-id>/pages/hoge.html</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/pages/foo.html</to-view-id>
</navigation-case>
</navigation-rule>
Seasar Conference
2006 Spring
© The Seasar Project and the others 2006. all rights reserved.
16
簡易DI機能
• JSFの簡易DI
– managed-beanのみ
<managed-bean>
<managed-bean-name>addCalculateBean</managed-bean-name>
<managed-bean-class>teeda.example.AddCalculateBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>calculater</property-name>
<value>#{calculater}</value>
</managed-property>
</managed-bean>
<managed-bean>
<managed-bean-name>calculater</managed-bean-name>
<managed-bean-class>teeda.example.AddCalculater</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
Seasar Conference
2006 Spring
© The Seasar Project and the others 2006. all rights reserved.
17
高度なDI機能
• Teedaでは、S2を利用
– managed-bean
– Validator、Converter、UIComopnentも可能
– 当然、アスペクトも利用可能
<component name="lengthValidator1“
class="javax.faces.validator.LengthValidator">
<property name="maximum">10</property>
<aspect>aop.traceInterceptor</aspect>
</component>
<component name="outputDateTimeConverter“
class="javax.faces.convert.DateTimeConverter">
<property name="pattern">"yyyy/MM/dd"</property>
</component>
Seasar Conference
2006 Spring
© The Seasar Project and the others 2006. all rights reserved.
18
vs Struts
• 既存JSF実装の未熟さ
– Strutsで出来ることを上回っていない
• クライアントサイドバリデーション
• 初期化処理、例外処理
– Teedaはコンセプトとして、デファクトで出来ることを
全て上回る
• フレームワークは機能の星取り表
• 機能比較で一つずつデメリットをつぶしていく
– http://teeda.seasar.org/ja/teeda_core.html
Seasar Conference
2006 Spring
© The Seasar Project and the others 2006. all rights reserved.
19
HTMLテンプレート
• 既存JSF実装の未熟さ
– ViewのデフォルトがJSP
• Teedaを使えば今からでもHTMLで利用可能
– Teeda Core + S2JSF(1.1.x)
– デザイナとの協業も楽
• Teeda Extensionを使えば、規約に沿って更に記述量が
減る
– Teeda Core + Teeda Extension
Seasar Conference
2006 Spring
© The Seasar Project and the others 2006. all rights reserved.
20
TeedaUnit
• 既存JSF実装の未熟さ
– テスタビリティの低さ
• TeedaUnitでひたすらテスト自動化(笑)
– 親テストクラス(TeedaTestCase)+Mockクラス群
» はっきり言ってShaleTestCase超えてる
– Teeda-selenium
» SeleniumベースのViewテスト
– Teeda-integration-test
» HtmlUnit + Jettyでテスト
→これからのWebフレームワークのあるべき姿
Seasar Conference
2006 Spring
© The Seasar Project and the others 2006. all rights reserved.
21
Teedaのロードマップ
• Teeda Core
– JSF実装残り部分
• Portlet対応など
– 各種コンポーネントの開発
• FileUpload、Calendarなど有用なものをピックアップ
– ドキュメント、Exampleの充実
– テストとリファクタリング
– パフォーマンスチューニング
Seasar Conference
2006 Spring
© The Seasar Project and the others 2006. all rights reserved.
22
Teedaのロードマップ
• Teeda Extension
– HTMLテンプレート機能
– レイアウト機能
– アノテーション機能
• 目標はfaces-configの記述なし
– HOT対応
• Webコンテナを起動させたまま、ソースの変更が可能
– セキュリティ対応
Seasar Conference
2006 Spring
© The Seasar Project and the others 2006. all rights reserved.
23
Teedaのロードマップ
• Kumu(くむ)
– Ajax+JSライブラリ
• Ajax機能の開発効率を劇的に向上
– コンセプトは「最速」
• 習得するまで「最速」
• コード書くのも「最速」
• 実行速度も「最速」
– Ajax基本機能は既に完成
• JavaScriptから、S2Componentを呼び出す
– 今後、JavaScript-Javaのリモーティング機能も。
Seasar Conference
2006 Spring
© The Seasar Project and the others 2006. all rights reserved.
24
Ajax サンプル(Ajax呼び出し)
function demo(zipcode){
Kumu.ajax.executeTeedaAjax(zipBean_getAddress,
{"zipcode" : zipcode});
}
Seasar Conference
2006 Spring
© The Seasar Project and the others 2006. all rights reserved.
25
Ajax サンプル(dicon)
<component name="zipBean"
class="examples.teeda.ajax.ZipBean"
instance="request">
<meta name="teeda-ajax"/>
</component>
Seasar Conference
2006 Spring
© The Seasar Project and the others 2006. all rights reserved.
26
まとめ
• TeedaはJSF実装。でもそれだけじゃない。
– Teeda Core → JSF実装+JSFの欠点除去
– Teeda Extension → HTMLベースのJSF拡張機能
– Kumu → 最速JSライブラリ。Ajaxも楽勝
• Teedaは開発者のフィードバックを重視。
– Web開発をもっともっと楽に。
• TeedaはWebフレームワークとしてJSFを
ベースに品質を極限まで高める。
Seasar Conference
2006 Spring
© The Seasar Project and the others 2006. all rights reserved.
27
ご参考
• Teeda
– http://teeda.seasar.org/ja/index.html
• この後、参加型のイベントやります!
– TeedaのブースでLIVEでTeeda ExtensionのHTML
テンプレートの仕様LIVEで!!
– Kumu&Ajaxの仕様についてもLIVEで!!
Feedback重要
Seasar Conference
2006 Spring
© The Seasar Project and the others 2006. all rights reserved.
28
Thanks!!
ご清聴ありがとう
ございました。
Seasar Conference
2006 Spring
© The Seasar Project and the others 2006. all rights reserved.
29