• 検索結果がありません。

OSS モデルカリキュラムの 学 習 ガイダンス 3. IT 知 識 体 系 との 対 応 関 係 4-1- 応 Java に 関 する 知 識 と IT 知 識 体 系 との 対 応 関 係 は 以 下 の 通 り 科 目 名 応 用 レベル

N/A
N/A
Protected

Academic year: 2021

シェア "OSS モデルカリキュラムの 学 習 ガイダンス 3. IT 知 識 体 系 との 対 応 関 係 4-1- 応 Java に 関 する 知 識 と IT 知 識 体 系 との 対 応 関 係 は 以 下 の 通 り 科 目 名 応 用 レベル"

Copied!
23
0
0

読み込み中.... (全文を見る)

全文

(1)

4-1-応 Java に関する知識

1. 科目の概要

Java 言語が利用される Web アプリケーション開発を題材として、Java プログラミング の応用知識を解説する。また、アプリケーション開発に必要な文字コードやテスト、スレ ッドなどの周辺知識についても解説する。

2. 習得ポイント

本科目の学習により習得することが期待されるポイントは以下の通り。 習得ポイント 説 明 シラバスの対応コマ 4-1-応-1.文字コードと国際化 文字データを扱うために必要な文字コードについて解説する。また、国際化として OpenI18N(Open Internationalization)の概要を説明し、Javaにおける国際化の手法として、 ロケールの設定とそれにあわせた書式の変換方法を解説する。 2 4-1-応-2.テストとデバッグ OSSの品質保証活動を支援する、テストとデバッグの手順を解説する。また、OSSの単体テス トを自動化するフレームワーク、カバレジ測定ツール、デバッグツールなどを紹介し、その使 用方法を説明する。 3 4-1-応-3.スレッドと同期 スレッドプログラミングの概要と特徴を説明する。Javaによるスレッドプログラミングを解説し、共有や同期処理についても言及する。 4 4-1-応-4.ネットワークプログラミング Javaによるネットワークプログラミングの概要、特徴を説明する。ネットワークプログラミングの基礎であるソケットを用いたセッション管理について、Javaを例題として説明する。 5 4-1-応-5.Javaを利用したGUIアプリケーション GUIプログラミングのためのフレームワークと、その利用方法を紹介する。各コンポーネントの解説とともに、イベントドリブンの考え方の説明を行う。 6,7 4-1-応-6.MVCアーキテクチャの基本と特徴 Javaアプリケーションを例題として、Webアプリケーションの基本アーキテクチャとして想定さ れるMVC (Model-View-Controller)モデルの内容とメリットについて解説する。それぞれを 構成する要素技術を示し、モデルとの対応関係について説明する。 8 4-1-応-7.EJBによるアプリケーション開発の基本

EJB (Enterprise Java Beans)を活用したアプリケーション開発の概要を説明する。EJBコンテ ナの仕組みやトランザクション処理の手順など、実際のプログラミング事例を示しつつ具体的 な手法について解説する。 10 4-1-応-8.EJBによるビジネスロジックの実装 3層アーキテクチャにおけるビジネスロジック、およびデータアクセス部分の実装について解 説する。具体的な例としてEJB3.0仕様に基づいたEntityクラス、およびSession Beanのプロ グラミング例を示す。 11,12 4-1-応-9.JDBCによるデータベースの操作

JDBC (Java DataBase Connectivity)の基本と歴史、特徴について示し、JDBCを利用した データベースの操作方法について解説する。JDBCによるデータベース操作の具体的な方 法やプログラミング例を示し、データベース操作の基本手順を紹介する。 9,13 4-1-応-10.コードリーディング オープンソースソフトウェアを読み解くことの意義を説明し、コードリーディングに有効な手法 として、関連するドキュメント類の参照方法や、データ構造と処理の流れを読み解く方法を説 明する。更に解析に有用な統合開発環境やツール類の紹介を行う。 14

(2)

3. IT 知識体系との対応関係

「4-1-応 Java に関する知識」と IT 知識体系との対応関係は以下の通り。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 4-1-応 Javaに関する 知識 統合開発環境の 利用 文字コードと国際 化 テストとデバッグ スレッドと同期 ネットワーク GUIアプリケー ション開発・1 (GUIとイベントハ ンドラ) GUIアプリケー ション開発・2 (GUIコンポーネン ト) MVCモデル JDBCによるデータベースアクセスEJBによるアプリケーション開発 Javaによる Server処理実装 の特徴と設計方 法 JavaによるWebア プリケーションの 設計/実装 Javaによる Server Side Java/Webアプリ ケーション実装 コードリーディング Javaアプリケー ションのチューニ ング 科目名 応用レベル <IT 知識体系上の関連部分> 科目名 1 2 3 4 5 6 7 8 9 10 11 12 13 1 IT-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.データベースの応用分野

