狠狠撸

狠狠撸Share a Scribd company logo
厂别补蝉补谤プロジェクト彻底攻略


 NTTデータ先端技術株式会社
 竹添 直树
Profile
?   たけぞう
    ?   Blog:
        http://d.hatena.ne.jp/takezoe/
    ?   Twitter:
        @takezoen
    ?   OSS Activity:
        Project Amateras
        The Apache Software Foundation
        The Seasar Project
Purpose
?   Seasarプロジェクトでは様々なプロダクトが開
    発されています
?   ただし、開発がアクティブに行われていないも
    のも多く、機能?品質にもバラつきがあります
?   これらのプロダクトの中から“仕事で使える”プ
    ロダクトを紹介します
突然ですが…


         Seasar2徹底入門
         SAStruts/S2JDBC対応

         ISBN:978-4798121505
         価格:3,990
         出版社:翔泳社
厂别补蝉补谤本の歴史
Seasar入門 はじめてのDI&AOP
Seasar 2.4登场
厂别补蝉补谤2によるスーパーアジャイルな奥别产开発
SAStruts+S2JDBC
      登场
Seasar2入門
JavaによるはじめてのWebアプリケーション開発
SAStruts、S2JDBCの
 機能改善による変化
最新の情報をカバーした
実践的な書籍が必要だ!
そして厂别补蝉补谤2彻底入门


         Seasar2、SAStruts、S2JDBCは安定期に
         S2Container、周辺プロダクトも解説




          末永く使える一冊に!
Seasar3登场?
本当にありがとう
 ございました。
本题に戻ります
Purpose
?   Seasarプロジェクトでは様々なプロダクトが開
    発されています
?   ただし、開発がアクティブに行われていないも
    のも多く、機能?品質にもバラつきがあります
?   これらのプロダクトの中から“仕事で使える”プ
    ロダクトを紹介します
Web Framework
?   (SAStruts)
?   Cubby
?   Mayaa
?   Teeda
?   Ymir
?   S2JSF
?   S2Struts
学習コストの低いWebフレームワークを使いたい!


 Cubby                                                http://cubby.seasar.org/

 ?       Servlet/JSPベースのシンプルなWebフレームワーク
 ?       Seasar2だけでなく、Spring Framework、Google Guiceと連
         携が可能

public class HelloAction extends Action {   ???
                                            <t:form action="message" value="${action}">
    @RequestParameter                        あなたの名前:
    public String name;                      <t:input type="text" name="name"/>
                                             <input type="submit" value="送信"/>
    public ActionResult index() {           </t:form>
      return new Forward("input.jsp");      ???
    }
                                            input.jsp
    public ActionResult message() {
      return new Forward("result.jsp");     ???
    }                                       こんにちは、${action.name}さん。
}                                           ???

アクション                                       result.jsp
プログラマとデザイナを分业したい!


   Mayaa                                            http://mayaa.seasar.org/

   ?     Tapestry、S2JSFの系譜を受け継ぐHTMLテンプレートエンジン
   ?     デザインとロジックの完全な分離を実現
   ?     SAStrutsやCubby等と組み合わせて利用可能

   HTMLファイル
<html>
<body>
  <span id="message">dummy message</span>
</body>
</html>
                                                       <html>
                                                         <body>Hello Mayaa!</body>
   Mayaaファイル                                           </html>

<?xml version="1.0" encoding="UTF-8"?>
<m:mayaa xmlns:m="http://mayaa.seasar.org">
  <m:write m:id="message" value="Hello Mayaa!" />
</m:mayaa>
DataBase Access Framework
?   (S2JDBC)
?   DBFlute
?   Doma
?   Kuina
?   S2Dao
現場でトラブルになりにくいO/Rマッパを使いたい!


DBFlute           http://dbflute.sandbox.seasar.org/

?   Apache Torque/S2Daoを参考に開発された「現
    場指向」のO/Rマッピングフレームワーク
?   自動生成を活用しておりDB変更に強い
?   自由度よりも安全性を重視
?   Condition Bean
?   外出しSQL(2Way SQL)

詳しくはDBFluteのセッションで!
     S505 15:00-
S2JDBCもいいけどS2Daoもいいよね!


Doma                                               http://doma.seasar.org/

