SlideShare a Scribd company logo
1 of 36
Download to read offline
Seasarプロジェクト徹底攻略


 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本の歴史
Seasar入門 はじめてのDI&AOP
Seasar 2.4登場
Seasar2によるスーパーアジャイルなWeb開発
SAStruts+S2JDBC
      登場
Seasar2入門
JavaによるはじめてのWebアプリケーション開発
SAStruts、S2JDBCの
 機能改善による変化
最新の情報をカバーした
実践的な書籍が必要だ!
そしてSeasar2徹底入門


         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-
Eclipseプラグイン
     プラグイン                              説明

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/
   Eclipseプラグインの更新サイト
       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/
Seasar2活用のために


          Seasar2徹底入門
          SAStruts/S2JDBC対応

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

More Related Content

What's hot

MySQL 5.7の罠があなたを狙っている
MySQL 5.7の罠があなたを狙っているMySQL 5.7の罠があなたを狙っている
MySQL 5.7の罠があなたを狙っているyoku0825
 
Scalaの現状と課題
Scalaの現状と課題Scalaの現状と課題
Scalaの現状と課題Kota Mizushima
 
ビッグじゃなくても使えるSpark Streaming
ビッグじゃなくても使えるSpark Streamingビッグじゃなくても使えるSpark Streaming
ビッグじゃなくても使えるSpark Streamingchibochibo
 
No sql with mysql cluster (MyNA・JPUG合同DB勉強会)
No sql with mysql cluster (MyNA・JPUG合同DB勉強会)No sql with mysql cluster (MyNA・JPUG合同DB勉強会)
No sql with mysql cluster (MyNA・JPUG合同DB勉強会)Shinya Sugiyama
 
MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話
MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話
MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話Takahiro Okumura
 
Scala界隈の近況
Scala界隈の近況Scala界隈の近況
Scala界隈の近況takezoe
 
Zabbixによるオートスケーリングクラスタ監視とオペレーション自動化
Zabbixによるオートスケーリングクラスタ監視とオペレーション自動化Zabbixによるオートスケーリングクラスタ監視とオペレーション自動化
Zabbixによるオートスケーリングクラスタ監視とオペレーション自動化真乙 九龍
 
Real world android akka
Real world android akkaReal world android akka
Real world android akkaTaisuke Oe
 
KUSANAGIユーザグループ東京 第1回勉強会 資料
KUSANAGIユーザグループ東京 第1回勉強会 資料KUSANAGIユーザグループ東京 第1回勉強会 資料
KUSANAGIユーザグループ東京 第1回勉強会 資料Sumito Tsukada
 
めんどくさくない Scala #kwkni_scala
めんどくさくない Scala #kwkni_scalaめんどくさくない Scala #kwkni_scala
めんどくさくない Scala #kwkni_scalaKazuhiro Sera
 
MySQL5.6と5.7性能比較
MySQL5.6と5.7性能比較MySQL5.6と5.7性能比較
MySQL5.6と5.7性能比較hiroi10
 
Riot.jsを用いたweb開発 takusuta tech conf #1
Riot.jsを用いたweb開発   takusuta tech conf #1Riot.jsを用いたweb開発   takusuta tech conf #1
Riot.jsを用いたweb開発 takusuta tech conf #1Keisuke Imai
 
最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@
最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@
最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@sakaik
 
Gearpump, akka based Distributed Reactive Realtime Engine
Gearpump, akka based Distributed Reactive Realtime EngineGearpump, akka based Distributed Reactive Realtime Engine
Gearpump, akka based Distributed Reactive Realtime EngineSotaro Kimura
 
Tritonn (MySQL5.0.87+Senna)からの mroonga (MySQL5.6) 移行体験記
Tritonn (MySQL5.0.87+Senna)からの mroonga (MySQL5.6) 移行体験記Tritonn (MySQL5.0.87+Senna)からの mroonga (MySQL5.6) 移行体験記
Tritonn (MySQL5.0.87+Senna)からの mroonga (MySQL5.6) 移行体験記Kentaro Yoshida
 
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴Akihiro Kuwano
 

What's hot (20)

MySQL 5.7の罠があなたを狙っている
MySQL 5.7の罠があなたを狙っているMySQL 5.7の罠があなたを狙っている
MySQL 5.7の罠があなたを狙っている
 
POWER8サーバでMariaDBベンチマーク
POWER8サーバでMariaDBベンチマークPOWER8サーバでMariaDBベンチマーク
POWER8サーバでMariaDBベンチマーク
 
Scalaの現状と課題
Scalaの現状と課題Scalaの現状と課題
Scalaの現状と課題
 