4 IT-WS Webシステムとその技術 IT-WS1.Web技術 [1-Ⅰ-7] IT-WS2.情報アー キテクチャ [1-Ⅰ-7] IT-WS3.デジタル メディア IT-WS4.Web開発 IT-WS5.脆弱性 IT-WS6.ソーシャ ルソフトウェア 5 IT-PF プログラミング基礎 IT-PF1.基本データ構造 IT-PF2.プログラ ミングの基本的構 成要素 IT-PF3.オブジェ クト指向プログラ ミング IT-PF4.アルゴリ ズムと問題解決 IT-PF5.イベント 駆動プログラミン グ IT-PF6.再帰 6 IT-IPT 技術を統 合するためのプロ グラミング IT-IPT1.システム 間通信 [1-Ⅰ-3] IT-IPT2.データ割 り当てと交換 IT-IPT3.統合的 コーディング IT-IPT4.スクリプ ティング手法 IT-IPT5.ソフト ウェアセキュリ ティの実現 IT-IPT6.種々の問 題 IT-IPT7.プログラ ミング言語の概要

7 CE-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.アーキテクチャ

9 IT-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.システ ム性能評価 コ ン ピュ ー タ ハー ド ウェ ア と アー キ テ ク チャ 13 CE-CAO コン ピュータのアーキ テクチャと構成 CE-CAO0.歴史と概 要 CE-CAO1.コン ピュータアーキテ クチャの基礎 CE-CAO2.メモリシ ステムの構成と アーキテクチャ CE-CAO3.インタ フェースと通信 CE-CAO4.デバイス サブシステム CE-CAO5.CPUアー キテクチャ CE-CAO6.性能・コ スト評価 CE-CAO7.分散・並 列処理 CE-CAO8.コン ピュータによる計 算 CE-CAO9.性能向上 14IT-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 テレコミュニケーション 分野 組 織 関 連 事 項 と 情 報 シ ス テ ム 応 用 技 術 ソ フ ト ウェ ア の 方 法 と 技 術

(3)

4. OSS モデルカリキュラム固有の知識

OSS モデルカリキュラム固有の知識として、Java 言語のフレームワークによる Web 開 発の特徴、開発手法がある。EJB、Servlet による Web システムを、OSS を用いて実際に 構築する事例を通して、実践的な知識を習得する。 科目名 第1回 第2回 第3回 第4回 第5回 第6回 第7回 (1) Javaの開発手順 (1) 文字コード (1) テスト (1) 並列処理 (1) ネットワークプログ ラミングの概要 (1) Swing (1) GUIの形式 (2) 統合開発環境 Eclipse (2) 国際化 (2) デバッグ (2) マルチスレッドの 実装 (2) Swingにおけるイ ベントドリブン 第8回 第9回 第10回 第11回 第12回 第13回 第14回 第15回 (1) MVCアーキテク チャとは (1) JDBCの概念と接 続形態 (1) EJBの概要 (1) JavaによるServer 処理の実装方法 (1) 業務の設計 (1) 構築実習 (1) ソースコードリー ディング (1) パフォーマンス チューニングの戦略 (2) MVCアーキテク チャのメリット (2) JDBCプログラミン グ (2) トランザクション処 理 (2) データベース処理 (2) Java開発の具体 的な作業項目 (2) コード解析手法 (2) プロファイリングの 手法 (3) Servlet/JSP/ JavaBeansの役割 (3) PreparedStatementの 利用方法とそのメリッ (3) プログラミング事 例 (3) 構築実例の紹介 (3) 解析手順 (3) JVMのチューニン グ (4) システム機能/ 非機能要件への対応 (4) トランザクション (Transaction)処理 (4) 読みやすいコード (5) データソース、 JDBC 4-1-応 Javaに関する 知識 (2) GUIコンポーネント (JLabel、JButton、 JCheckBox、 JRadioButton、 JTextArea、など) (網掛け部分はIT 知識体系で学習できる知識を示し、それ以外は OSS モデルカリキュラム固有の知識を示している)

(4)

プログラミング分野 4-1-応 Java に関する知識 応用 習得ポイント 4-1-応-1. 文字コードと国際化 対応する コースウェア 第 2 回 文字コードと国際化

4-1-応-1. 文字コードと国際化

文字データを扱うために必要な文字コードについて解説する。また、国際化として OpenI18N(Open Internationalization)の概要を説明し、Java における国際化の手法として、ロケールの設定とそれに あわせた書式の変換方法を解説する。 【学習の要点】 * コンピュータ上で文字を扱うためには文字コードを設定する必要がある。

* 様々な言語や地域にソフトウェアを適合させるため、LSB(Linux Standard Base)の一部である OpenI18N には、オープンソースソフトウェアの国際化対応に関する標準仕様が策定されてい る。

* 言語、地域(国)、地域固有の言語(オプション)から構成されるロケールの設定にあわせて、国際 化のプログラミングが可能である。

(5)

1) 文字コード 文字や記号をコンピュータ上で扱うために関連付けられた値のこと、もしくは、その体系を文字コー ドと呼ぶ。英数字は 1 バイトで表わされ、ASCII がほぼ世界標準である。日本語や中国語、韓国語 などは独自に定めた文字コードを使用するが、異なる文字コードで書かれた文字を表示すると正 常に表示されないなど、互換性に問題が残る。日本で主に使われている文字コードは以下の通り である。 * Shift-JIS 日本語の文字コードの一つ。Windows や Mac OS で使われる。 * EUC(Extended Unix Code)

Unix や Linux で使われる文字コード。 * Unicode

世界中の言語の文字を単一のコードで扱うための文字コード。Java において、プログラム内部 での文字列は Unicode で扱われる。

* UTF-8

Unicode の符号化方式の一つ。Linux のディストリビューションによっては UTF-8 を OS 標準の 文字コードとしている。Mac OS X で使われる。 2) 国際化 国際化とは、国や地域によって異なる言語や通貨といったものに、ソフトウェアを対応付けることで ある。LSB の一部である OpenI18N には、オープンソースソフトウェアの国際化対応に関する標準仕 様が策定されている。 * ロケール Java では特定の地域を表すために、Locale クラスが用意されている。言語、地域(国)、地域固 有の言語(オプション)の指定を行うことができる。 * 通貨・数値 NumberFormat クラスを用いることによって、Locale に応じた通貨や数値、割合(%)のフォーマット を表すことができる。 * 日付と時刻 DateFormat クラスを用いることによって、Locale に応じた日付や時刻のフォーマットを表すこと ができる。 * テキスト Collator クラスを用いることによって、Locale に応じて文字列のソートを行うことができる。

(6)

プログラミング分野 4-1-応 Java に関する知識 応用 習得ポイント 4-1-応-2. テスト 対応する コースウェア 第 3 回 テストとデバッグ

4-1-応-2. テストとデバッグ

OSS の品質保証活動を支援する、テストとデバッグの手順を解説する。また、OSS の単体テストを自 動化するフレームワーク、カバレジ測定ツール、デバッグツールなどを紹介し、その使用方法を説 明する。 【学習の要点】 * プログラムやモジュールの仕様に基づいたテストケースを作成し、テストプログラムに実装して動 作を確認することで、正しいプログラムを作成する。 * カバレジ測定ツールでの計測値が要求仕様に満たなければ、品質の向上と保証のためにテス トケースを改修する。 * デバッグでの原因特定でテストケースの不備が表出すれば、テストケースを改修する。 図 4-1-応-2 テストとデバッグ

(7)

1) テスト 品質保証活動のひとつにユニットテストがあり、コーディングの後には必ず行う工程である。 * Java において、ユニットテストはクラスやメソッドをテスト対象の単位とする。ユニットテストを行うた めには、テストケースを作成する必要がある。引数に与える値と、その値でメソッドを実行したと きに期待される処理結果の値について、プログラムやモジュールの仕様に基づきテストケースを 作成する。これをもとに、実行結果と期待値を比較するコードをテストプログラムに実装し、その 他スタブやカバレジ測定などのテスト環境を整備する。こうして整った環境下で、テストプログラ ムを実行し、期待通りの結果となるかどうかをテストするのがユニットテストである。結果が期待値 と異なればデバッグを行い、再度ユニットテストを行うために、テストプログラムを実行する。 またカバレジの計測値が要求仕様に満たなければ、テストケースを改修してテストプログラムに 実装し、再度ユニットテストを行う。後にソースコードが改修されれば、それによって既存の機能 に不具合を及ぼしていないか検査するために、再びユニットテストを実行する。このように、一度 使用されたテストプログラムは、後にユニットテストを繰り返す回帰テスト用のテストプログラムとし て再利用される。 * 近年、オープンソースソフトウェアのテストツールが高く評価され、様々なテストツールが普及し 利用されている。そのなかには、ユニットテスト自動化ツールや、カバレジ測定ツールも含まれ ている。これらのツールを取りそろえたサイトには「Open Source Testing」などがある。Java に関 する代表的なテストツールには下記のものがある。 - ユニットテスト自動化ツールとして、「JUnit」や「TestNG」などがある。 - カバレジ測定ツールとして、「cobertura」や「EMMA」などがある。 2) デバッグ テストで不具合を検出した場合、デバッグを実施する。 * デバッグは下記の手順で行われる。 - エラー内容認識 - 再現手順明確化 - 発生箇所特定 - 原因特定 - 修正方法考察 - 修正実施 * デバッグでの原因特定でテストケースの不備が表出すれば、テストケースを改修する。 * 代表的なツールは、コマンドラインでは「jdb」がある。IDE では「Eclipse」のデバッグ機能が利用 されることが多い。

(8)

プログラミング分野 4-1-応 Java に関する知識 応用 習得ポイント 4-1-応-3. スレッドと同期 対応する コースウェア 第 4 回 スレッドと同期

4-1-応-3. スレッドと同期

スレッドプログラミングの概要と特徴を説明する。Java によるスレッドプログラミングを解説し、共有や 同期処理についても言及する。 【学習の要点】 * マルチスレッドプログラミングによって複数の処理を同時に走らせることができるようになる。 * Java では Thread クラスを用いてスレッドプログラミングを実現する。 * 同じリソースを非同期で扱うこともあるので、リソースの共有と排他を考える必要がある。 図 4-1-応-3 Thread クラスの使用例

(9)