?       APT(Annotation Processing Tool)を使用したO/Rマッパ
?       S2Daoに似ているが、以下の点を改良
        ?   実行時にAOPで処理を行うのではなく、コンパイル時にDAOのソースを生成
        ?   命名規約ではなくアノテーションによる明示的な指定
        ?   2waySQLの文法を間違いにくいよう改善
        ?   ドメインクラスへの対応
        ?   コンパイル時にAPTによるエラーチェックが可能

    @Dao(config = AppConfig.class)
    public interface EmployeeDao {

        @Select
        Employee selectById(Integer employeeId);   コンパイル時に     DAOの実装を
                                                    APTで処理      自動生成
        @Update
        int update(Employee employee);

    }

                                 DAOのインターフェース
Remoting/Communications
?   S2BlazeDS
?   S2Axis
?   S2JMS
?   S2Flex
?   S2RMI
Flex/AIRからSeasar2のコンポーネントを呼び出したい!


 S2BlazeDS                                                   http://s2blazeds.seasar.org/

 ?     BlazeDSでFlexからS2Container管理下のコンポーネントを呼
       び出し可能
 ?     HOT deploy対応
<?xml version="1.0" encoding="UTF-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
          backgroundColor="#FFFFFF">
 <mx:RemoteObject id="srv" destination="productService"/>
 <mx:DataGrid dataProvider="{srv.getProducts.lastResult}"
         width="100%" height="100%"/>
 <mx:Button label="Get Data" click="srv.getProducts()"/>                                     サーバ側
</mx:Application>
                                     public class ProductService {
クライアント(Flex)側                             public JdbcManager jdbcManager;

                                          public List<Product> getProducts() {
                                            return jdbcManager.from(Product.class).getResultList();
                                          }
                                          ...
                                      }
Webサービスを簡単に作成したい!


 S2Axis                                                    http://s2axis.seasar.org/ja/

 ?     POJOをWebサービス化
 ?     クライアント側もサポート
 ?     JAX-WS、RESTにも対応
public interface Echo {
  String echo(int id, String message);
}                                                                  diconファイルに登録する際に
                                                                   metaタグでAxisにデプロイする
public class EchoImpl implements Echo {
  public String echo(int id, String message) {                     Webサービスであることを指定
    return "[id = " + id + "] " + message;
  }
}                         <component
                              name="Echo" class="org.seasar.remoting.axis2.examples.ex01.EchoImpl">
                            <meta name="axis-service"/>
                          </component>



          http://localhost:8080/s2axis/services/Echo でアクセス可能
Libraries
?   S2Mai
?   S2CSV
?   S2Chronos
?   S2Caching
?   Fisshplate
メールを送信したい!


S2Mai                     http://s2mai.sandbox.seasar.org/ja/

?   送信先等の設定をdiconファイルで管理可能
?   S2Daoのメール版(Maiインターフェースを作成するだけでメール送信可能)
?   Velocity or FreeMarkerでメール内容のテンプレートを記述可能


            メールテンプレートに
              渡すパラメータ          Mai
     DTO
                            インターフェース

            SMTPサーバの情報等                    送信するメールの内容




                diconファイル              メールテンプレート
CSVファイルの入出力を行いたい!


S2CSV                                  http://s2csv.sandbox.seasar.org/

?   CSVとJavaBeanをアノテーションでマッピング
?   アノテーションで読み込んだCSV値のバリデーションも可能
       @CSVEntity(header=false)
       public class DeptCsv {

           @CSVColumn(columnIndex=0)
           public Long id;

           @CSVRequired
           @CSVColumn(columnIndex=1)
           public Integer deptNo;

           @CSVColumn(columnIndex=2)
           public String deptName;

           @CSVColumn(columnIndex=3)
           public String loc;

       }
アプリケーションに定期処理を組み込みたい!


S2Chronos                           http://s2chronos.sandbox.seasar.org/

?   タスクスケジューラ
?   即時、日時指定、cron形式など様々なトリガーが利用可能
?   アノテーションでトリガやタスクメソッドの順序を指定可能
?   動的トリガを利用することでトリガ設定の外部化も可能
?   Webアプリにも組み込み可能


    @Task
    @CronTrigger(expression = "0 */1 * * * ?")
    public class BasicTask {

        public void doExecute() {
          ...
        }

    }
