5-1-基...

23
OSS モデルカリキュラムの学習ガイダンス 5-1-開発フレームワークに関する知識 1. 科目の概要 開発フレームワークとは何か、その基本的な概念、歴史、特徴とメリットを解説する。 さらに開発フレームワークの種類や特徴を説明し、実際の 1 開発に役立てることができる知 識やノウハウを示す。 2. 習得ポイント 本科目の学習により習得することが期待されるポイントは以下の通り。 習得ポイント シラバスの対応コマ 5-1-基-1.開発フレームワークの歴史、思想と背景 開発フレームワークとは何かを説明し、開発フレームワークの基本理念、目的、発展の歴 史、開発フレームワークが登場した背景と思想について解説する。 1 5-1-基-2.開発フレームワークの特徴とメリット 開発フレームワークを利用した開発の特徴と、開発フレームワーク利用の効果、メリットにつ いて解説する。また代表的な開発フレームワークを紹介し、それぞれの歴史や背景、特徴、 利用上の注意点、開発フレームワークの選択方法、ライセンス形態などを説明する。 1 5-1-基-3.Webアプリケーションで利用できるOSSフレームワーク オープンソースによるWebアプリケーション開発フレームワークを紹介する。Struts、JSF、 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. 習得ポイント毎の「学習の要点」と「解説」を参考にして、講義で使用する教材等を準備する。

Upload: others

Post on 08-Mar-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 5-1-基 開発フレームワークに関する知識OSSモデルカリキュラムの学習ガイダンス 5-1-基 開発フレームワークに関する知識 1. 科目の概要

OSS モデルカリキュラムの学習ガイダンス

5-1-基 開発フレームワークに関する知識

1. 科目の概要 開発フレームワークとは何か、その基本的な概念、歴史、特徴とメリットを解説する。

さらに開発フレームワークの種類や特徴を説明し、実際の1開発に役立てることができる知

識やノウハウを示す。 2. 習得ポイント 本科目の学習により習得することが期待されるポイントは以下の通り。

習得ポイント 説 明 シラバスの対応コマ

5-1-基-1.開発フレームワークの歴史、思想と背景開発フレームワークとは何かを説明し、開発フレームワークの基本理念、目的、発展の歴史、開発フレームワークが登場した背景と思想について解説する。

1

5-1-基-2.開発フレームワークの特徴とメリット開発フレームワークを利用した開発の特徴と、開発フレームワーク利用の効果、メリットについて解説する。また代表的な開発フレームワークを紹介し、それぞれの歴史や背景、特徴、利用上の注意点、開発フレームワークの選択方法、ライセンス形態などを説明する。

1

5-1-基-3.Webアプリケーションで利用できるOSSフレームワークオープンソースによるWebアプリケーション開発フレームワークを紹介する。Struts、JSF、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. 習得ポイント毎の「学習の要点」と「解説」を参考にして、講義で使用する教材等を準備する。

Page 2: 5-1-基 開発フレームワークに関する知識OSSモデルカリキュラムの学習ガイダンス 5-1-基 開発フレームワークに関する知識 1. 科目の概要

OSS モデルカリキュラムの学習ガイダンス

3. IT 知識体系との対応関係 「5-1-基 開発フレームワークに関する知識」と IT 知識体系との対応関係は以下の通り。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

5-1-基 開発フレーム

ワークに関する知識開発フレームワークの概要と種類

オープンソースによるWebアプリケーションのフレームワーク

OSSのWebコンテナ/J2EEコンテナの概要

WebアプリケーションのMVCフレームワークの概要

Strutsの概要 JSFの概要 Tapestryの概要 Wicketの概要ORマッピングの概要

Hibernateの概要 iBATISの概要 AOPとDIの概要EJBとJBossSeamの概要

SpringFrameworkの概要

Seasar2の概要

科目名基本レベル

<IT 知識体系上の関連部分> 科目名 1 2 3 4 5 6 7 8 9 10 11 12 13

1IT-IAS 情報保証と情報セキュリティ

IT-IAS1.基礎的な問題

IT-IAS2.情報セキュリティの仕組み(対策)

IT-IAS3.運用上の問題

IT-IAS4.ポリシー IT-IAS5.攻撃IT-IAS6.情報セキュリティ分野

IT-IAS7.フォレンジック(情報証拠)

IT-IAS8.情報の状態

IT-IAS9.情報セキュリティサービス

IT-IAS10.脅威分析モデル

IT-IAS11.脆弱性

2

IT-SP 社会的な観点とプロフェッショナルとしての課題