1) スレッド スレッドとは処理の実行単位であり、1 つのプログラムで複数のスレッドを同時に動作しているように 見せることをマルチスレッドという。1 つの CPU は同時に実行できる処理は 1 つだけであるから、実 際には OS がそれぞれのスレッドに CPU リソースを割り振って、同時に処理が行われているように見 せている。 マルチスレッドプログラミングにより、たとえば、重い処理(大量の検索など)や継続的な処理(音楽を 流すなど)を行いつつ、同時にユーザの入力を受け付ける、といった処理が可能になる。 2) Java におけるスレッド

Java では Thread クラス、もしくは、Runnable インタフェースを利用することでスレッドプログラミングを 実現することができる。Thread クラスの主なメソッドを以下に紹介する。 * run() スレッドで実行される処理。このメソッドを終了すればスレッドも終了する。 * start() スレッドをスケジュールに登録する。実行のタイミングは OS に任される。 * sleep() 指定した時間だけスレッドを停止し、処理を他のスレッドに渡す。 * join() 指定したスレッドが終了するまで、もしくは、指定時間まで待つ。 3) 同期 同一プロセス内であれば、それぞれのスレッドはメモリなどのリソースを共有している。メモリが節約 できる、共有データへのアクセスが容易であるなど利点がある一方で、非同期的にデータを操作す るとデータの内容が破壊される可能性がある。複数のスレッドが影響してデータを破壊する可能性 がある処理を、クリティカルセクションと呼ぶ。 * synchronized クリティカルセクションに対して synchronized 指定を行うことにより、同時に 1 つのスレッドのみ実 行可能とする。これはオブジェクトのロックで実現される。synchronized 指定された範囲では、オ ブジェクトに対して処理を行う前にロックを取得する必要がある。ロックは 1 つのスレッドしか取得 することができず、処理中のスレッドがロックを解放するまで、他のスレッドは処理の実行を待た される。synchronized は、メソッド、もしくは、ブロックに対して指定することができる。 * wait()/notifyall() synchronized 指定された処理の中で待機を行う必要がある場合には、wait()を使用する。wait() を呼び出すと、そのスレッドは処理の実行権を他のスレッドに渡し、オブジェクトのロックを放棄 する。notifyall()はそのオブジェクトに対して待機している全てのスレッドを再開させる。

(10)

プログラミング分野 4-1-応 Java に関する知識 応用 習得ポイント 4-1-応-4. ネットワークプログラミング 対応する コースウェア 第 5 回 ネットワーク

4-1-応-4. ネットワークプログラミング

Java によるネットワークプログラミングの概要、特徴を説明する。ネットワークプログラミングの基礎で あるソケットを用いたセッション管理について、Java を例題として説明する。 【学習の要点】 * ネットワークプログラミングとは、複数のサーバーやクライアント間で情報をやり取りする働きを持 つアプリケーションを作ることである。 * Java によるネットワークプログラミングの特徴は、豊富なライブラリにより比較的短いコードでネッ トワークアプリケーションを作ることができる。 * ソケットを用いたセッション管理とは、クライアントとサーバーの間の接続を開始から終了まで確 立するものである。 図 4-1-応-4 ソケットによる通信

(11)

1) ソケットを用いたセッション管理 ソケットは、ホスト名または IP アドレスと、TCP ポート番号とを利用して、リモートホストに接続するた めの仕組みである。 接続が確立されてから切断されるまでの間を、セッションという。TCP/IP の通信においては、サー バとクライアント間の通信が、他のクライアントとの通信と混じらないように、セッション管理の機構が 必須である。 2) Java によるネットワークプログラミング URL、IP アドレスなどのネットワークの基礎知識は、Java を用いてネットワークプログラムを書くときに 必要になる知識である。これらを扱うクラスライブラリが、java.net パッケージである。ソケット関連の クラスは以下のようなものがある。 * ServerSocket サーバーソケットのクラス。ポート番号を指定して生成すると、そのポートに対してサーバーソケ ットが作られる。 * Socket ソケット接続のクラス。サーバでは ServerSocket クラスの accept()メソッドにより待ち受けとして生 成される。クライアントではホストとポート番号とを指定して生成する。 * InputStream 入力ストリームのクラス。Socket クラスの getInputStream()メソッドにより生成される。 * InputStreamReader 入力ストリームからの読み取りのクラス。InputStream クラスのオブジェクトを指定して生成する。 * BufferedReader 読み取りバッファのクラス。InputStreamReader クラスのオブジェクトを指定して生成する。 * OutputStream 出力ストリームのクラス。Socket クラスの getOutputStream()メソッドにより生成される。 * OutputStreamWriter 出力ストリームへの書き込みのクラス。OutputStream クラスのオブジェクトを指定して生成する。 * BufferedWriter 書き込みバッファのクラス。OutputStreamWriter クラスのオブジェクトを指定して生成する。 3) RMI によるネットワークプログラミング

Java を使ってネットワークプログラミングをするには、RMI(Remote Method Invocation)を用いる方法 もある。RMI を使うことによって、トランスポート層を意識しなくてもネットワークプログラミングができる ようになった。

(12)

プログラミング分野 4-1-応 Java に関する知識 応用 習得ポイント 4-1-応-5. Java を利用した GUI アプリケーション 対応する コースウェア 第 6 回 GUI アプリケーション開発・1 第 7 回 GUI アプリケーション開発・2

