3. コンピュータシステムやアーキテクチャに関する知識 II

シラバス: 

1. 科目の概要

OSSが動作する基盤となるコンピュータシステムとアーキテクチャに関して、代表的なアーキテクチャであるWebシステムや、OSSを活用したシステム基盤設計の手順や事例を紹介し、さらに将来におけるコンピュータシステムの発展についても説明する。

2. 習得ポイント

本科目の学習により習得することが期待されるポイントは以下の通り。

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

「3. コンピュータシステムやアーキテクチャに関する知識Ⅱ」とIT知識体系との対応関係は以下の通り。

[シラバス:http://www.ipa.go.jp/software/open/ossc/download/Model_Curriculum_05_02.pdf]

<IT知識体系上の関連部分>

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

OSS モデルカリキュラム固有の知識として、具体的にオープンソースを用いたシステム構築事例やその費用対効果などの検討が挙げられる。ハードウェアとオープンソースの関わりについても固有の知識となる。

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

Ⅱ-3-1. 様々な形態のコンピュータシステム

OSSが動作するコンピュータシステムについて、集中システム、分散システムといったコンピュータシステムにおける形態の違いについて解説する。さらに分散システムについては代表的な分散システムであるクライアントサーバシステムとWebシステムについて触れる。

【学習の要点】

* コンピュータシステムのアーキテクチャは集中システムと分散システムに分類することができる。

* 集中システムとは、メインフレームと呼ばれる大型コンピュータでデータの処理を集中的に行うシステムである。

* 分散システムとは、ネットワークを通じて複数のコンピュータが協調して処理を行うシステムである。

* クライアントサーバシステムは分散システムの一種であり、特定の処理を集中的に担当するサーバソフトウェアとユーザが使用するコンピュータ上のクライアントソフトウェアが協調して処理を行うシステムである。

* Webシステムはクライアントサーバシステムの構成要素の内、クライアントソフトウェアとしてWebブラウザを用いるシステムである。

図Ⅱ-3-1. 集中システムと分散システム

【解説】

1) 集中システム

集中システムとは、メインフレームと呼ばれる大型コンピュータで、データの処理を集中的に行うシステムであり、1980年代までは情報システムの主流となっていた。現在でも信頼性が求められる分野では引き続き用いられている。

* 集中システムのメリット

- 高度な運用管理、セキュリティ管理の仕組みがあらかじめ用意されている。

- 一般に信頼性が高く、高負荷時の性能に優れる。

* 集中システムのデメリット

- ハード・ソフト両面に高い耐障害性が求められるため、導入コストが非常に高い。

2) 分散システム

分散システムとは、ネットワークを通じて複数のコンピュータが協調して処理を行うシステムであり、現在主流となっている方式である。

* 分散システムのメリット

- 集中システムと比較して導入コストが低い。

- 耐障害性を持たせる、処理を高速化する、といった目的に応じた構成をとることが可能であり、集中システムと比較して拡張が容易である。

* 分散システムのデメリット

- 複数のコンピュータを管理するため、保守やセキュリティ、運用の管理が複雑になる。

3) クライアントサーバシステム

クライアントサーバシステムは、特定の処理を集中的に担当するサーバソフトウェアとユーザが使用するコンピュータ上のクライアントソフトウェアが協調して処理を行う分散システムであり、特にクライアントソフトウェアでビジネスロジックを担当し、サーバソフトウェアがデータ管理などを行う方式がかつての業務システムでは主流であった。

* クライアントサーバシステムのメリット

- 処理をクライアントとサーバで分担することにより、負荷の集中を軽減できる。

- 専用のクライアントソフトウェアにより、ユーザフレンドリなインタフェースを実現できる。

* クライアントサーバシステムのデメリット

- 専用ソフトウェアを各クライアントマシンにインストールする必要があり、管理が煩雑となる。

4) Webシステム

Webシステムはクライアントサーバシステムの構成要素の内、クライアントソフトウェアとしてWebブラウザを用いるシステムであり、現在普及が進んでいる。

* Webシステムのメリット

- クライアントマシンに専用ソフトウェアをインストールする必要がなく、管理が容易である。

