T2でつなごう!
-つなぐつながるWebフレームワーク「T2」の紹介



                T2プロジェクト
                    米林 正明
                    片山 暁雄
自己紹介

名前
 米林 正明
ID
 id:yone098
所属
 株式会社Abby     代表取締役社長
自己紹介

名前
 片山 暁雄
ID
 id:c9katayama
所属
 株式会社キャピタルアセットプランニ
 ング
Agenda

T2の概要
T2の基本姿勢
T2の目指す所
機能紹介
DIコンテナ非依存
今後の展開
デモ
T2 - The WEB Connector -




T2の概要
Webを取り巻く環境
クライアント    HTML                        Flex3
                        Ajax

         Param           XML         ...
Webを取り巻く環境


    無理
T2とは

T2とは
 Webフレームワーク
 テーマ「つなぐ・つながる」
 クライアントとユーザーコードの仲介役
T2でつなぐつながる
クライアント




             T2!
サーバ
T2 - The WEB Connector -




T2のスタイル
T2のスタイル

 アノテーションドリブン
      エントリーポイントのPOJOにアノテーション付
      与
      エントリーポイントの分かりやすさ重視
      規約とアノテーションを適切に利用
              ...
T2のスタイル

基本はステートレス
特定のコンテナへ依存しない


                コンテナなくて
                コンテナなくて
                  もOK
T2のスタイル

ユーザーに介入してほしい
 コアはシンプルに extで拡張を提供
できればプロジェクトごとに必要な機能を作っ
てほしい
extはあなたが作る!
T2 - The WEB Connector -



T2の目指す所
T2の目指す所

マルチビューをさばけるフレームワーク
過渡期でも使えるフレームワーク
依存性の少ないフレームワーク
ユーザーが支配出来るフレームワーク
T2 - The WEB Connector -




機能紹介
T2 - The WEB Connector -



リクエストとPOJOの
  マッピング
基本機能

STEP1:@Pageでクラス特定
           でクラス特定

  http://yoursite.com/t2app/hello
               /world

    @Page(“/hello”)
  ...
