5-2-基 開発ツールに関する知識 -...

23
OSS モデルカリキュラムの学習ガイダンス 5-2-開発ツールに関する知識 1. 科目の概要 ソフトウェアを開発する際に活用する一連のツール群について、その機能と使い方を説 明する。コンパイラやデバッガといった基本的なツールから、バージョン管理ツール、バ グトラッキングシステムまで、様々なツールの活用法を解説する。 2. 習得ポイント 本科目の学習により習得することが期待されるポイントは以下の通り。 習得ポイント シラバスの対応コマ 5-2-基-1.開発ツールの概要 ソフトウェア開発に有効利用できるツールの概要を示し、各種ツールの特徴、用途と解説す る。基本的な利用方法を説明し、実際のソフトウェア開発で活用できるノウハウを紹介する。 1 5-2-基-2.プロジェクト管理のためのツール プロジェクト管理に有用なツールの特徴とメリットを紹介する。プロジェクト管理ツールの種類 や、タスクやスケジューリングの概念を解説し、チケットやWikiを利用した情報共有の方法を 説明する。 2,10,13 5-2-基-3.バージョン管理のためのツール バージョン管理ツールの特徴とメリットを紹介する。チェックアウトやコミットといった基本的な 利用方法を説明し、ソースコードの成長の過程をトレースする方法を解説する。 3 5-2-基-4.ソースコード解析のためのツール ソースコードを解析するためのツールの種類と特徴を紹介する。エディタをはじめとして、検 索機能、差分解析の方法を解説する。コードナビゲータについても紹介し、より効率的な コード解析のためのツールを説明する。 4,5 5-2-基-5.実行プログラム作成のためのツール ソースコードから実行形式のデータにするためのツールの概要と特徴を紹介する。各種ツー ルの位置づけ、関係を解説し、実行形式のデータがどのように作成されるか説明する。 6 5-2-基-6.デバッグで使用できるツール プログラムが実行可能な状態であっても正常に動作するとは限らず、予期しない動きを起こ すことが多いことを説明する。このような不具合をバグと呼び、デバッガと呼ばれるツールで 取り去ることができることを解説する。 7 5-2-基-7.ビルドツール 実行プログラムの作成を形式的に行うことができるビルドツールの概要とメリットを紹介する。 ビルドツールを利用することで、ビルドを自動的に行うことができることを解説し、単体テストな どと連携することでソフトウェアの信頼性向上に寄与することを紹介する。 8 5-2-基-8.テストツール ソフトウェアの品質向上には欠かせないテストツールの種類とその概要を解説する。テストの 工程ごとに有用なツールを紹介し、それらを使用することがソフトウェアの品質向上に大きく 影響することを説明する。 9 5-2-基-9.ユーザへのリリースのためのツール 実行プログラムのパッケージ化やドキュメント作成のためのツールの概要と特徴を説明する。 パッケージ生成ツールを利用したソフトウェアのインストールや、自動ドキュメント生成ツール を利用したドキュメントの整備方法を紹介し、ユーザにとって使いやすい環境を提供する方 法を解説する。 11,12 5-2-基-10.仮想化ツール 仮想化ツールの特徴やメリットを紹介する。開発環境やテスト環境を仮想化することで、再現 可能な環境や、OSの動作に影響を及ぼすようなテストを容易にできることを解説する。 14 1 【学習ガイダンスの使い方】 1. 「習得ポイント」により、当該科目で習得することが期待される概念・知識の全体像を把握する。 2. 「シラバス」、「IT 知識体系との対応関係」、「OSS モデルカリキュラム固有知識」をもとに、必要に応じて、 従来の IT 教育プログラム等との相違を把握した上で、具体的な講義計画を考案する。 3. 習得ポイント毎の「学習の要点」と「解説」を参考にして、講義で使用する教材等を準備する。

Upload: others

Post on 08-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 5-2-基 開発ツールに関する知識 - IPAOSSモデルカリキュラムの学習ガイダンス 5-2-基 開発ツールに関する知識 1. 科目の概要 ソフトウェアを開発する際に活用する一連のツール群について、その機能と使い方を説

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

5-2-基 開発ツールに関する知識

1. 科目の概要 ソフトウェアを開発する際に活用する一連のツール群について、その機能と使い方を説

明する。コンパイラやデバッガといった基本的なツールから、バージョン管理ツール、バ

グトラッキングシステムまで、様々なツールの活用法を解説する。 2. 習得ポイント 本科目の学習により習得することが期待されるポイントは以下の通り。

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

5-2-基-1.開発ツールの概要ソフトウェア開発に有効利用できるツールの概要を示し、各種ツールの特徴、用途と解説する。基本的な利用方法を説明し、実際のソフトウェア開発で活用できるノウハウを紹介する。

1

5-2-基-2.プロジェクト管理のためのツールプロジェクト管理に有用なツールの特徴とメリットを紹介する。プロジェクト管理ツールの種類や、タスクやスケジューリングの概念を解説し、チケットやWikiを利用した情報共有の方法を説明する。

2,10,13

5-2-基-3.バージョン管理のためのツールバージョン管理ツールの特徴とメリットを紹介する。チェックアウトやコミットといった基本的な利用方法を説明し、ソースコードの成長の過程をトレースする方法を解説する。

3

5-2-基-4.ソースコード解析のためのツールソースコードを解析するためのツールの種類と特徴を紹介する。エディタをはじめとして、検索機能、差分解析の方法を解説する。コードナビゲータについても紹介し、より効率的なコード解析のためのツールを説明する。

4,5

5-2-基-5.実行プログラム作成のためのツールソースコードから実行形式のデータにするためのツールの概要と特徴を紹介する。各種ツールの位置づけ、関係を解説し、実行形式のデータがどのように作成されるか説明する。

6

5-2-基-6.デバッグで使用できるツールプログラムが実行可能な状態であっても正常に動作するとは限らず、予期しない動きを起こすことが多いことを説明する。このような不具合をバグと呼び、デバッガと呼ばれるツールで取り去ることができることを解説する。

7

5-2-基-7.ビルドツール実行プログラムの作成を形式的に行うことができるビルドツールの概要とメリットを紹介する。ビルドツールを利用することで、ビルドを自動的に行うことができることを解説し、単体テストなどと連携することでソフトウェアの信頼性向上に寄与することを紹介する。

8

5-2-基-8.テストツールソフトウェアの品質向上には欠かせないテストツールの種類とその概要を解説する。テストの工程ごとに有用なツールを紹介し、それらを使用することがソフトウェアの品質向上に大きく影響することを説明する。

9

5-2-基-9.ユーザへのリリースのためのツール

実行プログラムのパッケージ化やドキュメント作成のためのツールの概要と特徴を説明する。パッケージ生成ツールを利用したソフトウェアのインストールや、自動ドキュメント生成ツールを利用したドキュメントの整備方法を紹介し、ユーザにとって使いやすい環境を提供する方法を解説する。

11,12

5-2-基-10.仮想化ツール仮想化ツールの特徴やメリットを紹介する。開発環境やテスト環境を仮想化することで、再現可能な環境や、OSの動作に影響を及ぼすようなテストを容易にできることを解説する。

14

1

【学習ガイダンスの使い方】

1. 「習得ポイント」により、当該科目で習得することが期待される概念・知識の全体像を把握する。 2. 「シラバス」、「IT 知識体系との対応関係」、「OSS モデルカリキュラム固有知識」をもとに、必要に応じて、

従来の IT 教育プログラム等との相違を把握した上で、具体的な講義計画を考案する。 3. 習得ポイント毎の「学習の要点」と「解説」を参考にして、講義で使用する教材等を準備する。

Page 2: 5-2-基 開発ツールに関する知識 - IPAOSSモデルカリキュラムの学習ガイダンス 5-2-基 開発ツールに関する知識 1. 科目の概要 ソフトウェアを開発する際に活用する一連のツール群について、その機能と使い方を説

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

3. IT 知識体系との対応関係 「5-2-基 開発ツールに関する知識」と IT 知識体系との対応関係は以下の通り。

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

4-2-基 Cに関する知

識開発ツール概要

ホスティングサービス

バージョン管理 ユーティリティ ソースコード解析プログラム作成環境

デバッグ環境 ビルド テスト管理バグトラッキングシステム

パッケージング ドキュメント作成 プロジェクト管理 仮想化

科目名基本レベル

<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-2-基 開発ツールに関する知識 - IPAOSSモデルカリキュラムの学習ガイダンス 5-2-基 開発ツールに関する知識 1. 科目の概要 ソフトウェアを開発する際に活用する一連のツール群について、その機能と使い方を説

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

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

OSS モデルカリキュラム固有の知識として、開発支援ツールの具体的な OSS 実装の利用

方法がある。バグトラッキングシステム、バージョン管理ツール、デバッガ、仮想化ツー

ルなどを内容として含む。 科目名 第1回 第2回 第3回 第4回 第5回 第6回 第7回

(1) ソフトウェア開発プロセスの特徴と開発環境

(1) ホスティングサービスの種類

(1) バージョン管理ツールの機能

(1) エディタ (1) コードナビゲータとは

(1) プログラムのコンパイルとリンク

(1) 基本的なデバッグの方法

(2) ソフトウェア実装 (2) ホスティングサイトの機能

(2) バージョン管理ツールの種類

(2) ソースの検索 (2) 主なオープンソースのコードナビゲータ

(2) トレース機能

(3) アプリケーション開発

(3) 主なオープンソースバージョン管理ツール

(3) ネットワーク (3) 複雑に絡み合うアプリケーションとミドルウェア間のデバッグ

(4) バージョン管理ツールを利用する

(4) ユーティリティを利用したコードの解析

(4) データベース処理に関連するデバッグ

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

(1) ビルドツールの主な機能

(1) テスト工程の種類 (1) バグトラッキングシステムの目的

(1) パッケージの概要 (1) ドキュメント作成の意義

(1) プロジェクト管理ソフトの概要

(1) 仮想化ソフト概要

(2) ビルドツールの設定方法

(2) 主なオープンソースのテストツール

(2) バグトラッキングシステムの機能

(2) 主なパッケージの種類

(2) 主なオープンソールのドキュメント作成ツール

(2) 主なオープンソースのプロジェクト管理ソフト

(2) 主なオープンソースの仮想化ソフト

(3) 主なオープンソースのビルドツール

(3) 主なオープンソースのバグトラッキングシステム

5-2-基 開発ツールに関する知識

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

Page 4: 5-2-基 開発ツールに関する知識 - IPAOSSモデルカリキュラムの学習ガイダンス 5-2-基 開発ツールに関する知識 1. 科目の概要 ソフトウェアを開発する際に活用する一連のツール群について、その機能と使い方を説

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

開発体系分野 5-2-基 開発ツールに関する知識 基本