* Webシステムのデメリット

- UIがブラウザの機能に限定されるため、操作性が犠牲になる場合がある。ただし近年はAjaxなどの利用により、専用ソフトウェアと同等の使い勝手を実現する例も増えている。

Ⅱ-3-2. 非機能要件とシステム構成

コンピュータシステムを構成する非機能要件について述べる。システム構成で要点となるクラスタ構成や、ネットワーク負荷分散、サーバ負荷分散といった負荷分散構成、データ分散構成によるセキュリティ構成などについて説明する。

【学習の要点】

* 非機能要件とは機能要件以外の要件を指し、信頼性や効率性などに代表される。

* 非機能要件を満たすためには、システム構成を適した形にするよう考慮する必要が生じる場合がある。

* クラスタ構成により信頼性向上、負荷分散構成により効率性向上、データ分散構成によりセキュリティ向上を見込める場合がある。

図Ⅱ-3-2. 非機能要件を実現するシステム構成

【解説】

1) 非機能要件

* 非機能要件とは機能要件以外の要件を指し、信頼性、効率性、保守性、使用性などが含まれる。

* 非機能要件の管理にあたってはISO9126(ソフトウェア品質特性)を参考にすることができる。

2) 非機能要件を実現するシステム構成

非機能要件を実現するためには、アプリケーション側での対応に加え、適切なシステム構成を適用することも必要となる。

* クラスタ構成による高信頼性の実現

- システムをアクティブ系とスタンバイ系の2系統に冗長化し、アクティブ系に障害が発生した場合、ただちにスタンバイ系に切り替える構成にすることで、信頼性の向上が期待できる。

* ネットワーク・サーバ負荷分散による高効率性の実現

- 処理を行うサーバを複数台用意し、トラフィックおよび処理の分散を行う構成にすることで、効率性の向上が期待できる。

* データ分散構成によるセキュリティの実現

- OSSとして提供されている分散ファイルシステムGfarmを利用して情報を断片化して管理することにより、セキュリティ強化を実現することも可能である。顧客情報の管理に利用した事例がある。

3) OSSによる高信頼・高効率システムの構成例

高信頼性・高効率性を実現するシステム構成の代表例として、冗長化されたロードバランサと、複数の実サーバの2層によるシステム構成があげられる。OSSを利用することによってこのような構成をとることが可能である。

* LVS (Linux Virtual Server)とLdirectordによる負荷分散

- 実サーバ群に対し負荷分散を行うロードバランサとして、LVSを利用することができる。

- Ldirectordを利用して実サーバ上のサービスを監視することにより、不適切な状態の実サーバをLVSによる処理の分散対象から外す処理を自動化することができる。

* Heartbeatによるクラスタ構成

- Heartbeatを利用することでアクティブ系とスタンバイ系の2系統による冗長化を実現できる。

- LVSとLdirectordを利用したロードバランサによる負荷分散と、Heartbeatによるロードバランサ自体のクラスタ化を併用することで、高信頼性と高効率性の両方を実現した構成をとることが可能である。

Ⅱ-3-3. OSSによるシステムアーキテクチャの実現

代表的なコンピュータシステムの例として、Webサーバ、アプリケーションサーバ、データベースサーバなどがある。これらについて、どのようなOSSを用いて構成すると効果的に実現できるかを、具体的な例を用いて示す。

【学習の要点】

* Webサーバ、アプリケーションサーバ、データベースサーバなど、コンピュータシステムを構成する主要な要素の多くはOSSを利用することができる。

* コンピュータシステムの構成要素毎に複数の実装が存在するため、実現したいシステムに応じて適した組み合わせを選択する必要がある。

図Ⅱ-3-3. システム基盤に用いられるOSS

【解説】

1) OSSによるシステムアーキテクチャの実現

Webサーバ、アプリケーションサーバ、データベースサーバなど、コンピュータシステムを構成する主要な要素の多くはOSSを利用することが可能であり、それぞれ複数の実装が存在する。

2) Webサーバ

