このページの本文へ

前へ 1 2 3 次へ

基礎から覚える 最新OSのアーキテクチャー 第12回

アプリがWindowsの機能を使うには? APIとDLLの仕組み

2012年03月15日 12時00分更新

文● 塩田紳二

  • この記事をはてなブックマークに追加
  • 本文印刷

アプリケーションを動かすことこそOSの仕事

 OSの最大の目的とは、アプリケーションプログラムを動作させることだ。OS自体がどういう構成をしていようと、アプリケーションが動かないOSは無意味な存在である。スケジューラーもメモリー管理も、すべてはアプリケーションプログラムのために存在する。

 メモリーを必要としたり別のスレッドを起動しようとするなど、アプリケーションがOS側の機能を利用するときに使うのが、「API」(Application Program Interface)である。これは、アプリケーションのバイナリ形式とともに各OSで定義されていて、OSがアプリケーションに対して提供する機能の集まりであるとともに、その呼びだし方や必要なパラメーターなどを定義したものだ。

 OSによってはGUIの機能がOS本体と不可分で、APIとしてGUIを構築する機能を提供するものもある。というのも、GUIは複雑な仕組みであるため、アプリケーションのレスポンスを上げるには、システムと密接に動作する必要があるからだ。Windowsも今ではGUIを分離できるようになったが、以前は不可分であった。

 ちなみに、GUIは必ずしもOS自身が提供するというわけではない。Linux系ではパッケージ(ディストリビューション)にGUIシステムが含まれているが、画面関連の処理は、独立したアプリケーションである「X Window System」が担当する。そのため、XなしGUIなしのシステムを作ることができる。また、Androidは同じLinuxカーネルを使うものの、X Windowは使わずにJava側の機能としてGUIを実現している。しかし、Android全体を見るとGUIは必須であり、OSの一部になっているといえる。

 もともとWindows NTは、GUI部分を含んだ「Windowsサブシステム」という部分があり、ほかのOS(例えばPOSIXOS/2)のサブシステムも持っていた。WindowsサブシステムはあくまでWindows NTが持つAPIセットのひとつであり、その中でWin32 APIに準拠したアプリケーションが動くものだったのである。しかしその後、ほかのサブシステムをWindowsに搭載する必要性は薄れたため、現在ではWindowsサブシステムと一体になったOSになった。それでも元をたどれば、Windows NTは複数のAPIセットを提供し、それぞれのアプリケーションを実行できるようになっていたのだ。

 APIにはOSが管理している資源の利用などのほかに、アプリケーションに対して、“あると便利”な機能などを提供する。例えば単純なファイルアクセスだけでなく、ZIP圧縮ファイルを扱うようなAPIがそれだ。圧縮ファイルはファイルのフォーマットであり、かつてはサードパーティアプリケーションとして、圧縮/解凍ユーティリティーが提供されていた(今でもあるが)。

 これらはOSが提供するファイルアクセスのAPIを使い、アプリケーション内でファイルを圧縮/解凍するプログラムとして存在していたわけだ。そのうちに、ZIPなど広く使われる圧縮フォーマットが確定すると、OSはこれをシステム側の機能として提供するようになる。ZIPフォーマットをエクスプローラーで直接扱うしくみは、Windows XPで取り込まれたものだ。

 OSが提供して、アプリケーションが制御して利用可能な機能は、すべてAPIであると言える。中にはビデオ再生のように、機能自体がアプリケーションに近いものもある。しかし、ビデオを再生するだけで一からプログラムを書かねばならないOSには、ビデオを扱うアプリケーションは登場しないだろう。

Windows NTはなぜPOSIXサブシステムを搭載していたのか?

 Windows NTがPOSIXサブシステムを搭載していたのは、米国政府が「政府で利用するコンピューターシステムは、すべてPOSIX準拠でなければダメ」と決めていたためだ。そのためWindows 2000までは、POSIXサブシステムが標準搭載されていた。

 Windows XPからは「Services for UNIX」を別途導入して使うものになり、現在は「Subsystem for UNIX-based Applications」(日本語版ではUNIXベースアプリケーション用サブシステム)という形で、Windows 7などに付属している。

 これらは標準ではインストールされておらず、コントロールパネルにある「プログラムと機能」から、「Windowsの機能の有効化または無効化」を使って追加できる。関連のアドオンは「Utilities and SDK for Subsystem for UNIX-based Applications」として、マイクロソフトのダウンロードセンターで配布されている。

前へ 1 2 3 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン