ミドルウェア
OSとアプリケーションの間に立つミドルウェアの役割、シェルとAPI、ライブラリの種類、コンポーネントウェアと開発フレームワークを理解できるようになります。
ねらい
OSとアプリケーションの間に立つソフトウェアを学びます。このレッスンを終えると、ミドルウェアの代表的な種類、シェルとAPIの役割、ライブラリの種類と使い分け、コンポーネントウェアと開発フレームワークの考え方を説明できるようになります。
ストーリー
あなたのチームがWebサービスを作るとき、データを保存する仕組みをゼロから書くことはありません。DBMSというできあいのソフトウェアに任せます。通信も、取引の管理も同じです。アプリケーションが本来の仕事に集中できるのは、OSとアプリケーションの間で汎用的な仕事を引き受けてくれる層があるからです。この層をミドルウェアといいます。
ミドルウェアの役割と種類
ミドルウェアは、OSとアプリケーションソフトウェアの中間に位置し、多くのアプリケーションに共通する機能を提供するソフトウェアです。代表的な種類を押さえましょう。
| ミドルウェア | 役割 |
|---|---|
| DBMS | データベースの管理。データの保存・検索・整合性の維持を受け持つ |
| 通信管理システム | ネットワーク越しの通信の制御 |
| TPモニター | トランザクション処理の管理。多数の取引を確実に処理する |
| 運用管理ツール | システムの監視や運用作業の自動化 |
| ソフトウェア開発支援ツール | 開発作業を支援する |
| アプリケーションプログラム間連携ソフトウェア | アプリケーションどうしのデータや処理の連携 |
ミドルウェアは、OSとアプリケーションの間に挟まる1つの層として位置づけられます。
シェルとAPI:OSへの2つの窓口
OSの機能を使う窓口は、人間向けとプログラム向けの2つがあります。
人間向けの窓口がシェルです。利用者が入力したコマンドを解釈し、プログラムの起動や制御などカーネルの機能を呼び出します。この働きからコマンドインタプリタとも呼ばれます。
プログラム向けの窓口がAPIです。アプリケーションプログラムからOSやミドルウェアへ命令を伝えるための取り決めで、アプリケーションはAPIを呼び出すことで、ファイルの読み書きや通信などの機能を利用します。人間はシェルを、プログラムはAPIを通って、それぞれOSの機能にたどり着きます。
ライブラリ:部品の保管庫
よく使うプログラムやマクロをまとめて格納しておく保管庫をライブラリといいます。格納するものの形で種類が分かれます。
- ソースライブラリは、ソースコードの形で格納します。
- オブジェクトライブラリは、コンパイル済みのオブジェクトプログラムを格納し、リンク時に結合します。
- ロードライブラリは、すぐ実行できる形式のプログラムを格納します。
- DLL(Dynamic Link Library)は、実行時に動的に結合されるライブラリです。複数のプログラムが同じDLLを共有できるため、メモリやディスクの節約になります。
- クラスライブラリは、オブジェクト指向のクラスをまとめたものです。
コンポーネントウェアと開発フレームワーク
オブジェクト指向技術を土台に、ソフトウェアを部品(コンポーネント)として組み合わせて開発する手法をコンポーネントウェアといいます。部品の規格として、Java Beans、分散環境で部品を連携させるCORBA、Javaの部品を動的に追加・更新できるOSGiがあります。
また、アプリケーションの標準的な構造をあらかじめ実装したクラスやライブラリの集まりを開発フレームワークといいます。骨組みができあがっているため、開発者は個別の業務ロジックに集中できます。ライブラリは「呼び出して使う部品」、フレームワークは「骨組みに自分のコードをはめ込む土台」という向きの違いをつかんでおきましょう。
例題
次の問いに答えてください。
問1 利用者が入力したコマンドを解釈して、カーネルの機能を呼び出すソフトウェアを何といいますか。
問2 アプリケーションプログラムからOSやミドルウェアの機能を呼び出すための取り決めを何といいますか。
解答と解説
問1の答えはシェルです。コマンドを解釈する働きからコマンドインタプリタとも呼ばれます。
問2の答えはAPIです。シェルが人間向けの窓口であるのに対し、APIはプログラム向けの窓口です。
応用
本試験を意識した問題を解いてみましょう。
問 実行時に動的に結合され、複数のプログラムから共有して利用できるライブラリはどれでしょうか。次の中から選んでください。
- DLL
- ソースライブラリ
- オブジェクトライブラリ
- クラスライブラリ
解答と解説
答えは1のDLLです。プログラムの実行時に動的に結合されるため、複数のプログラムが同じライブラリを共有でき、メモリやディスクの節約につながります。2のソースライブラリはソースコードの形で格納する保管庫で、実行時の結合とは関係ありません。3のオブジェクトライブラリはコンパイル済みのオブジェクトプログラムを格納し、実行前のリンク時に結合されます。4のクラスライブラリはオブジェクト指向のクラスをまとめたものという分類であり、「実行時に動的に結合される」という性質を表す用語ではありません。
分からなかった点・気になった点
読み込み中です。