WebサーバはクライアントからのHTTPリクエストに応じて適切なHTMLや画像データを返却する機能を持ったソフトウェア、もしくはその機能を提供するサーバコンピュータである。

* システムアーキテクチャの一部としてのWebサーバは、クライアントと直接通信を行い、リクエストの内容に応じて、アプリケーションサーバなど適したコンポーネントに処理を振り分ける役割を持つ。

* OSSのWebサーバとして広く利用されているApache HTTP Serverは、システムアーキテクチャの一部として利用される例も多く、多くのアプリケーションサーバではApache HTTP Serverと連携する手順についてのドキュメントが提供されている。

3) アプリケーションサーバ

アプリケーションサーバはビジネスロジックなどをサーバサイドで実行する環境を提供するソフトウェア、もしくはその機能を提供するサーバコンピュータである。

* 多くのアプリケーションサーバはシステムアーキテクチャの一部として利用されることを前提としており、WebインタフェースはWebサーバとの連携により提供され、データの永続化サービスはデータベースサーバとの連携により提供されることが多い。

* OSSのアプリケーションサーバの多くは、OSSのWebサーバおよびデータベースサーバとの連携手順についてのドキュメントを提供している。

* OSSのアプリケーションサーバとして広く利用されているJBossでは、Apache HTTP Server、およびMySQLと連携する場合の手順が公開されている。

4) データベースサーバ

データベースサーバはデータベースを保持し、外部のアプリケーションに対して、データの永続化サービス、および検索、抽出などのインタフェースを提供するソフトウェア、もしくはその機能を提供するサーバコンピュータである。

* システムアーキテクチャの一部としてのデータベースサーバは、アプリケーションサーバなど、データに対する加工処理を行うソフトウェアからアクセスされ、処理対象のデータの格納、および検索、抽出などのインタフェースの提供を行う。

* OSSのデータベースサーバとして広く利用されているPostgreSQL、MySQL、Firebirdなどは、システムアーキテクチャの一部として利用される例も多く、外部のソフトウェアからアクセスするためのドライバが提供されている。

Ⅱ-3-4. Webシステムのアーキテクチャ

Webシステムの事例を対象として、システムアーキテクチャ検討におけるOSS活用のポイントについて解説する。システムアーキテクチャ導入時のシナリオにおいて検討すべき項目や、実際にOSSがどのように活用されてシステム基盤を構築するかについて述べる。

【学習の要点】

* WebシステムをOSSを利用して構築する際には機能性に加え、効率性、信頼性、情報入手の容易性、サポートの必要の有無等について特に検討が必要となる。

* 一般的なWebシステムでは、httpリクエスト・レスポンスを処理する機能、ビジネスロジックを処理する機能、データを保存する機能などが必要となる。

* OSSを組み合わせることで、Webシステムに必要な機能の多くを満たすことができる。

図Ⅱ-3-4. OSS導入時に検討すべき項目の例

【解説】

1) OSS導入に際し、検討すべき項目

WebシステムにおいてOSSを導入する場合に検討すべき項目の代表例を以下に挙げる。

* 機能性

OSSはプロプライエタリなソフトウェアと比較して機能が少ない場合がある。そのため、システムに必要な機能を明確にするとともに、OSSが必要な機能を提供しているかどうかを調査する必要がある。広く用いられているOSSに関しては、OSSのWebサイト、または競合する製品を扱う企業のWebサイトから機能比較に関する情報が提供されている場合も多い。

* 効率・信頼性

OSSは効率性、信頼性の面でプロプライエタリなソフトウェアに及ばない場合がある。そのため、想定されるユーザ数やリクエスト数に対し、十分な性能が発揮できるかなどについてあらかじめ調査、検証が必要である。また、障害発生時の復旧機能や、復旧手順の容易さなどについてもあらかじめ調査するべきである。

* 情報入手の容易さ

一般的にOSSはプロプライエタリなソフトウェアに比べてドキュメントが不足している場合が多く、特にビギナ向けのドキュメントや、トラブル時の対処に関するドキュメントが少ない場合が多い。そのため、管理者の必要とする情報が容易に入手可能かどうかについて、あらかじめ調査しておく必要がある。