習得ポイント 5-2-基-1. 開発ツールの概要

対応する

コースウェア

第1回 開発ツール概要

5-2-基-1. 開発ツールの概要

ソフトウェア開発に有効利用できるツールの概要を示し、各種ツールの特徴、用途と解説する。基

本的な利用方法を説明し、実際のソフトウェア開発で活用できるノウハウを紹介する。

【学習の要点】

* 各工程に最適なツールを利用することで、開発効率を向上することができる。

* 実行プログラム作成ツールのように実行環境によって変わるツールもあるので注意が必要であ

る。

図 5-2-基- 1 開発ツールの種類

5-2-基- 1

Page 5: 5-2-基 開発ツールに関する知識 - IPAOSSモデルカリキュラムの学習ガイダンス 5-2-基 開発ツールに関する知識 1. 科目の概要 ソフトウェアを開発する際に活用する一連のツール群について、その機能と使い方を説

【解説】

1) 開発ツールの種類

開発ツールにはプログラムの実行ファイルを作成するためのツールや、ソースコードを作成するた

めのツールの他にも、設計やテスト、ドキュメントの作成を支援するツール、プロジェクト全体やソー

スコードの履歴を管理するツールなど様々なツールがある。これらを適切に利用することで開発の

効率を上げたり、手戻りを減らしたりすることができる。

2) 開発ツールの種類

* プロジェクト管理のためのツール

プロジェクトの進捗や、メンバーのタスクを管理することができる。タスクや Wiki を利用してプロジ

ェクトの進行に必要な情報をメンバー間で共有することができる。

* バージョン管理のためのツール

ソースコードの改訂履歴を管理するツール。履歴がすべて残るため、不具合が出た場合に以前

のバージョンに戻すことや、バージョンアップやバグ対応のための派生バージョンの管理が容易

になる。

* ソースコード解析のためのツール

ソースコードを読む際に有用なツール。関数の定義の参照や利用されている個所の一覧を残

すことができる。タグを利用することで、ソースコード上にブックマークを付けることもできる。

* 実行プログラム作成のためのツール

実際に動作するプログラムを作成するためのツール。ユーザにリリースするためになくてはなら

ないツールである。

* ビルドツール

実行プログラム作成のためのツールや後述するテストツールを自動で実行することができるツー

ル。ビルドツールを利用することで、誰でも同じ実行ファイルを入手することができる。

* テストツール

実行ツールの動作検証のためのテストツール。テストを機械的に実行することができるので、テ

ストに対するコストを下げることができる。

* ユーザへのリリースのためのツール

ユーザへリリースする際に、実行ファイルをまとめたり、ドキュメントを整備したりする必要がある。

この工程をサポートするツールを紹介する。

* 設計工程で使用できるツール

ソフトウェアを作成する際の設計方針を記録するためのツール。ソフトウェアの構造や動作、デ

ータベースの構造を記録することができる。

* 仮想化ツール

実行環境を仮想的にコンピュータ上に構築できるツール。1台のコンピュータで複数のコンピュ

ータの動作環境を構築することができる。

5-2-基- 2

Page 6: 5-2-基 開発ツールに関する知識 - IPAOSSモデルカリキュラムの学習ガイダンス 5-2-基 開発ツールに関する知識 1. 科目の概要 ソフトウェアを開発する際に活用する一連のツール群について、その機能と使い方を説

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

開発体系分野 5-2-基 開発ツールに関する知識 基本

習得ポイント 5-2-基-2. プロジェクト管理のためのツール

対応する

コースウェア

第 2 回 ホスティングサービス

第 10 回 バグトラッキングシステム

第 13 回 プロジェクト管理

5-2-基-2. プロジェクト管理のためのツール

プロジェクト管理に有用なツールの特徴とメリットを紹介する。プロジェクト管理ツールの種類や、タ

スクやスケジューリングの概念を解説し、チケットや Wiki を利用した情報共有の方法を説明する。

【学習の要点】

* プロジェクト管理ツールを適用して情報を集約し共有することで、プロジェクトを円滑に進めるこ

とができる。

* プロジェクト管理ツールには SourceForge 等のホスティングサイトや、Bugzilla 等のバグトラッキ

ングシステム、OpenProj 等のガントチャート作成ツールがある。

* タスクやチケットと呼ばれるリストにより、メンバーの作業を明確にすることができる。

図 5-2-基- 2 タスクボードの例

5-2-基- 3

Page 7: 5-2-基 開発ツールに関する知識 - IPAOSSモデルカリキュラムの学習ガイダンス 5-2-基 開発ツールに関する知識 1. 科目の概要 ソフトウェアを開発する際に活用する一連のツール群について、その機能と使い方を説

【解説】

1) プロジェクト管理ツールとは

プロジェクト管理ツールとは、プロジェクトのスケジュールや進捗、メンバーのタスク等を管理するツ

ールである。Web アプリケーションのプロジェクト管理ツールを利用することでメンバー間の情報共

有を行うこともできる。

2) プロジェクト管理ツールの主な機能

* ガントチャート

後述するタスクの作業開始予定日と終了予定日を基に線表にしたもの。タスクの開始予定日、

終了予定日や進捗状況を逐次記録することで、プロジェクトの進行状況を把握することができ

る。

* タスク(チケット)

メンバーの作業項目一覧。タスクを登録することで、自分の作業項目やボリューム、日程といっ

た情報を確認することができる。また、Web アプリケーションなどでタスクを共有することにより、

チームメンバーのタスクを確認することもできる。

