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
© Copyright 2024 ExpyDoc