OSS モデルカリキュラムの 学 習 ガイダンス 5-1- 基 開 発 フレームワークに 関 する 知 識 1. 科 目 の 概 要 開 発 フレームワークとは 何 か その 基 本 的 な 概 念 歴 史 特 徴 とメリットを 解 説 する さらに 開 発 フレームワークの 種 類 や 特 徴 を 説 明 し 実 際 の 1 開 発 に 役 立 てることができる 知 識 やノウハウを 示 す 2. 習 得 ポイント 本 科 目 の 学 習 により 習 得 することが 期 待 されるポイントは 以 下 の 通 り 習 得 ポイント 説 明 シラバスの 対 応 コマ 5-1- 基 -1. 開 発 フレームワークの 歴 史 思 想 と 背 景 開 発 フレームワークとは 何 かを 説 明 し 開 発 フレームワークの 基 本 理 念 目 的 発 展 の 歴 史 開 発 フレームワークが 登 場 した 背 景 と 思 想 について 解 説 する 1 5-1- 基 -2. 開 発 フレームワークの 特 徴 とメリット 開 発 フレームワークを 利 用 した 開 発 の 特 徴 と 開 発 フレームワーク 利 用 の 効 果 メリットにつ いて 解 説 する また 代 表 的 な 開 発 フレームワークを 紹 介 し それぞれの 歴 史 や 背 景 特 徴 利 用 上 の 注 意 点 開 発 フレームワークの 選 択 方 法 ライセンス 形 態 などを 説 明 する 1 オープンソースによるWebアプリケーション 開 発 フレームワークを 紹 介 する Struts JSF 5-1- 基 -3.Webアプリケーションで 利 用 できるOSSフレームワーク ibatis Hibernate Seasar2 Springといった 代 表 的 なフレームワークを 紹 介 し それぞれの 開 発 内 容 の 違 いについて 解 説 する 2 5-1- 基 -4.Tomcatの 特 徴 とServlet/JSPによるアプリケーション 開 Java Servlet/JSPコンテナの 代 表 的 なものとして Tomcatを 取 り 上 げ その 位 置 づけ 特 徴 と 発 Servlet/JSPによるWebアプリケーション 開 発 の 具 体 的 な 手 順 を 説 明 する 3 5-1- 基 -5.アプリケーションサーバJBossの 機 能 と 特 徴 アプリケーションサーバについて 例 として 代 表 的 なアプリケーションサーバであるJBossを 取 り 上 げ その 位 置 づけ 特 徴 を 解 説 する またTomcatとの 連 携 やEJBコンテナ 機 能 アプリ ケーションサーバ 機 能 など JBossの 持 つ 様 々な 機 能 を 紹 介 する 3 5-1- 基 -6.MVCフレームワークの 概 要 MVCモデルを 適 用 したWebアプリケーション 用 の 開 発 フレームワークとしてWeb MVCフレー ムワークの 概 念 を 説 明 する モデル ビュー コントローラのそれぞれの 役 割 と お 互 いの 依 存 性 を 低 くしたことによる 利 点 を 解 説 する 4,5,6,7,8 5-1- 基 -7.ORマッピングフレームワークの 概 要 オブジェクト 指 向 アプリケーションのデータとして 取 り 扱 うオブジェクトと リレーショナルデータ ベースに 格 納 されるレコードとの 対 応 を 取 るための 仕 組 みであるORマッピングについて 基 本 的 な 考 え 方 やオブジェクトとレコードの 対 応 関 係 OSSによるORマッピングの 実 装 例 につ いて 解 説 する 9,10,11 5-1- 基 -8.DIxAOPフレームワークの 概 要 Dependency Injection (DI)とAspect Oriented Programming (AOP)の 概 念 と 利 点 を 整 理 し 新 しいWebアプリケーションの 基 盤 を 成 すDIxAOPコンテナの 仕 組 みと 基 本 的 な 構 成 特 徴 について 解 説 する 12,13 5-1- 基 -9.Spring Frameworkの 利 用 DIxAOPコンテナ 実 装 のひとつであるSpring Framework の 基 本 的 な 仕 組 みと 基 本 的 な 構 成 特 徴 について 解 説 する またStrutsやHibernateなど 他 のフレームワークとの 連 携 や 開 発 ツールなど 実 際 の 利 用 に 有 効 なトピックを 紹 介 する 14 5-1- 基 -10.Seasar2の 構 成 と 特 徴 DIxAOPコンテナ 実 装 のひとつであるSeasar2の 基 本 的 な 仕 組 みと 基 本 的 な 構 成 特 徴 につ いて 解 説 する またStrutsやJSF Hibernateなど 他 のフレームワークとの 連 携 や 開 発 ツール など 実 際 の 利 用 に 有 効 なトピックを 紹 介 する 15 学 習 ガイダンスの 使 い 方 1. 習 得 ポイント により 当 該 科 目 で 習 得 することが 期 待 される 概 念 知 識 の 全 体 像 を 把 握 する 2. シラバス IT 知 識 体 系 との 対 応 関 係 OSS モデルカリキュラム 固 有 知 識 をもとに 必 要 に 応 じて 従 来 の IT 教 育 プログラム 等 との 相 違 を 把 握 した 上 で 具 体 的 な 講 義 計 画 を 考 案 する 3. 習 得 ポイント 毎 の 学 習 の 要 点 と 解 説 を 参 考 にして 講 義 で 使 用 する 教 材 等 を 準 備 する
OSS モデルカリキュラムの 学 習 ガイダンス 3. IT 知 識 体 系 との 対 応 関 係 5-1- 基 開 発 フレームワークに 関 する 知 識 と IT 知 識 体 系 との 対 応 関 係 は 以 下 の 通 り 科 目 名 基 本 レベル 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 オープンソースに Webアプリケー 5-1- OSSのWebコンテ 基 開 発 フレーム 開 発 フレームワー よるWebアプリ ションのMVCフ ナ/J2EEコンテ Strutsの 概 要 JSFの 概 要 Tapestryの 概 要 Wicketの 概 要 ワークに 関 する 知 識 クの 概 要 と 種 類 ケーションのフ レームワークの 概 ナの 概 要 レームワーク 要 ORマッピングの 概 要 Hibernateの 概 要 ibatisの 概 要 AOPとDIの 概 要 EJBとJBoss Seamの 概 要 Spring Frameworkの 概 Seasar2の 概 要 要 <IT 知 識 体 系 上 の 関 連 部 分 > 分 野 科 目 名 1 2 3 4 5 6 7 8 9 10 11 12 13 組 織 関 連 事 項 と 情 報 シ ス テ ム 1 2 IT-IAS 情 報 保 証 IT-IAS2. 情 報 セ IT-IAS9. 情 報 セ IT-IAS1. 基 礎 的 な IT-IAS3. 運 用 上 の IT-IAS6. 情 報 セ IT-IAS7.フォレン IT-IAS8. 情 報 の 状 IT-IAS10. 脅 威 分 と 情 報 セキュリ キュリティの 仕 組 IT-IAS4.ポリシー IT-IAS5. 攻 撃 キュリティサービ IT-IAS11. 脆 弱 性 問 題 問 題 キュリティ 分 野 ジック( 情 報 証 拠 ) 態 析 モデル ティ み( 対 策 ) ス IT-SP 社 会 的 な 観 IT-SP1.プロ IT-SP8.プロ IT-SP3.コン IT-SP6.コン 点 とプロフェッ フェッショナルと IT-SP2.コン IT-SP4.チーム IT-SP5. 知 的 財 産 IT-SP7. 組 織 の 中 フェッショナルと IT-SP9.プライバ ピュータを 取 り 巻 ピュータの 法 的 問 ショナルとしての してのコミュニ ピュータの 歴 史 ワーク 権 のIT しての 倫 理 的 な 問 シーと 個 人 の 自 由 く 社 会 環 境 題 課 題 ケーション 題 と 責 任 応 用 技 術 IT-IM2.データ IT-IM4.データモ IT-IM1. 情 報 管 理 IT-IM3.データ IT-IM5.データと IT-IM6.データ 3 IT-IM 情 報 管 理 ベース 問 合 わせ 言 デリングとデータ の 概 念 と 基 礎 アーキテクチャ 情 報 の 管 理 ベースの 応 用 分 野 語 ベース 設 計 IT-WS2. 情 報 アー IT-WS Webシステ IT-WS1.Web 技 術 IT-WS3.デジタル IT-WS6.ソーシャ 4 キテクチャ IT-WS4.Web 開 発 IT-WS5. 脆 弱 性 ムとその 技 術 [1-Ⅰ-7] メディア ルソフトウェア [1-Ⅰ-7] 5 IT-PF2.プログラ IT-PF3.オブジェ IT-PF5.イベント IT-PF プログラミ IT-PF1. 基 本 デー IT-PF4.アルゴリ ミングの 基 本 的 構 クト 指 向 プログラ 駆 動 プログラミン IT-PF6. 再 帰 ング 基 礎 タ 構 造 ズムと 問 題 解 決 成 要 素 ミング グ ソ フ ト ウェ 6 IT-IPT 技 術 を 統 IT-IPT1.システム IT-IPT2.データ 割 IT-IPT3. 統 合 的 合 するためのプロ 間 通 信 り 当 てと 交 換 コーディング グラミング [1-Ⅰ-3] IT-IPT5.ソフト IT-IPT4.スクリプ ウェアセキュリ ティング 手 法 ティの 実 現 IT-IPT6. 種 々の 問 IT-IPT7.プログラ 題 ミング 言 語 の 概 要 ア の 方 法 と 技 術 7 CE-SWE ソフト ウェア 工 学 CE-SWE0. 歴 史 と 概 CE-SWE1.ソフト 要 ウェアプロセス CE-SWE2.ソフト CE-SWE3.ソフト ウェアの 要 求 と 仕 ウェアの 設 計 様 CE-SWE4.ソフト CE-SWE5.ソフト ウェアのテストと ウェアの 保 守 検 証 CE-SWE6.ソフト CE-SWE7.ソフト CE-SWE9.ソフト CE-SWE11.ソフ ウェア 開 発 保 守 CE-SWE10.ソフト ウェアプロジェク CE-SWE8. 言 語 翻 訳 ウェアのフォール トェアの 標 準 化 ツールと 環 境 ウェアの 構 成 管 理 ト 管 理 トトレランス [1-Ⅰ-6] [1-Ⅰ-4] 8 IT-SIA システム IT-SIA3.インテグ インテグレーショ IT-SIA2. 調 達 / 手 IT-SIA4.プロジェ IT-SIA5.テストと IT-SIA6. 組 織 の 特 IT-SIA7.アーキテ IT-SIA1. 要 求 仕 様 レーション ンとアーキテク 配 クト 管 理 品 質 保 証 性 クチャ [1-Ⅰ-4] チャ 9 IT-NET ネット ワーク IT-NET1.ネット ワークの 基 礎 IT-NET2.ルーティ ングとスイッチン IT-NET3. 物 理 層 グ IT-NET5.アプリ IT-NET4.セキュリ ケーション 分 野 ティ [1-Ⅰ-5] IT-NET6.ネット ワーク 管 理 CE-NWK1. 通 信 CE-NWK0. 歴 史 と 概 ネットワークの 要 アーキテクチャ CE-NWK4.クライア CE-NWK6.ワイヤレ CE-NWK2. 通 信 ネッ CE-NWK5.データの CE-NWK8. 組 込 み 機 CE-NWK9. 通 信 技 術 ントサーバコン スコンピューティ CE-NWK7.データ 通 CE-NWK10. 性 能 評 CE-NWK11.ネット CE-NWK12. 圧 縮 と トワークのプロト CE-NWK3.LANとWAN セキュリティと 整 器 向 けネットワー とネットワーク 概 ピューティング ングとモバイルコ 信 価 ワーク 管 理 伸 張 コル 合 性 ク 要 [1-Ⅰ-3] ンピューティング シ ス テ ム 基 盤 CE-NWK テレコ 10 ミュニケーション CE-NWK14.イン CE-NWK13.クラス ターネットアプリ CE-NWK15. 次 世 代 タシステム ケーション インターネット CE-NWK16. 放 送 [1-Ⅰ-5,7] 11 IT-PT プラット フォーム 技 術 IT-PT4.デプロイ IT-PT1.オペレー IT-PT3.コン IT-PT2.アーキテ メントソフトウェ IT-PT5.ファーム IT-PT6.ハード ティングシステム ピュータインフラ クチャと 機 構 ア ウェア ウェア [1-Ⅰ-3] ストラクチャ [1-Ⅰ-4] CE-OPS オペレー CE-OPS0. 歴 史 と 概 12 CE-OPS1. 並 行 性 ティングシステム 要 CE-OPS2.スケ ジューリングと ディスパッチ CE-OPS3.メモリ 管 CE-OPS4.セキュリ CE-OPS5.ファイル CE-OPS6.リアルタ CE-OPS8. 設 計 の 原 CE-OPS9.デバイス CE-OPS10.システ CE-OPS7.OSの 概 要 理 ティと 保 護 管 理 イムOS 則 管 理 ム 性 能 評 価 アー ハー コ ン キ ド テ ウェ ピュー ク チャ ア タ と CE-CAO コン CE-CAO1.コン CE-CAO2.メモリシ CE-CAO0. 歴 史 と 概 CE-CAO3.インタ 13 ピュータのアーキ ピュータアーキテ ステムの 構 成 と 要 フェースと 通 信 テクチャと 構 成 クチャの 基 礎 アーキテクチャ CE-CAO8.コン CE-CAO4.デバイス CE-CAO5.CPUアー CE-CAO6. 性 能 コ CE-CAO7. 分 散 並 ピュータによる 計 CE-CAO9. 性 能 向 上 サブシステム キテクチャ スト 評 価 列 処 理 算 複 数 領 域 に ま た が る も の IT-ITF4.IT 分 野 IT-ITF1.ITの 一 般 IT-ITF6.IT 分 野 に IT-ITF2. 組 織 の 問 ( 学 科 )とそれに 関 14 IT-ITF IT 基 礎 的 なテーマ IT-ITF3.ITの 歴 史 IT-ITF5. 応 用 領 域 おける 数 学 と 統 計 題 連 のある 分 野 ( 学 [1-Ⅰ-4] 学 の 活 用 科 ) CE-ESY0. 歴 史 と 概 CE-ESY1. 低 電 力 コ CE-ESY2. 高 信 頼 性 CE-ESY3. 組 込 み 用 要 ンピューティング システムの 設 計 アーキテクチャ CE-ESY4. CE-ESY5.ライフサ 開 発 環 境 CE-ESY6. 要 件 分 析 CE-ESY7. 仕 様 定 義 CE-ESY8. 構 造 設 計 CE-ESY9.テスト CE-ESY10.プロ CE-ESY11. 並 行 設 計 (ハードウェ CE-ESY12. 実 装 イクル ジェクト 管 理 ア ソフトウェア CE-ESY 組 込 みシ 15 ステム CE-ESY19.インタ CE-ESY13.リアル CE-ESY14. 組 込 み CE-ESY18.ネット CE-ESY24. 信 頼 性 CE-ESY15. 組 込 み CE-ESY16. 設 計 手 CE-ESY17.ツール フェースシステム CE-ESY20.センサ CE-ESY21.デバイ CE-ESY22.メンテ CE-ESY23. 専 門 シ タイムシステム 設 マイクロコント ワーク 型 組 込 みシ とフォールトトレ プログラム 法 によるサポート と 混 合 信 号 システ 技 術 スドライバ ナンス ステム 計 ローラ ステム ランス ム
OSS モデルカリキュラムの 学 習 ガイダンス 4. OSS モデルカリキュラム 固 有 の 知 識 OSS モデルカリキュラム 固 有 の 知 識 として 具 体 的 な Java 言 語 の 開 発 フレームワークに 関 する 知 識 がある ここで 扱 うフレームワークの 実 装 は 一 般 的 な 開 発 フレームワークの 考 え 方 を 踏 襲 したものである 科 目 名 第 1 回 第 2 回 第 3 回 第 4 回 第 5 回 第 6 回 第 7 回 (1) 開 発 フレームワー (1) Webアプリケー (1) Tomcat (1) WebMVCの 概 念 (1) Strutsとは (1) JSFとは (1) Tapestryとは クの 特 徴 ションとオープンソース フレームワーク (2) 開 発 フレームワー (2) WebMVCフレーム (2) Jboss (2) 実 装 のプロセス (2) JSPのカスタムタ (2) JSPのカスタムタ (2) HTMLテンプレート クの 特 性 ワーク グライブラリ グライブラリ 5-1- 基 開 発 フレーム ワークに 関 する 知 識 (3) どのようにフレー ムワークを 選 択 し 利 用 するか (3) Webアプリケー ション 構 築 で 利 用 され る 代 表 的 なオープン ソースフレームワーク (4) ライセンス 形 態 (4) それぞれの 開 発 内 容 の 違 い (5) 基 本 的 なアプリ ケーション 記 述 の 例 (6) サンプルプログラ ム (3) Winstone (3) MyFaceとは 第 8 回 第 9 回 第 10 回 第 11 回 第 12 回 第 13 回 第 14 回 第 15 回 (1) Wicketとは (1) OR (2) 代 表 的 なORマッ (1) ibatisの 概 要 (1) DIxAOPの 機 能 (1) EJB3とは (1) Spring (1) Seasar2の 構 成 と ピングライブラリ/フ Frameworkの 構 成 と 特 特 徴 メリット レームワーク 徴 メリット (2) 代 表 的 なORマッ (2) オブジェクトとリ (2) オブジェクトとリ (2) 実 装 フレームワー (2) JBoss Seamとは (2) DIxAOP 以 外 の 主 (2) DIxAOP 以 外 の 主 ピングライブラリ/フ レーションのマッピング レーションのマッピング ク な 機 能 な 機 能 レームワーク 仕 様 仕 様 (3) マッピングファイル の 作 成 (3) 開 発 ツール (3) 開 発 ツール (3) 開 発 ツール (4) ライセンス (4) ライセンス (4) ライセンス (5) 公 式 サイトとリファ レンス 紹 介 (5) 公 式 サイトとリファ (5) 公 式 サイトとリファ レンス 紹 介 レンス 紹 介 ( 網 掛 け 部 分 は IT 知 識 体 系 で 学 習 できる 知 識 を 示 し それ 以 外 は OSS モデルカリキュラム 固 有 の 知 識 を 示 している)
スキル 区 分 OSS モデルカリキュラムの 科 目 レベル 開 発 体 系 分 野 5-1- 基 開 発 フレームワークに 関 する 知 識 基 本 習 得 ポイント 5-1- 基 -1. 開 発 フレームワークの 歴 史 思 想 と 背 景 対 応 する コースウェア 第 1 回 開 発 フレームワークの 概 要 と 種 類 5-1- 基 -1. 開 発 フレームワークの 歴 史 思 想 と 背 景 開 発 フレームワークとは 何 かを 説 明 し 開 発 フレームワークの 基 本 理 念 目 的 発 展 の 歴 史 開 発 フレームワークが 登 場 した 背 景 と 思 想 について 解 説 する 学 習 の 要 点 * 開 発 フレームワークとは アプリケーションソフトを 開 発 する 際 に 頻 繁 に 必 要 とされる 汎 用 的 な 機 能 をまとめて 提 供 し アプリケーションの 土 台 として 機 能 するソフトウェアのことである * 開 発 フレームワークは ソフトウェア 開 発 におけるさまざまな 経 験 を 踏 まえ 開 発 生 産 性 を 向 上 さ せようとする 試 みの 中 で 長 い 時 間 をかけて 発 展 してきた 図 5-1- 基 -1 開 発 フレームワークの 背 景 5-1- 基 - 1
解 説 1) 開 発 フレームワークとは 開 発 フレームワークとは アプリケーションを 開 発 する 場 合 に 必 要 となる 部 品 や 実 装 上 のアウトラ イン および 制 約 を 提 供 するもので ソフトウェア 開 発 における 生 産 性 や 保 守 性 の 向 上 を 目 的 と する アプリケーションの 骨 組 み 部 分 が 洗 練 された 形 であらかじめ 提 供 されているため 開 発 担 当 者 のスキルに 依 存 する 新 規 開 発 部 分 の 割 合 を 減 らすことが 可 能 で 結 果 として 設 計 レベルの 欠 陥 を 最 小 限 にとどめ 一 定 の 成 果 物 品 質 を 維 持 できる 2) 開 発 フレームワークの 基 本 構 成 開 発 フレームワークは フローズンスポットとホットスポットから 構 成 される * フローズンスポット アプリケーションによらず 常 に 必 要 となる 機 能 を 有 した 部 分 であり 固 有 のアプリケーションを 開 発 する 際 には 変 更 の 必 要 がないものをいう 開 発 フレームワークでは これらの 機 能 をそのまま 提 供 する * ホットスポット アプリケーションによって 個 別 に 開 発 される 部 分 開 発 フレームワークでは この 部 分 を 実 装 上 の 制 約 という 形 で 提 供 する フレームワークが 規 定 する 制 約 に 則 ってホットスポット 部 分 を 実 装 することにより 初 めて 開 発 フレームワークの 利 点 を 享 受 することができる フローズンスポットの 占 める 割 合 がホットスポットのそれに 対 して 大 きければ 大 きいほど 固 有 のア プリケーション 開 発 時 の 工 数 は 少 なくなり より 高 い 開 発 生 産 性 を 得 られる しかしそれと 同 時 に フ レームワークによる 制 約 が 多 くなるため そのフレームワークを 適 用 できるアプリケーションは 限 定 さ れ 汎 用 性 を 失 ってしまう このように フレームワークの 汎 用 性 と そのフレームワークを 適 用 した ことにより 得 られる 開 発 生 産 性 の 向 上 度 合 いは 常 にトレードオフの 関 係 にある 3) 開 発 フレームワーク 発 展 の 背 景 開 発 フレームワークは ソフトウェア 開 発 において 先 人 の 知 恵 を 再 利 用 し 開 発 生 産 性 を 向 上 させ ようとする 試 みの 中 で 長 い 時 間 をかけて 発 展 してきたものである 特 に GUI アプリケーションの 開 発 における 定 型 処 理 を 標 準 化 しようとする 動 きの 中 で 1980 年 に 発 表 された 統 合 開 発 環 境 である Smalltalk において 取 り 入 れられた MVC(Model/View/Controller)の 概 念 は 現 在 では GUI アプリケ ーションに 留 まらず Web アプリケーション 開 発 に 用 いられるフレームワークにも 大 きな 影 響 を 与 え ている 5-1- 基 - 2
スキル 区 分 OSS モデルカリキュラムの 科 目 レベル 開 発 体 系 分 野 5-1- 基 開 発 フレームワークに 関 する 知 識 基 本 習 得 ポイント 5-1- 基 -2. 開 発 フレームワークの 特 徴 とメリット 対 応 する コースウェア 第 1 回 開 発 フレームワークの 概 要 と 種 類 5-1- 基 -2. 開 発 フレームワークの 特 徴 とメリット 開 発 フレームワークを 利 用 した 開 発 の 特 徴 と 開 発 フレームワーク 利 用 の 効 果 メリットについて 解 説 する また 代 表 的 な 開 発 フレームワークを 紹 介 し それぞれの 歴 史 や 背 景 特 徴 利 用 上 の 注 意 点 開 発 フレームワークの 選 択 方 法 ライセンス 形 態 などを 説 明 する 学 習 の 要 点 * Web MVC フレームワークを 導 入 すれば Model と View とを 記 述 すればよく Controller 部 分 の 開 発 工 数 を 節 約 できる * O/R マッピングフレームワークを 導 入 すれば オブジェクトと 関 係 データベースとのインピーダン スミスマッチを 解 消 できる * DI コンテナを 導 入 すれば オブジェクト 間 の 依 存 関 係 の 管 理 を DI コンテナに 移 譲 でき オブジ ェクト 間 の 依 存 性 を 疎 に 保 つことができる 図 5-1- 基 -2 代 表 的 なフレームワーク 5-1- 基 - 3
解 説 1) 開 発 フレームワークの 種 類 と 特 徴 Web アプリケーション 開 発 でよく 用 いられている 開 発 フレームワークには Web MVC フレームワー ク O/R マッピングフレームワーク DI コンテナがある * Web MVC フレームワーク Web MVC フレームワークは MVC モデルを 適 用 した Web アプリケーション 用 の 開 発 フレームワ ークである 一 般 的 な Web MVC フレームワークでは Controller をフローズンスポットとしてフレ ームワーク 側 で 提 供 し 残 りの Model と View をホットスポットとしてアプリケーションごとに 開 発 す る Web MVC フレームワークの 代 表 的 なものとして Struts があり Struts が 普 及 して 以 来 PHP の Zend Framework や Ruby の Ruby on Rails など 他 の 言 語 でも Web MVC フレームワークが 開 発 され 普 及 していった * O/R(オブジェクト/ 関 係 )マッピングフレームワーク O/R マッピングフレームワークは オブジェクト 指 向 言 語 におけるオブジェクトと 関 係 データベー スのデータ 構 造 の 差 異 を 吸 収 し 自 動 変 換 を 行 う 機 能 を 有 した 開 発 フレームワークである オブ ジェクト 指 向 言 語 で 関 係 データベースを 扱 う 場 合 データモデルの 設 計 思 想 の 違 いから オブ ジェクトとデータベース テーブルとのマッピングのために 毎 回 煩 雑 な 処 理 を 行 わなければな らない このデータモデルの 設 計 思 想 の 違 いからくる 概 念 モデル 構 造 と 論 理 データベース 構 造 の 違 いをインピーダンスミスマッチというが O/R マッピングフレームワークでは このマッピング における 定 型 処 理 をフローズンスポットとして 提 供 し インピーダンスミスマッチを 解 消 する 手 助 けをする Java では 元 々 インピーダンスミスマッチを 解 消 するための 仕 組 みとして EJB(Enterprise Java Beans)における Entity Bean があった しかしこの EJB は 分 散 オブジェクト としての 性 質 も 併 せ 持 つなど 単 なるオブジェクトとリレーショナルデータのマッピングツールとし ては 複 雑 過 ぎ 中 小 規 模 の 開 発 を 主 とする 多 くの 開 発 者 には 受 け 入 れられなかった このよう な 中 もっと 簡 単 に O/R マッピングを 実 現 したいという 要 望 から Apache Torque をはじめ 現 在 よく 使 われている Hibernate や ibatis などの O/R マッピングフレームワークが 開 発 され その 後 他 の 言 語 でも ActiveRecord など 同 様 のものが 開 発 されていった なお 現 在 の EJB 最 新 仕 様 である EJB3 では 過 去 の 教 訓 から Hibernate などの O/R マッピングフレームワークの 影 響 を 大 きく 受 けており 従 来 に 比 べて 大 幅 に 利 用 しやすくなっている * DI(Dependency Injection)コンテナ DI コンテナは オブジェクト 間 の 依 存 関 係 を 設 定 ファイルに 記 述 することで 依 存 関 係 の 管 理 を DI コンテナに 移 譲 することができる 仕 組 みを 持 つ 開 発 フレームワークである IoC(Inversion of Control)コンテナ 軽 量 コンテナ DI フレームワークなどとも 呼 ばれる 他 のオブジェクトを 呼 び 出 す 際 には 抽 象 的 な 名 前 とインタフェースのみを 利 用 し どの 具 象 クラスを 用 いてどのような 初 期 化 を 行 ったオブジェクトを 用 いるかは 全 て DI コンテナが 外 部 から 注 入 してくるのに 任 せる このような 仕 組 みを 利 用 して 開 発 することで 他 の 具 象 クラスに 依 存 したコードを 排 除 し オブジ ェクト 間 の 依 存 性 を 疎 に 保 つことができる Java における EJB も 同 様 の 機 能 を 有 するが O/R マッピングフレームワークの 項 でも 述 べた 通 り EJB は 汎 用 的 な 反 面 非 常 に 複 雑 で 扱 いづらい 仕 様 であった DI コンテナの 代 表 的 な 実 装 として Spring があるが Spring はこの 複 雑 すぎる EJB の 代 替 として 個 人 により 開 発 が 開 始 され 以 降 オープンソースプロジェクトとして 急 速 に 成 長 し 普 及 していった 日 本 でも オープンソースのプロジェクトで 開 発 が 進 められている DI コンテナ として Seasar2 がある 5-1- 基 - 4
スキル 区 分 OSS モデルカリキュラムの 科 目 レベル 開 発 体 系 分 野 5-1- 基 開 発 フレームワークに 関 する 知 識 基 本 習 得 ポイント 5-1- 基 -3. Web アプリケーションで 利 用 できる OSS フレームワーク 対 応 する コースウェア 第 2 回 オープンソースによる Web アプリケーションのフレームワーク 5-1- 基 -3. Web アプリケーションで 利 用 できる OSS フレームワーク オープンソースによる Web アプリケーション 開 発 フレームワークを 紹 介 する Struts JSF ibatis Hibernate Seasar2 Spring といった 代 表 的 なフレームワークを 紹 介 し それぞれの 開 発 内 容 の 違 い について 解 説 する 学 習 の 要 点 * Struts は Java の Web MVC フレームワークとして 広 く 利 用 されている * Hibernate は Java の O/R マッピングフレームワークとして 広 く 利 用 されている * ibatis は Hibernate などと 異 なり SQL を 直 接 記 述 できるので 柔 軟 なデータベースアクセスが 可 能 である * Seasar2 は 国 産 の DI コンテナで 日 本 語 ドキュメントが 非 常 に 豊 富 である 種 類 Web MVC フレームワーク 名 称 Struts JSF (Sun の 参 照 実 装 ) Apache MyFaces ICEFaces 特 徴 Servlet/JSP を 利 用 設 定 をXML で 記 述 JSF 準 拠 JSF 準 拠 JSF 準 拠 O/Rマッピング フレームワーク Hibernate ibatis O/R マッピングをXML で 記 述 SQL 文 を 直 接 記 述 可 能 DIコンテナ Seasar2 Spring Framework 国 産 AOP サポート Less Configuration 思 想 AOP サポート MVC フレームワーク 内 包 図 5-1- 基 -3 開 発 フレームワークの 主 な OSS 実 装 5-1- 基 - 5
解 説 1) OSS の Web MVC フレームワーク * Struts(Apache Struts) http://struts.apache.org/ Struts は Servlet と JSP の 技 術 を 用 いて Web アプリケーションを 開 発 する 際 に 利 用 する Web MVC フレームワークで Apache ソフトウェア 財 団 のトップレベルプロジェクトとして 開 発 が 進 めら れている Struts を 利 用 して Web アプリケーションを 開 発 する 際 には Model 部 分 である Action クラス View 部 分 である JSP ページと View に 埋 め 込 まれる ActionForm クラスを 作 成 し これら の 関 連 を XML の 設 定 ファイルに 記 述 する * JSF(JavaServer Faces) http://java.sun.com/javaee/javaserverfaces/ JSF は JSR(Java Specification Request)に 定 められた Java における Web MVC フレームワーク の 標 準 仕 様 である JSF では Web ページ 表 示 を 構 成 するコンポーネントを UI コンポーネントと 呼 び 高 度 に 抽 象 化 されている また 標 準 で JSP カスタムタグライブラリを 提 供 しているが View 部 分 に JSP を 強 制 するわけではなく 別 のものに 置 き 換 えることも 可 能 である JSF の 代 表 的 な OSS 実 装 は 以 下 の 通 りである - Sunの 参 照 実 装 http://java.sun.com/javaee/javaserverfaces/download.html - Apache MyFaces http://myfaces.apache.org/ - ICEfaces http://www.icefaces.org/main/home/ 2) OSS の O/R マッピングフレームワーク * Hibernate http://www.hibernate.org/ Hibernate は オブジェクトのプロパティと 関 係 データベースのカラムとのマッピングを XML で 記 述 しておくことで O/R マッピングを Hibernate に 移 譲 できる * ibatis http://ibatis.apache.org/ ibatis は Apache ソフトウェア 財 団 のトップレベルプロジェクトとして 開 発 が 進 められている Hibernate などと 異 なり SQL 文 と その SQL 文 を 呼 び 出 すメソッド 名 および SQL 文 の 実 行 結 果 として 取 得 された 結 果 セットのマッピング 先 クラス 名 を XML で 記 述 し O/R マッピングを 実 現 する SQL 文 を 直 接 記 述 できるため 柔 軟 なデータベースアクセスを 行 いつつ ソースコードか らはインピーダンスミスマッチの 問 題 を 排 除 できる 3) OSS の DI コンテナ * Seasar2 http://s2container.seasar.org/ Seasar2 は DI と AOP(アスペクト 指 向 プログラミング)をサポートした 軽 量 コンテナである O/R マ ッピングフレームワークである S2Dao や S2JDBC や JSF 実 装 の Teeda など サブプロジェクト で 連 携 先 エンジンが 開 発 されているほか S2JSF や S2Struts S2Hibernate などを 使 用 すること により 他 のエンジンとシームレスに 統 合 できる 設 計 思 想 として Less Configuration を 掲 げてお り 大 抵 のアプリケーションで 同 様 であろう 部 分 は 極 力 設 定 をしなくても 動 作 するように 意 識 さ れている 国 産 であるため 日 本 語 ドキュメントが 非 常 に 豊 富 である * Spring Framework http://www.springframework.org/ Spring Framework は DI と AOP をサポートした 軽 量 コンテナで JDBC によるデータベースアク セスを 抽 象 化 するレイヤや MVC フレームワークを 内 包 している また Struts や Hibernate との 連 携 機 能 を 持 つ 5-1- 基 - 6
スキル 区 分 OSS モデルカリキュラムの 科 目 レベル 開 発 体 系 分 野 5-1- 基 開 発 フレームワークに 関 する 知 識 基 本 習 得 ポイント 5-1- 基 -4. Tomcat の 特 徴 と Servlet/JSP によるアプリケーション 開 発 対 応 する コースウェア 第 3 回 フリーの Web コンテナ/J2EE コンテナの 概 要 5-1- 基 -4. Tomcat の 特 徴 と Servlet/JSP によるアプリケーション 開 発 Java Servlet/JSP コンテナの 代 表 的 なものとして Tomcat を 取 り 上 げ その 位 置 づけ 特 徴 と Servlet/JSP による Web アプリケーション 開 発 の 具 体 的 な 手 順 を 説 明 する 学 習 の 要 点 * Tomcat は Java Servlet/JSP コンテナとして 高 いシェアを 誇 り 事 実 上 の 標 準 となっている * Tomcat の 実 行 モードには スタンドアロン 内 部 プロセス 外 部 プロセスの 3 つがあるが 内 部 プロセスにより Apache HTTP Server と 連 携 させる 方 法 が 主 流 である 図 5-1- 基 -4 Tomcat の 実 行 モード 5-1- 基 - 7
解 説 1) Tomcat の 特 徴 http://tomcat.apache.org/ Tomcat (Apache Tomcat)は Java Servlet と JSP のコンテナ( 実 行 環 境 )であり Java Servlet と JSP 技 術 の 公 式 な 参 照 実 装 (ソースコードレベルで 参 照 できる 実 装 )として 使 われている ASF(Apache ソ フトウェア 財 団 )が 運 営 するプロジェクトで 開 発 されている OSS であり Apache ソフトウェアライセンス に 基 づいてリリースされている 2) Tomcat の 位 置 づけ Tomcat は 実 行 モードによって 3 つの 位 置 づけがある Apache HTTP Server と 連 携 する 内 部 プロセ ス 型 がもっとも 多 く 利 用 されている * スタンドアロン 型 Tomcat 自 体 に Web サーバの 機 能 が 内 蔵 されており Java ベースの Web アプリケーションであ れば 別 途 Web サーバを 導 入 することなく 利 用 することができる * 内 部 プロセス 型 他 の Web サーバ 上 で Tomcat を 実 行 することで その Web サーバと 連 携 する * 外 部 プロセス 型 他 の Web サーバとは 別 に Tomcat を 実 行 し プロセス 間 通 信 によってその Web サーバと 連 携 す る 内 部 プロセス 型 に 比 べ 処 理 速 度 は 落 ちるが 安 定 性 や 拡 張 性 の 点 でメリットがある 3) Servlet/JSP による Web アプリケーション 開 発 Servlet/JSP による Web アプリケーションを Tomcat で 動 作 させるには 基 本 的 には 以 下 のような 手 順 で 行 う * アプリケーション 用 ディレクトリ 作 成 アプリケーションを 配 置 するディレクトリを 作 成 し アプリケーション(JSP ファイルや class ファイル) を 配 置 する * WEB-INF 作 成 WEB-INF ディレクトリを 作 成 し WEB-INF ディレクトリ 下 に web.xml を 作 成 する web.xml には Servlet/JSP のマッピング 情 報 などを 記 述 する * server.xml 編 集 Tomcat をインストールしたディレクトリ 下 の conf/server.xml を 編 集 し アプリケーション 用 ディレ クトリを 登 録 する * 他 の Web サーバの 設 定 他 の Web サーバと 連 携 する 場 合 その Web サーバ 経 由 でアクセスできるよう 設 定 する * Tomcat 再 起 動 Tomcat を 再 起 動 する 他 の Web サーバと 連 携 する 場 合 その Web サーバも 再 起 動 する 5-1- 基 - 8
スキル 区 分 OSS モデルカリキュラムの 科 目 レベル 開 発 体 系 分 野 5-1- 基 開 発 フレームワークに 関 する 知 識 基 本 習 得 ポイント 5-1- 基 -5. アプリケーションサーバ JBoss の 機 能 と 特 徴 対 応 する コースウェア 第 3 回 フリーの Web コンテナ/J2EE コンテナの 概 要 5-1- 基 -5. アプリケーションサーバ JBoss の 機 能 と 特 徴 アプリケーションサーバについて 例 として 代 表 的 なアプリケーションサーバである JBoss を 取 り 上 げ その 位 置 づけ 特 徴 を 解 説 する また Tomcat との 連 携 や EJB コンテナ 機 能 アプリケーション サーバ 機 能 など JBoss の 持 つ 様 々な 機 能 を 紹 介 する 学 習 の 要 点 * Java EE 規 格 に 準 拠 したソフトウェアは Java アプリケーションサーバと 呼 ばれ アプリケーション サーバの 主 流 をなす * JBoss は 欧 米 では 企 業 システムや 政 府 機 関 システムでの 導 入 実 績 もあり 他 の 商 用 アプリケー ションサーバに 劣 らない 機 能 と 性 能 を 実 現 している 図 5-1- 基 -5 JBoss の 構 成 5-1- 基 - 9
解 説 1) JBoss とは JBoss (JBoss Application Server)は OSS の Java アプリケーションサーバである Java アプリケーシ ョンサーバとは Java EE に 準 拠 したソフトウェアを 指 す 名 称 である JBoss は LGPL ライセンスで 提 供 される 2) JBoss の 位 置 づけと 特 徴 JBoss には Web コンテナ(Tomcat)やデータベース 管 理 システム(HSQLDB)が 同 梱 されているので JBoss を 導 入 するだけで Web アプリケーションの 動 作 環 境 が 構 築 できるようになっている また プ ログラムをアップデートする 際 特 定 のディレクトリにファイルを 設 置 すれば JBoss が 自 動 でデプロ イする JBoss 本 体 を 動 作 させたままプログラムのアップデートが 可 能 なため この 機 能 は ホットデ プロイ と 呼 ばれる 3) Java EE (Java Platform, Enterprise Edition) Java EE は Java SE(Java Platform, Standard Edition)を 主 に 企 業 の 大 規 模 システム 向 けに 拡 張 した Java の 機 能 セットの 仕 様 であり 次 のような 機 能 ( 抜 粋 )が 定 められている * Web コンテナ(Java Servlet JSP のサポート) * EJB(Enterprise JavaBeans)コンテナ * JMS(Java Message Service)による 非 同 期 メッセージ 通 信 * JAAS(Java Authentication and Authorization Service)や JACC(Java Authorization Contract for Containers)による 認 証 * JMX(Java Management Extensions)によるシステム 管 理 * Java RMI(Remote Method Invocation)や IIOP(Internet Inter-ORB Protocol)による 分 散 処 理 4) Tomcat との 連 携 JBoss のパッケージには Tomcat が 同 梱 されており Tomcat と 連 携 することで Web コンテナの 機 能 を 実 現 している 5) EJB コンテナ JBoss は EJB コンテナ 機 能 を 有 する EJB とは JavaBeans(Java アプリケーション 開 発 における 部 品 の 作 成 や 利 用 に 関 する 規 格 )を 企 業 向 けに 拡 張 した 仕 様 である EJB では ネットワークシステムに おけるサーバプログラミングのための 機 能 が 追 加 されており セッション 処 理 のための Session Bean データ 保 存 のための Entity Bean 非 同 期 処 理 などのための MDB(Message-Driven Bean)の 3 つに 大 別 される EJB は 低 レベル 処 理 の 一 切 を 引 き 受 けているので 開 発 者 はビジネスロジックだけに 専 念 することができる 5-1- 基 - 10
スキル 区 分 OSS モデルカリキュラムの 科 目 レベル 開 発 体 系 分 野 5-1- 基 開 発 フレームワークに 関 する 知 識 基 本 習 得 ポイント 5-1- 基 -6. MVC フレームワークの 概 要 対 応 する コースウェア 第 4 回 Web アプリケーションの MVC フレームワーク 概 要 第 5 回 Struts の 概 要 第 6 回 JSPの 概 要 第 7 回 Tapestry の 概 要 第 8 回 Wicket の 概 要 5-1- 基 -6. MVC フレームワークの 概 要 MVC モデルを 適 用 した Web アプリケーション 用 の 開 発 フレームワークとして Web MVC フレームワ ークの 概 念 を 説 明 する モデル ビュー コントローラのそれぞれの 役 割 と お 互 いの 依 存 性 を 低 く したことによる 利 点 を 解 説 する 学 習 の 要 点 * Web MVC により 役 割 を 分 離 させることで プログラムに 変 更 があった 場 合 に 他 の 役 割 への 影 響 を 抑 えることができる * モデルはデータとビジネスロジックを 担 当 し 処 理 の 中 核 となる * ビューは UI への 出 力 を 担 当 する * コントローラはユーザの 入 力 イベントを 受 け 取 り それに 対 応 したモデルとビューの 制 御 を 行 う 図 5-1- 基 -6 Web MVC モデル 5-1- 基 - 11
解 説 1) Web MVC の 概 念 MVC モデルはアプリケーションの 構 造 を 表 し M(モデル) V(ビュー) C(コントローラ)のそれぞれ の 機 能 を 明 確 に 分 離 し 互 いの 依 存 性 を 低 下 させる MVC モデルを 採 用 することで 設 計 実 装 の 分 業 や 各 機 能 の 交 換 再 利 用 が 容 易 になる 利 点 がある 2) モデルの 役 割 モデルはデータ 管 理 とビジネスロジックを 受 け 持 ち アプリケーションの 中 核 となる * データ 管 理 データベースとの 連 携 を 行 い UI 以 外 のデータの 入 出 力 を 管 理 する * ビジネスロジック アプリケーションの 具 体 的 な 処 理 を 行 う 3) ビューの 役 割 ビューは 出 力 を 受 け 持 つ 表 示 のためにモデルから 値 を 受 け 取 る Web アプリケーションにおいては ブラウザへ HTML 型 式 で 出 力 を 行 う 4) コントローラの 役 割 コントローラはアプリケーション 全 体 の 制 御 を 受 け 持 ち モデルとビューの 連 絡 を 行 う * 入 力 受 付 クライアントからのリクエストを 受 け 付 けたり フォームからの 入 力 パラメータを 受 け 取 ったりする * ビジネスロジックの 依 頼 リクエストの 内 容 を 判 断 し 適 切 なビジネスロジックの 実 行 をモデルに 依 頼 する また ビジネス ロジックを 処 理 した 結 果 を 受 け 取 る * 画 面 遷 移 ビジネスロジックの 実 行 結 果 に 応 じて 結 果 の 出 力 をビューに 依 頼 する 5) サービス 指 向 ビジネスロジックをモデルとコントローラのどちらに 記 述 すべきという 点 については 様 々な 意 見 が 存 在 する これに 対 する 答 えの 一 つとして ビジネスロジックを 分 離 し サービスという 形 でモデルとコ ントローラの 間 に 位 置 付 ける 設 計 モデルが 存 在 する 5-1- 基 - 12
スキル 区 分 OSS モデルカリキュラムの 科 目 レベル 開 発 体 系 分 野 5-1- 基 開 発 フレームワークに 関 する 知 識 基 本 習 得 ポイント 5-1- 基 -7. OR マッピングフレームワークの 概 要 対 応 する コースウェア 第 9 回 OR マッピングの 概 要 第 10 回 Hibernate と JPA の 概 要 第 11 回 ibatis の 概 要 5-1- 基 -7. OR マッピングフレームワークの 概 要 オブジェクト 指 向 アプリケーションのデータとして 取 り 扱 うオブジェクトと リレーショナルデータベース に 格 納 されるレコードとの 対 応 を 取 るための 仕 組 みである OR マッピングについて 基 本 的 な 考 え 方 やオブジェクトとレコードの 対 応 関 係 OSS による OR マッピングの 実 装 例 について 解 説 する 学 習 の 要 点 * オブジェクト 指 向 言 語 を 用 いてリレーショナルデータベースを 利 用 するアプリケーションを 開 発 し た 場 合 オブジェクトとデータベースのデータ 構 造 の 違 いが 問 題 となる 場 合 がある * OR マッピング(Object Relational Mapping)はオブジェクトとリレーショナルデータベースの 相 互 変 換 を 行 う 仕 組 みである * OR マッピングではクラスがテーブル インスタンスが 行 インスタンスの 属 性 が 列 に 対 応 する 図 5-1- 基 -7 OR マッピング 5-1- 基 - 13
解 説 1) オブジェクト 指 向 とリレーショナルデータベース オブジェクト 指 向 言 語 を 用 いてリレーショナルデータベースを 利 用 するアプリケーションを 開 発 した 場 合 データ 構 造 がアプリケーション 内 とデータベース 内 に 二 重 に 存 在 することになる これらのデ ータ 構 造 の 間 に 互 換 性 がない(インピーダンスミスマッチ)ため データ 構 造 間 の 変 換 処 理 が 必 要 となる また 変 換 処 理 のほかにも アプリケーション 内 のデータとデータベース 内 のデータの 同 期 処 理 データの 一 貫 性 を 確 保 するための 仕 組 みなど 煩 雑 な 処 理 を 必 要 とする 場 合 が 多 く 開 発 者 の 負 担 となりやすい 2) OR マッピング OR マッピングとは オブジェクト 指 向 言 語 におけるデータ 構 造 と リレーショナルデータベースのデ ータ 構 造 の 違 いを 吸 収 し 相 互 変 換 を 可 能 とする 仕 組 みである OSS を 含 め 様 々な 実 装 が 存 在 し 無 償 で 利 用 可 能 なものも 多 い これらを 利 用 することで 開 発 者 の 負 担 を 削 減 することができる 3) OR マッピングの 基 本 OR マッピングの 利 用 方 法 として 多 くのライブラリ/フレームワークに 共 通 する 要 素 を 以 下 にあげ る * オブジェクト 指 向 のクラスは データベースのテーブルに 対 応 する * インスタンスは データベースの 行 に 対 応 する * インスタンス 属 性 は データベースの 列 に 対 応 する * データの 検 索 結 果 はインスタンスのセットとして 返 却 される * データの 更 新 は 検 索 によって 得 られたインスタンスの 属 性 値 を 変 更 することによって 行 う 4) OR マッピングの 実 装 OR マッピングを 実 現 するライブラリ/フレームワークの 例 を 以 下 にあげる * JPA(Java Persistent API) EJB3 の 仕 様 の 一 部 であり EJB3 に 準 拠 したコンテナで 利 用 することができる J2SE 5.0 仕 様 で 導 入 されたアノテーション(あるデータに 対 してメタデータとして 注 釈 を 付 与 すること)を 利 用 して クラスとテーブルを 関 連 付 ける * Hibernate Java で 利 用 可 能 な OR マッピングフレームワークのうち 最 も 広 く 利 用 されているものの 一 つ Hibernate 本 来 の API のほかに JPA に 準 拠 したインタフェースも 提 供 する * ibatis 検 索 に 利 用 する SQL を 設 定 ファイル 内 に 明 示 する という 特 徴 を 持 つ OR マッピングフレームワ ークであり Java から 利 用 できる SQL の 知 識 を 活 かした 性 能 チューニングが 行 いやすい * ActiveRecord Ruby on Rails に 含 まれている OR マッピングライブラリ クラスとテーブルの 関 連 付 けを 規 約 によ って 行 うため 設 定 ファイルやソースコードの 記 述 量 を 大 幅 に 削 減 できる 5-1- 基 - 14
スキル 区 分 OSS モデルカリキュラムの 科 目 レベル 開 発 体 系 分 野 5-1- 基 開 発 フレームワークに 関 する 知 識 基 本 習 得 ポイント 5-1- 基 -8. DIxAOP フレームワークの 概 要 対 応 する コースウェア 第 12 回 AOP と DI の 概 要 第 13 回 EJB と JBoss Seam の 概 要 5-1- 基 -8. DIxAOP フレームワークの 概 要 Dependency Injection (DI)と Aspect Oriented Programming (AOP)の 概 念 と 利 点 を 整 理 し 新 しい Web アプリケーションの 基 盤 を 成 す DIxAOP コンテナの 仕 組 みと 基 本 的 な 構 成 特 徴 について 解 説 する 学 習 の 要 点 * Dependency Injection(DI)はオブジェクト 間 の 依 存 関 係 を 実 行 時 に 自 動 的 に 解 決 する 仕 組 みで ある * Aspect Oriented Programming(AOP)は ログの 出 力 や 例 外 処 理 のような アプリケーション 中 の 複 数 の 箇 所 で 横 断 的 に 利 用 される 共 通 処 理 を 分 離 することで プログラムのモジュール 性 を 高 めようとするプログラミング 方 法 である * DI と AOP の 実 行 環 境 を 提 供 するフレームワークとして Seasar2 や Spring などがある 図 5-1- 基 -8 Dependency Injection 5-1- 基 - 15
解 説 1) DI(Dependency Injection) DI とは プログラムのモジュール 間 の 依 存 関 係 を 実 行 時 に 解 決 する 仕 組 みである 例 えばオブジ ェクト A がオブジェクト B に 依 存 している(オブジェクト A がオブジェクト B を 利 用 している) 場 合 オ ブジェクト A がオブジェクト B を 生 成 した 上 で 利 用 するという 方 法 が 考 えられる この 方 法 の 欠 点 は オブジェクト A がオブジェクト B に 関 する 情 報 をソースコード 中 に 持 っていなければならない という 部 分 にある もしオブジェクト A がオブジェクト B の 代 わりに 別 なオブジェクトを 利 用 する 必 要 が 生 じ た 場 合 オブジェクト A のソースコードを 修 正 しなければならない DI を 利 用 した 場 合 依 存 するオ ブジェクトの 生 成 手 続 きは 実 行 環 境 によって 自 動 的 に 行 われる そのため オブジェクト 同 士 の 依 存 関 係 をソースコード 中 に 記 述 する 必 要 が 無 い これにより ソフトウェアのコンポーネント 化 が 促 進 され 保 守 のしやすい 構 造 を 実 現 できる また JNDI(Java Naming and Directory Interface)を 利 用 した 場 合 のような 煩 雑 な 生 成 手 続 きを 省 略 することが 可 能 になる 2) DI の 実 現 DI の 実 現 方 法 として オブジェクトの 依 存 関 係 を 設 定 ファイル またはアノテーションに 記 述 してお く 方 法 が 利 用 されている DI コンテナは 設 定 ファイル およびアノテーションに 基 づいてオブジェク トの 生 成 と 注 入 を 行 う Seasar2 のように コンテナが 自 動 的 に 依 存 関 係 の 解 決 を 行 う 実 装 も 存 在 す る 注 入 の 方 式 として setter メソッドを 利 用 する 場 合 や コンストラクタを 利 用 する 場 合 などがある 3) AOP(Aspect Oriented Programming) AOP とは プログラム 中 で 横 断 的 に 利 用 される 機 能 をアスペクトとして 分 離 する 手 法 である AOP を 利 用 することで 問 題 領 域 に 特 化 したロジック 部 分 を 変 更 することなく プログラムの 複 数 の 部 分 で 利 用 される 機 能 の 修 正 追 加 を 行 うことが 容 易 になる アスペクトとして 扱 うことが 可 能 な 機 能 の 例 と しては ログの 出 力 や 例 外 処 理 などがあげられる 4) AOP の 実 現 AOP の 実 現 方 法 として アスペクトとなる 処 理 を 行 うメソッドを 実 装 したクラスを 用 意 し 設 定 ファイル またはアノテーションで 実 行 条 件 に 関 する 設 定 を 行 う 方 法 が 利 用 されている AOP コンテナは 設 定 ファイル およびアノテーションに 基 づいて アスペクトを 適 用 する AOP を 利 用 する 上 で 必 要 な 概 念 を 以 下 に 示 す * Advice アスペクトが 行 う 処 理 と 実 行 するタイミングを 表 す この 場 合 のタイミングとは 例 えば 後 述 する Pointcut としてあるメソッドが 指 定 された 場 合 に 処 理 が 実 行 されるのはメソッドの 呼 び 出 し 前 か 呼 び 出 し 後 か といった 情 報 である * Joinpoint Advice を 適 用 可 能 な 場 所 を 表 す 一 般 的 な Joinpoint としては メソッド 呼 び 出 しなどがあげられ る * Pointcut Joinpoint のうち 実 際 に Advice を 適 用 する 場 所 を 表 す 具 体 的 なメソッド 名 で 指 定 する 場 合 や 正 規 表 現 によって 複 数 のクラス メソッドなどを 指 定 する 場 合 がある * Aspect Advice と Pointcut を 合 わせたものを Aspect と 呼 ぶ 5-1- 基 - 16
スキル 区 分 OSS モデルカリキュラムの 科 目 レベル 開 発 体 系 分 野 5-1- 基 開 発 フレームワークに 関 する 知 識 基 本 習 得 ポイント 5-1- 基 -9. Spring Framework の 利 用 対 応 する コースウェア 第 14 回 Spring Framework の 概 要 5-1- 基 -9. Spring Framework の 利 用 DIxAOP コンテナ 実 装 のひとつである Spring Framework の 基 本 的 な 仕 組 みと 基 本 的 な 構 成 特 徴 について 解 説 する また Struts や Hibernate など 他 のフレームワークとの 連 携 や 開 発 ツールなど 実 際 の 利 用 に 有 効 なトピックを 紹 介 する 学 習 の 要 点 * Spring Framework は DI と AOP の 実 行 環 境 を 提 供 する 他 MVC のサポートや トランザクション 管 理 およびデータベース 接 続 の 抽 象 化 機 能 などを 備 え Web アプリケーションの 全 ての 層 を カバーするフレームワークである * Spring Framework の DI は 他 のフレームワークと 併 用 することが 可 能 であり Controller として Struts を 利 用 する OR マッピングライブラリとして Hibernate を 利 用 する といった 使 い 方 が 可 能 である * Spring Framework の 開 発 に 利 用 できるツールとして Spring IDE が Eclipse のプラグインとして 提 供 されている ORマッピング フレームワーク を 統 合 可 能 Hibernate ibatis JSF ORM Web Struts AOP DAO Context Spring MVC 既 存 のMVC フレームワーク を 利 用 可 能 Core 図 5-1- 基 -9 Spring Framework の 構 造 5-1- 基 - 17
解 説 1) Spring Framework の 構 成 Spring Framework を 構 成 するモジュールのうち 主 なものを 以 下 にあげる * Core container DI を 始 めとした 全 ての 機 能 の 基 礎 となる BeanFactory を 提 供 する BeanFactory の 基 本 的 な 機 能 は XML ファイルなどの 定 義 に 従 って オブジェクトを 適 切 に 組 み 立 てることである * Application context module BeanFactory を 拡 張 し 国 際 化 メッセージ 機 能 や アプリケーションのライフサイクルにおけるイ ベント 処 理 機 能 バリデーション 機 能 などを 提 供 する また JNDI アクセス 機 能 や EJB との 統 合 機 能 など エンタープライズ 分 野 向 けの 機 能 を 提 供 する * AOP module AOP 環 境 を 提 供 する AOP Alliance インタフェースに 基 づいたアスペクトの 構 築 機 能 と AspectJ(AOP が 可 能 となるように 拡 張 した Java)のサポートを 提 供 する * JDBC abstraction and the DAO module JDBC を 利 用 したプログラミングで 発 生 する 煩 雑 なコードを 削 減 し 簡 潔 な DAO(Data Access Object)の 構 築 を 支 援 する また AOP を 利 用 したトランザクション 管 理 機 能 を 提 供 する * Object-relational mapping integration module JDBC abstraction and the DAO module をベースとして Hibernate や ibatis といった OR マッ ピングフレームワーク 向 けの DAO の 構 築 を 支 援 する * Spring MVC framework Spring 自 身 が 提 供 する MVC アーキテクチャによるプレゼンテーション 層 を 構 築 するためのフレ ームワーク 2) Spring Framework と 他 のフレームワークの 連 携 * Struts との 連 携 Struts との 連 携 用 のプラグインが 用 意 されており 連 携 にあたっては struts-config.xml に 登 録 し ておく 必 要 がある 連 携 方 法 として 以 下 の 方 法 がある - アクションクラス 内 で ApplicationContext オブジェクトを 経 由 して Spring 管 理 下 の Bean を 取 得 する アクションクラスで DI 機 能 を 利 用 することはできない - リクエストが Spring 管 理 化 のアクションクラスに 委 譲 されるように Struts の processorclass として DelegatingRequestProcessor を 指 定 する アクションクラスは 通 常 の Bean と 同 様 に Spring のコンテキストに 登 録 する この 場 合 アクションクラスで DI 機 能 を 利 用 できる * Hibernate との 連 携 Hibernate との 連 携 にあたっては 抽 象 化 レイヤとして HibernateTemplate を 利 用 することができ る HibernateTemplate を 利 用 することで セッションのオープンとクローズといった 手 続 きを Spring にまかせることができる HibernateTemplate の 設 定 情 報 として SessionFactory の 生 成 に 必 要 な 情 報 (DataSource クラス Hibernate マッピングファイルなど)を Spring コンテキストで 指 定 する 3) Spring Framework アプリケーションの 開 発 ツール Spring Framework を 利 用 したアプリケーションの 開 発 を 支 援 するツールとして Eclipse のプラグイン Spring IDE が 公 開 されている 5-1- 基 - 18
スキル 区 分 OSS モデルカリキュラムの 科 目 レベル 開 発 体 系 分 野 5-1- 基 開 発 フレームワークに 関 する 知 識 基 本 習 得 ポイント 5-1- 基 -10. Seasar2 の 構 成 と 特 徴 対 応 する コースウェア 第 15 回 Seasar2 の 概 要 5-1- 基 -10. Seasar2 の 構 成 と 特 徴 DIxAOP コンテナ 実 装 のひとつである Seasar2 の 基 本 的 な 仕 組 みと 基 本 的 な 構 成 特 徴 について 解 説 する また Struts や JSF Hibernate など 他 のフレームワークとの 連 携 や 開 発 ツールなど 実 際 の 利 用 に 有 効 なトピックを 紹 介 する 学 習 の 要 点 * Seasar2 コンテナは DI と AOP の 実 行 環 境 を 提 供 するほか ソースコードを 修 正 した 際 の 再 デ プロイ および アプリケーションサーバの 再 起 動 なしに 修 正 を 認 識 する HOT deploy 機 能 を 備 える * Seasar プロジェクト 内 には Seasar2 コンテナが 提 供 する DI/AOP/HOT deploy 機 能 を Struts や JSF など 既 存 のフレームワークと 共 に 利 用 することを 目 的 とした 様 々なサブプロジェクトが 存 在 する * Seasar2 の 開 発 に 利 用 できるツールとして 利 用 するフレームワークに 応 じた Eclipse のプラグイ ンが 提 供 されている 図 5-1- 基 -10 Seasar2 プロジェクト 5-1- 基 - 19
解 説 1) Seasar2 の 設 定 Seasar2 は Spring と 同 様 DI と AOP の 環 境 を 提 供 するコンテナ/フレームワークである 従 来 Spring では 設 定 の 多 くを XML ファイルで 行 っていたため 設 定 ファイルの 記 述 が 膨 大 なものとなり 開 発 者 の 負 担 となる 場 合 があった Spring2.5 では アノテーションを 利 用 することで XML ファイルによる 設 定 量 を 減 らすことが 可 能 になっているものの コンテナの 動 作 を 開 発 者 が 明 示 する という 方 針 は 変 わっていない Seasar2 では Spring 以 上 に 設 定 量 の 削 減 に 力 を 入 れており コンテナが 自 動 的 に 設 定 を 行 う 機 能 が 充 実 している 以 下 に 例 をあげる * 自 動 バインディング DI を 利 用 する 際 に 依 存 関 係 を 明 示 していない 場 合 でも インタフェースやクラス 属 性 名 など によってコンテナが 自 動 的 に 依 存 関 係 を 解 決 する * コンポーネントの 自 動 登 録 ファイルシステム およびjar ファイルからクラスを 検 索 し Seasar2 のコンポーネントとして 自 動 的 に 登 録 する コンポーネントに 対 する 名 前 付 けも 自 動 的 に 行 うことができる * アスペクトの 自 動 登 録 アスペクトの 適 用 先 となるクラスのクラス 名 のパターンや 実 装 インタフェースを 指 定 することで 複 数 のクラスに 対 し 自 動 的 にアスペクトを 登 録 する 2) HOT deploy Seasar2 には HOT deploy と 呼 ばれる コンテナに 登 録 されたクラスを 自 動 的 にロードし 直 す 仕 組 み が 存 在 する HOT deploy 機 能 により ソースコードを 修 正 した 際 に アプリケーションサーバの 再 起 動 や プログラムの 再 デプロイを 行 うことなく 修 正 結 果 を 確 認 することが 可 能 になる 3) Seasar2 と 他 のフレームワークの 連 携 Seasar プロジェクトには Seasar2 で 既 存 のフレームワークを 利 用 することを 目 的 とした 様 々なサブ プロジェクトが 存 在 する 以 下 に 例 をあげる * Teeda JSF に DI と AOP の 機 能 をベースとした 拡 張 機 能 を 提 供 し より 開 発 しやすい 環 境 を 提 供 する View には JSP の 代 わりに HTML を 利 用 する * SAStruts(Super Agile Struts) Struts をベースとした POJO と DI を 中 心 とするフレームワークを 提 供 する アクションクラスやア クションフォームには POJO を 利 用 する アクションクラス 内 で 必 要 なオブジェクトはアノテーショ ンによる DI で 取 得 する * S2Hibernate-JPA Seasar2 Hibernate3 Hibernate Annotations Hibernate EntityManager を 連 携 させ Seasar2 の アプリケーション 内 で JPA を 利 用 することを 容 易 にするフレームワーク 4) Seasar2 アプリケーションの 開 発 ツール * Kijimuna Eclipse プラグイン Seasar2 の 設 定 ファイルである Dicon ファイルの 編 集 を 支 援 する * Dolteng Teeda 向 けの Eclipse プラグイン ソースコードの 自 動 生 成 など 様 々な 機 能 を 提 供 する 5-1- 基 - 20