POSIX準拠とはなに? 準拠でないものもあるの? |
|
|
POSIX準拠とはPOSIX(Portable Operating System Interface) は、UNIX系OSの動作やAPIを標準化するための規格です。 POSIX準拠とは、
という意味です。 POSIXがあるおかげで、あるUNIX環境向けに作ったプログラムを別のUNIX環境へ移植しやすくなります。 例えばPOSIXでは、
などが標準化されています。 なぜ必要なのか昔はUNIXの派生がたくさんありました。
などです。 同じUNIXでも微妙にAPIやコマンドが違うため、 「Aで動くプログラムがBで動かない」 という問題が頻発しました。 そこでPOSIXが作られ、 「最低限これだけは共通にしよう」 という基準になりました。 POSIX準拠の例比較的POSIXとの親和性が高いもの:
ただし、Linuxそのものは厳密にはPOSIX認証を取得していません。 実際には
という表現の方が正確です。 一方、macOSは過去に正式なUNIX認証を取得しています。 準拠でないものもあるの?あります。 代表例はWindowsです。 例えばLinuxでは: でプロセスを生成できます。 しかしWindowsには 代わりに: を使います。 つまりWindows APIはPOSIXとは別物です。 Bashスクリプトでも違いがある例えば、 で書かれたスクリプトでも、 POSIXで定義されていない機能を使うと移植性が落ちます。 例: これはBash独自機能です。 POSIX準拠にするなら: を使います。 POSIX準拠のメリット移植性Linux向けプログラムを
などへ持っていきやすい。 学習コスト削減コマンドやAPIの基本動作が共通。 ベンダーロックイン回避特定OS独自機能への依存を減らせる。 POSIX準拠のデメリット標準に縛られるため、
を使えないことがあります。 そのため実務では、
ということが多いです。 Dockerやクラウドとの関係Dockerコンテナの多くはLinux上で動くため、
はPOSIXを意識して書くと移植性が高くなります。 CI/CD環境やクラウドでも、 「POSIXシェルで動くこと」を前提にしているケースは非常に多いです。 まとめPOSIX準拠とは、 **「UNIX系OSの共通ルールに従っていること」**です。 準拠していると移植性が高くなり、異なるUNIX系環境でも動きやすくなります。 一方で、WindowsのようにPOSIX準拠ではないOSもありますし、LinuxやBashにもPOSIX外の独自機能がたくさんあります。 そのため実務では、 「まずPOSIXを基準に考え、必要なら独自機能を使う」 というスタイルがよく採られます。 |
|
|