性能向上のためにキャッシュを活用したい!


 S2Caching                            http://s2caching.sandbox.seasar.org/

 ?    メソッドの戻り値をキャッシュするインターセプターを提供
 ?    メソッドの引数ごとに戻り値をキャッシュする
 ?    アノテーションでの適用も可能
 ?    バックエンドにはEhcacheを使用

diconファイルでの指定

<component class="jp.sf.amateras.samples.service.CalcService">
 <aspect pointcut="calculateSomething">callCache</aspect>
</component>
                              @CallCache(componentName="callCache")
                              public String calculateSomething(String condition) {
                                ....
                              }

                              アノテーションでの指定
Excelを手軽に生成したい!


Fisshplate        http://fisshplate.sandbox.seasar.org/ja/

 ?   Excelテンプレートエンジン
 ?   ExcelにVelocityのような記述が可能
携帯電話向けのWebアプリケーションを開発したい!


Mobylet               http://mobylet.seasar.org/

?   携帯Web向けのフレームワーク
?   絵文字、文字コードの自動変換
?   画像のリサイズ
?   デコメール対応メール送信
?   セッション管理機能
?   他のWebフレームワークと組み合わせて利用


詳しくはMobyletのセッションで!
     S603 15:00-
贰肠濒颈辫蝉别プラグイン
     プラグイン                              説明

Dolteng          Seasar2を使用したプロジェクトの雛形を作成
                 SAStruts、S2JDBCなど様々なフレームワークの組み合わせに対応
Kijimuna         Diconファイルを編集するためのエディタ

SAStrutsPlugin   WTPにSAStruts向けの機能を追加

Matatabi         MayaaのmayaaファイルやHTMLファイルの編集を支援

S2JUnit4Plugin   テストケース、テスト対象クラス、テスト用diconファイルの相互ジャンプ

DbLauncher       H2データベースをEclipse上から起動

WebLauncher      Winstone(軽量サーブレットコンテナ)をEclipse上から起動

Doma Tools       Domaでの開発を支援

EMecha           DBFluteでの開発を支援
Seasarプロジェクトのリソース
?   メーリングリスト
    ?   http://ml.seasar.org/
?   Subversionリポジトリ
    ?   https://www.seasar.org/svn/
    ?   http://www.seasar.org/source/browse/
?   Mavenリポジトリ
    ?   http://maven.seasar.org/
?   贰肠濒颈辫蝉别プラグインの更新サイト
    ?   http://www.seasar.org/updates.html
?   JIRA(課題管理)
    ?   https://www.seasar.org/issues/secure/Dashboard.jspa
?   Hudson(継続的ビルド)
    ?   https://www.seasar.org/hudson/
?   Wiki
    ?   http://www.seasar.org/wiki/
厂别补蝉补谤2活用のために


          Seasar2徹底入門
          SAStruts/S2JDBC対応

          ISBN:978-4798121505
          価格:3,990
          出版社:翔泳社

More Related Content

