Skip to main content
.NETの業務向け
OSSフレームワーク鼎談
                        福井厚
                        青木淳夫
17-D-5                  立見博史
                        司会:猪股健太郎
                        書記:荻原裕之
         Developers Summit 2011
予習:フレームワークとは
 ソフトウェアフレームワーク(英: software framework)とは、プ
  ログラミングにおいて、一般的な機能をもつ共通コードをユー
  ザーが選択的に上書きしたり特化させたりすることで、ある特
  定の機能をもたせようとする抽象概念のことである。単にフ
  レームワークとも呼ばれる。
 ソフトウェアフレームワークは、はっきり定義されたAPIを持ち、
  コードを再利用可能な形で隠蔽しているという点でライブラリと
  よく似ている。しかし、ライブラリでは呼び出し側がプログラム
  全体の制御構造を指定できないが、フレームワークでは可能
  である。この制御の反転がソフトウェアフレームワークの特筆
  すべき特徴である。
           (Wikipedia「ソフトウェアフレームワーク」より)


               Developers Summit 2011
予習:さまざまなフレームワーク
 アプリケーション形態に沿ったフレームワーク
  Webアプリケーション・フレームワーク
  GUIアプリケーション・フレームワーク
  コンソールアプリケーション・フレームワーク
 特定レイヤのフレームワーク
  Webサービス・フレームワーク
  データアクセス・フレームワーク
 レイヤに依存しない機能のフレームワーク
  AOPフレームワーク
  DI (依存性注入) フレームワーク
 開発ライフサイクルを支援するフレームワーク
  テスティング・フレームワーク


               Developers Summit 2011
本セッションの狙い
 .NET Frameworkの使い方を
  「現場の視点」で話し合おう
 オープンソースソフトウェアと
  「中の人」を知ってもらおう




          Developers Summit 2011
3つのOSSフレームワーク
                                     ボラン
       企業                            ティア
.NET




JAVA
            Developers Summit 2011
Agenda
   各フレームワークの概要紹介
   質問1 各フレームワークの思想
   質問2 「中の人」の話
   質問3 パネリスト同士の質問
   まとめ




           Developers Summit 2011
ENTERPRISE LIBRARYの紹介


        Developers Summit 2011
ACA.NETとEnterprise Library
                                                        Microsoft はACA.NETのテクノロジーをEnterprise
アバナード以前、アクセンチュア MSから                                                                                                                                ACA.NET は品質、再利用性、生産性向上のた
                                                        Libraryのベースとして適用。ACA.NETはEnterprise
      IPを委譲される                                                                                                                                       めにService FactoryとWeb Factoryを提供
                                                                  Libraryを基盤として利用。



                                          ACA.NET            ACA.NET            ACA.NET                                   ACA.NET                             ACA.NET                    ACA.NET                       ACA.NET
   ICBAM                    ACA DNA
                                            1.0                2.x                3.x                                       4.x                                 5.x                        6.x                           7.x


                                                                                                          Ent Lib                 Ent Lib               Ent Lib                           Ent Lib                          Ent Lib
                                                                                                            1.x                     2.x                   3.x                               4.x                              5.0


                                                 .NET FX                        .NET FX                                .NET FX               .NET FX                             .NET FX                                   .NET FX
                                                   1.0                            1.1                                    2.0                   3.0                                 3.5                                       4.0


                       .NET
                      Framework リリース
             Visual Studio            Visual
                                                                                                 VSTS 2005 とDSL Tool Kit をリ                                                                                                     VSTS
                                                                             Visual Studio 2003
                                                                                              リース。              VSTS 2005
                                                                                                        ソフトウェア ファクトリが                                                             VSTS 2008
                  ACA.NET
                   6  1.0 は多くの基本となるStudio .NET                                                                                                                                                                                  2010
                  アーキテクチャ パターンをラップ                                                                    生産性の向上を提供


                                                                                                                                                          Aug 2007                Oct 2008
                                                                                                                                                        ACA.NET 5.0              Ent Lib 4.1




                                             Oct 2002      Jan 2003                                                 Nov 2005,
                                                                                         Jun 2004                                      Nov 2006,                 May 2008          Aug 2008
                                             ACA.NET       ACA.NET                                                 .NET FX 2.0
                                                                                       ACA.NET 3.1                                    .NET FX 3.0               Ent Lib 4.0       ACA.NET 6.0
                                               2.0           2.1                                                    VSTS 2005



                      Sep 2000,
                       Avanade            Feb 2002,             Apr 2003,                                                                  Apr 2007                                                                  Feb 2010
                                                                                                      Jan 2005                                           Nov 2007,
                      Formed by          .NET FX 1.0           .NET FX 1.1       Jan 2004                                Jan 2006         Ent Lib 3.0                      Mar 2008              Mar 2009            ACA.NET
                                                                                                     Ent Lib1.0                                         .NET FX 3.5
                      Accenture            VS.NET               VSTS 2003       ACA.NET 3.0                             Ent Lib 2.0        May 2007                       ACA.NET 5.1           ACA.NET 6.1            7.0
                                                                                                     ACA.NET 4.0                                         VSTS 2008
                         and             ACA.NET 1.0           ACA.NET 2.1                                                                Ent Lib 3.1
                      Microsoft




           2000        2001           2002              2003                 2004             2005                    2006                  2007               2008                2009                       2010




                                                                      Developers Summit 2011