4-1-応-5. Java を利用した GUI アプリケーション

GUI プログラミングのためのフレームワークと、その利用方法を紹介する。各コンポーネントの解説と ともに、イベントドリブンの考え方の説明を行う。 【学習の要点】

* Swing は、Java Foundation Classes(JFC)に含まれる、GUI を作成するためのツールである。 * GUI を構成するコンポーネントには様々な種類があり、用途によって使い分ける。

* コンポーネントはユーザに操作されるとイベントを発行する。開発者はイベントに対応した処理 を作成すればよい。

(13)

1) Swing とは

Swing は Java における GUI を構築するためのツールであり、JFC に含まれている。JDK1.1 までの Java では GUI の構築には AWT(Abstract Window Toolkit)が使われていたが、JDK1.2 でこれを拡 張し改良したものが Swing である。Swing は、GUI の描画をプラットフォームに依存せずに、自身で 行っている(このようなコンポーネントを軽量コンポーネントという)。これにより、動的に変更可能な Look&Feel を実現している。 2) GUI コンポーネント Swing の主要な GUI コンポーネントを以下に紹介する。 * JFrame アプリケーションのメインフレーム。他の GUI コンポーネントを格納するほか、メニューバーを加 えることができる。 * JApplet アプレットのメインとなり、他の GUI コンポーネントを格納する。 * JLabel、JButton、JCheckBox、JRadioButton、JTextArea など GUI を構成する様々な部品であり、それぞれ、固定テキスト、ボタン、チェックボックス、ラジオボ タン、テキストエリアを表す。他にも一般的な GUI コンポーネントが用意されている。 3) イベントドリブン イベントドリブン(イベント駆動)とは、ボタンが押されたなどのイベントをトリガにして、対応した処理を 実行するプログラムの形式。Swing をはじめとする GUI で採用されていることが多い。 Swing では次の 4 つの要素で実現されている。 * イベントソース イベントの発生源。主に GUI コンポーネントとなる。 例: 一般的なボタンであれば、JButton クラス。 * イベント 発生したイベント。イベントソースで作られ、イベントリスナへ渡される。 例: ボタンのクリックであれば、ActionEvent クラス。 * イベントリスナ イベントに対応したインタフェースを実装したクラス。イベントソースは、自身に登録されたイベン トリスナへイベントを発行する。 例: ActionEvent に対応するリスナは、ActionListener インタフェース。 * イベントハンドラ 行うべき処理。イベントリスナ中のメソッドである。

(14)

プログラミング分野 4-1-応 Java に関する知識 応用 習得ポイント 4-1-応-6. MVC アーキテクチャの基本と特徴 対応する コースウェア 第 8 回 MVC モデル

4-1-応-6. MVC アーキテクチャの基本と特徴

Java アプリケーションを例題として、Web アプリケーションの基本アーキテクチャとして想定される MVC (Model-View-Controller)モデルの内容とメリットについて解説する。それぞれを構成する要素 技術を示し、モデルとの対応関係について説明する。 【学習の要点】 * MVC モデルとは、プログラムをモデル(Model)、ビュー(View)、コントローラー(Controller)という3 つに分けて設計する手法のことをいう。 * Web アプリケーションを作る際にも、MVC モデルが適用できる。 * MVC モデルを用いることで、作業の分業が明確になり、開発効率の向上が望める。 図 4-1-応-6 Java における MVC モデルの概要

(15)

1) MVC モデルとは MVC モデルとは、プログラムをモデル(Model)、ビュー(View)、コントローラー(Controller)という3つ に分けて設計する手法である。 2) Model、View、Controller * Model (EJB) Model はアプリケーションの根幹をなす部分である。アプリケーションの主たる処理内容とデータ を表す。特定の環境に依存しない部分のため、EJB の担当箇所とする設計が適切である。 * View (JSP) View はアプリケーションのユーザーインタフェースを定義する部分である。Web アプリケーション を例にとるならば、フォームやボタンなどの配置を決めてデザインを作る作業が、この View に当 たる。View は HTML を生成しクライアントに送るもののため、JSP 担当の設計が適切である。 * Controller (Servlet)

Controller は View と Model の間を取り持つ部分である。View のフォームなどから入力された値 を受け取り、それを Model に送る。クライアントからの入力は JSP でも担当することができるが、 Controller にもロジックが必要なので、サーブレットに担当させる設計が適切である。 3) MVC モデルのメリット このような手法を採用するメリットは、以下のようなものがある。 * デザイン作り、アプリケーションの根幹、表示とアプリケーションの根幹の間を取り持つ部分とい ったように開発作業の分業が明確にすることで、開発効率が上がる。 * Model、View、Controller のそれぞれの独立性が高いので、仕様変更に対しても柔軟に対応す ることができる。 * ユーザーインタフェース部分を変更するのが容易である。 4) MVC モデルで作られたプログラムの動作の流れ A) クライアントからのリクエストを Controller が受け付ける。

B) Controller が該当する Model に処理を依頼する。もし必要があれば View にも表示の書き換えを 指示する。