IT-SP1.プロフェッショナルとしてのコミュニケーション

IT-SP2.コンピュータの歴史

IT-SP3.コンピュータを取り巻く社会環境

IT-SP4.チームワーク

IT-SP5.知的財産権

IT-SP6.コンピュータの法的問題

IT-SP7.組織の中のIT

IT-SP8.プロフェッショナルとしての倫理的な問題と責任

IT-SP9.プライバシーと個人の自由

3 IT-IM 情報管理IT-IM1.情報管理の概念と基礎

IT-IM2.データベース問合わせ言語

IT-IM3.データアーキテクチャ

IT-IM4.データモデリングとデータベース設計

IT-IM5.データと情報の管理

IT-IM6.データベースの応用分野

4IT-WS Webシステムとその技術

IT-WS1.Web技術 [1-Ⅰ-7]

IT-WS2.情報アーキテクチャ [1-Ⅰ-7]

IT-WS3.デジタルメディア

IT-WS4.Web開発 IT-WS5.脆弱性IT-WS6.ソーシャルソフトウェア

5IT-PF プログラミング基礎

IT-PF1.基本データ構造

IT-PF2.プログラミングの基本的構成要素

IT-PF3.オブジェクト指向プログラミング

IT-PF4.アルゴリズムと問題解決

IT-PF5.イベント駆動プログラミング

IT-PF6.再帰

6IT-IPT 技術を統合するためのプログラミング

IT-IPT1.システム間通信 [1-Ⅰ-3]

IT-IPT2.データ割り当てと交換

IT-IPT3.統合的コーディング

IT-IPT4.スクリプティング手法

IT-IPT5.ソフトウェアセキュリティの実現

IT-IPT6.種々の問題

IT-IPT7.プログラミング言語の概要

7CE-SWE ソフトウェア工学

CE-SWE0.歴史と概要

CE-SWE1.ソフトウェアプロセス

CE-SWE2.ソフトウェアの要求と仕様

CE-SWE3.ソフトウェアの設計

CE-SWE4.ソフトウェアのテストと検証

CE-SWE5.ソフトウェアの保守

CE-SWE6.ソフトウェア開発・保守ツールと環境 [1-Ⅰ-4]

CE-SWE7.ソフトウェアプロジェクト管理

CE-SWE8.言語翻訳CE-SWE9.ソフトウェアのフォールトトレランス

CE-SWE10.ソフトウェアの構成管理

CE-SWE11.ソフトェアの標準化 [1-Ⅰ-6]

8

IT-SIA システムインテグレーションとアーキテクチャ

IT-SIA1.要求仕様IT-SIA2.調達/手配

IT-SIA3.インテグレーション [1-Ⅰ-4]

IT-SIA4.プロジェクト管理

IT-SIA5.テストと品質保証

IT-SIA6.組織の特性

IT-SIA7.アーキテクチャ

9IT-NET ネットワーク

IT-NET1.ネットワークの基礎

IT-NET2.ルーティングとスイッチング

IT-NET3.物理層IT-NET4.セキュリティ

IT-NET5.アプリケーション分野 [1-Ⅰ-5]

IT-NET6.ネットワーク管理

CE-NWK0.歴史と概要

CE-NWK1. 通信ネットワークのアーキテクチャ

CE-NWK2.通信ネットワークのプロトコル

CE-NWK3.LANとWAN

CE-NWK4.クライアントサーバコンピューティング [1-Ⅰ-3]

CE-NWK5.データのセキュリティと整合性

CE-NWK6.ワイヤレスコンピューティングとモバイルコンピューティング

CE-NWK7.データ通信

CE-NWK8.組込み機器向けネットワーク

CE-NWK9.通信技術とネットワーク概要

CE-NWK10.性能評価

CE-NWK11.ネットワーク管理

CE-NWK12.圧縮と伸張

CE-NWK13.クラスタシステム

CE-NWK14.インターネットアプリケーション [1-Ⅰ-5,7]

CE-NWK15.次世代インターネット

CE-NWK16.放送

11IT-PT プラットフォーム技術

IT-PT1.オペレーティングシステム [1-Ⅰ-3]

IT-PT2.アーキテクチャと機構

IT-PT3.コンピュータインフラストラクチャ

IT-PT4.デプロイメントソフトウェア [1-Ⅰ-4]

IT-PT5.ファームウェア

IT-PT6.ハードウェア

12CE-OPS オペレーティングシステム

CE-OPS0.歴史と概要

CE-OPS1.並行性CE-OPS2.スケジューリングとディスパッチ

CE-OPS3.メモリ管理