* サポート

OSSの中には有償で企業によるサポートが提供されるものや、無償版とは別に機能の異なる有償版が提供されるものがあり、サポートを利用するかどうかについても検討する必要がある。

* メンテナンス

メンテナンスが継続して行われているかどうかも調査するべきポイントとなる。更新が行われていないOSSはセキュリティ関連の不具合も放置されている場合がある。

2) OSSによるWebシステム

一般的なWebシステムでは、httpリクエスト・レスポンスを処理する機能、業務ロジックを処理する機能、データを保存する機能などが必要となる。OSSを組み合わせることで、必要な機能の多くを満たすことができる。

* httpリクエスト・レスポンスを処理する機能

OSSのWebサーバとしてApache HTTP Serverが広く用いられている他、Tomcat、JBossなどWebサーバ機能を持つアプリケーションサーバも存在する。

* ビジネスロジックを処理する機能

CGIやPHPなどWebサーバから直接起動されるプログラムによってビジネスロジックを処理することができる。また、セキュリティや複数のリクエスト間のトランザクションなど、高度な機能を提供するアプリケーションサーバとしてJBossなどを利用することも可能である。

* データ保存機能

データベースサーバとして、MySQL、PostgreSQLなどを利用することができる。より簡易な手段として、データをファイルとして保存するSQLiteなどを利用することも可能である。

Ⅱ-3-5. OSSによるWeb3層アプリケーション

Web3層アプリケーションとは何か解説し、Webアプリケーション開発の特徴や利点について説明する。そのうえで、OSS を活用した3層アプリケーションの具体的な構築例を示し、Web3層アプリケーション開発におけるOSSの効果的な利用方法を解説する。

【学習の要点】

* Web3層アプリケーションとは、Webシステムの構成要素をプレゼンテーション層、アプリケーション層、データ層の3層に分割し、独立したモジュールとして設計するアプリケーションである。

* 3層アーキテクチャを採用することにより、ユーザインタフェース、ビジネスロジック、データベースの相互依存を抑え、変更容易性、拡張性を高めることができる。

* Web3層アプリケーションはプレゼンテーション層を担当するWebサーバ、ビジネスロジックを担当するアプリケーションサーバ、データ層を担当するデータベースサーバによって構築される場合が多い。

図Ⅱ-3-5. OSSによるWeb3層アプリケーション

【解説】

1) Web3層アプリケーション

Web3層アプリケーションとは、Webシステムの構成要素をプレゼンテーション層、アプリケーション層、データ層の3層に分割し、独立したモジュールとして設計するアプリケーションである。多くの場合、3層はそれぞれ別のハードウェア、別のOSで動作可能となるように設計され、実際にそのように運用される場合が多い。

* Web3層アーキテクチャのメリット

3層を独立したモジュールとして設計することにより相互依存性が抑えられるため、要求に応じた機能変更、拡張が容易となる。例えば、データベースの性能が問題となった場合に、データベースサーバのクラスタ化や、OSSからプロプライエタリなデータベースサーバ製品への変更などを行う場合でも、他の部分に対する影響を少なくすることができる。

2) 各層の役割と構成要素

* プレゼンテーション層

ブラウザからのHTTPリクエストを処理し、必要に応じてアプリケーション層に処理を委譲する。また、アプリケーション層から処理結果を受け取り、ブラウザに返す。Webサーバにより構成されApache HTTP Serverなどを利用することができる。

* アプリケーション層

プレゼンテーション層からの要求に応じてビジネスロジックを処理する。必要に応じてデータ層にアクセスし、データの検索、保存などを行う。アプリケーションサーバにより構成されJBossなどを利用することができる。

* データ層

データを管理し、アプリケーション層に対してデータの検索、抽出、保存などのインタフェースを提供する。データベースサーバにより構成されPostgreSQL、MySQLなどを利用することができる。

3) ソフトウェアの3層アーキテクチャ