C) Model が処理結果を View に渡す。 D) View は出力(表示)用のデータを整える。 E) クライアントにレスポンスを返す。

(16)

プログラミング分野 4-1-応 Java に関する知識 応用 習得ポイント 4-1-応-7. EJB によるアプリケーション開発の基本 対応する コースウェア 第 10 回 EJB によるアプリケーション開発

4-1-応-7. EJB によるアプリケーション開発の基本

EJB (Enterprise Java Beans)を活用したアプリケーション開発の概要を説明する。EJB コンテナの仕 組みやトランザクション処理の手順など、実際のプログラミング事例を示しつつ具体的な手法につい て解説する。

【学習の要点】

* EJB はモジュール化されたエンタープライズアプリケーションを構築するためのアーキテクチャ であり、トランザクションやセキュリティ等、ビジネスロジックの実装に有用な機能が提供される。 * EJB はビジネスロジックを記述した Enterprise Bean を EJB コンテナにデプロイすることで利用可

能となる。

* EJB コンテナは、Enterprise Bean の実行環境を提供し、JSP や Servlet を始めとする外部コンポ ーネントからの呼び出しに応じて Enterprise Bean に記述された処理を実行する機能を持つ。ま た、データベースへの接続機能やトランザクションの管理機能を提供する。

* EJB それ自体には、ユーザインタフェースを提供する機能が存在しないため、プレゼンテーショ ン層の機能を提供するソフトウェアと組み合わせて利用されることが多い。

(17)

1) EJB とは

EJB はエンタープライズアプリケーションにおけるビジネスロジックの実現を容易にすることを目的と して策定されたアーキテクチャ仕様である。Java EE の仕様の一部として作成され Java Community Process の元で改良が進められている。EJB を利用することで、トランザクションやセキュリティ等、ビ ジネスロジックの実装に有用な機能が提供されるほか、エンタープライズアプリケーションのモジュ ール化を推進し、再利用を容易にする効果があると考えられている。

2) EJB3

EJB1.x および EJB2.x では、仕様が複雑で実装がしづらいなどの要因により、EJB を利用した開発 は必ずしも開発者に支持されてこなかった。2006 年に発表された EJB3.0 では、その反省を踏まえ 開発のし易さ(Ease of Development)が重視されており、POJO(継承を伴わないシンプルな Java オ ブジェクト)とアノテーションを中心とした仕様となっている。

3) EJB の実行環境

EJB の実行環境を EJB コンテナと呼び、プロプライエタリな製品のほか、JBoss や Apache Geronimo などの OSS も公開されている。EJB コンテナは Servlet や JSP などの呼び出しに応じて Enterprise Bean を動作させ、ビジネスロジックを実現する。さらに、トランザクション管理機能やデータベース接 続機能などがコンテナから提供される。機能の多くは、アノテーションや設定ファイルによる宣言的 な記述により利用することが可能である。

4) EJB のトランザクション管理機能

EJB ではトランザクション管理の方式として CMT と BMT の 2 種類がある。どちらを利用するかは Session Bean クラスに対する@TransactionManagement アノテーションによって指定し、指定しなか った場合は CMT となる。

* CMT(Container Managed Transaction)

トランザクションの開始と終了は EJB コンテナによって制御される。基本的な動作は、メソッドの 開始時にトランザクションが開始され、メソッドが正常終了した際にコミットを行う。メソッドが例外 をスローした場合にはロールバックする。EJB のクラスまたはメソッドに@TransactionAttribute ア ノテーションを付加することにより、制御方法を指定可能である。

* BMT(Bean Managed Transaction)

トランザクションの開始と終了は JTA(Java Transaction API)の UserTransaction インタフェースを 利用して、プログラムによって制御する。

- トランザクションの開始は UserTransaction インタフェースの begin メソッドによって行う。

- コミットは UserTransaction インタフェースの commit メソッドによって行う。

(18)

プログラミング分野 4-1-応 Java に関する知識 応用 習得ポイント 4-1-応-8. EJB によるビジネスロジックの実装 対応する コースウェア 第 11 回 Java による Server 処理実装の特徴と設計方法 第 12 回 Java による Web アプリケーションの設計/実装

4-1-応-8. EJB によるビジネスロジックの実装

3 層アーキテクチャにおけるビジネスロジック、およびデータアクセス部分の実装について解説す る。具体的な例として EJB3.0 仕様に基づいた Entity クラス、および Session Bean のプログラミング例 を示す。

【学習の要点】

* EJB3.0 では、POJO にアノテーションを付加することで、Enterprise Bean を記述する。

* EJB3.0 仕様の一部である JPA(Java Persistent API)では、Entity クラスを利用した O/R マッピン グ仕様が規定されている。

* 3 層アーキテクチャにおけるビジネスロジック部分の処理は Session Bean に記述する。

(19)

1) Entity クラス