Enterprise Library以前のP&P
  オリジナルのApplication Block
      Data Access Application Block
      Exception Management Application Block
      Asynchronous Invocation Application Block
      Aggregation Application Block
      Caching Application Block
      Configuration Management Application Block
      Uppdater Application Block
      User Interface Process Application Block
      Smart Client Offline Application Block

                    Developers Summit 2011
Enterprise Library 1.0-1.1
  For .NET Framework 1.1 Overview
      2005年1月 Version 1.0 リリース
      Configuration Application Block
      Data Access Application Block
      Caching Application Block
      Exception Handling Application Block
      Logging and Instrumentation Application Block
      Security Application Block
      Cryptography Application Block
  2005年6月 Version 1.1 リリース
    .NET Framework 2.0 との互換性
                     Developers Summit 2011
Enterprise Library 2.0-3.1

  Enterprise Library 2.0 (2006.1)
    .NET Framework 2.0に対応するため大幅に書き直し
  Enterprise Library 3.0 (2007.4)
    Validation Application Block
    Policy Injection Application Block
  Enterprise Library 3.1 (2007.5)
    バグ修正




                    Developers Summit 2011
Enterprise Library 4.0-4.1

  Enterprise Library 4.0 (2008.5)
    .NET Framework 3.5、Visual Studio 2008 サポート
    Unity Application Blockとの統合
  Enterprise Library 4.1 (2008.10)
    Unity Interceptionを使ったPolicy Injection ABとUnityの
     統合
    Unity Application BlockのGenericsサポート
    VS2008SP1対応



                  Developers Summit 2011
Enterprise Library 5.0

  Enterprise Library 5.0 (2010.4)
      .NET Framework 4.0、 Visual Studio 2010 サポート
      メジャーリファクタリング
      DIコンテナの抽象化
      プログラマティックな構成サポート
      非同期データアクセス
      DataAnnotationsの属性バリデーション サポート
      WPFバリデーションとの統合



                   Developers Summit 2011
SEASAR.NETの紹介


        Developers Summit 2011
Seasar.NET とは
 Seasar.NETとは
   DI+AOPコンテナ「Seasar.NET」に代表される
    プロダクトとコミュニティ
    http://s2container.net.seasar.org

   Seasarプロジェクトのトッププロジェクトの1つ
   Seasarプロジェクトでは 自由にOSSの開発が可能
   業務アプリケーション開発に役立つプロダクトが多
    い点が特徴


                 Developers Summit 2011