プレゼンテーション層、アプリケーション層、データ層の3層に分割する手法は、システムアーキテクチャだけでなく、ソフトウェアアーキテクチャにも適用される場合がある。この場合、3層はそれぞれ同一のソフトウェア内のモジュールを指すため、前述の分類とは異なる場合がある。以下にJava EEの場合の例を挙げる。

* プレゼンテーション層

リクエストの処理とユーザインタフェースの提供を行うモジュールであり、ServletやJSPによって実装される。

* アプリケーション層

ビジネスロジックを処理するモジュールであり、Java BeanやEJBのSession Beanによって実装される。

* データ層

ソフトウェアによって扱われるデータを表現したモジュールであり、Java BeanやEJBのEntity Beanによって実装される。

Ⅱ-3-6. OSSによるシステム基盤設計の手順

OSSを活用してシステム基盤を構築する手順を理解させる。OSSプロダクトの選定方法からシステムを構成するソフトウェアの配置、ハードウェア性能の検討、非機能要件検討といった具体的な手順を概説する。

【学習の要点】

* OSSによるシステム基盤設計の際には、機能要件、非機能要件を明らかにし、要件を満たすことのできるソフトウェアを選定する必要がある。

* 非機能要件の検討にあたっては、ソフトウェアだけでなく、ハードウェアの採りうる構成も含めて考慮する必要がある。

図Ⅱ-3-6. OSSによるシステム基盤設計の手順

【解説】

1) OSSによるシステム基盤設計手順

システム基盤設計の手順とポイントを以下に挙げる。

* 機能要件の定義

システムに要求される機能を明確にする。要求される機能により、利用するソフトウェアや技術を決定する。機能要件のうち、システム基盤設計に影響を与える要素の例を以下にあげる。

- セキュリティ機能

暗号化されるべきデータや、ユーザ認証、アクセス制御などについて仕様を明確にし、情報が適切に保護されるアーキテクチャを設計する必要がある。

- トランザクション機能

トランザクションの発生するオペレーション、トランザクションの単位などを定義し、適切なトランザクションの管理方法を設計する必要がある。

* 非機能要件の定義

非機能要件は、システム基盤の設計に直接影響を与える。そのため、チェックリストなどを用いて要求項目を漏れなく明確にしておく必要がある。考慮すべき項目の例を以下に挙げる。

- 性能要件

想定されるリクエスト数などを考慮する。

- 信頼性要件

可用性要件のほか、障害発生時のデータ復旧要件なども考慮する。

- 運用要件

運用のオペレーションや、監視要件、障害通知要件なども考慮する。

* OSSの選定

機能要件、および非機能要件を満たすOSSを選定する。

- OSSの機能についての情報は、OSSの開発Webサイトから得られる場合が多い。

- OSSの適用例に関する情報としてOSS iPedia(http://ossipedia.ipa.go.jp)を利用することができる。

* システムアーキテクチャの設計

機能要件、および非機能要件を満たすアーキテクチャの設計を行う。例を以下に挙げる。

- システムに高信頼性が求められる場合、クラスタ化による冗長設計を行う。

- システムに高効率性が求められる場合、負荷分散を行う。

- システムにスケーラビリティが求められる場合、複数の層に分割した設計にすることにより、将来の拡張に備える。

2) 非機能要件の検証

非機能要件の検証にあたってはOSSのツールを利用できる場合がある。例として、日本OSS推進フォーラム開発基盤ワーキンググループより手法、およびツールが公開されている。(http://www.ipa.go.jp/software/open/forum/development/index.html)

Ⅱ-3-7. OSSによるシステム基盤設計事例

「OSSによるシステム基盤設計の手順」において示した手順を具体的な事例として示す。要件に適したソフトウェアの選定やシステムアーキテクチャの設計など、実際にシステム基盤を設計する際に必要となる知識について解説する。

【学習の要点】

* セキュリティ要件の実現例として、SSLによる通信の暗号化がApache HTTP Serverや、PostgreSQL、MySQLなど、様々なOSSでサポートされている。

* トランザクション管理機能など、ビジネスアプリケーションに必要な機能の多くがアプリケーションサーバによって提供されている。

* 非機能要件を実現するための負荷分散機能、冗長化機能は、データベースサーバなど、サービスを提供するソフトウェア自身の機能や、拡張機能として提供されている場合がある。

図Ⅱ-3-7.負荷分散構成の例

【解説】

1) 機能要件の実現