Entity クラスはデータベースに保存されるオブジェクトを実装するためのクラスであり、EJB3.0 仕様 の一部である JPA(Java Persistent API)に仕様が規定されている。Entity クラスとして実装したクラス は、EJB コンテナによってデータベーステーブルと関連付けられる。レコードの検索、保存は JPA の EntitiyManager インタフェースを利用して行い、検索結果は Entity クラスのインスタンスセットとして 取得できる。なお、EJB2.x 以前の仕様では、Entity Bean がデータベース接続技術として用いられ ていた。EJB2.x 以前の Entity Bean と、EJB3.0 の JPA 仕様に基づく Entity クラスは全く別の仕様で あるが、後者を「EJB3.0 における Entity Bean」と表現する場合もある。

2) Entity クラスの実装

Entity クラスは POJO にアノテーションを付加することで定義する。

* クラスに@Entity アノテーションを付加することにより Entity クラスであることを示す。

* 属性または getter メソッドに、@Id アノテーションを付加することにより、この属性が主キーである ことを示す。

* @Id アノテーションを付加した属性または getter メソッドに、@GeneratedValue アノテーションを 付加することにより、主キーの値が自動生成されることを示す。

* 属性または getter メソッドに、@Column アノテーションを付加することにより、カラム名や nullable か否かなど、データベースのカラムに関する情報を指定できる。

* 属性または getter メソッドに、@ManyToOne、@OneToOne、@OneToMany、@ManyToMany アノ テーションのいずれかを指定することにより他の Entity クラス(テーブル)との関連を指定できる。 3) Session Bean

Session Bean はビジネスロジックを実装するための Bean である。トランザクション属性やセキュリティ 属性は Session Bean に対して指定する。内部状態を持つ Stateful Session Bean と持たない Stateless Session Bean が存在する。

4) Session Bean の実装

Session Bean はクラスおよびインタフェースにアノテーションを付加することにより定義する。 * クラスに@Stateful アノテーションを付加することにより Stateful Session Bean であることを示す。 * クラスに@Stateless アノテーションを付加することにより Stateless Session Bean であることを示

す。

* Session Bean は、外部インタフェースを実装する必要がある。@Local アノテーションをインタフェ ースに付加することにより、同一 JVM 内からアクセスするためのインタフェースであることを示す。 @Remote アノテーションを付加することにより、別 JVM からアクセスするためのインタフェースで あることを示す。

(20)

プログラミング分野 4-1-応 Java に関する知識 応用 習得ポイント 4-1-応-9. JDBC によるデータベースの操作

対応する コースウェア

第 9 回 JDBC によるデータベースアクセス

第 13 回 Java による Server Side Java/Web アプリケーション実装

4-1-応-9. JDBC によるデータベースの操作

JDBC (Java DataBase Connectivity)の基本と歴史、特徴について示し、JDBC を利用したデータベ ースの操作方法について解説する。JDBC によるデータベース操作の具体的な方法やプログラミン グ例を示し、データベース操作の基本手順を紹介する。 【学習の要点】 * JDBC は Java プログラムからデータベースにアクセスする方法を定義した API である。 * JDBC は JDK1.1 から標準 API に含まれており、JDK6 には JDBC4.0 が含まれている。 * JDBC を利用してデータベースにアクセスする際には、接続方法、および接続先データベース に応じた JDBC ドライバを必要とする。 * JDBC にはデータベース接続、トランザクションの管理、SQL の実行などの操作を行うための標 準的な方法が用意されている。 図 4-1-応-9 DataSource インタフェースを利用したデータベース操作の例

(21)

1) JDBC

JDBC は Java プログラムからデータベースにアクセスする方法を定義した API であり、標準化された 手順で各種データベースに対するアクセスを行うことができる。JDBC は JDK1.1 から標準 API に含 まれており、version 3.0 からは Java Community Process により仕様の策定が行われている。JDK6 には JDBC4.0 が含まれている。 2) JDBC ドライバ JDBC を用いて各種データベースに接続する場合には、データベースに対応した JDBC ドライバが 必要となる。詳細は「I-13-9. JDBC によるデータベースアクセス方法」を参照のこと。JDK6 には Java DB と呼ばれる Java 言語により実装されたデータベースが含まれており、外部のデータベース、 および JDBC ドライバを導入することなくデータベースプログラミングを行うことが可能となっている。 なお、Java DB は Apache プロジェクト内で開発されている Apache Derby を Sun Microsystems 社が サポートしたものである。 3) Java EE におけるデータベース接続 JDBC の最も基本的な使い方である、DriverManager クラスを利用したデータベースアクセスの方法 については、「I-13-9. JDBC によるデータベースアクセス方法」を参照のこと。Java EE では DriverManager クラスの代わりに DataSource インタフェースを利用してデータベース接続を取得す る方法が推奨されている。 * DataSource インタフェースの実装は JDBC ドライバの提供元や、フレームワーク、Java EE コンテ ナなどから提供されている。 * DataSource インタフェースを経由してデータベース接続を取得することにより、接続プーリング など、高度な機能が利用可能になる。 * 利用する DataSource クラスや JDBC ドライバ、および各種接続情報やパラメータは、コンテナの 指定する設定ファイルに記述し、プログラム内からは、JNDI で取得する場合が多い。 * DI(Dependency Injection)の機能を提供するコンテナを利用している場合、DataSource クラスの 取得はコンテナによって自動的に行われる。 4) DataSource インタフェースを利用したデータベース接続手順 * JNDI リソースの登録 登録手順は、コンテナのドキュメントを参照のこと。 * JNDI を利用した DataSource オブジェクトの取得 - new javax.naming.InitialContext()により、Context オブジェクトを取得する。