厂别补蝉补谤プロジェクト彻底攻略

  • 2. Profile ? たけぞう ? Blog: http://d.hatena.ne.jp/takezoe/ ? Twitter: @takezoen ? OSS Activity: Project Amateras The Apache Software Foundation The Seasar Project
  • 3. Purpose ? Seasarプロジェクトでは様々なプロダクトが開 発されています ? ただし、開発がアクティブに行われていないも のも多く、機能?品質にもバラつきがあります ? これらのプロダクトの中から“仕事で使える”プ ロダクトを紹介します
  • 4. 突然ですが… Seasar2徹底入門 SAStruts/S2JDBC対応 ISBN:978-4798121505 価格:3,990 出版社:翔泳社
  • 13. そして厂别补蝉补谤2彻底入门 Seasar2、SAStruts、S2JDBCは安定期に S2Container、周辺プロダクトも解説 末永く使える一冊に!
  • 17. Purpose ? Seasarプロジェクトでは様々なプロダクトが開 発されています ? ただし、開発がアクティブに行われていないも のも多く、機能?品質にもバラつきがあります ? これらのプロダクトの中から“仕事で使える”プ ロダクトを紹介します
  • 18. Web Framework ? (SAStruts) ? Cubby ? Mayaa ? Teeda ? Ymir ? S2JSF ? S2Struts
  • 19. 学習コストの低いWebフレームワークを使いたい! Cubby http://cubby.seasar.org/ ? Servlet/JSPベースのシンプルなWebフレームワーク ? Seasar2だけでなく、Spring Framework、Google Guiceと連 携が可能 public class HelloAction extends Action { ??? <t:form action="message" value="${action}"> @RequestParameter あなたの名前: public String name; <t:input type="text" name="name"/> <input type="submit" value="送信"/> public ActionResult index() { </t:form> return new Forward("input.jsp"); ??? } input.jsp public ActionResult message() { return new Forward("result.jsp"); ??? } こんにちは、${action.name}さん。 } ??? アクション result.jsp
  • 20. プログラマとデザイナを分业したい! Mayaa http://mayaa.seasar.org/ ? Tapestry、S2JSFの系譜を受け継ぐHTMLテンプレートエンジン ? デザインとロジックの完全な分離を実現 ? SAStrutsやCubby等と組み合わせて利用可能 HTMLファイル <html> <body> <span id="message">dummy message</span> </body> </html> <html> <body>Hello Mayaa!</body> Mayaaファイル </html> <?xml version="1.0" encoding="UTF-8"?> <m:mayaa xmlns:m="http://mayaa.seasar.org"> <m:write m:id="message" value="Hello Mayaa!" /> </m:mayaa>
  • 21. DataBase Access Framework ? (S2JDBC) ? DBFlute ? Doma ? Kuina ? S2Dao
  • 22. 現場でトラブルになりにくいO/Rマッパを使いたい! DBFlute http://dbflute.sandbox.seasar.org/ ? Apache Torque/S2Daoを参考に開発された「現 場指向」のO/Rマッピングフレームワーク ? 自動生成を活用しておりDB変更に強い ? 自由度よりも安全性を重視 ? Condition Bean ? 外出しSQL(2Way SQL) 詳しくはDBFluteのセッションで! S505 15:00-
  • 23. S2JDBCもいいけどS2Daoもいいよね! Doma http://doma.seasar.org/ ? APT(Annotation Processing Tool)を使用したO/Rマッパ ? S2Daoに似ているが、以下の点を改良 ? 実行時にAOPで処理を行うのではなく、コンパイル時にDAOのソースを生成 ? 命名規約ではなくアノテーションによる明示的な指定 ? 2waySQLの文法を間違いにくいよう改善 ? ドメインクラスへの対応 ? コンパイル時にAPTによるエラーチェックが可能 @Dao(config = AppConfig.class) public interface EmployeeDao { @Select Employee selectById(Integer employeeId); コンパイル時に DAOの実装を APTで処理 自動生成 @Update int update(Employee employee); } DAOのインターフェース
  • 24. Remoting/Communications ? S2BlazeDS ? S2Axis ? S2JMS ? S2Flex ? S2RMI
  • 25. Flex/AIRからSeasar2のコンポーネントを呼び出したい! S2BlazeDS http://s2blazeds.seasar.org/ ? BlazeDSでFlexからS2Container管理下のコンポーネントを呼 び出し可能 ? HOT deploy対応 <?xml version="1.0" encoding="UTF-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" backgroundColor="#FFFFFF"> <mx:RemoteObject id="srv" destination="productService"/> <mx:DataGrid dataProvider="{srv.getProducts.lastResult}" width="100%" height="100%"/> <mx:Button label="Get Data" click="srv.getProducts()"/> サーバ側 </mx:Application> public class ProductService { クライアント(Flex)側 public JdbcManager jdbcManager; public List<Product> getProducts() { return jdbcManager.from(Product.class).getResultList(); } ... }
  • 26. Webサービスを簡単に作成したい! S2Axis http://s2axis.seasar.org/ja/ ? POJOをWebサービス化 ? クライアント側もサポート ? JAX-WS、RESTにも対応 public interface Echo { String echo(int id, String message); } diconファイルに登録する際に metaタグでAxisにデプロイする public class EchoImpl implements Echo { public String echo(int id, String message) { Webサービスであることを指定 return "[id = " + id + "] " + message; } } <component name="Echo" class="org.seasar.remoting.axis2.examples.ex01.EchoImpl"> <meta name="axis-service"/> </component> http://localhost:8080/s2axis/services/Echo でアクセス可能
  • 27. Libraries ? S2Mai ? S2CSV ? S2Chronos ? S2Caching ? Fisshplate
  • 28. メールを送信したい! S2Mai http://s2mai.sandbox.seasar.org/ja/ ? 送信先等の設定をdiconファイルで管理可能 ? S2Daoのメール版(Maiインターフェースを作成するだけでメール送信可能) ? Velocity or FreeMarkerでメール内容のテンプレートを記述可能 メールテンプレートに 渡すパラメータ Mai DTO インターフェース SMTPサーバの情報等 送信するメールの内容 diconファイル メールテンプレート
  • 29. CSVファイルの入出力を行いたい! S2CSV http://s2csv.sandbox.seasar.org/ ? CSVとJavaBeanをアノテーションでマッピング ? アノテーションで読み込んだCSV値のバリデーションも可能 @CSVEntity(header=false) public class DeptCsv { @CSVColumn(columnIndex=0) public Long id; @CSVRequired @CSVColumn(columnIndex=1) public Integer deptNo; @CSVColumn(columnIndex=2) public String deptName; @CSVColumn(columnIndex=3) public String loc; }
  • 30. アプリケーションに定期処理を組み込みたい! S2Chronos http://s2chronos.sandbox.seasar.org/ ? タスクスケジューラ ? 即時、日時指定、cron形式など様々なトリガーが利用可能 ? アノテーションでトリガやタスクメソッドの順序を指定可能 ? 動的トリガを利用することでトリガ設定の外部化も可能 ? Webアプリにも組み込み可能 @Task @CronTrigger(expression = "0 */1 * * * ?") public class BasicTask { public void doExecute() { ... } }
  • 31. 性能向上のためにキャッシュを活用したい! S2Caching http://s2caching.sandbox.seasar.org/ ? メソッドの戻り値をキャッシュするインターセプターを提供 ? メソッドの引数ごとに戻り値をキャッシュする ? アノテーションでの適用も可能 ? バックエンドにはEhcacheを使用 diconファイルでの指定 <component class="jp.sf.amateras.samples.service.CalcService"> <aspect pointcut="calculateSomething">callCache</aspect> </component> @CallCache(componentName="callCache") public String calculateSomething(String condition) { .... } アノテーションでの指定
  • 32. Excelを手軽に生成したい! Fisshplate http://fisshplate.sandbox.seasar.org/ja/ ? Excelテンプレートエンジン ? ExcelにVelocityのような記述が可能
  • 33. 携帯電話向けのWebアプリケーションを開発したい! Mobylet http://mobylet.seasar.org/ ? 携帯Web向けのフレームワーク ? 絵文字、文字コードの自動変換 ? 画像のリサイズ ? デコメール対応メール送信 ? セッション管理機能 ? 他のWebフレームワークと組み合わせて利用 詳しくはMobyletのセッションで! S603 15:00-
  • 34. 贰肠濒颈辫蝉别プラグイン プラグイン 説明 Dolteng Seasar2を使用したプロジェクトの雛形を作成 SAStruts、S2JDBCなど様々なフレームワークの組み合わせに対応 Kijimuna Diconファイルを編集するためのエディタ SAStrutsPlugin WTPにSAStruts向けの機能を追加 Matatabi MayaaのmayaaファイルやHTMLファイルの編集を支援 S2JUnit4Plugin テストケース、テスト対象クラス、テスト用diconファイルの相互ジャンプ DbLauncher H2データベースをEclipse上から起動 WebLauncher Winstone(軽量サーブレットコンテナ)をEclipse上から起動 Doma Tools Domaでの開発を支援 EMecha DBFluteでの開発を支援
  • 35. Seasarプロジェクトのリソース ? メーリングリスト ? http://ml.seasar.org/ ? Subversionリポジトリ ? https://www.seasar.org/svn/ ? http://www.seasar.org/source/browse/ ? Mavenリポジトリ ? http://maven.seasar.org/ ? 贰肠濒颈辫蝉别プラグインの更新サイト ? http://www.seasar.org/updates.html ? JIRA(課題管理) ? https://www.seasar.org/issues/secure/Dashboard.jspa ? Hudson(継続的ビルド) ? https://www.seasar.org/hudson/ ? Wiki ? http://www.seasar.org/wiki/
  • 36. 厂别补蝉补谤2活用のために Seasar2徹底入門 SAStruts/S2JDBC対応 ISBN:978-4798121505 価格:3,990 出版社:翔泳社