Seasar.NET プロダクト
 Seasar.NETの主要プロダクトの紹介

  S2Container.NET     S2Dao.NET                   Quill             S2Windows.NET

  •DI+AOPコンテ        •XMLレスの             •XMLレスの簡                   •WinForm開発
   ナ                 O/Rマッパー             単DI+AOPコン                  の手助け
  •Seasar2          •2Way-SQL            テナ                        •画面遷移や
   を.NET/C#に移                           •.NET独自実装                   POCOの自動バ
   植                                                                インド



    S2Unit.NET       S2Dxo.NET

 •ユニットテスト           •POCO間やコレ            DBFlute.NET      Koropokkur.NET    Fisshplate.NET
  を手助け               クション間の詰           •現場指向O/R           •VisualStudioで   •Excelをテンプ
  (MbUnit)           め替えを手助け            マッパー              の開発をささや          レートとして使っ
                                       •2Way-SQLを活        かに支援するこ          てデータを埋め
 •コンテナ管理、                               かしつつDB変更          とを目的とした汎         込めるライブラリ
  トランザクション、                             に強い仕組み            用的なアドイン集
  データ管理

                         Developers Summit 2011
Seasar.NET の歴史
 登場から現在まで
   2005年04月 S2Container.NETプロジェクト誕生
   2005年09月 S2Dao.NETプロジェクト誕生
   2005年11月 S2Container.NET 1.0リリース(.NET1.1対応)
   2006年02月 S2Container.NET 1.1リリース
   2006年06月 S2Container.NET 1.2リリース(.NET2.0対応)
   2006年09月 S2Dao.NET 1.0リリース
   2006年10月 S2Windows.NETサンプル公開
   2007年07月 S2Container.NET 1.3リリース(Quill登場)
   2009年01月 Koropokkur.NET登場(最新バージョンは0.2.3)
   2009年06月 DBFlute.NET登場(最新バージョンは0.8.9 )
   2010年08月 S2Container.NET 1.3.18リリース(.NET2.0系最新)
   2010年02月 Fisshplate.NET 登場(最新バージョンは0.1.1)
   2011年01月 S2Container.NET 1.4RC2リリース(.NET4.0対応)
                     Developers Summit 2011