機能要件の実現を支援するソフトウェア、アーキテクチャの例を以下にあげる。

* セキュリティ機能

Webシステムの場合、認証の際のパスワードなど、データの暗号化が求められる場合がある。Webシステムにおける暗号化技術としてはSSLによる通信が広く用いられており、Apache HTTP ServerなどのWebサーバや、MySQLやPostgreSQLなどのデータベースサーバなどで利用することができる。

* トランザクション機能

JBossなど、Java EE仕様に準拠したアプリケーションサーバは、開発者によるトランザクション制御の他に、サーバによるトランザクション制御機能を提供している。また、分散トランザクションなど、高度なトランザクションを実現するOSSとして「JBoss Transactions」などが公開されている。

* アカウント管理機能

Webシステムのうち、ユーザからのリクエストによってアカウントの作成を行うシステムの場合、アカウントの不正取得を防ぐ仕組みが必要となる。広く利用されている仕組みとしては、アカウント作成時にEメールアドレスを入力させ、アカウントの活性化を行うためのURLを別途Eメールとして送付する方法がある。Webアプリケーション向けのフレームワークでは、このようなアカウント管理を容易に実装するための機能が提供されている場合がある。

2) 非機能要件の実現

非機能要件の実現を支援するソフトウェア、アーキテクチャの例を以下にあげる。

* 性能要件

Webシステムの場合、クラスタリングによる負荷分散や、コンテンツのキャッシュ機能の利用によって応答速度を向上させることが可能である。クラスタリングによる負荷分散を実現するOSSとしてLVSがあげられる。詳細は「II-3-2.非機能要件とシステム構成」を参照のこと。コンテンツのキャッシュ機能を実現するOSSとしては、Squidなどがある。また、多くのデータベースサーバでは、データを複数のサーバ間でレプリケーションし、負荷分散、および冗長化する機能が提供されている。例としてはMySQLで標準機能として提供されているレプリケーション機能や、PostgreSQLで利用可能なpgpoolなどがあげられる。

* 信頼性要件

信頼性を向上させる方法としては、システムの冗長化が広く用いられている。サーバの冗長化を実現するOSSとしてHeartbeatがあげられる。詳細は「II-3-2. 非機能要件とシステム構成」を参照のこと。

* 運用要件

安定した運用を継続する上で必要となるサービスの監視や、障害通知を行うOSSとしてNagiosやHobbitなどが利用されている。また、SNMPを利用したネットワーク機器の監視を行うソフトウェアとしてMRTGなどが利用されている。

Ⅱ-3-8. OSSが動作するハードウェア

OSSが動作する基盤となるハードウェアについて、サーバ、クライアントといったそれぞれ利用環境に合わせたハードウェアの特徴を整理する。さらに、OSSを動作させるにあたって留意すべきポイントや課題についても述べる。

【学習の要点】

* OSSを動作させるサーバのハードウェアの選定にあたっては、使用する基本ソフトをハードウェアベンダがサポートしていることが望ましい。

* サーバのハードウェアのスペックの検討にあたっては、動作させるソフトウェア、想定されるアクセス数、およびユーザサイドからの性能要件などを考慮する必要がある。

* ハードウェアの選定に関するポイントとしては、使用するソフトウェアが動作可能であることや仕様が公開されていることを確認する必要がある。

図Ⅱ-3-8. OSSを動作させるハードウェアの特徴

【解説】

1) サーバ用ハードウェアの選定

サーバ用ハードウェアに求められる要件は用途によって様々であり、複数のネットワークインタフェースを扱う、特別なストレージデバイスを扱う、などが想定される。また、信頼性など、非機能要件に対応するため、各部品が冗長化された製品や、OSがダウンした場合でもネットワーク経由でハードウェアの制御が可能な製品などが存在する。さらに、サーバ用ハードウェアの場合、必要な要件がユーザ数など外部の条件によって変動する点に注意が必要である。