- Context オブジェクトの lookup メソッドにより、DataSource オブジェクトを取得する。

(22)

プログラミング分野 4-1-応 Java に関する知識 応用 習得ポイント 4-1-応-10. コードリーディング 対応する コースウェア 第 14 回 コードリーディング

4-1-応-10. コードリーディング

オープンソースソフトウェアを読み解くことの意義を説明し、コードリーディングに有効な手法として、 関連するドキュメント類の参照方法や、データ構造と処理の流れを読み解く方法を説明する。更に 解析に有用な統合開発環境やツール類の紹介を行う。 【学習の要点】 * OSS 開発コミュニティの様々な資料を参考に、データ構造と処理の流れをソースコードから解析 することで、開発者の意図する動作を理解し、改善策を講じられるようになる。 * OSS 市場で実際に使用されている多数のソースコードが入手可能であり、個人の目的に合わせ てリーディングすることで実践的な技能を修得できる。 * OSS の統合開発環境が充実し、その豊富な機能を利用することにより、効率的にコードを読む ことができる。 * コーディング規約とは、ソースコードを記述する際の決め事であり、可読性や保守性などが向上 する。

(23)

1) ソースコードリーディング オープンソースソフトウェアの市場が拡大した現在、SourceForge を代表とするホスティングサイトか ら、実際に市場で使用されている、あらゆる種類のソースコードを入手することができる。ソースコー ドリーディングの目的は様々あるが、個人の目的に合わせて、ソースコードが示す内容を理解する ことで、実践的な技能を修得することができる。更に、解析したソースコードをもとに、改善策を講じ られるようになる。 2) コード解析手法 ソースコードを解析するには、ただ漠然とコードを目で追うだけでなく、解析ポイントにあわせた的 確な手法を用いる必要がある。 * ツールの活用 コード解析の手法には、動的解析と静的解析がある。動的解析は、実際にプログラムを動かし て解析する手法であり、デバッガやプロファイラなどを利用して解析を行う。シンボリックデバッガ は、デバッグの作業に限らず、コードリーディングの動的解析でも効力を発揮する。プロファイラ は、プログラムの実行結果として、メソッドごとの実行回数や実行時間などを分析するツールで あり、代表的なものに hprof がある。静的解析は、ソースコードそのものを読んで解析する手法で あり、テキストエディタやクロスリファレンサなどを利用して解析を行う。クロスリファレンサは、ソー スコードに記述されているメソッドを洗い出し、メソッドの呼び出し元を検索するツールであり、代 表的なものとして GNU GLOBAL がある。また、Eclipse などの統合開発環境(IDE)を使用すれ ば、動的解析と静的解析の両方を行うことができる。 * 解析手順 初めに全体像をつかむために、入手したソースコードをコンパイルし、実際にプログラムを実行 してみて、プログラム全体の動作を概観することは有効な方法である。また、ソースファイルがど のような意味合いで分割され、フォルダに配置されているか、フォルダ構成の概要を把握してお くことも有効な手段である。更に、オープンソース開発コミュニティにある開発者ドキュメント、変 更履歴、バージョン管理システム、バグトラッキングシステムなどを参考にして、開発者の意図を 理解することはとても重要である。 詳細分析では、実際にソースコードを読み、クラスの継承階層やメソッドの呼び出し関係を明ら かにし、検索やトレースを行いながら、データ構造の変化と処理の流れを解析する。このとき、 動作を予測し、問題点の仮説を立てて解析することが有効な手法である。 3) 読みやすいコード 読み手が理解しやすいソースコードを記述するには、命名規則やコメントのルールといった、ソース コードを記述する際の決め事を定めた、コーディング規約に則って記述する必要がある。ソースコ ードリーディングを行った結果、問題があるソースにパッチ(修正プログラム)を当てる場合は、コー ディング規約に則って記述すれば、可読性や保守性といったソースコードの品質を向上することが

図 4-1-応-1 文字コードと文字化け
図 4-1-応-5 GUI コンポーネントとイベントドリブン
図 4-1-応-8 Session Bean  と  Entity  クラスのソースコード例

参照

関連したドキュメント

仏像に対する知識は、これまでの学校教育では必

を占めている。そのうち 75 歳以上の後期高齢者は 1,872 万人(14.9%)、80 歳以上は 1,125 万

 英語の関学の伝統を継承するのが「子どもと英 語」です。初等教育における英語教育に対応でき

 本計画では、子どもの頃から食に関する正確な知識を提供することで、健全な食生活

は,医師による生命に対する犯罪が問題である。医師の職責から派生する このような関係は,それ自体としては

□ ゼミに関することですが、ゼ ミシンポの説明ではプレゼ ンの練習を主にするとのこ とで、教授もプレゼンの練習

関係の実態を見逃すわけにはいかないし, 重要なことは労使関係の現実に視

【目的・ねらい】 市民協働に関する職員の知識を高め、意識を醸成すると共に、市民協働の取組の課題への対応策を学ぶこ