CE-OPS4.セキュリティと保護

CE-OPS5.ファイル管理

CE-OPS6.リアルタイムOS

CE-OPS7.OSの概要CE-OPS8.設計の原則

CE-OPS9.デバイス管理

CE-OPS10.システム性能評価

コンピュー

ハー

ドウェ

アと

アー

キテクチャ

13CE-CAO コンピュータのアーキテクチャと構成

CE-CAO0.歴史と概要

CE-CAO1.コンピュータアーキテクチャの基礎

CE-CAO2.メモリシステムの構成とアーキテクチャ

CE-CAO3.インタフェースと通信

CE-CAO4.デバイスサブシステム

CE-CAO5.CPUアーキテクチャ

CE-CAO6.性能・コスト評価

CE-CAO7.分散・並列処理

CE-CAO8.コンピュータによる計算

CE-CAO9.性能向上

14 IT-ITF IT基礎IT-ITF1.ITの一般的なテーマ [1-Ⅰ-4]

IT-ITF2.組織の問題

IT-ITF3.ITの歴史

IT-ITF4.IT分野(学科)とそれに関連のある分野(学科)

IT-ITF5.応用領域IT-ITF6.IT分野における数学と統計学の活用

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-ESY13.リアルタイムシステム設計

CE-ESY14.組込みマイクロコントローラ

CE-ESY15.組込みプログラム

CE-ESY16.設計手法

CE-ESY17.ツールによるサポート

CE-ESY18.ネットワーク型組込みシステム

CE-ESY19.インタフェースシステムと混合信号システム

CE-ESY20.センサ技術

CE-ESY21.デバイスドライバ

CE-ESY22.メンテナンス

CE-ESY23.専門システム

CE-ESY24.信頼性とフォールトトレランス

複数領域にまたがるもの

15CE-ESY 組込みシステム

システム基盤

10CE-NWK テレコミュニケーション

分野

組織関連事項と情報システム

応用技術

ソフトウェ

アの方法と技術

Page 3: 5-1-基 開発フレームワークに関する知識OSSモデルカリキュラムの学習ガイダンス 5-1-基 開発フレームワークに関する知識 1. 科目の概要

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テンプレート

(3) どのようにフレームワークを選択し、利用するか

(3) Webアプリケーション構築で利用される代表的なオープンソースフレームワーク

(3) Winstone (3) MyFaceとは

(4) ライセンス形態 (4) それぞれの開発内容の違い

(5) 基本的なアプリケーション記述の例

(6) サンプルプログラム

第8回 第9回 第10回 第11回 第12回 第13回 第14回 第15回

(1) Wicketとは (1) OR (2) 代表的なORマッピングライブラリ/フレームワーク

(1) iBATISの概要 (1) DIxAOPの機能 (1) EJB3とは (1) SpringFrameworkの構成と特徴、メリット

(1) Seasar2の構成と特徴、メリット

(2) 代表的なORマッピングライブラリ/フレームワーク

(2) オブジェクトとリレーションのマッピング仕様

(2) オブジェクトとリレーションのマッピング仕様

(2) 実装フレームワーク

(2) JBoss Seamとは (2) DIxAOP以外の主な機能

(2) DIxAOP以外の主な機能

(3) マッピングファイルの作成

(3) 開発ツール (3) 開発ツール (3) 開発ツール

(4) ライセンス (4) ライセンス (4) ライセンス

(5) 公式サイトとリファレンス紹介

(5) 公式サイトとリファレンス紹介

(5) 公式サイトとリファレンス紹介

5-1-基 開発フレームワークに関する知識

(網掛け部分は IT 知識体系で学習できる知識を示し、それ以外は OSS モデルカリキュラム固有の知識を示している)

Page 4: 5-1-基 開発フレームワークに関する知識OSSモデルカリキュラムの学習ガイダンス 5-1-基 開発フレームワークに関する知識 1. 科目の概要

スキル区分 OSS モデルカリキュラムの科目 レベル

開発体系分野 5-1-基 開発フレームワークに関する知識 基本

習得ポイント 5-1-基-1. 開発フレームワークの歴史、思想と背景

対応する

コースウェア

第 1 回 開発フレームワークの概要と種類

5-1-基-1. 開発フレームワークの歴史、思想と背景

開発フレームワークとは何かを説明し、開発フレームワークの基本理念、目的、発展の歴史、開発

フレームワークが登場した背景と思想について解説する。

【学習の要点】

* 開発フレームワークとは、アプリケーションソフトを開発する際に頻繁に必要とされる汎用的な機