* マイルストーン

プロジェクトにおけるリリースなどのイベント。マイルストーンで期限を設定し、それまでに処理す

るタスクを決定することで先送りなど、プロジェクトの遅延要因を排除しやすくなる。

* Wiki

主に Web 上で共有される文書である。Wiki にプロジェクトに関する情報を記録することで、メン

バーにそれを共有することができる。

3) プロジェクト管理ツールの主な種類

* ホスティングサイト

プロジェクトの管理やソースコードの管理を行うことができる Web サイト。プロジェクト管理機能の

ほかにもソース管理機能やメーリングリストなど幅広い機能を提供しているものもある。以降に挙

げるバグトラッキングシステムを活用したサイトもある。

- SourceForge.JP ( http://sourceforge.jp/ )

- Goolge Code (http://code.google.com/intl/ja/ )

* バグトラッキングシステム

主にバグの管理に利用されるがプロジェクトの管理にも応用できる。主にオープンソースの Web

アプリケーションで実装されており企業での利用にも耐えられる。

- Bugzilla (http://www.bugzilla.org/ , http://bugzilla.mozilla.gr.jp/ )

- Mantis (http://www.mantisbt.org/ )

- Trac ( http://trac.edgewall.org/ )

- Redmine( http://www.redmine.org/ )

* ガントチャート作成ツール

ガントチャートを利用したタスクの作成に特化したツール。

- OpenProj ( http://openproj.org/ )

5-2-基- 4

Page 8: 5-2-基 開発ツールに関する知識 - IPAOSSモデルカリキュラムの学習ガイダンス 5-2-基 開発ツールに関する知識 1. 科目の概要 ソフトウェアを開発する際に活用する一連のツール群について、その機能と使い方を説

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

開発体系分野 5-2-基 開発ツールに関する知識 基本

習得ポイント 5-2-基-3. バージョン管理のためのツール

対応する

コースウェア

第 3 回 バージョン管理

5-2-基-3. バージョン管理のためのツール

バージョン管理ツールの特徴とメリットを紹介する。チェックアウトやコミットといった基本的な利用方

法を説明し、ソースコードの成長の過程をトレースする方法を解説する。

【学習の要点】

* バージョン管理ツールを利用することで、最新のソースコードを管理するコストが大幅に下がる。

* バージョン管理ツールを利用することで、作業の履歴の管理や差し戻しが簡単にできる。

* バージョン管理ツールには主に CVS や Subversion などの単一リポジトリ型と Git や Mercurial

などの分散リポジトリ型がある。

* OSS 開発においては分散リポジトリ型のバージョン管理ツールに移行しつつある。

図 5-2-基- 3 バージョン管理ツールの例

5-2-基- 5

Page 9: 5-2-基 開発ツールに関する知識 - IPAOSSモデルカリキュラムの学習ガイダンス 5-2-基 開発ツールに関する知識 1. 科目の概要 ソフトウェアを開発する際に活用する一連のツール群について、その機能と使い方を説

【解説】

1) バージョン管理ツールとは

バージョン管理ツールとは、ファイルの変更履歴を統一的に管理するためのツールである。管理対

象となるファイルの変更情報をリポジトリと呼ばれるデータベースに格納する。リポジトリに登録され

たファイルに対し、行われた変更を履歴として保存し、履歴を遡って任意の時点での状態に戻す

事ができる。

2) バージョン管理ツールの主な機能

* リポジトリの作成

一括管理したい単位でリポジトリを作成する。

* ローカルコピーの作成

リポジトリの管理対象ファイルのコピーを作成する。

* ローカルコピーのアップデート

リポジトリから情報を取得し、ローカルコピーを最新または指定したリビジョンの状態にする。

* 変更の適用

ローカルコピーに加えた変更をリポジトリに登録する。

* 差分の確認

ファイルに加えた変更の差分を確認する。

* 古いバージョンの取得

不具合が発生した時などに以前のバージョンに戻すことができる。

3) バージョン管理ツールの主な種類

* 単一リポジトリ型

リポジトリをサーバに一極集中させる方式。最新のソースは常にサーバにあるため管理を行い

やすいが、サーバに接続できる状態でしかリポジトリにアクセスすることができない。

- CVS( http://ximbiot.com/cvs/wiki/Main%20Page )

- Subversion( http://subversion.tigris.org/ )

* 分散リポジトリ型

リポジトリをローカルコピーに持つ方式。サーバにアクセスできない状態でもリポジトリにアクセス

できるが、リポジトリ自体が分散するため管理が煩雑になるデメリットもある。

- Git( http://git-scm.com/ )

- Mercurial( http://mercurial.selenic.com/ )

5-2-基- 6

Page 10: 5-2-基 開発ツールに関する知識 - IPAOSSモデルカリキュラムの学習ガイダンス 5-2-基 開発ツールに関する知識 1. 科目の概要 ソフトウェアを開発する際に活用する一連のツール群について、その機能と使い方を説

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

開発体系分野 5-2-基 開発ツールに関する知識 基本

習得ポイント 5-2-基-4. ソースコード解析のためのツール

対応する

コースウェア

第 4 回 ユーティリティ

第 5 回 ソースコード解析

5-2-基-4. ソースコード解析のためのツール

ソースコードを解析するためのツールの種類と特徴を紹介する。エディタをはじめとして、検索機

能、差分解析の方法を解説する。コードナビゲータについても紹介し、より効率的なコード解析のた

めのツールを説明する。

【学習の要点】

* ソースコードの作成に特化したエディタを使用することで、効率よくコードの記述ができる。

* 検索機能や差分解析機能を利用することで、効率よく目的のコードを探すことができる。

* Ctags や GNU GLOBAL などのコードナビゲータを利用することで、コード解析の足跡を残す

ことができる。

図 5-2-基- 4 ソースコート解析ツールの機能

5-2-基- 7

Page 11: 5-2-基 開発ツールに関する知識 - IPAOSSモデルカリキュラムの学習ガイダンス 5-2-基 開発ツールに関する知識 1. 科目の概要 ソフトウェアを開発する際に活用する一連のツール群について、その機能と使い方を説

【解説】

1) ソースコード解析のためのツール概要

ソースコード解析のためのツールとしてソースコードタグシステムがある。ソースコードタグシステム

はソースコード内の変数や関数、マクロ等にタグ(しるし)をつけ、移動や定義位置、呼び出しの一

覧を簡単に取得できるようになる。様々なエディタとも連携し、使い慣れた環境に高機能な解析ツ

ールを導入することもできる。

2) ソースコードタグシステムの主な機能

* 指定したオブジェクトや構造体、関数などの定義部分の検索

* 指定したオブジェクトや構造体、関数などの参照部分の検索

3) ソースコードタグシステムの主な種類

* Ctags(http://ctags.sourceforge.net/)

Fortran や Pascal、C/C++、Java など非常に多くの言語に対応したソースコードタグシステム。解

析結果を出力したファイルは vi や Emacs などのエディタで利用することができる。

また、ソースファイルから検索された定義などをテキスト形式の見やすい形で出力することがで

きる。

* GNU GLOBAL(http://www.gnu.org/software/global/)

C/C++や Java、PHP に対応したソースコードタグシステム。ソースコードの解析機能のみならず、

HTML などに出力することで可読性を上げることもできる。また、プラグインを利用することで新

しい言語への対応や、vi や Emacs といったエディタでの利用が可能であるため、普段使いなれ

た環境で利用することができる。

5-2-基- 8

Page 12: 5-2-基 開発ツールに関する知識 - IPAOSSモデルカリキュラムの学習ガイダンス 5-2-基 開発ツールに関する知識 1. 科目の概要 ソフトウェアを開発する際に活用する一連のツール群について、その機能と使い方を説

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

開発体系分野 5-2-基 開発ツールに関する知識 基本

習得ポイント 5-2-基-5. 実行プログラム作成のためのツール

対応する

コースウェア

第 6 回 プログラム作成環境

5-2-基-5. 実行プログラム作成のためのツール

ソースコードから実行形式のデータにするためのツールの概要と特徴を紹介する。各種ツールの位

置づけ、関係を解説し、実行形式のデータがどのように作成されるか説明する。

【学習の要点】

* コンパイラを利用することで、ソースコードからオブジェクトファイル(機械語)を作成できる。

* リンカを利用することで、オブジェクトファイルをまとめた実行プログラムを作成することができる。

* インタプリタを利用することで、ソースコードを即時実行することができる。

図 5-2-基- 5 コンパイラとリンカでの実行ファイルの作成

5-2-基- 9

Page 13: 5-2-基 開発ツールに関する知識 - IPAOSSモデルカリキュラムの学習ガイダンス 5-2-基 開発ツールに関する知識 1. 科目の概要 ソフトウェアを開発する際に活用する一連のツール群について、その機能と使い方を説

【解説】

1) 実行プログラム作成のためのツールとは

実行プログラム作成のためのツールとは、ソースコードから実行ファイルを生成するプログラムや、

ソースコードから逐次プログラムを実行するためのツールである。また実行したプログラムの動作状

態を知るためのデバッガと呼ばれるツールもある。

2) 実行プログラム作成ツールの種類と機能

* コンパイラ

ソースコードをコンピュータが解釈できる形式に変換するツール。コンパイラを通して変換された

ファイルは1つのソースコードに対して1つの中間ファイルと呼ばれる形式で出力される。C 言語

などではソースファイル間での依存関係は解決されていないため、そのままでは実行できない。

Java 等の VM (Virtual Machine)上で動作するプログラムは中間ファイルの状態で実行可能とな

る。

- GCC( http://gcc.gnu.org/ )

- OpenJDK( http://openjdk.java.net/ )

* リンカ

コンパイラで生成された中間ファイルをまとめて、一つの実行形式のファイルとして出力するツ

ールである。C 言語ではコンパイルとリンクを行って初めて実行可能なファイルが生成される。

- GCC( http://gcc.gnu.org/ )

* インタプリタ

ソースコードを解釈しながら逐次実行するプログラムである。主にスクリプト言語など Web アプリ

ケーションで利用されている。

- Perl( http://www.perl.com/)

- PHP(http://www.php.net/)

- Python(http://www.python.org/)

- Ruby(http://www.ruby-lang.org/ja/)

- JavaScript

5-2-基- 10

Page 14: 5-2-基 開発ツールに関する知識 - IPAOSSモデルカリキュラムの学習ガイダンス 5-2-基 開発ツールに関する知識 1. 科目の概要 ソフトウェアを開発する際に活用する一連のツール群について、その機能と使い方を説

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

開発体系分野 5-2-基 開発ツールに関する知識 基本

習得ポイント 5-2-基-6. デバッグで使用できるツール

対応する

コースウェア

第 7 回 デバッグ環境

5-2-基-6. デバッグで使用できるツール

プログラムが実行可能な状態であっても正常に動作するとは限らず、予期しない動きを起こすことが

多いことを説明する。このような不具合をバグと呼び、デバッガと呼ばれるツールで取り去ることがで

きることを解説する。

【学習の要点】

* 実行したプログラムが引き起こす不具合をバグと呼び、バグを除去することをデバッグと呼ぶ。

* デバッグを行うために有用なツールがデバッガである。

* デバッガを利用することで、プログラムの動作を解析し、意図しない動きの原因を探ることができ

る。

図 5-2-基- 6 デバッガの概要

5-2-基- 11

Page 15: 5-2-基 開発ツールに関する知識 - IPAOSSモデルカリキュラムの学習ガイダンス 5-2-基 開発ツールに関する知識 1. 科目の概要 ソフトウェアを開発する際に活用する一連のツール群について、その機能と使い方を説

【解説】

1) デバッガの概要

実行プログラムを動作させて、その動作や内部の情報を解析するためのツールである。外部からで

は分かりにくいプログラムの不具合を発見する際に有用である。プログラムを任意の場所で停止さ

せるブレークポイントや、そこからソースコードを一行ずつ実行するステップ機能、変数の内容を確

認できるウォッチ機能などがある。またリソースが少ないターゲットのためにリモートデバッグが可能

なデバッガもある。

2) デバッガの機能

* ブレークポイント

停止させたいソースコード上に設定することで、プログラムを停止することができる。デバッグは

ブレークポイントで停止させてから動作の確認や値の確認を行う。

* ステップ実行

ブレークポイントで停止させた場所から一行ずつプログラムを実行させる機能。一行ずつ実行

するため、プログラムの動作不良を見つけやすい。関数やメソッドの中までステップするかどうか

によってステップオーバーやステップイン、ステップアウトなどがある。

* ウォッチ

停止したスコープのローカル変数やオブジェクト、グローバル変数の値を確認することができ

る。

* コールスタック

関数またはメソッドの呼び出し順序を確認できる。コールスタックを利用する事で、関数またはメ

ソッドがどこからどのような順序で呼び出されたかを確認することができる。

3) デバッガの種類

* GDB(http://www.gnu.org/software/gdb/)

主に C/C++で利用するデバッガ。コマンドラインから起動し、対話式にデバッグを行う。後述す

る GDBserver を組み合わせることで、リモートでのデバッグやクロス(組み込み)環境でのデバ

ッグも可能である。

* GDBserver

実際のデバッグ機能は持たないが、GDB と組み合わせることでリモートデバッグが可能となる。

デバッグ機能を持たないため実行ファイルのサイズが小さく、組み込み環境などリソース制約が

厳しいターゲットで利用される。

* スクリプト言語のデバッガ

Perl や Ruby といったスクリプト言語はデバッガを内蔵しているものが多く、起動時の引数でデバ

ッガを起動、実行することができる。

5-2-基- 12

Page 16: 5-2-基 開発ツールに関する知識 - IPAOSSモデルカリキュラムの学習ガイダンス 5-2-基 開発ツールに関する知識 1. 科目の概要 ソフトウェアを開発する際に活用する一連のツール群について、その機能と使い方を説

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

開発体系分野 5-2-基 開発ツールに関する知識 基本

習得ポイント 5-2-基-7. ビルドツール

対応する

コースウェア

第 8 回 ビルド

5-2-基-7. ビルドツール

実行プログラムの作成を形式的に行うことができるビルドツールの概要とメリットを紹介する。ビルド

ツールを利用することで、ビルドを自動的に行うことができることを解説し、単体テストなどと連携する

ことでソフトウェアの信頼性向上に寄与することを紹介する。

【学習の要点】

* ビルドツールを利用することで環境に依存しにくいソフトウェア構築環境を作成できる。

* ビルドツールを利用することでビルドを自動化することができる。

* 自動化されたビルド環境を構築することで、エラーの検出をより素早く行うことができる。

図 5-2-基- 7 ビルドツールの概要

5-2-基- 13

Page 17: 5-2-基 開発ツールに関する知識 - IPAOSSモデルカリキュラムの学習ガイダンス 5-2-基 開発ツールに関する知識 1. 科目の概要 ソフトウェアを開発する際に活用する一連のツール群について、その機能と使い方を説

【解説】

1) ビルドツールとは

ビルドツールとは、ソースコードのコンパイル、リンクといった実行ファイルを作成する手順を自動化

するツールである。実行ファイルの作成の他にも単体テストの実行や、ドキュメントの自動生成、シ

ステムのデプロイ(配置)まで行うこともできる。

2) ビルドツールの主な機能

* ソフトウェアの自動ビルド

Makefile と呼ばれるビルドスクリプトに従いソースコードから実行プログラムを生成する。

* Makefile の自動生成

ソースファイル間の依存関係を参照し、Makefile を自動的に生成する。

* テストの自動実行

言語固有のテストフレームワークを呼び出すことで、テストを自動的に実行し結果を残すことが

できる。

* ドキュメントの自動生成

ソースコードからのドキュメント生成ツールにより、主に開発者用のドキュメントを自動的に生成

することができる。

* パッケージの自動生成

Java の JAR、WAR ファイルのようなパッケージングを自動で行うことができる。

* システム自動配置

FTP や SCP を利用したシステムの自動配置を行うことができる。

3) ビルドツールの主な種類

* make(http://www.gnu.org/software/make/)

古典的なビルドツールの代表。ビルドスクリプトとしての機能のみならず、ファイルの更新日時を

参照して更新があるファイルのみ処理するなど、ビルドにかかる時間を短縮することもできる。

* SCons(http://www.scons.org/)

makeの後継。makeの機能を使いやすくしただけでなく、autotools等の機能を統合しておりビル

ドルールの作成まで踏み込んで自動化できる。

* Apache Ant(http://ant.apache.org/)

make の Java 版。Java の開発に必要なビルド機能をそろえておりビルド、テスト、ドキュメント生成、

システムの配置までを自動化できる。

* Apache Maven(http://maven.apache.org/)

Apache Ant の後継。Ant ではビルドルールを XML ファイルで記述していたが、Maven ではこれ

をコマンドラインからまとめて実現できるように改良されている。

5-2-基- 14

Page 18: 5-2-基 開発ツールに関する知識 - IPAOSSモデルカリキュラムの学習ガイダンス 5-2-基 開発ツールに関する知識 1. 科目の概要 ソフトウェアを開発する際に活用する一連のツール群について、その機能と使い方を説

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

開発体系分野 5-2-基 開発ツールに関する知識 基本

習得ポイント 5-2-基-8. テストツール

対応する

コースウェア

第 9 回 テスト管理

5-2-基-8. テストツール

ソフトウェアの品質向上には欠かせないテストツールの種類とその概要を解説する。テストの工程ご

とに有用なツールを紹介し、それらを使用することがソフトウェアの品質向上に大きく影響することを

説明する。

【学習の要点】

* ユニットテストスレームワークを利用することで、モジュール単体での品質を確保できる。

* ユーザーインタフェースを自動化できるツールを利用することで、モジュールを結合した状態で

のテストを行うことができる。

* テスト管理ツールを利用することで、手動でのテストケースの管理、集計を効率的に行うことがで

きる。

図 5-2-基- 8 テストの自動化

5-2-基- 15

Page 19: 5-2-基 開発ツールに関する知識 - IPAOSSモデルカリキュラムの学習ガイダンス 5-2-基 開発ツールに関する知識 1. 科目の概要 ソフトウェアを開発する際に活用する一連のツール群について、その機能と使い方を説

【解説】

1) テストツールとは

テストツールとは、ソースコード単体でのテスト、ユーザ入力の模擬、手動テストのテスト項目および

結果の管理などを行うツールである。

テストフレームワークを利用することで、ソースコードの作成時の単体テストや修正に対する回帰テ

スト、統合テストと呼ばれる画面等全体的なテストを自動化することができ品質の向上が期待でき

る。

またテスト管理ツールを利用することで、手動でのテスト項目、結果の管理や集計を自動化でき、

同じくソフトウェアの品質向上が期待できる。

2) テスト管理ツールの主な種類と機能

* CUnit(http://cunit.sourceforge.net/)

C 言語向けの単体テストフレームワーク。

* CppUnit(http://sourceforge.net/apps/mediawiki/cppunit/index.php?title=Main_Page)

C++向けの単体テストフレームワーク。

* JUnit(http://www.junit.org/)

Java 向けの単体テストフレームワーク。TDD(Test Driven Development)と呼ばれる考え方を採

用し、ソースコード(クラス)ごとに単体テストプログラムも一緒に作成する手法である。

* RSpec(http://rspec.info/)

Ruby 向けの単体テストフレームワーク。BDD(Behavior Driven Development)と呼ばれる考え方

を採用し、プログラムの振る舞いに着目してテストコードを記述する。

* Selenium(http://seleniumhq.org/)

ブラウザでユーザのアクションを自動化することができる。ユーザ入力を自動化することで、近年

増え続ける Web アプリケーションの機能、ブラウザの種類、バージョンに対応することができる。

* TestLink(http://sourceforge.net/projects/testlink/)

Web ベースのテスト管理ツール。テストの手順や結果を管理できる。実行されたテスト結果から

レポートやメトリクスを出力機能も備える。

5-2-基- 16

Page 20: 5-2-基 開発ツールに関する知識 - IPAOSSモデルカリキュラムの学習ガイダンス 5-2-基 開発ツールに関する知識 1. 科目の概要 ソフトウェアを開発する際に活用する一連のツール群について、その機能と使い方を説

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

開発体系分野 5-2-基 開発ツールに関する知識 基本

習得ポイント 5-2-基-9. ユーザへのリリースのためのツール

対応する

コースウェア

第 11 回 パッケージング

第 12 回 ドキュメント作成

5-2-基-9. ユーザへのリリースのためのツール

実行プログラムのパッケージ化やドキュメント作成のためのツールの概要と特徴を説明する。パッケ

ージ生成ツールを利用したソフトウェアのインストールや、自動ドキュメント生成ツールを利用したド

キュメントの整備方法を紹介し、ユーザにとって使いやすい環境を提供する方法を解説する。

【学習の要点】

* 実行ファイルをパッケージ化して配布することで、ソフトウェアの実行環境を簡単に作成できる。

* ドキュメントの自動生成ツールによって、より現実的な開発者向けドキュメントを生成できることを

理解する。

図 5-2-基- 9 インストーラとドキュメント生成ツール

5-2-基- 17

Page 21: 5-2-基 開発ツールに関する知識 - IPAOSSモデルカリキュラムの学習ガイダンス 5-2-基 開発ツールに関する知識 1. 科目の概要 ソフトウェアを開発する際に活用する一連のツール群について、その機能と使い方を説

【解説】

1) ユーザへのリリースのためのツール概要

OSS として提供されている Unix 系の OS の多くは、GNU から提供されるツール群を始めとした様々

な OSS を組み合わせて利用している。各ソフトウェアパッケージ間には依存関係が存在することが

多く、利用にあたっては、それぞれのソフトウェアを正しく組み合わせてインストールすることが必要

となる。このような、ソフトウェア間の依存関係を管理し、インストール/アンインストールを容易に行

えるようにする仕組みがパッケージ管理システムである。パッケージ管理システムの例としては、

Red Hat 系の Linux ディストリビューションで用いられる RPM(Red Hat Package Manager)や、Debian

系の Linux ディストリビューションで用いられる APT(Advanced Packaging Tool)、FreeBSD をベース

とした Unix で用いられる Ports collection などがあげられる。

2) ドキュメント生成のためのツール

Unix 環境で用いられるドキュメント作成ツールは、テキスト形式のソースファイルを元に、各フォー

マットに変換するタイプのツールが多い。テキスト形式を用いることにより、通常のテキストエディタ

で編集することができ、扱いが容易であることや、文字列検索や置換などを行う際に、既存のツー

ルを使用できるなどの利点がある。

3) ドキュメント生成ツールの種類

* JavaDoc

Java SDK に付属している開発者用のドキュメント生成ツール。クラスやメソッドの一覧をドキュメ

ントすることができ、ソースコード内のクラスやメソッドに指定のフォーマットでコメントを書くことに

より詳細な情報を追加することができる。

* Doxygen

C/C++、Java、Python、PHPなど多くの言語に対応し、JavaDocと同様のフォーマットでコメントを

記述することで開発者用のドキュメント生成ツール。出力形式も HTML の他にも RTF(Rich Text

Format)や CHM(Microsoft Compiled HTML Help)形式をサポートしている。

* groff

groff は文書整形システム roff の GNU による実装であり、roff 言語と呼ばれる専用のフォーマッ

トで記述された入力ファイルを元に、様々な形式に変換するツールである。

* Texinfo

Texinfo は GNU プロジェクトの公式文書フォーマットであり、マシン上で閲覧可能な info 形式、

印刷に可能な DVI 形式など、様々な形式で出力することが可能である。

* DocBook

DocBook は技術文書向けの SGML/XML のスキーマである。特にコンピュータに関連する技術

情報の表現力に優れており、書籍の執筆の際の形式としても用いられている。

5-2-基- 18

Page 22: 5-2-基 開発ツールに関する知識 - IPAOSSモデルカリキュラムの学習ガイダンス 5-2-基 開発ツールに関する知識 1. 科目の概要 ソフトウェアを開発する際に活用する一連のツール群について、その機能と使い方を説

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

開発体系分野 5-2-基 開発ツールに関する知識 基本

習得ポイント 5-2-基-10. 仮想化ツール

対応する

コースウェア

第 14 回 仮想化

5-2-基-10. 仮想化ツール

仮想化ツールの特徴やメリットを紹介する。開発環境やテスト環境を仮想化することで、再現可能な

環境や、OS の動作に影響を及ぼすようなテストを容易にできることを解説する。

【学習の要点】

* 仮想化環境を用意することで、開発専用、テスト専用といった環境を用意することができる。

* たとえ OS がクラッシュしても復元が容易なので、開発環境で行いたくないようなテストも気兼ね

なく行うことができる。

図 5-2-基- 10 仮想化ツールの例

5-2-基- 19

Page 23: 5-2-基 開発ツールに関する知識 - IPAOSSモデルカリキュラムの学習ガイダンス 5-2-基 開発ツールに関する知識 1. 科目の概要 ソフトウェアを開発する際に活用する一連のツール群について、その機能と使い方を説

5-2-基- 20

【解説】

1) 仮想化ツールとは

仮想化ツールとは、単一のハードウェアで動作する OS(ホスト OS)の上で別の OS(ゲスト OS)を動

作させる仕組みを提供する。ハードウェアの制約なしに、稼働 OS を増やすことができるので、複数

のプラットフォームでの開発、テスト等に有用なツールである。また、ゲスト OS はホスト OS から完全

に分離されているので、ゲスト OS での障害はホスト OS へ波及しない。

2) 仮想化ツールの主な機能

* OS 上での別 OS の稼働

Windows 上で Linux を稼働、またはその逆の環境を構築することができる。

* CPU のエミュレーション

PC 環境上で別 CPU をエミュレートし、その CPU 用のソフトウェアを動作させることができる。組

み込み開発で実機がない場合の代用にも利用できる。

* スナップショット

ゲスト OS の特定の状態を保存し、いつでもその状態に戻すことができる。これにより不具合の

再現環境等を常に準備することができる。

3) 仮想化ツールの主な種類

* QEMU(http://www.qemu.org/index.html)

PC エミュレータ。x86 エミュレーションの他にも PowerPC や ARM のエミュレーションも可能なた

め、組み込み開発でも用いられる。

* Xen(http://www.xen.org/)

準仮想化と呼ばれる手法を採用しており、他の仮想化ツールに比べて速度面で有利である。た

だし、準仮想化はゲスト OS に手を入れる必要があるため、Windows 等ソースコードが公開され

ていない OS を利用することができない。

* VirtualBox (http://www.virtualbox.org/)

Sun Microsystems で開発されている仮想化ツール。ホスト OS、ゲスト OS ともに Windows、Linux、

Solaris 等をサポートし、GUI での管理ができるため利用しやすいソフトウェアである。