Seasar.NETの活動
 活動内容
    新機能追加やバグ修正
    メーリングリストに対する調査や回答
    ブログ等のメディアを使っての情報公開
    Seasarカンファレンス等のイベントでの発表や懇親会
 プロジェクトのインフラ
  サポート:メーリングリスト(別途コミッタ用MLあり)
  ソース管理:Subversion
  バグ管理:JIRA
 主なコミッタ
    久保さん( http://d.hatena.ne.jp/jflute/)
    小谷さん(http://d.hatena.ne.jp/koyak/)
    宮城さん(http://d.hatena.ne.jp/rmiya/)
    藤井さん(http://fujiih.at.webry.info/)
    西山さん (http://d.hatena.ne.jp/hajimeni/)
    杉本さん(http://d.hatena.ne.jp/sugimotokazuya/)
                         Developers Summit 2011
TERASOLUNAの紹介


       Developers Summit 2011
TERASOLUNA for .NETとは
 .NETを利用した業務システム開発向けのオープン
  ソースフレームワーク
   TERASOLUNA Client Framework for .NET
      Windowsフォームによるリッチクライアント・アプリケーション向け
       のフレームワーク
   TERASOLUNA Server Framework for .NET(Rich)
      リッチクライアント・アプリケーションの通信先となるサーバ向け
       のフレームワーク
   TERASOLUNA Server Framework for .NET(Web)
      ASP.NETによるWebアプリケーション向けのフレームワーク

 フレームワークに対応した開発手順や各種開発
  支援ツールを提供
   ※OSSとしての公開はフレームワークのみです。
                  Developers Summit 2011
TERASOLUNA for .NETがターゲットとする
リッチクライアント・アプリケーション
  クライアントアプリケーションでは主に業務画面処理を行う
  要件に応じて、バーコードリーダやOCRなど、クライアントのローカルデバイスにも
   アクセスする
  サーバアプリケーションでは、業務処理実行、データアクセスを行う

プレゼンテーションレイヤ                        ビジネスレイヤ             データレイヤ

 クライアントPC                         APサーバ

                                          業務処理呼び出し     データアクセス
    業務画面
   ○○○○        要求電文
                                            ビジネス      データアクセス
   ○○○○        (XML、バイナリ、     要求受付          ロジック      オブジェクト
               マルチパート)
    ○○




               応答電文
 ローカルデバイス      (XML、バイナリ)                                    DB
                                                     DBサーバ




                        Developers Summit 2011
TERASOLUNA for .NETがターゲットとする
リッチクライアント・アプリケーション




プレゼンテーションレイヤ                        ビジネスレイヤ           データレイヤ

 クライアントPC                             TERASOLUNA Server
                                  APサーバ
                                  Framework for .NET(Rich)
                                          業務処理呼び出し   データアクセス
 TERASOLUNA
    業務画面
   ○○○○        要求電文
                                            ビジネス     データアクセス
   Client
   ○○○○

    ○○
               (XML、バイナリ、
               マルチパート)
                              要求受付
                                      TERASOLUNA Server
                                            ロジック     オブジェクト

 Framework                        Framework for Java(Rich)
  for .NET
               応答電文
 ローカルデバイス      (XML、バイナリ)                                 DB
                                          Webサービスなど
                                                 DBサーバ




                        Developers Summit 2011
TERASOLUNA for .NETの狙い
           .NETを利用した業務システム開発における、
         「保守性」 「品質」 「コスト」の問題を解決する!!

1.       業務システム全体のアーキテクチャを統一
         クライアントからサーバ業務処理を呼び出す処理フローをテンプレートとして定型化
          (入力値検証→サーバ処理呼び出し→処理結果の画面への反映)

2.       作り込みが必要となる複雑な処理を隠蔽
         システム全体で統一したエラーハンドリング処理
         マルチスレッドによる非同期処理

3.       標準の.NET Frameworkでは足りない共通機能を強化
         日本語の入力値検証、ログ、メッセージ管理機能等

                     Developers Summit 2011
TERASOLUNA for .NETの
テクノロジーマッピング
.NET標準の技術を最大限活用し、サポートが薄い部分を重点的に
TERASOLUNA for .NETが補完している




             Developers Summit 2011
TERASOLUNA の歴史
 開発開始から現在まで


  2003年 TERASOLUNA Server Framework for Java の開発がスタート
  2004年 TERASOLUNA Server Framework for .NET の開発がスタート
  2007年 TERASOLUNA Client Framework for .NET の開発がスタート
   同時期に TERASOLUNA Batch Framework for Java の開発がスタート




  2007年11月 TERASOLUNA Server、Batch Framework for Java をOSSとし
   てSourceForge.jpに公開
  2008年7月 TERASOLUNA Server/Client Framework for .NET v2.1 をOSSと
   してSourceForge.jpに公開
  2010年4月 TERASOLUNA Server/Client Framework for .NET v3.0 をOSSと
   してSourceForge.jpに公開

                      Developers Summit 2011
質問1 フレームワーク
 このフレームワークを選ぶ理由は?
    組み合わせたり取り外したりできる?
    拡張の方法は?
    IDEを使った支援機能はある?
    どんな事例が?
 .NET Frameworkの機能強化とのすみ分け
    バリデーション
    ロギング
    データアクセス

            Developers Summit 2011
質問1 フレームワーク (Note)
 このフレームワークを選ぶ理由は?
   EntLib:MSDNで公開されており、MSがサポートして
    いるため安心して使える。また.NETの最新のバー
    ジョンに常に対応することが期待できる
   Seasar.NET:.NETばかりではなく、Javaなどの技術
    者も知っている技術が使える。Oracle, MySQLと
    いったSQL Server以外のDBとの相性が良い。
   TERASOLUNA:システム全体でフレームワーク
    (アーキテクチャ)を統一したい問題を解決できる。
      実績:数100k~2M Stepくらいまで,
       大規模以外でも使える
             Developers Summit 2011
質問1 フレームワーク (Note)
 このフレームワークを選ぶ理由は?
   組み合わせたり取り外したりできる?
      EntLib:アプリケーションブロック(AB)の集まり。データア
       クセス(DAAB), ロギング(LIAB)だけ使うなど。Log4netと
       も組み合わせOK. 縛りは緩い
         フレームワークフレームワークしてないので、自由に
          つかえる
      TERASOLUNA:内部でEntLibを使っている。

     Seasar.NET:Quillなど独立してるものもあるが、
      S2Dao.NETやDbFlute.NETといったSeasar.NETと連携す
      るキラーアプリがあるので、人気がある。

                Developers Summit 2011
質問1 フレームワーク (Note)
 .NET Frameworkの機能強化とのすみ分け
    EntLib.NET: まだEFをサポートしていない。
       EntLib ContribではEFをサポートするプロジェクトも始
        まっている
    ニーズに合わせて利用する部分を決める
       現場では?⇒いろいろ使ってます
          メンバのスキル、要件の複雑さなど・・・
          新技術は初物はつまづくが・・まぁ慣れればOK
    TERASOLUNA: .NET Frameworkの進化が早い…どこを…
     難しくて怖い⇒WCF,EFを選んだ
    Seasar.NET: S2Dao.NETとかは安定稼働。Javaで慣れた人
     を使える。
               Developers Summit 2011
質問2 開発・サポート
 開発メンバーの「中の人」の話を。
    新機能はだれが決める?
    コミッタはどういうメンバー?
    リリースのタイミングと方法
    ドキュメントは充実している?
    コミュニティからのフィードバック
    過去バージョンのメンテナンスポリシー
    ツールや技法など



            Developers Summit 2011
質問2 開発・サポート (Note)
 開発メンバーの「中の人」の話を。
   新機能はだれが決める?(チームの体制)
      EntLib: MSのHQにP&Pチームがいる。人数は10数名、
       TDD,ペアプロなどアジャイルで開発
      TERASOLUNA: NTTデータ開発部隊の専門の開発部隊
       で作成。実際の現場との乖離について、5-6人のスー
       パーアーキテクトチームで実際に作成。実際の現場で
       利用しながら作成。現場のFBは大事
      Seasar.NET: 地理的には東京、大阪、高知など点在し
       ている。Searar.NETのリーダであった杉本さんが農家
       へ・・・今はそれ以外のメンバーが中心となって支え続け
       ている。ボランティアで集まって機能を相談。ゆるく、細
       くやっている
              Developers Summit 2011
質問2 開発・サポート (Note)
 開発メンバーの「中の人」の話を。
   フィードバック
      (ここだけS2.NETのコミッタとして)
       S2.NETの場合は、MLが多い。
       ボランティアベースであるが意見をもらって修正
      TERASOLUNA: NTTデータグループ以外でもつ
       かっていただいている。社外の目からのFBもい
       ただく
      Seasar.NET: MLでFBがある。カンファレンスの
       飲み会や、業務で使った人からのフィードバック
       もある。
             Developers Summit 2011
質問2 開発・サポート (Note)
 開発メンバーの「中の人」の話を。
   リリースのタイミングと方法
      EntLib: .NET Frameworkのバージョンアップに合わせ
       てリリースされる場合が多い。MSDNで公開。

     Seasar.NET: 基本的に誰かが現場で必要なFWを作る。
      それを公開して使ってもらうことでさらに洗練させていく。
        人気があるのはサンプルコードだったりする
        興味ある人はコミッタとして参加してもらえると嬉しい。
         久保さんブログや私に連絡ください。
     TERASOLUNA: 社内でリリース判定など、OSSといえど
      も弊社らしい稟議を通している。
                Developers Summit 2011
質問3 お互いに (Note)
  TERASOLUNAの中でUnityを使っているが、なぜSeasarを
   使っていないのですか?
     MSなどのバックボーンに安心感が…(立見)
  EntLibってどう組み合わせるの?
     EntLibはABの集まり。それにもう一段薄いフレームワー
      クを作ることが多い。(福井)
     ニーズが合うようにちょっと薄いのを挿す
        毎回つくる、顧客にもよる、Silverlightの例…このあ
         たりがネック
        そのうすい皮を公開してもらえない?
     お決まりのパターンは?
        ある程度はある。認証、Logging、集約的例外ハンド
         ラなど。チームメンバーのスキルなどにもよる
             Developers Summit 2011
質問3 お互いに (Note)
  メンバーのスキルについて。教育コストは?
    新メンバは当然教育コストがかかる。
    顧客へのトレーニングもある。
    キャッチアップ必要(福井)
       Avanadeの場合は、上にACA.NETというものが用意
        されている
    TERASOLUNAの場合は、できるだけ.NET開発のスタイ
     ルを踏襲。ドキュメントもかなりの量を提供。(立見)
       チュートリアルも提供
       ドキュメントを書くのは結構大変
    Seaserは、Sandboxから正式プロダクトへの卒業条件に
     ドキュメント化が必須。(青木)

             Developers Summit 2011
まとめ
 各スピーカーの思い
  プロダクトの特徴
  オープンソースソフトウェアの良さ
  .NETの業務システムについて
   これまでとこれから




         Developers Summit 2011
個人




                              コミュ
企業       創発                   ニティ




            現場


     Developers Summit 2011
福井 厚 (EntLib.NET)
  アバナード株式会社 CTOアーキテクト
    / VSUG運営委員 / XPJUG企画担当
  ソフトウェアハウス、大手SIベンダーを経て、
   2006年からアバナードに在籍。現在はソリューションアーキ
   テクトとして.NETによる企業システム開発プロジェクトに多
   数従事。Enterprise Libraryをベースとしたフレームワーク
   開発も多数経験。またVSUG、XPJUG、デブサミオブザー
   バーなどコミュニティ活動にも積極的に参加。最近はVSUG
   アーキテクト アカデミーを主催し、アーキテクト育成のため
   の活動も行っている。
  Microsoft Certified Architect(MCA)、Microsoft Regional
   Director、MS MVP。
  Twitter: @afukui
                   Developers Summit 2011
青木 淳夫 (Seasar.NET)
  ㈱ネクストスケープ(豆蔵OSHDグループ)
   にて、ECサイト、業務システムの
   設計・開発に従事
  Seasar.NETコミッタ / .NET CLIPS運営
  2001年にVBマガジンにVBUnitとXPの記事を寄稿、
   その後も.NETとOSSの情報を発信
  (log4net,NLog,S2Dao.NET,SubSonic,iBATIS.NET,NHibernate,NAnt,NVelocity,iTe
  xtSharp,xUnit.NET,Gallio,Sandcastle,SharpDevelop,DotNetZip,Moq,AutoMapper
  ,HtmlAgilityPack,Selenium,BlogEngine.NET…)

  Microsoft MVP(2006年~)
  Blog: http://d.hatena.ne.jp/aoki1210/
  Twitter: @aoki1210
                        Developers Summit 2011
立見 博史 (TERASOLUNA)
  株式会社NTTデータ 技術開発本部
  「TERASOLUNA Server/Client Framework
   for .NET」(http://www.terasoluna.jp/)
   の整備や、社内での.NET案件の開発支援を実施
  最近は「倍速開発」のスローガンのもと、開発自動
   化の研究開発に従事
  2008年~2009年にかけてDBマガジンに「.NETコン
   トロールまるわかり教室」を連載したり、@ITに
   TERASOLUNAに関する記事を寄稿
  Microsoft Certified Professional Developer
   (MCPD)
               Developers Summit 2011