能をまとめて提供し、アプリケーションの土台として機能するソフトウェアのことである。

* 開発フレームワークは、ソフトウェア開発におけるさまざまな経験を踏まえ、開発生産性を向上さ

せようとする試みの中で、長い時間をかけて発展してきた。

図 5-1-基-1 開発フレームワークの背景

5-1-基 - 1

Page 5: 5-1-基 開発フレームワークに関する知識OSSモデルカリキュラムの学習ガイダンス 5-1-基 開発フレームワークに関する知識 1. 科目の概要

【解説】

1) 開発フレームワークとは

開発フレームワークとは、アプリケーションを開発する場合に必要となる部品や、実装上のアウトラ

イン、および、制約を提供するもので、ソフトウェア開発における生産性や保守性の向上を目的と

する。アプリケーションの骨組み部分が洗練された形であらかじめ提供されているため、開発担当

者のスキルに依存する新規開発部分の割合を減らすことが可能で、結果として設計レベルの欠陥

を 小限にとどめ、一定の成果物品質を維持できる。

2) 開発フレームワークの基本構成

開発フレームワークは、フローズンスポットとホットスポットから構成される。

* フローズンスポット

アプリケーションによらず常に必要となる機能を有した部分であり、固有のアプリケーションを開

発する際には変更の必要がないものをいう。開発フレームワークでは、これらの機能をそのまま

提供する。

* ホットスポット

アプリケーションによって個別に開発される部分。開発フレームワークでは、この部分を実装上

の制約という形で提供する。フレームワークが規定する制約に則ってホットスポット部分を実装

することにより、初めて開発フレームワークの利点を享受することができる。

フローズンスポットの占める割合がホットスポットのそれに対して大きければ大きいほど、固有のア

プリケーション開発時の工数は少なくなり、より高い開発生産性を得られる。しかしそれと同時に、フ

レームワークによる制約が多くなるため、そのフレームワークを適用できるアプリケーションは限定さ

れ、汎用性を失ってしまう。このように、フレームワークの汎用性と、そのフレームワークを適用した

ことにより得られる開発生産性の向上度合いは、常にトレードオフの関係にある。

3) 開発フレームワーク発展の背景

開発フレームワークは、ソフトウェア開発において先人の知恵を再利用し、開発生産性を向上させ

ようとする試みの中で、長い時間をかけて発展してきたものである。特に GUI アプリケーションの開

発における定型処理を標準化しようとする動きの中で、1980 年に発表された統合開発環境である、

Smalltalk において取り入れられた MVC(Model/View/Controller)の概念は、現在では GUI アプリケ

ーションに留まらず、Web アプリケーション開発に用いられるフレームワークにも大きな影響を与え

ている。

5-1-基 - 2

Page 6: 5-1-基 開発フレームワークに関する知識OSSモデルカリキュラムの学習ガイダンス 5-1-基 開発フレームワークに関する知識 1. 科目の概要

スキル区分 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

Page 7: 5-1-基 開発フレームワークに関する知識OSSモデルカリキュラムの学習ガイダンス 5-1-基 開発フレームワークに関する知識 1. 科目の概要

【解説】

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

Page 8: 5-1-基 開発フレームワークに関する知識OSSモデルカリキュラムの学習ガイダンス 5-1-基 開発フレームワークに関する知識 1. 科目の概要

スキル区分 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 コンテナで、日本語ドキュメントが非常に豊富である。

図 5-1-基-3 開発フレームワークの主な OSS 実装

種類

Web MVCフレームワーク

Struts

JSF (Sun の参照実装)

Apache MyFaces

ICEFaces

DIコンテナ

O/Rマッピングフレームワーク

名称

Hibernate

iBATIS

Seasar2

Spring Framework

特徴

Servlet/JSP を利用、設定をXML で記述

JSF準拠

JSF準拠

JSF準拠

O/R マッピングをXML で記述

SQL 文を直接記述可能

国産、AOP サポート、Less Configuration思想

AOP サポート、MVC フレームワーク内包

5-1-基 - 5

Page 9: 5-1-基 開発フレームワークに関する知識OSSモデルカリキュラムの学習ガイダンス 5-1-基 開発フレームワークに関する知識 1. 科目の概要

【解説】

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

Page 10: 5-1-基 開発フレームワークに関する知識OSSモデルカリキュラムの学習ガイダンス 5-1-基 開発フレームワークに関する知識 1. 科目の概要

スキル区分 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

Page 11: 5-1-基 開発フレームワークに関する知識OSSモデルカリキュラムの学習ガイダンス 5-1-基 開発フレームワークに関する知識 1. 科目の概要