* 動作に必要となるハードウェア機能

オープンソースOSの各ハードウェアへの対応状況はそれぞれのOSによって異なるため、対応状況については各オープンソースOSのWebサイトや、ハードウェアベンダのWebサイト上で確認する必要がある。サーバ機において特に注意が必要な項目として、使用するストレージデバイスやネットワークインタフェースへの対応などが挙げられる。

* ハードウェアベンダによるOSのサポート

ビジネス用途のサーバにオープンソースOSをインストールして利用する場合、ハードウェアベンダによりそのOSの動作が保証されていることが望ましい。サポートされていないOSをインストールした場合、不具合があってもユーザ責任になってしまう、というだけでなく、ハードウェアの機能・性能の全てを活用できない可能性がある。また、ラックマウントサーバやブレードサーバなど、サーバ専用機として設計されたハードウェアは専用の管理ソフトウェアが用意されていることが多いが、これを活用できるのはベンダによって動作が保証されているOSのみである場合がある。多くのハードウェアベンダにより動作が保証されているオープンソースOSとしてはRed Hat Enterprise Linuxが挙げられる。また、Red Hat Enterprise Linuxと互換性が高いCentOSを代替として用いることが可能な場合もある。

* ハードウェアのスペックの検討

性能要件や、扱うデータ量などの各要件を元にハードウェアのスペックを検討する。要件を満たすために必要なハードウェア性能については、事例を元に決定することが最も確実性が高いが、Web上で公開されているベンチマーク結果などのリソースを参考にできる場合がある。

2) クライアント用ハードウェアの選定

クライアント用ハードウェアの選定に関するポイントを述べる。

* 動作に必要となるハードウェア機能

クライアントでは、基本機能に加え、使用するソフトウェアの要件に応じてグラフィックカード、サウンドカード、あるいは指紋認証デバイスや、ICカードリーダなどの対応が問題となる場合がある。クライアント用途で用いられるハードウェアはデバイスの多様性が高く、ソフトウェア側での対応が難しいため、対応状況について、各オープンソースOSのWebサイトや、ハードウェアベンダのWebサイト上で確認する必要がある。

* ハードウェアのスペックの検討

クライアントのハードウェアに求められるハードウェアのスペックは、クライアント上で動作させるソフトウェアが必要とするスペックによって決定することができる。サーバと異なり、ユーザ数などの外部の要因によって左右されることは少ない。

Ⅱ-3-9. コンピュータ以外への発展

当初は一般のコンピュータがOSSの主たる適用対象であったが、現在では携帯電話やPDA、情報家電といった組み込み分野など様々なアーキテクチャへと対象範囲が拡大している。これらに関して、アプリケーション基盤の構成要素や設計のポイントなどについて説明する。

【学習の要点】

* 携帯電話やPDA、情報家電といった組み込み分野など、一般のコンピュータ以外の分野においてもLinuxをはじめとしたOSSが利用されている。

* 一般のコンピュータ以外のハードウェアでOSSを動作させる場合、リソースや使用できるライブラリの制限を考慮する必要がある。

* Linuxにおけるリアルタイム性の実現など、組み込み用途に適した特長を持つOSSの開発も行われている。

図Ⅱ-3-9. OSSの適用範囲の広がり

【解説】

1) OSSの適用範囲と構成要素

一般のコンピュータ以外の分野においてもアプリケーション基盤の構成要素としてLinuxをはじめとしたOSSが利用されている。

* 携帯電話・PDA

携帯電話・PDAの基本ソフトとしてLinuxが広く利用されている。また、Linuxベースの携帯電話・PDAではGUIツールキットとして同じくOSSのQtが利用される場合も多い。2008年7月現在の動きとして、携帯電話の基本ソフトとして最も利用率の高いSymbian OSのオープンソース化が発表されている。さらに、Linuxをベースとした新たなモバイル機器用ソフトウェア基盤としてAndroidが発表され、注目を集めている。

* その他の機器

各種ネットワーク機器やデジタル家電の多くの製品でLinuxをはじめとしたOSSが利用されている。

2) 一般のコンピュータ以外のハードウェアにおけるOSS