ビッグじゃなくても使えるSpark Streaming
ビッグじゃなくても使えるSpark Streamingビッグじゃなくても使えるSpark Streaming
ビッグじゃなくても使えるSpark Streaming
 
No sql with mysql cluster (MyNA・JPUG合同DB勉強会)
No sql with mysql cluster (MyNA・JPUG合同DB勉強会)No sql with mysql cluster (MyNA・JPUG合同DB勉強会)
No sql with mysql cluster (MyNA・JPUG合同DB勉強会)
 
MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話
MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話
MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話
 
Scala界隈の近況
Scala界隈の近況Scala界隈の近況
Scala界隈の近況
 
Zabbixによるオートスケーリングクラスタ監視とオペレーション自動化
Zabbixによるオートスケーリングクラスタ監視とオペレーション自動化Zabbixによるオートスケーリングクラスタ監視とオペレーション自動化
Zabbixによるオートスケーリングクラスタ監視とオペレーション自動化
 
MCCT20130926 tsakuradac
MCCT20130926 tsakuradacMCCT20130926 tsakuradac
MCCT20130926 tsakuradac
 
Real world android akka
Real world android akkaReal world android akka
Real world android akka
 
KUSANAGIユーザグループ東京 第1回勉強会 資料
KUSANAGIユーザグループ東京 第1回勉強会 資料KUSANAGIユーザグループ東京 第1回勉強会 資料
KUSANAGIユーザグループ東京 第1回勉強会 資料
 
めんどくさくない Scala #kwkni_scala
めんどくさくない Scala #kwkni_scalaめんどくさくない Scala #kwkni_scala
めんどくさくない Scala #kwkni_scala
 
MySQL5.6と5.7性能比較
MySQL5.6と5.7性能比較MySQL5.6と5.7性能比較
MySQL5.6と5.7性能比較
 
Riot.jsを用いたweb開発 takusuta tech conf #1
Riot.jsを用いたweb開発   takusuta tech conf #1Riot.jsを用いたweb開発   takusuta tech conf #1
Riot.jsを用いたweb開発 takusuta tech conf #1
 
最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@
最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@
最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@
 
Gearpump, akka based Distributed Reactive Realtime Engine
Gearpump, akka based Distributed Reactive Realtime EngineGearpump, akka based Distributed Reactive Realtime Engine
Gearpump, akka based Distributed Reactive Realtime Engine
 
ACI + Ansible
ACI + AnsibleACI + Ansible
ACI + Ansible
 
Tritonn (MySQL5.0.87+Senna)からの mroonga (MySQL5.6) 移行体験記
Tritonn (MySQL5.0.87+Senna)からの mroonga (MySQL5.6) 移行体験記Tritonn (MySQL5.0.87+Senna)からの mroonga (MySQL5.6) 移行体験記
Tritonn (MySQL5.0.87+Senna)からの mroonga (MySQL5.6) 移行体験記
 
Arukas(Dockerホスティング)サービス概要資料2016年10月版
Arukas(Dockerホスティング)サービス概要資料2016年10月版Arukas(Dockerホスティング)サービス概要資料2016年10月版
Arukas(Dockerホスティング)サービス概要資料2016年10月版
 
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
 

Similar to Seasarプロジェクト徹底攻略

SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsugSpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsugY Watanabe
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方linzhixing
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発Akira Inoue
 
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireAkio Katayama
 
20120528 aws meister-reloaded-awssd-kforjava-public
20120528 aws meister-reloaded-awssd-kforjava-public20120528 aws meister-reloaded-awssd-kforjava-public
20120528 aws meister-reloaded-awssd-kforjava-publicAmazon Web Services Japan
 
クラウド・アプリケーション・モデリングへのアプローチ
クラウド・アプリケーション・モデリングへのアプローチクラウド・アプリケーション・モデリングへのアプローチ
クラウド・アプリケーション・モデリングへのアプローチTomoharu ASAMI
 
Apache Torqueについて
Apache TorqueについてApache Torqueについて
Apache Torqueについてtako pons
 
「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップYasuhito Yabe
 
Building React, Flutter and Blazor development and debugging environment with...
Building React, Flutter and Blazor development and debugging environment with...Building React, Flutter and Blazor development and debugging environment with...
Building React, Flutter and Blazor development and debugging environment with...Shotaro Suzuki
 
20141017 introduce razor
20141017 introduce razor20141017 introduce razor
20141017 introduce razordo_aki
 
【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(後編)
【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(後編)【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(後編)
【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(後編)日本マイクロソフト株式会社
 
scala+liftで遊ぼう
scala+liftで遊ぼうscala+liftで遊ぼう
scala+liftで遊ぼうyouku
 