【解説】

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

Page 12: 5-1-基 開発フレームワークに関する知識OSSモデルカリキュラムの学習ガイダンス 5-1-基 開発フレームワークに関する知識 1. 科目の概要

スキル区分 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

Page 13: 5-1-基 開発フレームワークに関する知識OSSモデルカリキュラムの学習ガイダンス 5-1-基 開発フレームワークに関する知識 1. 科目の概要

【解説】

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

Page 14: 5-1-基 開発フレームワークに関する知識OSSモデルカリキュラムの学習ガイダンス 5-1-基 開発フレームワークに関する知識 1. 科目の概要

スキル区分 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

Page 15: 5-1-基 開発フレームワークに関する知識OSSモデルカリキュラムの学習ガイダンス 5-1-基 開発フレームワークに関する知識 1. 科目の概要

【解説】

1) Web MVC の概念

MVC モデルはアプリケーションの構造を表し、M(モデル)、V(ビュー)、C(コントローラ)のそれぞれ

の機能を明確に分離し、互いの依存性を低下させる。MVC モデルを採用することで設計・実装の

分業や各機能の交換・再利用が容易になる利点がある。

2) モデルの役割

モデルはデータ管理とビジネスロジックを受け持ち、アプリケーションの中核となる。

* データ管理

データベースとの連携を行い、UI 以外のデータの入出力を管理する。

* ビジネスロジック

アプリケーションの具体的な処理を行う。

3) ビューの役割

ビューは出力を受け持つ。表示のためにモデルから値を受け取る。

Web アプリケーションにおいては、ブラウザへ HTML 型式で出力を行う。

4) コントローラの役割

コントローラはアプリケーション全体の制御を受け持ち、モデルとビューの連絡を行う。

* 入力受付

クライアントからのリクエストを受け付けたり、フォームからの入力パラメータを受け取ったりする。

* ビジネスロジックの依頼

リクエストの内容を判断し、適切なビジネスロジックの実行をモデルに依頼する。また、ビジネス

ロジックを処理した結果を受け取る。

* 画面遷移

ビジネスロジックの実行結果に応じて、結果の出力をビューに依頼する。

5) サービス指向

ビジネスロジックをモデルとコントローラのどちらに記述すべきという点については様々な意見が存

在する。これに対する答えの一つとして、ビジネスロジックを分離し、サービスという形でモデルとコ

ントローラの間に位置付ける設計モデルが存在する。

5-1-基 - 12

Page 16: 5-1-基 開発フレームワークに関する知識OSSモデルカリキュラムの学習ガイダンス 5-1-基 開発フレームワークに関する知識 1. 科目の概要

スキル区分 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

Page 17: 5-1-基 開発フレームワークに関する知識OSSモデルカリキュラムの学習ガイダンス 5-1-基 開発フレームワークに関する知識 1. 科目の概要

【解説】

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

Page 18: 5-1-基 開発フレームワークに関する知識OSSモデルカリキュラムの学習ガイダンス 5-1-基 開発フレームワークに関する知識 1. 科目の概要

スキル区分 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

Page 19: 5-1-基 開発フレームワークに関する知識OSSモデルカリキュラムの学習ガイダンス 5-1-基 開発フレームワークに関する知識 1. 科目の概要

【解説】

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

Page 20: 5-1-基 開発フレームワークに関する知識OSSモデルカリキュラムの学習ガイダンス 5-1-基 開発フレームワークに関する知識 1. 科目の概要

スキル区分 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 のプラグインとして

提供されている。

Hibernate

JSF

Struts

図 5-1-基-9 Spring Framework の構造

Core

WebORM

AOP

DAO Context SpringMVC

iBATIS

ORマッピングフレームワークを統合可能

既存のMVCフレームワークを利用可能

5-1-基 - 17

Page 21: 5-1-基 開発フレームワークに関する知識OSSモデルカリキュラムの学習ガイダンス 5-1-基 開発フレームワークに関する知識 1. 科目の概要

【解説】

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

Page 22: 5-1-基 開発フレームワークに関する知識OSSモデルカリキュラムの学習ガイダンス 5-1-基 開発フレームワークに関する知識 1. 科目の概要

スキル区分 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

Page 23: 5-1-基 開発フレームワークに関する知識OSSモデルカリキュラムの学習ガイダンス 5-1-基 開発フレームワークに関する知識 1. 科目の概要

5-1-基 - 20

【解説】

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 プラグイン。ソースコードの自動生成など、様々な機能を提供する。