この記事は日経 xTECH有料会員限定ですが、2018年4月5日5時まではどなたでもご覧いただけます。

 LinuxやWindowsに代表されるOS(Operating System)は、ハードウエアを利用したり、管理したりするためのソフトウエアです。各種のミドルウエアやアプリケーションといったOS以外のソフトウエアは、OSを介してコンピュータを利用します。つまり、OSの役割をひと言でいうと、ハードウエアなどのコンピュータリソースへのインタフェースを提供し、それらを管理することです。

 OSが他のソフトウエアに提供するインタフェースを、API(Application Program Interface)といいます。REST APIのようなWebサービスのインタフェースを指すAPIと同じ用語です。どちらも、何らかのサービスをアプリケーションが利用するためのインタフェースだからです。

 OSが管理するリソースは、CPU、メモリー、ストレージ、ネットワークカードなどのハードウエアです。また、OSがソフトウエアで実装しているユーザー、アクセス権、ファイルシステム、排他制御なども、OSが管理します。

ハードウエアの違いを吸収しAPIを提供

 OSは、CPUやネットワークカードなどのハードウエアの違いを吸収します。また、アプリケーションや人間にとって使いやすいインタフェースであるAPIを提供します。例えば、システム要件に応じて異なるスペックのハードウエアを導入してもシステムが動作するのは、OSがハードウエアの違いを吸収し、同一のAPIをシステムに提供しているからです。

 また、ストレージ装置に格納されたデータを、人間が使いやすいファイル形式で扱えるのは、OSのAPIの働きによるものです。ストレージ装置では、磁気ディスク上ではデータは512バイト単位のブロックの羅列です。OSは、このブロック単位のデータを、ファイル名のついたファイルとして、任意の大きさのデータを読み書きできるようにしています。

 OSのAPIは、プログラム作成とコンピュータの利用を容易にするだけでなく、それに従って作成されたアプリケーションの可搬性、移植性を保証します。特にエンタープライズシステムで広く使われているOSのAPIはこの点を明確に意識しているといえます。国際規格、業界規格、ベンダー公開仕様などにより、既存の仕様との互換性を長期間にわたって維持しています。

 主なAPI仕様の例をに示します。UnixやLinuxのAPIであるPOSIXは1988年の登場から既に30年が経っています。Windowsの標準APIであるWin32も1993年に登場し、現在に至るまで互換性を提供し続けています。

表●API仕様の例
[画像のクリックで拡大表示]

 APIに互換性があれば、異なるOS向けのプログラムを再コンパイルにより動作させることができます。そこで、ハードウエアやOSの保守期限切れなどにともなってサーバーを更新しなければならないような場合でも、大きな変更をすることなく、システムを延命できる可能性があります。旧システムのOSと移行先OSのAPIの互換性が高ければ高いほど、アプリケーションのプログラムの修正箇所を少なくでき、移行の難易度が低くなります。

 もちろん、実際の移行検討では、OSだけでなくミドルウエアやパッケージの互換性の問題もあります。その場合、OSのAPIが完全互換だとしても、移行が容易とは限りません。