Spark on sql server?
Spark on sql server?Spark on sql server?
Spark on sql server?Oda Shinsuke
 
ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用Yatabe Terumasa
 
SAStruts Seminar In Tripodworks
SAStruts Seminar In TripodworksSAStruts Seminar In Tripodworks
SAStruts Seminar In Tripodworkstripodworks
 

Similar to Seasarプロジェクト徹底攻略 (20)

SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsugSpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
 
Sc2009autumn s2robot
Sc2009autumn s2robotSc2009autumn s2robot
Sc2009autumn s2robot
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発
 
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
 
20120528 aws meister-reloaded-awssd-kforjava-public
20120528 aws meister-reloaded-awssd-kforjava-public20120528 aws meister-reloaded-awssd-kforjava-public
20120528 aws meister-reloaded-awssd-kforjava-public
 
クラウド・アプリケーション・モデリングへのアプローチ
クラウド・アプリケーション・モデリングへのアプローチクラウド・アプリケーション・モデリングへのアプローチ
クラウド・アプリケーション・モデリングへのアプローチ
 
HTML5 on ASP.NET
HTML5 on ASP.NETHTML5 on ASP.NET
HTML5 on ASP.NET
 
Apache Torqueについて
Apache TorqueについてApache Torqueについて
Apache Torqueについて
 
Ajax basic
Ajax basicAjax basic
Ajax basic
 
「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ
 
Building React, Flutter and Blazor development and debugging environment with...
Building React, Flutter and Blazor development and debugging environment with...Building React, Flutter and Blazor development and debugging environment with...
Building React, Flutter and Blazor development and debugging environment with...
 
20141017 introduce razor
20141017 introduce razor20141017 introduce razor
20141017 introduce razor
 
【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(後編)
【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(後編)【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(後編)
【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(後編)
 
scala+liftで遊ぼう
scala+liftで遊ぼうscala+liftで遊ぼう
scala+liftで遊ぼう
 
Spark on sql server?
Spark on sql server?Spark on sql server?
Spark on sql server?
 
ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用
 
SAStruts Seminar In Tripodworks
SAStruts Seminar In TripodworksSAStruts Seminar In Tripodworks
SAStruts Seminar In Tripodworks
 
Clrh 110716 wcfwf
Clrh 110716 wcfwfClrh 110716 wcfwf
Clrh 110716 wcfwf
 
BPStudy20121221
BPStudy20121221BPStudy20121221
BPStudy20121221
 

More from takezoe

Journey of Migrating Millions of Queries on The Cloud
Journey of Migrating Millions of Queries on The CloudJourney of Migrating Millions of Queries on The Cloud
Journey of Migrating Millions of Queries on The Cloudtakezoe
 
GitBucket: Open source self-hosting Git server built by Scala
GitBucket: Open source self-hosting Git server built by ScalaGitBucket: Open source self-hosting Git server built by Scala
GitBucket: Open source self-hosting Git server built by Scalatakezoe
 
Testing Distributed Query Engine as a Service
Testing Distributed Query Engine as a ServiceTesting Distributed Query Engine as a Service
Testing Distributed Query Engine as a Servicetakezoe
 
Revisit Dependency Injection in scala
Revisit Dependency Injection in scalaRevisit Dependency Injection in scala
Revisit Dependency Injection in scalatakezoe
 
How to keep maintainability of long life Scala applications
How to keep maintainability of long life Scala applicationsHow to keep maintainability of long life Scala applications
How to keep maintainability of long life Scala applicationstakezoe
 
頑張りすぎないScala
頑張りすぎないScala頑張りすぎないScala
頑張りすぎないScalatakezoe
 
GitBucket: Git Centric Software Development Platform by Scala
GitBucket:  Git Centric Software Development Platform by ScalaGitBucket:  Git Centric Software Development Platform by Scala
GitBucket: Git Centric Software Development Platform by Scalatakezoe
 
Non-Functional Programming in Scala
Non-Functional Programming in ScalaNon-Functional Programming in Scala
Non-Functional Programming in Scalatakezoe
 
Scala警察のすすめ
Scala警察のすすめScala警察のすすめ
Scala警察のすすめtakezoe
 
Scala製機械学習サーバ「Apache PredictionIO」
Scala製機械学習サーバ「Apache PredictionIO」Scala製機械学習サーバ「Apache PredictionIO」
Scala製機械学習サーバ「Apache PredictionIO」takezoe
 
The best of AltJava is Xtend
The best of AltJava is XtendThe best of AltJava is Xtend
The best of AltJava is Xtendtakezoe
 
Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.jsScala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.jstakezoe
 
