異なるオペレーティングシステム(OS)間でソフトウェアをスムーズに動作させるためには、共通の「ルール」が必要です。その役割を担うのがPOSIX(Portable Operating System Interface)です。POSIXは、アプリケーションプログラミングインターフェース(API)の標準規格であり、開発者が一度書いたコードを、異なるOS上でも最小限の修正で動作させる「移植性」を高めるために策定されました。
この規格は、IEEE、The Open Group、およびISO/IEC JTC 1/SC 22/WG 15からなる共同作業グループ「Austin Group」によって管理・開発されています。もともとは1984年に始まったプロジェクトがベースとなっており、1988年に最初の正式な規格(IEEE Std 1003.1-1988)として公開されました。
Key Facts
- 正式名称: Portable Operating System Interface (IEEE 1003)
- 目的: OS間のAPI共通化によるソフトウェアの移植性向上
- 管理団体: Austin Group(IEEE, The Open Group, ISO/IECの共同体)
- 最新バージョン: IEEE Std 1003.1-2024(2024年6月14日公開)
- 関連規格: ISO/IEC 9945
POSIXの進化と構成
POSIXは時代に合わせて拡張され、単一の文書から複雑な仕様群へと進化してきました。1997年以降は「Single UNIX Specification (SUS)」という仕様に基づき、POSIXの内容が更新される形式が採用されています。
初期の主要コンポーネント(1997年以前)
初期のPOSIXは、機能ごとに以下のような区分で定義されていました。
- POSIX.1: コアサービス。プロセス制御、信号(シグナル)、ファイル操作、標準Cライブラリ、端末インターフェースなどを含みます。
- POSIX.1b: リアルタイム拡張。優先度付きスケジューリング、共有メモリ、セマフォ、非同期I/Oなどを定義しています。
- POSIX.1c: スレッド拡張。スレッドの作成、制御、同期、およびシグナル処理を規定しています。
- POSIX.2: シェルとユーティリティ。コマンドインタプリタや標準的なユーティリティプログラムを定義しています。
現代のPOSIX(2014年以降)
現在のPOSIXドキュメントは、大きく分けて以下の2つの要素で構成されています。
- POSIX.1 (2013年版など): 基本定義、システムインターフェース、コマンドおよびユーティリティを包括した仕様書。
- POSIX準拠テスト: 規格への適合性を検証するためのテストスイート(VSX-PCTS)です。
最新の2024年版では、C17言語標準との整合性が図られています。
OSの準拠レベルと互換性の実態
すべてのOSが完全にPOSIXに準拠しているわけではありません。準拠の度合いによって、いくつかのカテゴリーに分類されます。
完全認証済みOS
自動テストをパスし、正式に認証を受けたOSです。macOS(Leopard以降)やAIX、z/OS、VxWorksなどが含まれます。
部分的な準拠(Compliant)
認証は受けていないものの、多くのAPIを実装しているOSです。代表的なものにLinux(多くのディストリビューション)やFreeBSD、OpenBSD、Android(NDK経由)などがあります。
互換レイヤーによる準拠
OS自体は非準拠ですが、中間層(互換レイヤー)を介してPOSIX環境を提供するケースです。WindowsにおけるWSL(Windows Subsystem for Linux)やCygwin、IBM iのPASEなどがこれに当たります。
| 準拠区分 | 特徴 | 代表的な例 |
|---|---|---|
| 認証済み (Certified) | 公式テストをパスし認証を保持 | macOS, AIX, z/OS |
| 部分的準拠 (Partially Conformant) | 主要な機能を実装しているが未認証 | Linux, FreeBSD, Android |
| 互換レイヤー経由 | サブシステムやライブラリで実現 | WSL, Cygwin, PASE |
技術的な論争と実装の差異
規格の策定過程では、実装の詳細を巡って議論が起こることもあります。有名な例として、dfやduコマンドにおけるデフォルトのブロックサイズ(512バイトか1024バイトか)という論争があります。POSIXはディスクの物理的な特性を反映して512バイトを規定しましたが、ユーザーの利便性を重視するGNUチームなどは1024バイトを支持しました。この差異を制御するために、POSIXLY_CORRECTという環境変数が導入されました。
Frequently Asked Questions
POSIXに準拠していることのメリットは何ですか?
最大のメリットはソフトウェアの移植性です。POSIX準拠のAPIを使用して開発すれば、あるUNIX系OS向けに作成したプログラムを、別の準拠OSへ最小限の変更で移植することが可能になります。
LinuxはPOSIX準拠と言えますか?
厳密には、多くのLinuxディストリビューションは公式な「認証」を受けていないため、完全準拠とは呼ばれません。しかし、実用上のほとんどの機能においてPOSIX規格に従っており、「部分的準拠(Compliant)」と見なされています。
WindowsでPOSIX環境を利用する方法はありますか?
はい。Microsoftが提供するWSL(Windows Subsystem for Linux)を利用することで、Windows上でLinuxバイナリをネイティブに実行でき、POSIX準拠の環境を得ることができます。また、Cygwinなどのサードパーティ製ツールも利用可能です。
POSIXとSUS(Single UNIX Specification)の違いは何ですか?
POSIXはIEEEなどが策定する広範な標準規格であり、SUSはThe Open Groupが定義するUNIXの仕様です。1997年以降、この2つは密接に連携しており、SUSの仕様がPOSIXに反映される形で統合的に管理されています。
References
- "POSIX.1 FAQ". The Open Group. 13 June 2020. Retrieved 20 February 2023.
- "IEEE 1003.1-2024". IEEE Standards Association.
- "Shell Command Language - The Open Group Base Specifications Issue 7, 2013 Edition". Retrieved 28 April 2020.
- "Introduction". The Open Group Base Specifications Issue 7, 2018 edition. Retrieved 22 July 2021.
- "JimIsaak - POSIX Impact". sites.google.com. Retrieved 15 September 2022.
- "A Backgrounder on IEEE Std 1003.1". Footnotes.
- "The origin of the name POSIX". stallman.org. Retrieved 26 September 2024.
- Stoughton, Nicholas. "An Update On Standards". .
- "IEEE Standard Portable Operating System Interface for Computer Environments" (PDF). p. 172.
- PASC Status (including POSIX) (Report). . 4 December 2003. Retrieved 26 September 2024.