一般のコンピュータ以外のハードウェアにおいて、Linuxのようなオープンな仕様のソフトウェアをアプリケーション開発の基盤として用いることにより、TCP/IPによるネットワーク機能に代表される豊富な機能を利用できる他、アプリケーションの仕様や開発方法を共通化できるというメリットがある。例えばOSとしてLinuxが搭載された機器では、通常のPCと同様の開発方法を採ることが可能な場合も多い。しかしながら、共通のアプリケーション開発基盤を利用した場合でも、ハードウェア毎に使用できるリソースやライブラリの制限が存在することがほとんどであり、開発の際にはこれらの制限を考慮する必要がある。

3) 組み込みに特化したOSS

Linuxにおけるリアルタイム性の実現など、組み込み用途に適した特長を持つOSSの研究・開発が継続的に行われている。

* CE Linuxフォーラム(http://www.celinuxforum.org)では、家電や携帯電話を対象にしたLinuxの機能強化・普及促進を目的として様々な活動が行われている。Webサイトでは、組み込みLinuxに関する技術情報や、消費者向け電気製品で利用されるLinuxに対する要求仕様、およびLinuxカーネルのパッチなどが公開されており、その成果を利用できる。

* リアルタイム性やリソースが限られた状況での動作など、組み込み用途向けの機能を実現したLinuxディストリビューションとしてMontaVista Linux、Wind River Linuxなどが挙げられる。

Ⅱ-3-10. 次世代ネットワークアーキテクチャ

OSSと親和性の高いネットワーク技術も、OSSがその基盤を支えているインターネットから、インターネット以外のネットワークへとOSSの適用範囲が広がっている。ここでは、ユビキタスネットワーク、センサネットワークやIPv6の動向について述べる。

【学習の要点】

* インターネット以外のネットワークに対してもOSSの適用範囲が広がりつつある。

* TRONプロジェクトなど、次世代ネットワークアーキテクチャへの応用が期待される分野においてもオープンソースの実装が存在する。

* LinuxをはじめとしたOSSの大半はIPv6に対応済みである。

図Ⅱ-3-10.次世代のネットワークアーキテクチャ

【解説】

1) インターネット以外でのOSSの利用

インターネット以外のネットワークに対してもOSSの適用範囲が広がりつつある。例えばAsterisk(http://www.asterisk.org)はPBX(構内電話交換機)を実現するOSSであり、市販のPBXと遜色がない機能を提供できるとして注目を集めている。

2) 次世代のネットワークアーキテクチャ

次世代のネットワークアーキテクチャとして、ユビキタスネットワーク、センサネットワークも期待されている。身の回りの様々な機器がネットワークに接続されると共に、機器自身が情報を認識し、さらに機器同士が相互にコミュニケーションをとることができるようになる。これにより、コンピュータを意識せずに利便性の高い生活を送ることができるとされる。

3) TRONプロジェクトとOSS

次世代のネットワークアーキテクチャへの応用が期待される分野として、TRONプロジェクト(http://www.tron.org)があげられる。

* TRONプロジェクトでは、ユビキタスという言葉が一般に使われる以前から「どこでもコンピュータ」をキーワードとして分散コンピューティング環境の実現を目指した取り組みが続けられている。

* TRONプロジェクトの代表的な成果として、組み込みに適したリアルタイムOSの仕様策定がある。

* TRONプロジェクトで策定された仕様に基づいたオープンソース実装として、μITRON仕様に基づいたカーネルがTOPPERSプロジェクト(http://www.toppers.jp)によって公開されている。

* TRONプロジェクトから派生したT-Engineプロジェクトで開発されたリアルタイムOS「T-Kernel」はソースコードを入手し、改変することができる。

4) IPv6

様々な機器がネットワークに参加する次世代のネットワークアーキテクチャを実現するために必要な技術の1つとして、IPv6があげられることが多い。LinuxをはじめとしたOSSの大半がIPv6に既に対応済みであるなど、IPv6対応が充実していることはOSSの強みの一つであり、将来に向けてOSSの重要性が高まっていく可能性がある。