Tracing Microservices with Zipkin
Tracing Microservices with ZipkinTracing Microservices with Zipkin
Tracing Microservices with Zipkintakezoe
 
Type-safe front-end development with Scala
Type-safe front-end development with ScalaType-safe front-end development with Scala
Type-safe front-end development with Scalatakezoe
 
Scala Frameworks for Web Application 2016
Scala Frameworks for Web Application 2016Scala Frameworks for Web Application 2016
Scala Frameworks for Web Application 2016takezoe
 
Macro in Scala
Macro in ScalaMacro in Scala
Macro in Scalatakezoe
 
Java9 and Project Jigsaw
Java9 and Project JigsawJava9 and Project Jigsaw
Java9 and Project Jigsawtakezoe
 
Reactive database access with Slick3
Reactive database access with Slick3Reactive database access with Slick3
Reactive database access with Slick3takezoe
 
markedj: The best of markdown processor on JVM
markedj: The best of markdown processor on JVMmarkedj: The best of markdown processor on JVM
markedj: The best of markdown processor on JVMtakezoe
 
ネタじゃないScala.js
ネタじゃないScala.jsネタじゃないScala.js
ネタじゃないScala.jstakezoe
 

More from takezoe (20)

Journey of Migrating Millions of Queries on The Cloud
Journey of Migrating Millions of Queries on The CloudJourney of Migrating Millions of Queries on The Cloud
Journey of Migrating Millions of Queries on The Cloud
 
GitBucket: Open source self-hosting Git server built by Scala
GitBucket: Open source self-hosting Git server built by ScalaGitBucket: Open source self-hosting Git server built by Scala
GitBucket: Open source self-hosting Git server built by Scala
 
Testing Distributed Query Engine as a Service
Testing Distributed Query Engine as a ServiceTesting Distributed Query Engine as a Service
Testing Distributed Query Engine as a Service
 
Revisit Dependency Injection in scala
Revisit Dependency Injection in scalaRevisit Dependency Injection in scala
Revisit Dependency Injection in scala
 
How to keep maintainability of long life Scala applications
How to keep maintainability of long life Scala applicationsHow to keep maintainability of long life Scala applications
How to keep maintainability of long life Scala applications
 
頑張りすぎないScala
頑張りすぎないScala頑張りすぎないScala
頑張りすぎないScala
 
GitBucket: Git Centric Software Development Platform by Scala
GitBucket:  Git Centric Software Development Platform by ScalaGitBucket:  Git Centric Software Development Platform by Scala
GitBucket: Git Centric Software Development Platform by Scala
 
Non-Functional Programming in Scala
Non-Functional Programming in ScalaNon-Functional Programming in Scala
Non-Functional Programming in Scala
 
Scala警察のすすめ
Scala警察のすすめScala警察のすすめ
Scala警察のすすめ
 
Scala製機械学習サーバ「Apache PredictionIO」
Scala製機械学習サーバ「Apache PredictionIO」Scala製機械学習サーバ「Apache PredictionIO」
Scala製機械学習サーバ「Apache PredictionIO」
 
The best of AltJava is Xtend
The best of AltJava is XtendThe best of AltJava is Xtend
The best of AltJava is Xtend
 
Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.jsScala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.js
 
Tracing Microservices with Zipkin
Tracing Microservices with ZipkinTracing Microservices with Zipkin
Tracing Microservices with Zipkin
 
Type-safe front-end development with Scala
Type-safe front-end development with ScalaType-safe front-end development with Scala
Type-safe front-end development with Scala
 
Scala Frameworks for Web Application 2016
Scala Frameworks for Web Application 2016Scala Frameworks for Web Application 2016
Scala Frameworks for Web Application 2016
 
Macro in Scala
Macro in ScalaMacro in Scala
Macro in Scala
 
Java9 and Project Jigsaw
Java9 and Project JigsawJava9 and Project Jigsaw
Java9 and Project Jigsaw
 
Reactive database access with Slick3
Reactive database access with Slick3Reactive database access with Slick3
Reactive database access with Slick3
 
markedj: The best of markdown processor on JVM
markedj: The best of markdown processor on JVMmarkedj: The best of markdown processor on JVM
markedj: The best of markdown processor on JVM
 
ネタじゃないScala.js
ネタじゃないScala.jsネタじゃないScala.js
ネタじゃないScala.js
 

Seasarプロジェクト徹底攻略

  • 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. そしてSeasar2徹底入門 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. Eclipseプラグイン プラグイン 説明 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/  Eclipseプラグインの更新サイト  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. Seasar2活用のために Seasar2徹底入門 SAStruts/S2JDBC対応 ISBN:978-4798121505 価格:3,990 出版社:翔泳社