POSIX中心主義

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索

POSIX中心主義(POSIXちゅうしんしゅぎ)とは、ソフトウェア開発指針の一つである。POSIX原理主義[1]とも呼ばれる。POSIX規格(IEEE Std. 1003)に極力準拠しながらプログラムを書くことを最大の特徴とし、副次的な特徴として、POSIX規格に存在するシェルスクリプトを主な開発言語とすること。そして明示的・暗示的にPOSIX規格に準拠しているOSが多いという背景により、この指針に基づいて書かれたプログラムは移植性や持続性が高まるなどがある。

原理[編集]

ソフトウェアを含む多くの技術(或いは製品やサービス)には、実用上の寿命がある。開発者がサポートを終了したり、不具合や脆弱性が発見されたり、といったことが原因となり得る。そのような何らか別の技術に依存している技術の実用性を維持するには、定期的または不定期に保守(あるいは別環境への移植)をしなければならず、コスト負担が発生する。ゼロデイ攻撃のように、突然依存できなくなる事態への対応では特に重大なコストになる。そこでこのようなコストを避けるにはどうすればよいかを考える。

すると、例えば次の二つの対策が考えられる。

  • 普遍性の高い技術のみに依存する。
  • 普遍性の低い技術に依存せざるを得ない場合は、同等の機能を実現する別の実装にも依存できるように作り置く。

この二つの対策を実施することで、依存している技術の寿命によるコストの発生(保守コストや移植コスト)を低減させようという考え方がPOSIX中心主義の原理である。

具体的な指針[編集]

POSIX中心主義は、上記の原理をソフトウェアの分野に応用し、次の三つの指針を提唱した[2]

  • POSIX準拠
  • 交換可能性担保
  • W3C勧告準拠

1番目の指針にあるPOSIX規格は、1990年代に提唱されて以降、2010年代現在でも現存する多くのUNIX系OSが設計上の規範としており、普遍性において高い実績があることから選ばれた。2番目の「交換可能性担保」の指針は、原理の2番目を実践する方法として提唱された。3番目の指針にあるW3C勧告は、Webアプリケーション分野においてPOSIXと同様に高い普遍性の実績から選ばれた。

POSIX準拠[編集]

この指針はPOSIX規格に準拠しながらプログラミングするというもので、POSIX中心主義での原則的な指針とされる。POSIX文書で明記されているシェルスクリプト(Bourneシェル[3]文法、コマンド(およびそこで明記されているオプションや動作)のみを用いてプログラムを書く。

交換可能性担保[編集]

上記の指針では実現の難しい機能、あるいは全く不可能な機能を実現しなければならない場合[4][5]は、POSIX規格にない依存ソフトウェアを使用せざるを得ない。しかし、無制限に認めてしまえば保守や移植のコストは増大してしまう。そこで、使用する場合には次の性質を満たすことという例外条件が2番目の指針である。

今利用している依存ソフトウェア(A)と同等機能を有する別の実装(B)が存在し,何らかの事情によりAが使えなくなったときでも,Bに交換することでAを利用していたソフトウェアを継続して使える性質

例えば、Web APIにアクセスするためのコマンドがPOSIX規格では規定されていない。そこでcURLコマンドを使いたいと思った場合には、同等との機能を有する例えばWgetコマンドにも対応したコードにし、かつ互いが持つ独自の機能は利用しないように気を付けることで、どちらかが寿命を迎えて使えなくなったとしても直ちに影響を受けないようにする。

W3C勧告準拠[編集]

wwwの普及によって、アプリケーションのユーザーインタフェースWebブラウザーを使うことを求められる場合に定めらられた指針である。具体的には、W3C勧告で明記された仕様や言語(JavaScript)のみを用いる。各種webブラウザーの独自機能やそれを使っている可能性のある各種JavaScriptライブラリーは用いないようにする。

脚注・出典[編集]

  1. ^ 松浦智之(著)、USP研究所(監)「Windows/Mac/UNIXすべてで20年動くプログラムはどう書くべきか」、C&R研究所、2016年11月4日。ISBN 978-4-86354-209-9
  2. ^ 松浦智之、大野浩之、當仲寛哲 「ソフトウェアの高い互換性と長い持続性を目指すPOSIX中心主義プログラミング」、『情報処理学会 デジタルプラクティス』Vol.8 No.4(通巻32号)、2017年10月、352頁。ISSN 2188-4390。
  3. ^ POSIX文書にはC言語C99)も記載されているため、C言語を用いてもPOSIX中心主義の指針には矛盾しない。
  4. ^ POSIXで規定されているコマンドは、テキストデータを主な処理対象としているものが多く、バイナリーデータの処理に適したものが少ない。
  5. ^ POSIXで規定されているコマンドにはメール送受信を除き、HTTPアクセスはじめ、INETドメインへの接続を実現するものが存在しない。

参考文献[編集]

関連項目[編集]