基本機能
STEP2:メソッドアノテーションでメソッド特定
    2 メソッドアノテーションでメソッド特定
      メソッドアノテーション
  http://yoursite.com/t2app/hello/world

 @Page(“...
メソッド特定方法


            のリクエストで
@GET GETのリクエストで かつ
                                のパスの
@ActionPath(“/world”) /worldのパスの場合
...
メソッドアノテーション

@GET,@POST
@ActionPath
@ActionParam
 リクエストパラメータのkey
 key-value指定も可能
@Ajax
@Amf (0.6から)
@Default
アノテーションマッチ
複数のメソッドがマッチした場合
 たくさんアノテーションがマッチした方を優先
同じ数のアノテーションがマッチした場合
 先に見つかったほうを使用(バージョン0.5)
 ただしここは検討中
マッチするのがなかった場合
 @D...
メソッド引数特定方法

引数のアノテーションを見て、引数を解決
 @RequestParam,
 @RequestHeader
 @SessionAttr
 @Upload
 @Form
 @Index
 @Var
メソッド引数特定方法

引数の型を見て、引数を解決
 HttpServletRequest, HttpServletResponse
 HttpSession
 ServletContext
 Cookie/Cookie[]
 WebConte...
メソッド引数特定方法

@ActionPath(“/world/{id}”)
public Navigation helloworld(
 HttpSession session,
@Var(“id”) String id,
@RequestP...
T2 - The WEB Connector -



レスポンス
レスポンス
戻り値として、Navigationインターフェースを
実装したクラスのインスタンスを返す
 Forward
 Redirect
 SimpleText
 Direct
 Json
 NoOperation
 PassThrough
レスポンス
      に
//JSPにForward
@ActionPath(“/world/{id}”)
public Navigation helloworld(){
  return Forward.to(“/WEB-INF/jsp/h...
T2 - The WEB Connector -



DIコンテナ非依存
DIコンテナ非依存

T2が動作するDIコンテナ
 Guice
 Spring
 Lucy
DIコンテナ非依存

 今日は
 今日は
 Seasar
カンファレンス
 やないか!
 やないか!
DIコンテナ非依存




   Seasar君、
         君
どこ行ってしもたんや…
どこ行ってしもたんや
DIコンテナ非依存

T2が動作するDIコンテナ
 Seasar2
           あるよ!
           あるよ!
 Guice
 Spring
 Lucy
DIコンテナ非依存

環境構築~Seasar2編~
 参照
  t2-employee
 構成
  S2.4 + S2Dao
DIコンテナ非依存

作成設定ファイル~Seasar2編~
 aop.dicon
 app.dicon
 dao.dicon
 jdbc.dicon
DIコンテナ非依存
           web.xml~Seasar2編~
<filter>
  <filter-name>t2</filter-name>
  <filter-class>org.t2framework.filter.T2F...
DIコンテナ非依存
 Pageクラス~Seasar2編~

@RequestScope
@Page(quot;loginquot;)
public class LoginPage
DIコンテナ非依存
       PageクラスDI~Seasar2編~
protected FooService fooService;

@Binding(bindingType = BindingType.MUST)
public voi...
DIコンテナ非依存

環境構築~Guice編~
 参照
 t2-guice
 構成
 Guice + JPA
DIコンテナ非依存

作成設定ファイル~Guice編~
persistence.xml
※Guice用のモジュール(Java
で)
DIコンテナ非依存
            web.xml~Guice編~
<filter>
  <filter-name>t2</filter-name>
  <filter-class>org.t2framework.t2.filter.T...
DIコンテナ非依存
Pageクラス~Guice編~

@RequestScoped
@Page(quot;addquot;)
public class AddPage
DIコンテナ非依存
   PageクラスDI~Guice編~
@Inject
private CalcService calcService;

@Inject
@RequestParameters
Map<String, String[]> ...
DIコンテナ非依存

環境構築~Spring編~
 参照
  t2-spring
 構成
  Spring2.5 + iBatis
DIコンテナ非依存

作成設定ファイル~Spring編~
 applicationContext.xml
 dao-ibatis.xml
 sql-map-config.xml
 XxxSqlMap.xml
DIコンテナ非依存
               web.xml~Spring編~
<filter>
  <filter-name>t2</filter-name>
  <filter-class>org.t2framework.t2.filt...
DIコンテナ非依存
Pageクラス~Spring編~

@Component
@Page(quot;addquot;)
public class AddPage
DIコンテナ非依存
    PageクラスDI~Spring編~
private CalcService calcService;

@Autowired(required=true)
public void setCalcService(
 ...
DIコンテナ非依存
動作確認アプリケーションサーバ
 Tomcat5x/6x
 JBoss4x/5x
 Jetty6x
 WebLogic10x
  その他いろいろ… Yonexで確認
T2 - The WEB Connector -




今後の展望
今後の展望

バージョン0.6
 Flex3対応 (AMF3)
 BlazeDSのAMF3ライブラリ使用
 もしくはS2Flex2のAMF3部分使用
バージョン0.7
 Atom,RSS
その他プロダクト
Commons
  共通ユーティリティ郡
Lucy
  DIコンテナ
  アノテーションベース
Daisy
  2waySQLフレームワーク
  OS(Object-SQL)マッパ
  薄いJDBCラッパー
その他プロダクト

Yonex(仮)
 Hyper Integration Test Suite



 レポーティング
    とかも
  提供したい!
プロジェクトリソース

サイト
 http://code.google.com/p/t-2/
リリースアーカイブ、ドキュメント、ソース
コード
メーリングリスト
 T2-users
   http://groups.google.com/gro...
T2 - The WEB Connector -




まとめ
まとめ

T2はマルチビュー対応
つなぐ機能は提供します!
が
組み合わせはユーザーで!
まだまだ発展途上。ご意見ください!
T2 - The WEB Connector -




エンドロール
T2 - The WEB Connector -




出演
T2 - The WEB Connector -




テツ
T2 - The WEB Connector -




テツ
T2 - The WEB Connector -




テツ
T2 - The WEB Connector -




イーダ
T2 - The WEB Connector -
T2 - The WEB Connector -




イーダ
T2 - The WEB Connector -




イーダ
T2 - The WEB Connector -
T2 - The WEB Connector -




イーダ
T2 - The WEB Connector -




イーダ
T2 - The WEB Connector -




イーダ
T2 - The WEB Connector -
T2 - The WEB Connector -




イーダ
T2 - The WEB Connector -




 designed by
カネウチカズコ
T2 - The WEB Connector -




出演コミッタ
T2 - The WEB Connector -




片山 暁雄
T2 - The WEB Connector -
T2 - The WEB Connector -




米林 正明
T2 - The WEB Connector -
T2 - The WEB Connector -




横田 健彦
T2 - The WEB Connector -
T2 - The WEB Connector -




大谷 晋平(自宅)
T2 - The WEB Connector -
T2 - The WEB Connector -


御静聴ありがとうございました
Upcoming SlideShare
Loading in …5
×

sc2009white_T2

1,637 views
1,538 views

Published on

T2でつなごう!-つなぐつながるWebフレームワーク「T2」の紹介-

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,637
On SlideShare
0
From Embeds
0
Number of Embeds
233
Actions
Shares
0
Downloads
5
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

sc2009white_T2

  1. 1. T2でつなごう! -つなぐつながるWebフレームワーク「T2」の紹介 T2プロジェクト 米林 正明 片山 暁雄
  2. 2. 自己紹介 名前 米林 正明 ID id:yone098 所属 株式会社Abby 代表取締役社長
  3. 3. 自己紹介 名前 片山 暁雄 ID id:c9katayama 所属 株式会社キャピタルアセットプランニ ング
  4. 4. Agenda T2の概要 T2の基本姿勢 T2の目指す所 機能紹介 DIコンテナ非依存 今後の展開 デモ
  5. 5. T2 - The WEB Connector - T2の概要
  6. 6. Webを取り巻く環境 クライアント HTML Flex3 Ajax Param XML AMF3 フレームワーク Struts Struts2 BlazeDS サーバ Action Action POJO Support
  7. 7. Webを取り巻く環境 無理
  8. 8. T2とは T2とは Webフレームワーク テーマ「つなぐ・つながる」 クライアントとユーザーコードの仲介役
  9. 9. T2でつなぐつながる クライアント T2! サーバ
  10. 10. T2 - The WEB Connector - T2のスタイル
  11. 11. T2のスタイル アノテーションドリブン エントリーポイントのPOJOにアノテーション付 与 エントリーポイントの分かりやすさ重視 規約とアノテーションを適切に利用 @GET サーバ @ActionPath(“/hoge”) @POST
  12. 12. T2のスタイル 基本はステートレス 特定のコンテナへ依存しない コンテナなくて コンテナなくて もOK
  13. 13. T2のスタイル ユーザーに介入してほしい コアはシンプルに extで拡張を提供 できればプロジェクトごとに必要な機能を作っ てほしい extはあなたが作る!
  14. 14. T2 - The WEB Connector - T2の目指す所
  15. 15. T2の目指す所 マルチビューをさばけるフレームワーク 過渡期でも使えるフレームワーク 依存性の少ないフレームワーク ユーザーが支配出来るフレームワーク
  16. 16. T2 - The WEB Connector - 機能紹介
  17. 17. T2 - The WEB Connector - リクエストとPOJOの マッピング
  18. 18. 基本機能 STEP1:@Pageでクラス特定 でクラス特定 http://yoursite.com/t2app/hello /world @Page(“/hello”) public class MyHello { …
  19. 19. 基本機能 STEP2:メソッドアノテーションでメソッド特定 2 メソッドアノテーションでメソッド特定 メソッドアノテーション http://yoursite.com/t2app/hello/world @Page(“/hello”) public class MyHello { @GET @ActionPath(“/world”) public Navigation helloworld(){ …
  20. 20. メソッド特定方法 のリクエストで @GET GETのリクエストで かつ のパスの @ActionPath(“/world”) /worldのパスの場合 public Navigation helloworld(){ … 全マッチの場合、呼び出される。 マッチの場合、 される。
  21. 21. メソッドアノテーション @GET,@POST @ActionPath @ActionParam リクエストパラメータのkey key-value指定も可能 @Ajax @Amf (0.6から) @Default
  22. 22. アノテーションマッチ 複数のメソッドがマッチした場合 たくさんアノテーションがマッチした方を優先 同じ数のアノテーションがマッチした場合 先に見つかったほうを使用(バージョン0.5) ただしここは検討中 マッチするのがなかった場合 @Defaultがついたメソッドを呼ぶ @Defaultつきがない場合、エラー
  23. 23. メソッド引数特定方法 引数のアノテーションを見て、引数を解決 @RequestParam, @RequestHeader @SessionAttr @Upload @Form @Index @Var
  24. 24. メソッド引数特定方法 引数の型を見て、引数を解決 HttpServletRequest, HttpServletResponse HttpSession ServletContext Cookie/Cookie[] WebContext Request, Response UploadFile ErrorInfo
  25. 25. メソッド引数特定方法 @ActionPath(“/world/{id}”) public Navigation helloworld( HttpSession session, @Var(“id”) String id, @RequestParam(“name”) String name){ …
  26. 26. T2 - The WEB Connector - レスポンス
  27. 27. レスポンス 戻り値として、Navigationインターフェースを 実装したクラスのインスタンスを返す Forward Redirect SimpleText Direct Json NoOperation PassThrough
  28. 28. レスポンス に //JSPにForward @ActionPath(“/world/{id}”) public Navigation helloworld(){ return Forward.to(“/WEB-INF/jsp/hoge.jsp”); } //画像ファイルを返す 画像ファイルを 画像ファイル @ActionPath(“/worldImage”) public Navigation helloworldImage(){ File image = new File(“world.png”); return Direct.from(image); }
  29. 29. T2 - The WEB Connector - DIコンテナ非依存
  30. 30. DIコンテナ非依存 T2が動作するDIコンテナ Guice Spring Lucy
  31. 31. DIコンテナ非依存 今日は 今日は Seasar カンファレンス やないか! やないか!
  32. 32. DIコンテナ非依存 Seasar君、 君 どこ行ってしもたんや… どこ行ってしもたんや
  33. 33. DIコンテナ非依存 T2が動作するDIコンテナ Seasar2 あるよ! あるよ! Guice Spring Lucy
  34. 34. DIコンテナ非依存 環境構築~Seasar2編~ 参照 t2-employee 構成 S2.4 + S2Dao
  35. 35. DIコンテナ非依存 作成設定ファイル~Seasar2編~ aop.dicon app.dicon dao.dicon jdbc.dicon
  36. 36. DIコンテナ非依存 web.xml~Seasar2編~ <filter> <filter-name>t2</filter-name> <filter-class>org.t2framework.filter.T2Filter </filter-class> <init-param> <param-name>t2.rootpackage</param-name> <param-value>examples.employee.page</param-value> </init-param> <init-param> <param-name>t2.container.adapter</param-name> <param-value>org.t2framework.plugins.container.Seasar2Adapter</param-value> </init-param> <init-param> <param-name>t2.eagerload</param-name> <param-value>true</param-value> </init-param> </filter>
  37. 37. DIコンテナ非依存 Pageクラス~Seasar2編~ @RequestScope @Page(quot;loginquot;) public class LoginPage
  38. 38. DIコンテナ非依存 PageクラスDI~Seasar2編~ protected FooService fooService; @Binding(bindingType = BindingType.MUST) public void setFooService(FooService fooService) { this.fooService = fooService; }
  39. 39. DIコンテナ非依存 環境構築~Guice編~ 参照 t2-guice 構成 Guice + JPA
  40. 40. DIコンテナ非依存 作成設定ファイル~Guice編~ persistence.xml ※Guice用のモジュール(Java で)
  41. 41. DIコンテナ非依存 web.xml~Guice編~ <filter> <filter-name>t2</filter-name> <filter-class>org.t2framework.t2.filter.T2Filter</filter-class> <init-param> <param-name>t2.rootpackage</param-name> <param-value>org.t2framework.samples.guice.page</param-value> </init-param> <init-param> <param-name>t2.container.adapter</param-name> <param-value>org.t2framework.t2.adapter.GuiceAdapter</param-value> </init-param> <init-param> <param-name>t2.exclude-resources</param-name> <param-value>css, js</param-value> </init-param> </filter>
  42. 42. DIコンテナ非依存 Pageクラス~Guice編~ @RequestScoped @Page(quot;addquot;) public class AddPage
  43. 43. DIコンテナ非依存 PageクラスDI~Guice編~ @Inject private CalcService calcService; @Inject @RequestParameters Map<String, String[]> params;
  44. 44. DIコンテナ非依存 環境構築~Spring編~ 参照 t2-spring 構成 Spring2.5 + iBatis
  45. 45. DIコンテナ非依存 作成設定ファイル~Spring編~ applicationContext.xml dao-ibatis.xml sql-map-config.xml XxxSqlMap.xml
  46. 46. DIコンテナ非依存 web.xml~Spring編~ <filter> <filter-name>t2</filter-name> <filter-class>org.t2framework.t2.filter.T2Filter</filter-class> <init-param> <param-name>t2.rootpackage</param-name> <param-value>org.t2framework.samples.spring.page</param-value> </init-param> <init-param> <param-name>t2.config</param-name> <param-value>applicationContext.xml</param-value> </init-param> <init-param> <param-name>t2.container.adapter</param-name> <param-value>org.t2framework.t2.adapter.SpringAdapter</param-value> </init-param> <init-param> <param-name>t2.eagerload</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>t2.exclude-resources</param-name> <param-value>css, js</param-value> </init-param> </filter>
  47. 47. DIコンテナ非依存 Pageクラス~Spring編~ @Component @Page(quot;addquot;) public class AddPage
  48. 48. DIコンテナ非依存 PageクラスDI~Spring編~ private CalcService calcService; @Autowired(required=true) public void setCalcService( CalcService calcService) { this.calcService = calcService; }
  49. 49. DIコンテナ非依存 動作確認アプリケーションサーバ Tomcat5x/6x JBoss4x/5x Jetty6x WebLogic10x その他いろいろ… Yonexで確認
  50. 50. T2 - The WEB Connector - 今後の展望
  51. 51. 今後の展望 バージョン0.6 Flex3対応 (AMF3) BlazeDSのAMF3ライブラリ使用 もしくはS2Flex2のAMF3部分使用 バージョン0.7 Atom,RSS
  52. 52. その他プロダクト Commons 共通ユーティリティ郡 Lucy DIコンテナ アノテーションベース Daisy 2waySQLフレームワーク OS(Object-SQL)マッパ 薄いJDBCラッパー
  53. 53. その他プロダクト Yonex(仮) Hyper Integration Test Suite レポーティング とかも 提供したい!
  54. 54. プロジェクトリソース サイト http://code.google.com/p/t-2/ リリースアーカイブ、ドキュメント、ソース コード メーリングリスト T2-users http://groups.google.com/group/t2-users 開発の話、仕様の話、なんでもOK。
  55. 55. T2 - The WEB Connector - まとめ
  56. 56. まとめ T2はマルチビュー対応 つなぐ機能は提供します! が 組み合わせはユーザーで! まだまだ発展途上。ご意見ください!
  57. 57. T2 - The WEB Connector - エンドロール
  58. 58. T2 - The WEB Connector - 出演
  59. 59. T2 - The WEB Connector - テツ
  60. 60. T2 - The WEB Connector - テツ
  61. 61. T2 - The WEB Connector - テツ
  62. 62. T2 - The WEB Connector - イーダ
  63. 63. T2 - The WEB Connector -
  64. 64. T2 - The WEB Connector - イーダ
  65. 65. T2 - The WEB Connector - イーダ
  66. 66. T2 - The WEB Connector -
  67. 67. T2 - The WEB Connector - イーダ
  68. 68. T2 - The WEB Connector - イーダ
  69. 69. T2 - The WEB Connector - イーダ
  70. 70. T2 - The WEB Connector -
  71. 71. T2 - The WEB Connector - イーダ
  72. 72. T2 - The WEB Connector - designed by カネウチカズコ
  73. 73. T2 - The WEB Connector - 出演コミッタ
  74. 74. T2 - The WEB Connector - 片山 暁雄
  75. 75. T2 - The WEB Connector -
  76. 76. T2 - The WEB Connector - 米林 正明
  77. 77. T2 - The WEB Connector -
  78. 78. T2 - The WEB Connector - 横田 健彦
  79. 79. T2 - The WEB Connector -
  80. 80. T2 - The WEB Connector - 大谷 晋平(自宅)
  81. 81. T2 - The WEB Connector -
  82. 82. T2 - The WEB Connector - 御静聴ありがとうございました

×