POSIX規格ではPOSIX:2004を参照すべきと考えた2の理由

概要

移植可能なシェルスクリプトやC言語のプログラミングを行う際,POSIX規格が役に立つ。しかし,POSIX (IEEE Standard 1003) 規格は1988年にできてから,改訂を繰り返しながら多数のバージョンが存在する。最新版はPOSIX:2008-2018となっている。

規格のバージョンごとに微妙に内容が異なっている。基本的には,後の規格になるにつれて,情報の量や詳細度が上がって,よりよくなっている。しかし,当然ながら昔の規格に準拠した実装が存在するため,できるだけ古いPOSIX規格に準拠したほうが,開発したシェルスクリプトやC言語のプログラムの移植性が高まる

自分なりに考えた結果,POSIXで参照すべき規格としてはPOSIX:2004がよいと結論が出たのでその理由について記す。

理由は以下の2点となる。

POSIX:2004を参照すべき理由
  1. オープンアクセス可能で信頼性の高い最古の規格
  2. SUSの適合要件として整合性が取られたバージョン

以下でその理由を説明する。

1. オープンアクセス可能で信頼性の高い最古の規格

まず1点目の理由を説明する。

POSIX (IEEE Std 1003) 関連規格で一番古いものとしては,C言語のAPIはPOSIX.1-1988,シェルスクリプトに関してはPOSIX.2-1992がある。その他,IEEEをISO/IECとして出されたISO/IEC 9945-1:1990とISO/IEC 9945-2:1993がそれぞれ存在する。

しかし,これらは残念ながらオープンアクセスできない。お金 (10万円程度) を払って自分で規格書を入手する必要がある。そういう意味で,大衆が参照すべき規格としてはあまり向かない

その中で,POSIX:2004はPOSIXやSUSを管理しているThe Open GroupからSUSv3として直接リンクされている。そのため,信頼性の高いオープンアクセス可能な規格の中で一番古い。

POSIX:2001もインターネットを探せば個人がアーカイブしたようなものがあるにはあるのだが,The Open Groupの公式サイトからは残念ながら見つけることができない。そのため,POSIX:2001は公表元の信頼性や妥当性という観点からは残念ながら劣る。

そういう意味で,POSIX:2004がオープンアクセス可能で信頼性の高い最古の規格と考えた。

2. SUSの適合要件として整合性が取られたバージョン

続いて2点目の理由を説明する。

POSIX:2001は初めてSingle UNIX Specification (SUS) のバージョンとして,POSIX規格を参照した規格である。元々SUSのv1とv2はPOSIXとは独立して作られていた。それがSUSv3でPOSIXと基本的な内容を統一し,SUSはPOSIXに独自のオプションや別の規格を追加したものとして発表されている。

そういう意味で,POSIX:2004はSUSと内容が共通化されたPOSIX:2001の直後の規格であるため,より安定性が高いと考えられる。

結論

POSIX規格としてPOSIX:2004を参照すべきと考えた理由を記した。

最新のPOSIX規格はPOSIX:2008-2018だが,この先も改訂予定がある。どこかで基準のバージョンを止めないと永遠に追いかけ続ける必要がある。

古いところで見ておけば,新しい規格の新機能は使えないが,移植性は高まる。動作の可否は新機能の利用より重要なことが多い。POSIX:2004をベースに,必要に応じて最新の規格と対比させながらシェルスクリプトやC言語の開発に役立てたい。

今後,自分の投稿でPOSIX規格を参照する際はPOSIX:2004を原則として参照することにする。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です