.NETでもオープンソースでシステム開発 2008年9月4日 木 株式会社NTTデータ 技術開発本部 ソフトウェア工学推進センタ 永嶋浩樹 記載されている会社名 商品名 又はサービス名は 各社の登録商標又は商標です
Agenda はじめに.NETとオープンソース 支 援 ツール 系 オープンソースの 紹 介 クラスライブラリ 系 オープンソースの 紹 介 まとめ -2-
Agenda はじめに.NETとオープンソース 支 援 ツール 系 オープンソースの 紹 介 クラスライブラリ 系 オープンソースの 紹 介 まとめ -3-
自 己 紹 介 永 嶋 浩 樹 (ながしまひろき) 株 式 会 社 NTTデータ 技 術 開 発 本 部 ソフトウェア 工 学 推 進 センタに 所 属 TERASOLUNAフレームワーク 開 発 メンバ TERASOLUNAオープンソースプロジェクトメンバ (http://terasoluna.sourceforge.jp) 雑 誌 執 筆 DB マガジン.NETコントロールまるわかり 教 室 連 載 中 -4-
私 たちの 役 割 技 術 開 発 本 部 NTTデータ ソフトウェア 工 学 推 進 センタ ソリューションの 提 供 公 共 金 融 法 人 ソフトウェア 開 発 の 生 産 性 向 上 のための ソフトウェア 開 発 プロセス 生 産 技 術 人 材 育 成 の 研 究 開 発 と 普 及 展 開 NTTデータグループ 会 社 システム 開 発 の 総 合 的 ソリューション TERASOLUNA R の 研 究 開 発 普 及 展 開 -5-
TERASOLUNAフレームワークラインアップ 開 発 環 境 (フレームワーク) オンライン 系 /バッチ 系 アプリケーションに 対 応 した5 種 類 Java.NET Ajaxに 対 応 最 適 な 組 み 合 わせを 選 択 可 能 すべてオープンソースとして 無 料 でダウンロード ソフトウェアアーキテクチャを 定 義 し 品 質 のばらつきを 抑 制 フレームワークの 利 用 で 業 務 開 発 者 は 業 務 ロジックの 開 発 のみに 集 中 可 能 サーバ フレームワーク クライアント フレームワーク バッチ フレームワーク Java TERASOLUNA Server Framework for Java - TERASOLUNA Batch Framework for Java.NET TERASOLUNA Server Framework for.net TERASOLUNA Client Framework for.net - Ajax - TERASOLUNA Client Framework for Ajax (マスカット) - -6-
TERASOLUNAフレームワークラインアップ HTTP(S) APサーバ DBサーバ HTML/ JavaScript Webブラウザ マスカット アプリケーション TERASOLUNA Client Framework for AJAX Internet Explorer / Firefox HTML/ XML 業 務 AP Struts Spring MVC 業 務 AP Spring Framework 業 務 AP TERASOLUNA Server Framework for Java ibatis SQL JDBC 業 務 DB Oracle/PostgreSQL バッチサーバ 業 務 AP SQL リッチクライアント WebSphere / WebLogic / Cosminexus / Tomcat APサーバ TERASOLUNA Batch Framework for Java ibatis 業 務 AP (.NET Windows Forms アプリケーション) TERASOLUNA Client Framework for.net Windows Forms.NET Framework XML 業 務 AP 業 務 AP TERASOLUNA Server Framework for.net ASP.NET 2.0.NET Framework 2.0 Internet Information Service (IIS) Windows 業 務 AP SQL ADO.NET Spring Framework DBサーバ 業 務 DB SQL SQL Server/Oracle -7-
Agenda はじめに.NETとオープンソース 支 援 ツール 系 オープンソースの 紹 介 クラスライブラリ 系 オープンソースの 紹 介 まとめ -8-
Javaにおけるオープンソース 設 計 製 造 / 単 体 テスト 結 合 テスト クラス ライブラリ フレームワーク/クラスライブラリ Struts Spring ibatis 支 援 ツール 統 合 開 発 環 境 製 造 支 援 WTP Spring IDE Visual Editor 静 的 解 析 FindBugs CheckStyle PMD Eclipse 回 帰 テスト 支 援 Selenium 単 体 テスト 支 援 Marathon JUnit Cobertura 品 質 管 理 支 援 StepCounter Eclipse Metrics Plugin タスク 故 障 管 理 構 成 管 理 Trac Subversion -9-
.NETにおけるオープンソース 設 計 製 造 / 単 体 テスト 結 合 テスト クラス ライブラリ フレームワーク/クラスライブラリ Enterprise Library AJAX Control Toolkit 支 援 ツール 統 合 開 発 環 境 製 造 支 援 Sandcastle Visual Studio 2008 静 的 解 析 コード 分 析 機 能 単 体 テスト 支 援 単 体 テスト NUnit カバレッジ 計 測 機 能 回 帰 テスト 支 援 Webテスト 品 質 管 理 支 援 タスク 故 障 管 理 構 成 管 理 Trac Subversion AnkhSvn Team Foundation Server : Visual Studio : オープンソース -10-
.NETにおけるオープンソース クラス ライブラリ 設 計 ユーティリティに ユーティリティに 近 い 形 で 製 造 / 単 提 体 テスト 供 されている されている フレームワーク/クラスライブラリ Enterprise Library AJAX Control Toolkit 結 合 テスト 支 援 ツール 統 合 開 発 環 境 製 造 支 援 Sandcastle Visual Studio 2008 静 的 解 析 コード 分 析 機 能 単 体 テスト 支 援 単 体 テスト NUnit カバレッジ 計 測 機 能 回 帰 テスト 支 援 Webテスト 品 質 管 理 支 援 タスク 故 障 管 理 Trac 構 成 管 理 Subversion AnkhSvn Visual Visual Studio Studio に 豊 富 な 機 能 が 存 在 するが するが 上 位 Editionにしか Editionにしか 利 用 できない できない 機 能 を 下 位 Edition Edition で Copyright(C)2008 利 用 できるようにする できるようにする NTT DATA CORPORATION 形 で 提 供 されている されている -11- Team Foundation Server : Visual Studio : オープンソース
Agenda はじめに.NETとオープンソース 支 援 ツール 系 オープンソースの 紹 介 クラスライブラリ 系 オープンソースの 紹 介 まとめ -12-
APIリファレンス 作 成 Sandcastle (http://www.codeplex.com/sandcastle) MSDN 風 のAPIリファレンスを 作 成 するツール JavaのJavadocに 相 当 Sandcastle Help File Builderを 使 って APIリファレンスを 作 成 -13-
単 体 テスト NUnit (http://www.nunit.org/) 単 体 テストの 自 動 実 行 を 支 援 するためのツール JavaのJUnitに 相 当 -14-
構 成 管 理 タスク 問 題 管 理 Trac (http://trac.edgewall.org/) Pythonベースのバグトラッキングシステム Wiki 機 能 やSubversion 連 携 機 能 もついている Subversion (http://subversion.tigris.org/) プログラムのソースコードなどを 管 理 するバージョン 管 理 シス テム HTTPでのアクセスや チェンジセット 単 位 でのコミットが 可 能 AnkhSvn (http://ankhsvn.open.collab.net/) Visual StudioとSubversionを 連 携 させるためのプラグイン -15-
構 成 管 理 タスク 問 題 管 理 バグ 発 生 Trac Trac バグ 情 報 登 録 AnkhSvnで 連 携 ソースコード の 修 正 履 歴 差 分 を 管 理 する Visual Visual Studio Studio バグ 修 正 バグ 管 理 バージョン 管 理 Visual Visual Studio Studio or or NUnit NUnit 回 帰 テスト バグ 原 因 修 正 方 針 状 況 を 確 認 する Trac Trac 標 準 で 連 携 Subversion -16-
構 成 管 理 タスク 問 題 管 理 AnkhSvn Trac Visual Studio から 起 動 Subversionにソー スコードをコミット コミットログに チケット 番 号 を 指 定 Subversion TracとSubversionの 連 携 機 能 変 更 セットへの リンク 対 応 するチケット*にコメントが 自 動 追 加 される *チケット: タスクやバグ 情 報 をあらわすTracの 最 小 単 位 Team Foundation Serverの 作 業 項 目 に 相 当 -17-
Agenda はじめに.NETとオープンソース 支 援 ツール 系 オープンソースの 紹 介 クラスライブラリ 系 オープンソースの 紹 介 まとめ -18-
Enterprise Library Enterprise Library (http://www.codeplex.com/entlib) 企 業 向 けアプリケーション 開 発 に 利 用 できる 再 利 用 性 の 高 いクラスライブラリ ログ 出 力 機 能 入 力 値 検 証 機 能 など -19-
TERASOLUNA Framework for.net TERASOLUNA Framework for.net Webアプリケーション スマートクライアントアプリケーション 開 発 に 必 要 な 機 能 を 備 えた 汎 用 フレームワーク 一 部 Enterprise Library 3.1を 利 用 拡 張 して 機 能 を 提 供 Webブラウザ 画 面 クライアントアプリケーション TERASOLUNA Client Framework for.net 入 力 値 検 証 イベント 処 理 画 面 遷 移 リクエスト レスポンス.NET Framework 2.0 クライアント サーバ 型 アプリ ケーションも 実 現 可 能 Webブラウザ 型 アプリを 実 現 する 基 盤 機 能 を 提 供 スマートクライ アント 型 アプリ を 実 現 する 基 盤 機 能 を 提 供 通 信 機 能 ファイルアップロード ファイルダウンロード 業 務 DB XML XML サーバアプリケーション TERASOLUNA Server Framework for.net プレゼンテーション レイヤ 機 能 入 力 値 検 証 画 面 遷 移 メッセージ 管 理 IIS/ASP.NET 2.0 サーバアプリケーション TERASOLUNA Server Framework for Java 業 務 ロ ジ ッ ク DBサーバ 業 務 DB SQL Server Webブラウザ 型 アプリと スマートクライアント 型 アプリで 業 務 ロジックを 共 有 可 能 TERASOLUNA Framework for Java ベースのサーバ アプリケーションと 連 携 可 能 -20-
.NETのみのクライアント アプリ 開 発 の 問 題 点 品 質 の 問 題 メンテナンスができないコード.NETではUIとビジネスロジックの 分 離 しなくても 作 れてしまうなど 自 由 度 の 高 い 開 発 が 可 能 であるため 規 約 がないと 開 発 者 によって 実 装 方 法 がバラバラになってし まう 後 でメンテナンスしようとしても 1つのメソッドが 膨 大 かつ 複 雑 になっていると どこ を 直 せばよいか わからなくなってしまう クライアント サーバシステムの 悪 夢 の 再 来 コストの 問 題 作 りこみが 多 い クライアントアプリケーションだと 非 同 期 処 理 など 複 雑 な 処 理 の 作 り 込 みが 多 い 強 力 なWindowsFormsやASP.NETでの 開 発 において どのプロジェクトでも 毎 回 同 じような 共 通 機 能 を 整 備 画 面 遷 移 機 能 の 強 化 セッション 管 理 機 能 の 整 備 ログ 出 力 機 能 の 整 備 TERASOLUNA for.netが 解 決 -21-
TERASOLUNA Framework for.netの の 狙 い TERASOLUNA Framework for.netの 狙 い 1. アーキテクチャの 統 一 2. 学 習 コストの 最 小 化 3..NET Frameworkに に 足 りない 機 能 の 強 化 -22-
1. アーキテクチャの 統 一 アーキテクチャの 統 一 クライアント 業 務 画 面 からサーバ 業 務 処 理 を 呼 び 出 す 処 理 の 定 型 化 サーバへ 送 信 するデータの 入 力 値 検 証 サーバとの 通 信 処 理 サーバ 業 務 処 理 呼 び 出 し 中 のエラーハンドリング 画 面 上 の 情 報 を 利 用 してサーバの 業 務 処 画 面 上 の 情 報 を 利 用 してサーバの 業 務 処 理 を 呼 び 出 し 結 果 を 取 得 する 理 を 呼 び 出 し 結 果 を 取 得 する FB-01 イベント 処 理 機 能 遷 移 元 画 面 FA-02 拡 張 フォーム 機 能 1サーバ 業 務 処 理 の 呼 び 出 し CM-02 入 力 値 検 証 機 能 入 力 値 検 証 設 定 ファイル FB-02 データセット 変 換 機 能 データセット 変 換 設 定 ファイル CM-04 ビジネスロジック 生 成 機 能 ビジネスロジック 設 定 ファイル FC-01 XML 通 信 機 能 FC-02 ファイルアップロード 機 能 FC-03 ファイルダウンロード 機 能 フレームワーク 提 供 機 能 AP サーバ サーバ 業 務 処 理 -23- 業 務 依 存 部 分
2. 学 習 コストの 最 小 化 (1/2) 学 習 コストの 最 小 化 Visual Studioでの 従 来 の 開 発 スタイルを 崩 さない 形 で フレームワークとして 提 供 2EventControllerの プロパティを 設 定 1ツールボックスから EventControllerを 画 面 に 追 加 3EventControllerの Executeメソッドを 呼 ぶだけ ぶだけ -24-
2. 学 習 コストの 最 小 化 (2/2) WindowsForms/ASP.NET の ア ー キ テ ク チ ャ を そのまま 踏 襲 WindowsForms/ASP.NETでの 開 発 で 本 当 に 必 要 な 共 通 機 能 のみをユーティリティとして 提 供 しているため TERASOLUNAフレームワークとしてのアーキテクチャを 始 めから 学 習 する 必 要 がない.NETの 学 習 さえすれば すぐにTERASOLUNAの 機 能 を 利 用 した アプリケーション 開 発 ができる -25-
3..NET Frameworkに に 足 りない 機 能 の 強 化 (1/3).NET Frameworkに 足 りない 機 能 の 強 化 エンタープライズ 向 けアプリケーション 開 発 に 不 足 し ている 機 能 をユーティリティとして 提 供 ユーティリティとしての 機 能 提 供 のため プロジェクトで 本 当 に 必 要 な 一 部 の 機 能 のみを 利 用 できる 非 同 期 での 業 務 処 理 呼 び 出 しのサポート (Client FW) 入 力 値 検 証 における 日 本 語 のルールの 強 化 その 他 ログ 出 力 メッセージ 管 理 など プロジェクトで 独 自 に 整 備 した 共 通 機 能 との 共 存 が 可 能! TERASOLUNAの 機 能 を 一 部 利 用 する 際 にも WindowsForms/ASP.NETのアーキテクチャに 変 更 は 発 生 しない -26-
3..NET Frameworkに に 足 りない 機 能 の 強 化 (2/3) TERASOLUNA 提 供 機 能 のイメージ 例 :Server FWの 場 合 ASP.NET 提 供 機 能 提 供 機 能 画 面 遷 移 関 連 機 能 プレゼンテーション 層 ビジネス 層 データ 層 入 力 値 検 証 機 能 セッション 管 理 機 能 ビジネスロジック 生 成 機 能 ログ 出 力 機 能 -27- SQL 文 管 理 機 能 ASP.NETの 穴 はTERASOLUNAが 埋 める!!
3..NET Frameworkに に 足 りない 機 能 の 強 化 (3/3) 画 面 遷 移 管 理 の 例 TERASOLUNA 画 面 A SampleA.aspx リクエスト 送 信 ASP.NET 標 準 の 画 面 遷 移 Response.Redirect( /UI/SampleB.aspx ); HTTP 302 リダイレクト 要 求 SampleA.aspx.cs リダイレクト 先 URLを 文 字 列 とし て 指 定 しなければならないため 画 面 間 の 依 存 関 係 が 強 くなる TERASOLUNA 画 面 B SampleB.aspx SampleB.aspxの 表 示 要 求 画 面 表 示 SampleB.aspx.cs サーバ -28- TERASOLUNAの 画 面 遷 移 WebUtils.Transit( SampleB ); ページIDを 指 定 し 画 面 間 の 依 存 関 係 を 疎 にしている 遷 移 先 画 面 のURLは 設 定 ファイルに 外 出 ししているため 遷 移 先 画 面 の 変 更 も 容 易
機 能 一 覧 Server & Client 共 通 機 能 メッセージ 管 理 機 能 入 力 値 検 証 機 能 ログ 出 力 機 能 ビジネスロジック 生 成 機 能 Client 機 能 画 面 遷 移 機 能 拡 張 フォーム 機 能 イベント 処 理 機 能 データセット 変 換 機 能 XML 通 信 機 能 ファイルアップロード 機 能 ファイルダウンロード 機 能 Server 機 能 画 面 遷 移 管 理 機 能 画 面 遷 移 保 証 機 能 二 重 押 下 防 止 機 能 エラー 画 面 遷 移 機 能 リクエストコントローラ 機 能 * ファイルアップロード 機 能 * ファイルダウンロード 機 能 * セッション 管 理 機 能 SQL 文 管 理 機 能 * リッチクライアントAP 用 機 能 -29-
導 入 事 例 Java +.NET 端 末 APサーバ ホスト ネットワーク データベース (Oracle) Windows Vista WebLogic ポイント サーバは 非 MS 製 品 サーバはJava クライアントでデバイス 操 作 を 行 う クライアントを.NET 工 夫 点 サーバ クライアント 間 で 通 信 に 用 いるXMLデータ 設 計 情 報 を 共 有 し DTO(データ 転 送 オブジェクト)クラスをおのおの 自 動 生 成 するツールを 事 前 に 用 意 -30-
Agenda はじめに.NETとオープンソース 支 援 ツール 系 オープンソースの 紹 介 クラスライブラリ 系 オープンソースの 紹 介 まとめ -31-
オープンソースでシステム 開 発 する ツール 系 オープンソースを 積 極 的 に 利 用 して 上 位 Editionの Visual Studioで 出 来 る 作 業 を 実 施 する 単 体 テストや 構 成 管 理 を 必 ず 実 施 ライブラリ 系.NETのアーキテクチャ 標 準 開 発 スタイルを 踏 襲 し Visual Studioの 開 発 生 産 性 をうまく 利 用 できるように 機 能 を 組 み 合 わせる ユーティリティ 系 を 取 捨 選 択 アーキテクチャの 統 一 -32-
社 外 Web サイト フレームワーク 公 開 サイトのお 知 らせ 2008 年 7 月 14 日 に TERASOLUNA Server/Client Framework for.net をオープンソース 化 サイト http://www.terasoluna.jp/ SourceForge.JP TERASOLUNAフレームワーク プロジェクト http://sourceforge.jp/projects/terasoluna -33-
ご 清 聴 ありがとうございました -34-