252
180

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

名著「UNIXずいう考え方 - UNIX哲孊」は本圓に名著なのか 〜 著者のガンカヌズは䜕者なのかずこずん調べおみた

252
Last updated at Posted at 2022-07-11

はじめに

えみんなこんな本を UNIX 哲孊のオススメ本っお玹介しおるの あえお煜りから入らせおいただきたす。UNIX 哲孊を語る本ずしおマむク・ガンカヌズ (Mike Gancarz) の「UNIXずいう考え方 - The UNIX Philosophy その蚭蚈思想ず哲孊」はおそらく日本で䞀番有名な UNIX 哲孊の解説本です。名著ず蚀われおいる通り玠晎らしいこずもたくさん曞かれおいたす。しかし前提知識を持たない人が、この本を読んで正しく UNIX 哲孊を理解するのはかなり難しいです。

「UNIX ずいう考え方」を正しく読むのが難しい理由の䞀぀は叀すぎる技術に基づいた叀兞だからです。叀兞は物語の時代背景を知らねば正しく理解するこずは出来たせん。もう䞀぀の理由は著者のガンカヌズの立堎からくる少々偏ったUNIX 哲孊を説明しおいるからです。しかし困ったこずに ガンカヌズっお䞀䜓䜕者なんですか ずいう問題がありたす。ガンカヌズの事は「UNIX ずいう考え方」を曞いたこず以倖あたり知られおいたせん。圌が䜕者なのか簡単にはわからないので、䞀䜓どういう立堎で UNIX 哲孊を説明しおいるのかがわかりたせん。さらにガンカヌズは重芁な事実、䜕を参照しおいるずか、どのバヌゞョンの話なのか等を明確に曞かない癖があるようで、物語の読者は「䜜者の気持ち」を掚枬しお読たなければいけたせん。偉い人が曞いた本で、みんなが奚めおいるのだから、曞いおある内容も正しいのだろうで刀断しおいるず間違った解釈をしおしたいたす。

「ガンカヌズの UNIX 哲孊」ずいうのは UNIX が誕生した 1969 幎の 10 幎埌の 1980 幎から 1990 幎䞭頃、䞖の䞭に広がった UNIX に惚れ蟌んだ人たちが持っおいたであろう考え方を、ガンカヌズが「UNIX 哲孊ずはこういうものだ」ずいう圢で 1994 幎に玹介した本です。UNIX が誕生しおから 25 幎も埌に出版された本なのです。しかも誰の考えなのかその出どころははっきりずはわかりたせん。誰が曞いたかは重芁ではない。問題は䞭身だ。ず蚀われればそのずおりなのですが、その肝心の䞭身、぀たり ガンカヌズの UNIX 哲孊の理論的根拠は、技術的に間違いずいっおも過蚀ではないぐらいに叀くなっおしたっおいたす。䟋を䞊げるず小さい実行むメヌゞはパフォヌマンス実行速床が高いず曞かれおいるのですが、その技術的な根拠は「スワップやペヌゞングが劇的に枛るため性胜が倧幅に向䞊する」からです。それはコンピュヌタに搭茉されおいるメむンメモリが数癟 KB 〜 数 MB しかなく、スワップやペヌゞングがどうしおも避けられない時代の話です。もちろん最初から技術的に間違った内容ずしお出版されたわけではありたせん。出版されおから 30 幎近く経っお叀くなっおしたっただけです。

「UNIX ずいう考え方」を薊めおいる人は倚いようですが、これを正しく読むには前提知識が必芁です。䟋えば若い人は 20 幎以䞊も前になくなった DEC ずいう䌚瀟のこずなんか知らないので、そこから始める必芁がありたす。それくらい垞識だろずいう人もいるかも知れたせんが、わからない人には党くわかからない話です。この本を読むずきの鉄則は「技術曞ずしお読たないこず」です。この本に曞かれた技術的内容はそのたた捉えるのではなく倉圢・拡匵しお考える必芁がありたす。曞かれた内容にそのたた埓うのではなく、時代背景を知り、文章の意図を汲み取り、今の時代に察応させお読み替えるこずができない人は「UNIX ずいう考え方」で UNIX 哲孊を孊ぶこずはオススメできたせん。

ずたあいろいろ批刀的なこずを曞きたしたが、名著や良曞ず呌ぶ事に異論があるわけではありたせん。ただ読むのに泚意が必芁ずいうこずです。この蚘事は「UNIX ずいう考え方」を読んで勘違いしないようにするための「ガンカヌズの UNIX哲孊」の解説蚘事・・・の前線です。本圓はもう少し UNIX 哲孊の内容に螏み蟌みたかったのですが、文章量の郜合で埌線に回したす。たずは謎のベヌルに包たれおいる著者のガンカヌズは䞀䜓䜕者なのか䜕を考えおいたのかに迫りたいず思いたす。

なお「UNIX ずいう考え方」がオススメできないなら他に䜕があるんだよず聞きたい人のために䞀䟋を玹介しおおきたす。UNIX 哲孊に興味がある人には、私は以䞋の本の方をオススメしたす。

  • The Art of UNIX Programming「UNIX」に興味がある人向け
    • 「䌜藍ずバザヌル」で有名な゚リック・レむモンドによるもう䞀぀の UNIX 哲孊本
    • 2003 幎出版なので「UNIX ずいう考え方」よりも珟代的である
    • UNIX および Linux の技術的な話はこちらの方が圧倒的に詳しくお実践より
    • Unix の長所だけではなく短所も語っおおり公平である
    • 匕甚先を明蚘しお、それが正しいかどうかを考察しおおり内容に玍埗できる
    • 英語版なら無料で読める
  • 人月の神話「考え方」に興味がある人向け
    • 初版は「UNIX ずいう考え方」の 1994 幎よりも曎に叀い 1975 幎
    • UNIX よりも叀いメむンフレヌム甚 OS の開発の話
    • ここたで叀くお異なる技術だず逆にそのたた埓うずいう発想もないず思う
    • 結局゜フトりェア開発の基本的な考え方は昔も今も倉わっおないずいうこずがわかる

この蚘事は「名著蚂正シリヌズ」第二匟です。第䞀匟は「名著「入門UNIXシェルプログラミング」の超詳现なレビュヌをしおみた」です。第䞉匟があるかどうかは未定です。

「UNIX ずいう考え方」を読む䞊での前提知識

この本はガンカヌズの個人の考えず人生芳が反映されたものである

技術曞に限らず個人が曞いた曞籍は個人の考えや人生芳が反映されるのが圓たり前ですが、この本はそうずわかりにくい蚘述になっおいたす。「UNIX ずいう考え方」は完党に怜蚌された正しい蚘述だけが曞かれた教科曞ではありたせん教科曞であっおも間違ったこずだらけの本も倚々あるで私は無条件で信甚するこずはありたせんが。私は最初、前提知識を持たない状態でこの本を読んだ時に、これは UNIX 哲孊の教科曞的なものなのだろうかず勘違いしおしたいたした。その理由の䞀぀は文章が断定調で曞かれおいるからです。倚くの人から認められた提唱者の堎合や理論を蚌明した䞊でのこずであれば断定調でも構わないず思うのですが、ガンカヌズの堎合はそうではありたせん。しかしガンカヌズが䞀䜓䜕者なのこの本からはわかりにくいため、断定調だから䞖の䞭で広く認められた提唱者なのだろうず勘違いされやすい問題がありたす。

他にも勘違いを匕き起こしそうなものずしおは wikipedia の䞍正確な蚘述がありたす。2022 幎 7 月 14 日時点での「ガンカヌズ: UNIXの哲孊」の説明には以䞋のように曞かれおいたす。

1994幎、マむク・ガンカヌズX Window System開発チヌムの䞀員は、UNIXで埗た経隓ず、同僚プログラマヌやUNIXに䟝存する他分野の人々ずの議論を掻かし、以䞋の9぀の至䞊呜什に集玄される「UNIX哲孊」を創出した。

「至䞊呜什」の意味は「絶察に服埓しなければならない呜什」です。wikipedia の文章を参考にしおいけないずいうのは、よく蚀われおいる話ですが日本語の wikipedia は特にひどいです。この文章は「en:Unix philosopy (00:34, 16 May 2008 UTC) を翻蚳」らしいのですが、元の文章は「paramount precepts」であり、せめお「最重芁の教蚓」ずするべきで、埌述の「The 10 lesser tenets」に察応させお「䞻芁な教蚓」がベストなのではないかず思いたす。教蚓 (precepts) が呜什に倉わっおおりほずんど誀蚳であるず蚀えたす泚意 翻蚳者を非難する意図はありたせん。「至䞊呜什」を鵜呑みにしおしたうずガンカヌズの個人の考えを至䞊呜什のように勘違いしおしたうのは仕方ない話でしょう。

ガンカヌズは今は無きコンピュヌタ䌚瀟 DEC のプログラマヌ

"ガンカヌズの" UNIX 哲孊を玹介した「UNIX ずいう考え方」はなぜか日本で有名なものになっおいるようですが、ガンカヌズは UNIX を開発した AT&T の人間ではありたせん。DEC ずいう今は存圚しおいない昔の有名なコンピュヌタ䌚瀟のプログラマヌ兌コンサルタントです。それを匂わすようなこずは曞いおあるのですが明確には曞かれおいないため、気が぀いおない人が結構いるような気がしたす。wikipedia には「X Window System 開発チヌムの䞀員」ず曞いおあるのですが、それよりも曞くべき事は「DEC の プログラマヌ」だず思うのですが、このように曞いおあるのは少々䞍思議でなりたせん。

UNIX は DEC のコンピュヌタミニコンの PDP-7 で動く OS ずしお䜜られたした。その点で UNIX の誕生ず DEC に繋がりはあるのですが、UNIX の創始者であるケン・トンプ゜ンが PDP-7 を遞んだ理由は、瀟内で芋぀けた廃棄寞前になっおいた叀いコンピュヌタが PDP-7 だったずいう皋床のものです。䞀方、DEC は UNIX が開発される以前から TOPS-10 や RSX-11 ずいった自瀟の独自 OS を開発しおおり、DEC が独自の UNIIX を開発するのは AT&T で UNIX が開発された 1969 幎から 10 幎埌の 1980 幎です。これは Research Unix ずしお最埌に広く公開された Version 7 Unix の開発よりも埌のこずです。

私が調べた限りガンカヌズは DEC のプログラマヌの䞀人に過ぎずそれなりの地䜍にあったのだろうずは思いたすが情報は殆ど芋぀かりたせん、UNIX 創始者たちず特に぀ながりがあったわけでもなさそうです。぀たり「UNIX ずいう考え方」にかかれおいる「"ガンカヌズの" UNIX 哲孊」ずいうのは、倖郚の人間が埌から打ち立おた哲孊だずいうこずです。

起源の UNIX 哲孊 (1973) ずガンカヌズの UNIX 哲孊 (1994)

UNIX 哲孊の起源ずなる考え方は 1973 幎に AT&T ベル研究所で誕生したした。これはガンカヌズが自身の UNIX 哲孊を打ち立おる 20 幎前も前のこずです。個人的には 1973 幎の時点から「UNIX 哲孊 (Unix philosophy)」ずいう"蚀葉"が䜿われたかどうかは疑問の䜙地があるず思っおいたすが、すくなくずも 1989 幎に行われた AT&T のダグラス・マキルロむぞのむンタビュヌで「UNIX 哲孊」ずいう蚀葉が䜿われおおり、UNIX 哲孊ず蚀われる"考え方"別の蚀い方をするず UNIX はツヌルのコレクションずいう考え方は 1973 幎にパむプの誕生ず共に生たれたず明らかになっおいたす参考 Pipe: How the System Call That Ties Unix Together Came About。

マキルロむは UNIX 開発の初期の頃から参加しおおり、プログラムずプログラムを接続する方法、すなわちパむプの実装をトンプ゜ンに匷く提案しおいた人物です。マキルロむがプログラム同士を繋げる方法が必芁だず考えたのは 1964 幎、Unix の誕生よりも前のこずでその時のメモが残っおいたすただしパむプず同様の仕組みは 1964 幎の DTSS のコミュニケヌションファむルずいう前䟋がありたす。マキルロむは 1970 幎から 1972 幎にかけおトンプ゜ンに䜕床もパむプの案を提案したす。そしおある日、パむプに合わせたシェルの構文を考えだした時にトンプ゜ンが実装するず決断したすずいうかトンプ゜ンが根負けした感じです。この話に぀いおは Interview with M.D. McIlroy Murray Hill, 18 August 1989 に詳现が曞かれおいたす。ちなみにパむプを | で衚すのはトンプ゜ンの発案です。マキルロむは > を提案しおいたした。

ガンカヌズの UNIX 哲孊ずいうのは、マキルロむの UNIX 哲孊が誕生しおから 20 幎埌に打ち立おたれたもので、それたでのさたざたな人の考え方をたずめたものに過ぎたせん。しかし「UNIX ずいう考え方」にはその事が曞かれおいたせん。序文にはガンカヌズが UNIX の考え方に぀いお解説しおいる曞籍は無いものかず最初に考えたのは 1991 幎ずありたす。であれば 1989 幎のマキルロむぞのむンタビュヌを芋぀けおいおもおかしくありたせんが、知っおか知らずかマキルロむの名前すら出おきたせん。そのため UNIX 哲孊に぀いお「UNIX ずいう考え方」しか読んでいないような人は、ガンカヌズの UNIX 哲孊が唯䞀の公匏な UNIX 哲孊で、ガンカヌズが正統な UNIX 哲孊の提唱者であるず勘違いしおしたう可胜性がありたす。ガンカヌズの UNIX 哲孊は、おそらく UNIX に関わっおいる知人や同僚から意芋を集めお䜜った草の根的なものです。絶察に守らなければいけない戒埋的な芏則でもなく、そういう颚に考えおいた人がいたした皋床のものです。

1973 幎のパむプの誕生によっおプログラムずプログラムを぀なげるこずが可胜になりたした。ここから「UNIX はツヌルコマンドのコレクションである」ずいう考え方が生たれたす。これが UNIX 哲孊です。その埌に出版された本、1976 幎の「Software Tools」日本語版は 1981 幎出版の「゜フトりェア䜜法」ずいうタむトルからも゜フトりェアツヌルずいう考え方が生たれおいるこずがわかりたす。この本の著者は AT&T のブラむアン・カヌニハンず P. J. プロヌガヌです。この本ではパむプで぀なぎ合わせお動かすこずができるツヌルコマンドをどのように䜜るべきかずいうこずが説明されおいたす。アルゎリズムを考えお自分でツヌルを䜜っおいくずいう圢の説明ですが、叀い所があるのず擬䌌蚀語が䜿われおるので少々癖が匷いです。カヌニハンは「プログラミング蚀語 C」の著者ずしおも有名です。

たた「UNIX 哲孊」そのものではありたせんが「哲孊」たたは「UNIX プログラミング哲孊」ずいう甚語であれば AT&T のブラむアン・カヌニハンずロブ・パむクが 1984 幎に出版した「The UNIX Programming Environment」日本語版は「UNIX プログラミング環境」の䞭で䜿甚しおいたす。この本の「はじめに」で著者は「UNIXを効果的にしおいるのは、プログラミングぞのアプロヌチの仕方、぀たりコンピュヌタ利甚の哲孊である。この哲孊を䞀蚀で曞き぀けるこずはできない。しかしその栞心にあるのは、システムの力ずいうのは、個々のプログラムよりも、それらの぀ながり方にあるずいう考えである。UNIXの倚くのプログラムは、それぞれ独立に極めお现かな仕事をする。しかし、他のプログラムず結合するず、汎甚的で圹に立぀ツヌルずなるのである。」ず UNIX のプログラムコマンドはツヌルであり、それらを組み合わせるこずの重芁性を説明しおいたす。

UNIX 哲孊ずしお有名なものにはも䞀぀「レむモンドの UNIX 哲孊」がありたす。レむモンドの UNIX 哲孊は 2003 幎に出版された「The Art of UNIX Programming」の䞭で詳现に解説されおいたす。レむモンドのや぀は「UNIX 思想」ではないのかず考える人ぞ説明するずそれは蚳が異なっおるだけで原著ではちゃんず「UNIX Philosophy」ずなっおいたす。UNIX 哲孊に埓ったプログラムを曞くのであればこちらを参考にした方が良いです。そもそも「UNIX ずいう考え方」は技術的な解説を省いおいるので、UNIX 哲孊に埓ったプログラムの曞き方はわかりたせん。

このように UNIX 哲孊ずいうのは誰か䞀人が考え出したものではなく、ガンカヌズの UNIX 哲孊が最初でも公匏でもないずいうこずがわかるず思いたす。

マキルロむの UNIX 哲孊 (1978)

AT&T で UNIX 哲孊ずいう考え方が生たれたのは 1973 幎ですが、これが初めお文曞化されたのは 1978 幎に発衚された論文 Unix Time-Sharing System: Foreword です。これを「マキルロむの UNIX 哲孊」ず呌ぶこずにしたす。以䞋の文章は「The Art of UNIX Programming」の日本語版に曞かれた「マキルロむの UNIX 哲孊」の匕甚です

(i) 個々のプログラムは1぀のこずをしっかりやるようにせよ。新しい仕事をするなら、新しい機胜を远加しお叀いプログラムを耇雑にするのではなく、たったく新しいプログラムを䜜れ。

(ii) すべおのプログラムの出力は、他の未知のプログラムの入力になるのだずいうこずを予想せよ。䜙分な情報で出力をごちゃごちゃにしおはならない。瞊方向の䞊びを厳密に揃えたり䞋蚘補足参照、バむナリ入力圢匏を䜿ったりするこずを避けよ。察話的な入力にこだわるな。

(iii) オペレヌティングシステムであっおも、゜フトりェアは早くできれば数週間以内に詊せるように蚭蚈、構築せよ。たずい郚分は捚おお䜜り盎すこずを躊躇するな。

(iv) 技胜の䜎い者に手䌝っおもらうくらいなら、プログラミングの仕事を明確にするためにツヌルを䜿え。ツヌルを䜜るために遠回りしなければならない堎合でも、䜿ったあずで䞀郚のツヌルを捚おるこずになるこずがわかっおいる堎合でも、ツヌルを䜿え。

補足 原曞では「Avoid stringently columnar」ず曞かれおおり、おそらくスペヌスで䜍眮調敎するのは避けようずいう意味だず思われたす。芋た目のための䜍眮調敎は䜙分な情報であり、コマンドによっおはスペヌスの数の違いで異なる動䜜を行いたす。参考 Why should you avoid "stringently columnar" input formats?。ちなみに ls -x の説明にも columnar ずいう甚語が䜿われおおりカラム衚瀺぀たりスペヌスによる䜍眮調敎に関係する機胜です。

䞊蚘の「マキルロむの UNIX 哲孊」のを芁玄したのが先皋の 1989 幎のむンタビュヌの内容です。

McIlroy: Yes, the philosophy that everybody started putting forth, “This is the Unix philosophy. Write programs that do one thing and do it well. Write programs to work together. Write programs that handle text streams, because that is a universal interface.”

翻蚳 マキルロむ: はい、皆が打ち出し始めた哲孊「これが UNIX 哲孊だ。䞀぀のこずをうたくやるプログラムを曞け。連携しお動䜜するプログラムを曞け。テキストストリヌムを扱うプログラムを曞け、なぜならそれは普遍的なむンタヌフェヌスだ」

「プログラムを曞け」ず蚀っおいるこずからもわかるようにプログラムを曞くこずが出来るプログラマのための哲孊です。「ガンカヌズの UNIX 哲孊」に比べお「マキルロむの UNIX 哲孊」はそれほどの倚くのこずを蚀っおいないずいうこずに泚意しおください。ガンカヌズの UNIX 哲孊ずいうのは埌から誰かの考えで勝手に远加されたものなのです。マキルロむの UNIX 哲孊では C 蚀語を䜿えずもシェルスクリプトを䜿えずも蚀っおいたせん。ここでいうプログラムずは CLI コマンドのこずを指しおいるず思いたすが、よく読むず CLI コマンドにしろずもパむプを䜿えずも蚀っおいないずいうこずは重芁な事実かもしれたせん。぀たりサヌビスデヌモンを䜜っお HTTP プロトコルでやり取りするような堎合でも「連携しお動䜜するプログラム」ず蚀えるはずです。

DEC ずいうコンピュヌタ䌚瀟に぀いお

DEC は コンピュヌタ䌚瀟の名前です。20 幎以䞊も前になくなっおしたったので今では銎染みの薄い䌚瀟ずなっおおり知らない人も倚いでしょう。実の所、私も DEC の事はよく知りたせん。最盛期は IBM に次いで䞖界 2 䜍のコンピュヌタ䌚瀟でハッカヌ気質の䌚瀟だったようです。「UNIX ずいう考え方」は DEC のガンカヌズが芋た UNIX の䞖界が曞かれおいるので、本に曞いおあるこずを理解するには DEC のこずをある皋床知る必芁がありたす。次項に歎史幎衚をたずめおいるので、それを参考にしながら読むずわかりやすいず思いたす。

DEC は UNIX が誕生するよりも前からミニコンず呌ばれるコンピュヌタを発売しおいたした。ミニコンはその名の通りミニコンピュヌタの略ですがミニず蚀っおもシステム党䜓で本棚ぐらいの倧きさがありたした。ミニコンがミニなコンピュヌタであるならば、ミニではないコンピュヌタもありたす。それが 1960 幎代から続くメむンフレヌムです。メむンフレヌムは倧型で高䟡なコンピュヌタであったため、気軜に買えるようなものではありたせんでした。そういった䞭で誕生したミニコンは安䟡、ず蚀っおも今のコンピュヌタに比べれば遥かに高いのですが、パ゜コンが普及するたでは䌚瀟のオフィスや倧孊の研究宀などで広く䜿われおいたした。

DEC は PDP シリヌズずいうミニコンを販売しおいたした。トンプ゜ンは叀くお廃棄寞前になっおいた PDP-7 を芋぀け、PDP-7 甚の OS ずしお UNIX を開発したす。メむンメモリはわずか 8 KB しかありたせんでした。最初の UNIX はアセンブラで曞かれマルチプログラミングにも察応しおおらず移怍性もありたせんでした。UNIX は埌継機皮の PDP-11/20 などで動䜜したしたが、圓時はただ様々なアヌキテクチャのコンピュヌタが䜜られおいた時代で、PDP も異なる機皮で必ずしも互換性があったわけではなく、UNIX が察応しおいる機皮はそんなに倚くはありたせんでした。ちなみに PDP-11/20 のメむンメモリは 24 KB、十分な移怍性を実珟した 1979 幎の Version 7 Unix 時点の PDP-11/70 で 64 KB だったようです参考。ちなみに 16 ビットアヌキテクチャです。

その埌 DEC は PDP-11 の埌継ずなる VAX アヌキテクチャのコンピュヌタを開発したす。VAX は 32 ビットアヌキテクチャのコンピュヌタでした。その翌幎 DEC は VAX/VMS埌に VMS ず略され OpenVMS ず名前が倉曎されるずいう独自の OS を開発したす。OpenVMS は珟圚も開発が続いおいるクロヌズド゜ヌスの OS です。OpenVMS の Open はオヌプン゜ヌスずいう意味ではなくオヌプンシステムずいう意味です。VMS のこずはよく知らないのですが、圓時の時点で DECwindows ずいう GUI を備えたタむムシェアリングシステムで十分に完成床が高い OS であったようです。぀たり DEC は 1977 幎の時点で独自のコンピュヌタず独自の OS を手に入れおいたこずになりたす。そのため DEC の創始者のケン・オルセンは PC ず UNIX に興味を持っおいなかったようです。この刀断の誀りが埌に DEC の業瞟を倧きく悪化させるこずに繋がりたす。

それでも DEC 内に Unix のサポヌトに興味を持っおいた人はいたようで、DEC に Unix を持ち蟌むきっかけずしお Unix Engineering Group (UEG) が立ち䞊がりたす。ガンカヌズは 立ち䞊がり時からなのかは䞍明ですがUEG チヌムのメンバヌです。1980 幎に UEG チヌムは Version 7 Unix の修正版である V7M をリリヌスしたす。これが DEC が開発した最初の Unix です。ただし公匏サポヌトではなかったようです参考。その埌 1982 幎に DEC で公匏にサポヌトされた 4.2 BSD ベヌスの Ultrix が開発されたす。Ultrix は PDP-11 察応の Ultrix-11 ず VAX 察応の Ultrix-32 がありたしたが、PDP-11 の終息ずずもに単に Ultrix ず呌ばれるようになりたす。他の UNIX ベンダヌず同様に Ultrix もクロヌズド゜ヌスでした。Ultrix は 4.2BSD ベヌスで開発が始たりたしたが、バヌゞョンアップずずもに 4.3BSD の䞀郚の機胜や System V の機胜を取り蟌んでいきたした。

1990 幎頃に PC の䞖界に 32 ビットシステムが登堎し DEC のシェアは倧きく奪われ始めたす。そこで 1992 幎には VAX アヌキテクチャの埌継ずしお 64 ビットシステムである Alpha アヌキテクチャを投入したす。Ultrix は Alpha には移怍されず、代わりに OSF/11995 幎に Digital UNIX ぞず名前倉曎に眮き換えられたす。OSF/1 はその頃に発生した UNIX 戊争で AT&T 連合に察しお、DEC が所属しおいた Open Software Foundation (OSF) が開発した Unix です。知的財産暩を䟵害しないよう System V 系でも BSD 系でもない UnixMach マむクロカヌネルずしお開発されたした。

䞀方で UNIX 戊争の裏でフリヌ゜フトりェア文化が誕生したす。UNIX 戊争で疲匊した UNIX 業界を暪目に 1996 幎に誕生した Linux は PC の性胜向䞊ずずもに勢力を䌞ばし続けたす。䞀方 PC を軜んじおいた DEC は業瞟を回埩するこずは出来ず 1998 幎に コンパックに買収されおしたいたす。そしお Digital UNIX は 1999 幎に Tru64 UNIX に名前が倉わりたす。 その埌 Alpha 関連の知的財産暩は 2001 幎に Intel に売华され、2002 幎にはヒュヌレット・パッカヌドがコンパックを吞収合䜵したす。Tru64 UNIX は 2012 幎にサポヌトが終了したした。

UNIX ず UNIX 哲孊に関する幎衚

|      | UNIX         | BSD        | DEC               | MS、Apple      | UNIX 哲孊  |
| :--: | ------------ | ---------- | ----------------- | -------------- | :--------: |
| 1964 | Multics 開始 |            | PDP-7 (18bit)     |                |            |
|  :   |              |            |                   |                |            |
| 1969 | UNIX 誕生    |            | PDP-11/20 (16bit) |                |            |
| 1970 |              |            |                   |                |            |
| 1971 | Version 1    |            |                   |                |            |
| 1972 | Version 2    |            |                   |                |            |
| 1973 | Version 3/4  |            |                   |                | パむプ実装 |
| 1974 | Version 5    |            |                   |                |            |
| 1975 | Version 6    |            | PDP-11/70 (20bit) |                |            |
| 1976 |              |            | VAX (32bit)       |                |            |
| 1977 |              | 1BSD       | VMS (Closed OS)   | Apple II       |            |
| 1978 |              |            |                   |                | マキルロむ |
| 1979 | Version 7    | 2BSD, 3BSD |                   |                |            |
| 1980 | Xenix        | 4BSD       | V7M (V7)          |                |            |
| 1981 |              | 4.1BSD     |                   | IBM PC, DOS1.0 |            |
| 1982 | System III   |            | Ultrix-11 (2BSD)  |                |            |
| 1983 | SVR1, SunOS  | 4.2BSD     |                   | DOS2.0         |            |
| 1984 | SVR2,HP-UX   |            | Ultrix-32(4.2BSD) | DOS3.0         |    :`:     |
| 1985 |              |            |                   |                |    : :     |
| 1986 | AIX          | 4.3BSD     |                   |                |    : :     |
| 1987 | SVR3         |            |                   |                |    : :     |
| 1988 | SVR4         |            | (OSF èš­ç«‹)        |                |    : :     |
| 1989 |              |            |                   |                |    : :     |
| 1990 |              |            |                   | Win3.0, Mac    |    : :     |
| 1991 |              |            |                   |                |    : :     |
| 1992 | Solaris      | 386BSD     | Alpha 64bit,OSF/1 | Win3.1         |    : :     |
| 1993 | Novellに売华 | FreeBSD    |                   | DOS6.0, NT3.1  |    : :     |
| 1994 | Linux 1.0    |            |                   |                | ガンカヌズ |
| 1995 |              |            | Digital UNIX      | Win95          |    : :     |
| 1996 | Linux 2.0    |            |                   |                |    : :     |
| 1997 |              |            |                   |                |    : :     |
| 1998 |              |            | Compaqが買収      |                |    :.:     |
| 1999 |              |            | Tru64 UNIX        |                |            |
| 2000 | Debian  2.2  |            |                   | Win2000        |            |
| 2001 |              |            |                   | WinXP, OSX10   | 日本語蚳版 |
| 2002 |              |            |                   |                |            |
| 2003 |              |            |                   |                | レむモンド |

補足

  • 1975: トンプ゜ンはベル研を䞀時䌑職し、母校のカリフォルニア倧孊バヌクレヌ校に Version 6 Unix をむンストヌルする䜜業を手䌝う。これは埌に BSD Unix ずしお配垃される。
  • 1984-1998: ガンカヌズが DEC でプリンシパル・゜フトりェア・゚ンゞニアを務めた時期
    • ガンカヌズは DEC の Unix Engineering Group (UEG) に所属
    • い぀から DEC に勀めおいたのかは䞍明
      • P63 より「小さな䌚瀟で Version 7 Unix を䜿っおいた」ので 1979 幎よりも埌
      • V7M の開発には関わっおなさそう
      • おそらく 1980-1984 の間に DEC に入瀟したず思われる
    • ガンカヌズが「UNIX の考え方」に぀いおの本はないだろうかず考えたのは 1991 幎
  • 1988: POSIX.1 暙準化POSIX.2 は 1992 幎
  • 1989: FIPS 151-1 米囜政府がコンピュヌタシステムの調達芁件に POSIX 準拠を指定
    • FIPS は 2000 幎に廃止
  • 1992: VAX/VMS は POSIX に準拠し OpenVMS ず名前を倉える
  • 1992: OSF/1 を採甚。Ultrix は出荷停止。
    • OSF/1 は正確には DEC OSF/1 AXP。4.3 BSD-Reno ベヌスでMach カヌネルを䜿甚
    • OSF/1 AXP → Digital UNIX → Tru64 UNIX ず名前を倉える
  • 1994:「UNIX ずいう考え方」の原曞の出版
    • Linux 初のディストリは 1996 幎なのでただ普及しおいない
    • Windows 95 誕生前でむンタヌネットも普及しおいない
  • 2012: Tru64 UNIX サポヌト終了

「UNIXずいう考え方」ずいう本に぀いお

日本未発売❗❓ 改蚂第版「Linux ず UNIX 哲孊」(2003)

「UNIX ずいう考え方」が出版されたのは、原曞が 1994 幎、日本語版が 2001 幎ですが、実は原曞では 2003 幎に改蚂第版 Linux and the Unix Philosophy が出版されおいたす。なんずいうこずでしょう。我々、日本人は原曞よりも 10 幎も叀い本で UNIX 哲孊を孊んでいるずいうこずです。どちらにしろ叀いこずには倉わりたせんが、2003 幎にもなるず Linux やむンタヌネットやオヌプン゜ヌス文化が普及し Unix 界隈や Unix 界隈以倖も倧きく倉わっおいたす。この 10 幎の倉化は小さくはありたせん。

目次を芋る限り内容のほずんどはそのたたで新たな章が远加されただけのように芋えたすが、Amazon の玹介文には、党おの章が Linux をカバヌするように曎新されおおりオヌプン゜ヌスに関する内容が増えおいるず曞かれおいたす。远加された章もそのタむトルから掚枬しおもそれたでの「UNIX ずいう考え方」の内容に圱響を䞎えそうなものが増えおおり『「ガンカヌズの UNIX 哲孊」を語るのであれば』読んでおかなければいけないのではないかず思いたす。

しかし残念ながら私は原曞改蚂版は持っおいたせん。英語だずいうのもありたすが、日本語版が 1600 円に察しお原曞は 6000 円もするからです。日本語版が安すぎるだけのようですが、差分が远加されただけの改蚂版でその倀段はちょっず高いです......Amazon で「詊し読み」できるのでこっそりその郚分だけ読んでいたす。そもそも私は「ガンカヌズの UNIX 哲孊」が UNIX 哲孊の党おではないず思っおいたすのでガンカヌズが䜕を蚀おうが実はたいしお気にしおいたせん。それどころか UNIX 哲孊すら゜フトりェア工孊の䞀぀ずしか芋おいたせんGUI アプリやゲヌムなど明らかに適甚困難な分野がありたす。そんなわけで改蚂版を買う気があたりないのです。この蚘事で色々曞いおいたすが改蚂版には圓おはたらない内容が含たれおいるかもしれたせん。

远加内容Lnux、Java、オブゞェクト指向、りェブサヌビス等

さお目次ず詊し読みの内容から、改蚂版で䜕が远加されおいるのかを簡単に芋おいくずしたしょう。

  • 10: Through the Glass Darkly: Linux vs. Windows
    • 10.1: It's the content, stupid!

この章ではタむトルどおり Linux ず Windows の比范で、どうやらテキストベヌスずグラフィカルベヌスのナヌザヌむンタヌフェヌスを比范しおいるようです。たた Windows のどこが UNIX 哲孊に埓っおおり、どこが埓っおないかを述べおいるようです。Windows であっおも UNIX 哲孊に埓っおいる郚分があるずいうこずなのでしょうね。

  • 11: A Cathedral? How Bizarre!

この章ではオヌプン゜ヌスの抂念が UNIX 哲孊ずどのように適合しおいるかが述べられおいるようです。タむトルの Cathedral は倧聖堂たたは䌜藍ずいう意味です。オヌプン゜ヌスの開発モデルに関しおの゚ッセむであるレむモンドの「䌜藍ずバザヌル」無料で読めたすに関係する話ではないかず思われたす。

  • 12: Brave New (Unix) World
    • Java
    • Object-Oriented Programming
    • Extreme Programming
    • Refactoring
    • The Apache Jakarta Project
    • The Internet
    • Wireless Communications
    • Web Services
    • Artificial Intelligence (AI)

この章では Unix 哲孊が新しい技術分野でどのように採甚されおいるのかを述べおいるようです。新しい技術分野で挙げられおいる項目は UNIX っぜくない物もありなかなか興味深いです。やはり叀さを感じたすが 2003 幎圓時はオブゞェクト指向ず蚀えば Java の時代でしたからこんなずころでしょう。「オブゞェクト指向プログラミング」「゚クストリヌム・プログラミング」「リファクタリング」゜フトりェア工孊ずしお重芁な抂念が普及し、「むンタヌネット」「りェブサヌビス」は誰もが䜿うものずなりたした。それらに受け継がれる UNIX 哲孊の考え方は、もはや Unix 開発者のものだけではないず蚀えるでしょう。

翻蚳によっお歪められた郚分

ガンカヌズの「定理」は誀蚳❗❗正しくは「教矩」だ❗

「UNIX ずいう考え方」ではガンカヌズが考えた䞻匵を「定理」ず呌んでいたす。「【定理】効率より移怍性」みたいなや぀です。「定理」ずは数孊的な定矩では、公理や定矩から導いお正しいずいう事が蚌明されおいるものを意味する蚀葉です。぀たり、効率より移怍性は必ず重芖しなければいけないもの・・・

もちろんそんな事はありたせん。状況によっおは移怍性よりも効率の方が重芁な堎合だっおありたす。これが定理だずいうのは少し考えれば明らかにおかしいずわかるはずですね。䞀䜓どういう理屈で定理であるこずが蚌明されたずいうのでしょうかそもそも蚌明できるようなものなのでしょうか

「定理」は英語で蚀うず「theorem」なのですが、さお原曞では「定理」の郚分はなんず曞かれおいるでしょうか実は「tenet」ず曞かれおいるのです。tenet ずは「教矩」「信条」「原則」を意味する蚀葉です。ガンカヌズが蚀っおいるこずは「そうであっお欲しいず思っおるでも実際に違うこずがあるよ」ずいう皋床のニュアンスだったのです。えぇ、そういうこずです。「定理」は誀蚳です。

原曞で定理ず曞いおいないものを定理ず呌ぶのは誀解を招くだけでしかありたせん。この蚘事では「定理」でないこずを明確にするために意図的に「教矩」ずいう甚語に眮き換えるこずにしたす。みなさんも真䌌しおどうぞ。

ガンカヌズの UNIX 哲孊にはメむンずなる教矩の他に「さらなる 10 の UNIX の考え方」ずいうものがありたす。これは原曞では「Ten Lesser Tenets」ず曞かれおいたす。Lesser ずは劣っおいるずいう意味です。LGPL の Lは昔は library の略でしたが GPL よりも劣っおいるずいう意味を蟌めお Lesser の略に改められたした。

Lesser Tenets の日本語蚳は劣等教矩になるず思いたすが、ちょっずバランスが悪いので「準教矩」ずいう甚語を䜿うこずにしたす。小教矩だず小定理みたいで劣等ずいうニュアンス「誰もが賛成しおいるわけではない」が消え倱せおしたうので、準レギュラヌみたいな意味を蟌めお準教矩です。

ガンカヌズはUNIX哲孊の教祖に仕立お䞊げられた

「UNIX ずいう考え方」の P9 には「ガンカヌズの 9 の"教矩"」項目が曞かれおおり、その䞋には

ここたでの項目は、UNIX の開発者たちにずっお、その教矩にも匹敵するものだ。他の UNIX に関する曞籍にも取り䞊げられおいるだろうし、UNIX の基瀎をなす考え方ずしお広く受け入れられおいる。これらの定理を身に付けおいれば、「UNIX 人」ずしお認められるだろう。

ず曞かれおいたす。ガンカヌズが考えたくせに「教矩にも匹敵するものだ」ずは、教祖にでもなった぀もりなのだろうかず思い぀぀、教矩が「教矩に匹敵するものだ」では文章がおかしくなっおしたい、倚分私が教矩ず蚳したからおかしくなったのだろうず思い、Amazon の詊し読みの範囲に含たれおいたので読んでみたした。

The preceding list contains tenets about which UNIX developers are dogmatic. You will find similar lists in other books on UNIX, as they are the points that everyone considers to be foundational concepts of UNIX. If you adopt them, you will be considered to be a "UNIX person."

翻蚳 ここたでの項目には「UNIX 開発者は独断的である」ずいうこずに぀いおの教矩が含たれおいたす。あなたは䌌たような項目を他の UNIX に関する他の本で芋぀けるでしょう、それは誰もが UNIX の基本的なコンセプトだず考えおいるポむントだからです。もしあなたがこれらを採甚すれば、あなたは「UNIX 人」であるずみなされるでしょう。

私の拙い翻蚳ですがニュアンスが異なっおいるようです。本来の文章は UNIX 開発者がこのように独断的に自説を譲らないず考えおいるのだずいう内容を教矩ずしお瀺し、他の本にも䌌たような蚘述があるだろうず蚀っおいるだけです。広く受け入れられおいるなんお断定しおいたせん。ただ UNIX 開発者ずはこういう人たちなんだずいう説明をしおいるだけです。ガンカヌズは哲孊を打ち立おたかったのではなく、ただ UNIX 開発者たちの考えを説明したかっただけなのです。

誰もが読むであろう最初にあるこの短い文章が、日本でガンカヌズが教祖に仕立お䞊げるこずになった可胜性がありたす。原曞を確認した堎所はごく僅かですが、もし他の郚分もこのようにニュアンスが埮劙に異なっおいるのであれば、この本の評䟡を倧きく倉えなければならなくなるかもしれたせん。私の蚳解釈が間違っおいる可胜性もありたすし、英語ず日本語がスラスラできる人の意芋が欲しいですね。

さお、ガンカヌズの考えた教矩、他の本に䌌たような蚘述がありたしたかなければそれは基本的なコンセプトではないずいうこずですね。

ガンカヌズの UNIX 哲孊 (1994) の 9 の教矩ず 10 の準教矩

ガンカヌズが「UNIX ずいう考え方」で提唱しおいる教矩です。基本的には埓った方が良いず考えられるものの、絶察に埓うべきずいうものではありたせん。

9 の教矩

  • 【教矩】スモヌル・むズ・ビュヌティフル
  • 【教矩】䞀぀のプログラムには䞀぀のこずをうたくやらせる
  • 【教矩】できるだけ早く詊䜜を䜜成する
  • 【教矩】効率より移怍性
  • 【教矩】数倀デヌタはASCIIフラットファむルに保存する
  • 【教矩】゜フトりェアの梃子を有効に掻甚する
  • 【教矩】シェルスクリプトを䜿うこずで梃子の効果ず移怍性を高める
  • 【教矩】過床の察話的むンタヌフェヌスを避ける
  • 【教矩】すべおのプログラムをフィルタにする

補足 【教矩】は改蚂版で「デヌタをフラットテキストファむルに保存する」(Store data in flat text files) に倉わっおいたす。理由はよくわかりたせんが、数倀だけ、ASCII だけじゃなくなっおいたすね。数倀だけじゃないのは日付デヌタなどを考慮しおでしょうかASCII じゃないのは Unicode が登堎したからでしょうか具䜓的すぎるものは時代の倉化で叀くなりやすいずいうこずの蚌拠だず思っおいたす。

10 の準教矩

  • 【準教矩】奜みに応じお自分で環境を調敎できるようにする
  • 【準教矩】オペレヌティングシステムのカヌネルを小さく軜くする
  • 【準教矩】小文字を䜿い、短く
  • 【準教矩】森林を守る
  • 【準教矩】沈黙は金
  • 【準教矩】䞊行しお考える
  • 【準教矩】郚分の総和は党䜓よりも倧きい
  • 【準教矩】90 パヌセントの解を目指す
  • 【準教矩】劣るほうが優れおいる
  • 【準教矩10】階局的に考える

マキルロむの UNIX 哲孊ず比范しおみれば、具䜓的すぎで蛇足的なものがたくさんあるずいうのがわかるず思いたす。

著者のマむク・ガンカヌズに぀いお

䜜者玹介ペヌゞ未翻蚳の党文翻蚳

「UNIX のずいう考え方」には著者の情報が殆ど曞かれおいたせん。そのため著者が䞀䜓どういう人物なのかを本に曞いおある内容から掚枬しなければならない状況です。なぜ著者の情報がないのか実は日本語版には著者の玹介ペヌゞが抜け萜ちおいおいるからです。そのペヌゞずいうのは裏衚玙です。原曞では裏衚玙に著者の情報が曞かれおおり、日本語版を䜜る際にどうやらカバヌデザむンの倉曎で消えおしたったようです。

そこで裏衚玙の内容を翻蚳したいず思いたす。䞀ペヌゞたるたるの翻蚳はやりすぎずも思わなくはないですが、元々誰でも芋れる裏衚玙は販促のための玹介ペヌゞでしょうし Amazon でもスキャンされお公開されおいたす。他のペヌゞはすでに翻蚳枈みですし、著者のバックグラりンドを明らかにするこずはこの本の内容を正しく理解するために重芁な意味があり、匕甚するのに十分な合理的な理由があるず考えおいたす。なお裏衚玙のスキャンは Amazon の The UNIX Philosophy から「詊し読み」するこずができたす。

Taken from the back cover of The UNIX Philosophy first edition. It is not included in the Japanese version.

THE UNIX PHILOSOPHY by Mike Gancarz

Unlike so many books that focus on how to use UNIX, The UNIX Philosophy concentrates on answering the question, "Why use UNIX in the first place?" The UNIX Philosophy is a book to be read before tackling the highly technical texts on UNIX internals and programming. In an informative, nontechnical fashion, this book explores general principles for developing UNIX-based software. It describes complex software design principles and addresses the importance of small programs, code and data portability, early prototyping, and open user interfaces.

UNIX の䜿い方に焊点を圓おた倚くの本ずは異なり、The UNIX Philosophy は「なぜ、そもそも UNIX を䜿うのか」ずいう問いに答えるこずに集䞭しおいたす。The UNIX Philosophy は、UNIX 内郚やプログラミングに関する高床で技術的なテキストに取り組む 前に 読むべき本です。教育的か぀非技術的な流儀で、本曞は UNIX ベヌスの゜フトりェアを開発するための䞀般的な原則を探求しおいたす。耇雑な゜フトりェアの蚭蚈原則を説明し、小さなプログラム、コヌドずデヌタの移怍性、早めのプロトタむピング、オヌプンなナヌザむンタフェヌスの重芁性を取り䞊げおいたす。

Readers will discover:

  • why paper is a death certificate for data;
  • how to apply UNIX's small solutions to seemingly insurmountable problems;
  • how to find the fastest route to the ideal design.

読者は芋出すでしょう

  • 玙がデヌタの死亡蚌明曞である理由
  • 䞀芋、乗り越えられないように芋える問題に UNIX の小さな解決法を適甚する方法
  • 理想的な蚭蚈ぞの最短ルヌトを芋぀ける方法

Written for both the computer layperson and the experienced programmer, THE UNIX Philosophy explores the tenets of the UNIX operating system in detail, dealing with powerful concepts in a comprehensible, straightfoward manner. This unique book brings toghter the history and applications of UNIX and thoroughly explains the rationale of the UNIX approach.

コンピュヌタの玠人ず経隓豊富なプログラマヌの䞡方に向けお曞かれた、THE UNIX Philosophy は UNIX オペレヌティングシステムの教矩を詳しく解説し、匷力なコンセプトをわかりやすく扱い、ストレヌトに衚珟しおいたす。このナニヌクな本は UNIX の歎史ず応甚をたずめ、UNIX の考え方の根拠を培底的に説き明かしたす。

Mike Gancarz has taught numerous industry seminars on the UNIX philosophy. As an engineer and a consultant, Mr. Gancarz has promoted UNIX for more than fourteen years.

マむク・ガンカヌズは、UNIX の哲孊に関する数倚くの業界セミナヌで教えおきたした。゚ンゞニアずしお、コンサルタントずしお、ガンカヌズ氏は 14 幎以䞊蚳泚 1980 幎頃からにわたっお UNIX の普及に努めおきたした。

An expert in UNIX appliation design, Mr Gancarz was a member of the team that gave birth to the X Window System. He wrote the UWM Window Manager, a user interface that set the industry standard for customizable window manager design. His other work includes developing the conceptual design of COMET (a high-performance text-retrieval system written in the UNIX shell language) and leading a project to port the OSF commands and utilities to a 64-bit architecture.

UNIX アプリケヌションデザむンの゚キスパヌトであるガンカヌズ氏は、X Window System を誕生させたチヌムのメンバヌでした。圌はカスタマむズ可胜なりィンドり・マネヌゞャヌ蚭蚈の業界暙準ずなった UWM りィンドり・マネヌゞャヌを開発したした。圌のその他の仕事には COMETUNIX シェル蚀語で曞かれた高性胜テキスト怜玢システムのコンセプトデザむンの開発や OSF コマンドずナヌティリティを 64 ビットアヌキテクチャに移怍するプロゞェクトの䞻導が含たれおいたす。

Mike Gancarz is a principal software engineer at Digital Equipment Corporation in Nashua, New Hompshire.

マむク・ガンカヌズはニュヌハンプシャヌ州ナシュアにある Digital Equipment Corporation のプリンシパル・゜フトりェア・゚ンゞニアです。

ガンカヌズは DEC 瀟の゜フトりェア゚ンゞニア兌コンサルタント

裏衚玙からいろいろなこずがわかりたした。たず DEC の゜フトりェア゚ンゞニアであるこずがはっきりしたした。これらの倚くは本の䞭には曞かれおいなかったこずです。14 幎間 UNIX の普及に努めおいたずいう所から、出版幎から逆算しお 1980 幎。1980 幎は Version 7 Unix がリリヌスされた次の幎で DEC が開発した初の UNIX である V7M がリリヌスされた幎です。実は改蚂版の About the Authorこれも「詊し読み」できたすは内容が曎新されおおり Unix Engineering Group (UEG) で働いおいたこずが曞かれおいたす。UNIX の誕生は 1969 幎なので 10 幎遅れで UNIX の普及に努め始めた事になりたすが、たあ倖郚の人間ですからこんな所でしょう。

ガンカヌズが DEC でプリンシパル・゜フトりェア・゚ンゞニアだった時期は Linkedin の情報からです。Linkedin にログむンするだけで芋るこずができたすが公開情報ず蚀えるかは埮劙なので、あたり曞くのは良くないず思いたすが、少なくずも 1984 幎から 1998 幎぀たり DEC がコンパックに買収されるたでの間は DEC に圚籍しおいたこずがわかりたす。いろんな情報を統合するず UEG の成果である V7M が公開され、DEC が UNIX を扱っおいるこずを知っお 1980 幎頃に DEC の UEG に加わったずいうのが可胜性が高いかなず思っおいたす。

ガンカヌズは X Window System 開発メンバヌの䞀人

ガンカヌズは X Window System 開発メンバヌの䞀人でした。ガンカヌズが X Window System のどの郚分に関わっおいるのかはわかりたせんでしたが、少なくずも X Window System の初期の歎史的なりむンドりマネヌゞャ Ultrix Window Manager (uwm) の開発者です。「UNIX ずいう考え方」の P106 にもこのこずは曞かれおいたす。

X Window System の誕生は 1984 幎、圓時は MIT のプロゞェクトでした。MIT の倖郚に初めおリリヌスされたのが 1986 幎 2 月の X10R3 からで uwm が暙準のりむンドりマネヌゞャでした。1989 幎 12月の X11R4 で twm に眮き換わるたでは、X Window System の唯䞀のりむンドりマネヌゞャだったようです。その埌は倧きなメンテナンスは行われおいないようです。uwm は C 蚀語で曞かれおおり、BSD ラむセンスに䌌たラむセンスです。

ちなみに P107 に「同僚のゞョン=ホヌル」が登堎したすが、おそらく Linux Professional Institute の理事長の Jon "maddog" Hall のこずだず思われたす。圌は改蚂版の序文 (foreword) を曞いおおり、その䞭で 1990 幎頃に「UNIX プロフェッショナルの小さなグルヌプ」で誰かが発した「なぜ UNIX が奜きなのですか」ずいう質問に察するさたざたな意芋、それをメモに取った人ガンカヌズのこずでしょうが名前は曞かれおいたせんがいお、それが「UNIX ずいう考え方」になったず曞いおいたす。

ガンカヌズはシェルスクリプト補の怜玢システムの開発者

ガンカヌズの UNIX 哲孊を読んでいるず、少しシェルスクリプトにこだわり過ぎに感じる箇所がいく぀かありたす。䟋えば P9 の「シェルスクリプトは、゜フトりェアのテコを掻かすず同時に移怍性も高めるずいう二぀の効果がある。可胜なずきは垞に、C蚀語ではなくシェルスクリプトを䜿うべきだ。」ずいうような極端な文章です。

別にシェルスクリプトじゃなくおも他の蚀語でいいのではず思う所ですが、実は「UNIX ずいう考え方」には C 蚀語ずシェルスクリプトぐらいしか高氎準蚀語が出おきたせん。圓時 Unix で珟実的に䜿えた蚀語はそれぐらいしかなかったからです候補になりえるずしたら Perl4 ぐらい。消去法でシェルスクリプトが残ったず解釈するのが自然だず思いたすが、ガンカヌズは COMET ず呌ばれる「UNIX シェルBourne シェル補の高性胜のテキスト怜玢システム」を開発しおいたので、もしかしたら奜みの蚀語だったずいう理由があったのかもしれたせん。

初版では COMET はコンセプトデザむンの開発ずなっおいたすが、改蚂版ではそのシステムは開発したようで DEC 瀟の内郚文曞ず゜ヌスコヌドの殆どにむンデックスを付け即座に怜玢できるようにしたこずで、同瀟のテクニカルサポヌトに革呜を起こしたずのこずです。実は COMET の開発に぀ながるであろう話は「UNIX ずいう考え方」の P83 に曞かれおおり同じようにむンデックスを䜜成するこずで Bourne シェルで䜜ったずは思えないような怜玢ツヌルを䜜ったそうです。「圓時の職堎の話」ずしお曞かれおいるので以前の職堎での経隓を元に COMET のコンセプトデザむンを考えおいたのではないでしょうか

しかしそれにしおもシェルスクリプトで C 蚀語のプログラムを呌び出しおいるくせに「C プログラムがシェルスクリプトよりも速いずいうのは思い蟌み」ずはよく曞けたものです。シェルスクリプトから C のプログラムを呌び出しおいるから速いのであれば、それは C プログラムが速いずいう蚌拠でしかありたせん。もし䜿える C プログラムがなかったら、どうせそのプログラムは C 蚀語で曞くのでしょうこの話の本質はシェルスクリプトを䜿うこずが重芁なのではなく、誰かが䜜ったコマンドやラむブラリを再利甚しお開発の手間を枛らしたしょうずいう P71 の「独自技術症候矀を避けよ」の話のバリ゚ヌションでしかありたせん。゜ヌトルヌチンも曞けないようなプログラマでも、他人の曞いた゜ヌトルヌチンを利甚すれば勝者になれるず曞いおいたすが、シェルスクリプトに限らず誰かが䜜ったラむブラリを再利甚するのが普通です。ガンカヌズは sort コマンドを䜿わない = 自分で゜ヌトルヌチンを曞くずいう極端な話をしおいたす。

COMET はオヌプン゜ヌスではなく、瀟倖に公開されたこずもなさそうで、おそらく DEC がコンパックに買収された時ぐらいにそのシステムは砎棄されたのではないかず思いたす。どれだけ移怍性を重芖しおいたずしおも、゜フトりェアの䟡倀を倱った時に゜フトりェアの寿呜は来たす。P73 の「コヌドを他瀟がテコずしお䜿うのを認める」を守らなかったのも䞖の䞭から消えおしたった原因の䞀぀でしょう。オヌプン゜ヌスでないために移怍されずに死んでしたったずいう残念な䟋です。オヌプン゜ヌスであったずしおも uwm のように䜿われなくなれば移怍されずに寿呜を迎えたす。であれば最初から䜜り盎す前提でサクッず䜜っおしたうのもありなわけです。「マキルロむの UNIX 哲孊」の「゜フトりェアは早く詊せるように構築せよ、たずい郚分は捚おお䜜り盎すこずを躊躇するな」ずいうこずです。移怍性を軜芖するのはよくありたせんが、逆に移怍性を重芖しすぎるのもよくありたせん。芁は「今、本圓に必芁なものは䜕か」です。UNIX は最初は移怍性がありたせんでした。移怍性が必芁になった時に埌から付け加えおも良いわけです。もし最初から移怍性を考慮しおいたら UNIX の開発は進たず Multics の二の舞になっおいたこずでしょう。

ガンカヌズは UNIX コマンドの 64bit Alpha CPU ぞの移怍を担圓

OSF コマンドずいうのが少し謎でしたが、改蚂版では UNIX コマンドに修正されおいるので、商暙が取られた UNIX の代わりに、これからの期埅を蟌めお OSF ずいう名前を䜿っただけだず思われたす。ずいうこずでガンカヌズは UNIX コマンドの 64bit Alpha CPU ぞの移怍も行っおいたした。

ガンカヌズの C 蚀語に察する評䟡は以䞋のようなものです。P51 より。

UNIX 環境においおの C 蚀語には、シェルスクリプトのような移怍性はない。たいおいの C 蚀語のプログラムは、ヘッダファむルの定矩や、マシンアヌキテクチャサむズ、その他の UNIX 実装の持぀移怍䞍胜なさたざたな特性に䟝存する。UNIX が 16 ビットアヌキテクチャから 32 ビットアヌキテクや、さらに 64 ビットアヌキテクチャに移怍されたずきには、ものすごい数の゜フトりェアが䜿えなくなった。C 蚀語の移怍性が乏しいからだ。C 蚀語の移怍性は、80 幎代のアセンブリ蚀語ず比べお、少しマシな皋床に過ぎない。

もちろんこのような評䟡はほずんど過去のものです。DEC が開発した Alpha は新しい 64 ビットのCPU なので最倧の効率を考えるずアセンブリ蚀語にも手を加えないずいけなかったず思われたす。それたでの CISC から RISC に倉わっおおり Alpha アヌキテクチャではアラむメントされおいない32 ビットたたは 64 ビット単䜍で䞊べられおいないメモリにアクセスする堎合に耇雑な操䜜が必芁参考で、コヌドが膚らみパフォヌマンスが䜎䞋するずいう問題がありたした。Autotools のようなものもありたせんでしたし、UNIX が C 蚀語で曞かれおいるず蚀っおも、圓時はようやく ANSI C (C89) が策定された時期なので、UNIX の゜ヌスコヌドは、ただ ANSI C 準拠ではなかったず思いたす。それに十分な C 蚀語甚ラむブラリもなかったこずでしょう。それらを考えるず Alpha CPU ぞの察応ずいうガンカヌズの䜜業は倧倉なものずなり C 蚀語の移怍性はそんなに高くないず考えるのも仕方のない話だず思いたす。

80 幎代のアセンブリ蚀語ずいうのは少し謎ですが、おそらく新しいアセンブリ蚀語ずいう意味で䜿っおいるのだず思いたす。初期のアセンブリ蚀語は完党に機械語ず䞀察䞀に結び぀いたニヌモニックを䜿っお曞くため、特定のアヌキテクチャに䟝存した移怍性が䜎いものでした。しかし埌期のアセンブラはマクロ機胜を備え IF や WHILE ずいったアヌキテクチャ非䟝存のマクロから機械語を生成するこずが出来たす。そのようなアセンブリ蚀語を High-level assembler ずいうようです。そのためマクロを駆䜿すれば、機皮䟝存の郚分をかなり枛らすこずが出来たすし、構造化プログラミングも可胜です。そういった高床に発展したアセンブリ蚀語ず、ただただ未発達の C 蚀語を比べれば、そりゃ C 蚀語の移怍性はそんなに高くないずいう結論にもなるずいうものです。

このように圓時の C 蚀語の移怍性が䜎いから消去法でシェルスクリプトを䜿うべきだず蚀っおいるだけなので、珟圚では別にシェルスクリプトでなくおも移怍性の問題に悩たされない蚀語はいくらでもありたす。むしろ UNIX ç³» OS の間で UNIX コマンドに完党な互換性がないため、今ではシェルスクリプトの方が移怍性は䜎いです。

ずころでガンカヌズが気にしおいる移怍性は UNIX 間の移怍ではなく異なるアヌキテクチャのハヌドりェアぞの移怍性のこずを蚀っおいるこずに気が぀いたでしょうかアヌキテクチャがほが統䞀されおしたっおいる珟圚の PC の䞖界に圓おはたらない話をしおいるのです。

ガンカヌズの立堎はコンピュヌタ䌚瀟の UNIX 開発者

さお、もうおわかりでしょう。ガンカヌズの立堎ずいうのは、UNIX を搭茉したコンピュヌタ䌚瀟、いわゆる UNIX ベンダヌの瀟員で、独自 UNIX の開発者だずいうこずです。ここでいう UNIX ずはカヌネルだけのこずではなく UNIX コマンドを含めおです。

ただ、根拠は薄いですがガンカヌズは UNIX コマンドの移怍などナヌザヌランド郚分の担圓で、カヌネルプログラマではなかったのではないかず思いたす。ずいうのは P77 に以䞋のように UNIX カヌネルプログラマにシェルスクリプトを良さを理解されないず嘆いおいるからです。

この問題に入る前に、泚意しおおくこずがある。UNIX カヌネルプログラマの䞭には、シェルスクリプトプログラマを軜芖する人が少なくない。シェルスクリプトを曞くのは、「マッチョではない」ずいうわけだ。「熟緎シェルプログラマ」を「お手軜 UNIX 䜿い」ずくさす向きもある。シェルスクリプトはあたり頭痛を起こさないので、嫉劬しおいるのではないかず私は想像しおいる。あるいは、カヌネルにはシェルスクリプトを䜿えないからだろうか。い぀の日か誰かが、シェルスクリプトも䜿えるような UNIX カヌネルを曞いおくれないだろうかそうすれば、゜フトり゚ア梃子の効果ずいうものが、このような人たちにもより良く理解されるだろうに。

さお、ここには矛盟がありたす。「ガンカヌズの UNIX 哲孊」ずは誰もが埓っおいるものだったはずです。ガンカヌズは「【教矩】シェルスクリプトを䜿うこずで梃子の効果ず移怍性を高める」で「可胜なずきは垞に C 蚀語ではなくシェルスクリプトを䜿うべきだ。」ず䞻匵しおいたした。しかし「UNIX カヌネルプログラマの䞭には、シェルスクリプトプログラマを軜芖する人が少なくない」のであれば、この教矩は誰もが埓っおいるようなものではないずいうこずになりたす。教矩ずは䞀䜓誰が蚀い出したこずなのでしょうか

話を戻したすが、それにしおもカヌネルでシェルスクリプトを䜿うずいう発想は理解できたせん。゜フトり゚ア梃子の効果ずいうなら別にシェルスクリプト以倖でも効果はありたす。C 蚀語から OS のシステムコヌルやラむブラリを呌び出すだけです。元々メむンフレヌム時代ではシェル盞圓の機胜はカヌネルの䞀郚でした。シェルをカヌネルから远い出したのは UNIX の優れたポむントなのです。そうするこずでシェルは普通のプログラムずなり、開発が容易になり、ナヌザヌは様々なシェルを䜿えるようになり、シェルスクリプトの゚ラヌでカヌネルが萜ちるようなこずもなく安定性もあがりたす。シェルをカヌネルに入れるずいうこずは「【準教矩】オペレヌティングシステムのカヌネルを小さく軜くする」にも反するわけで、シェルスクリプトも䜿える UNIX カヌネルなんお悪手です。そもそもそんなにシェルスクリプトが䜿える UNIX カヌネルが欲しいなら、誰かが曞いおくれないだろうかではなく自分で曞けず。

C でプログラムを曞くこずが劥圓なケヌスも倚々ある。しかし、そのようなケヌスは䞀般に考えられおいるほど倚くはない。䞭略シェルずいう代替もあるのだず気づいお欲しい。

UNIX は殆ど C でプログラムが曞かれおいるこずからも、UNIX の開発に限れば C で曞くのが劥圓でしょうそのようなケヌスがほずんどです。もっずも今は Rust でカヌネルを曞こうずいう動きRustをLinuxカヌネル開発の第2蚀語に採甚する詊みに向け新パッチが出おおり C 蚀語に固執するようなものではありたせん。他にいろいろな蚀語が䜿える可胜性がありたす。圓時の UNIX には C ずシェルしかなかったのでしょうが「C ずシェル以倖の代替もあるのだず気づいお欲しい」ですね。

ずいうこずで、ガンカヌズの UNIX カヌネルに察する考えはカヌネルプログラマっぜい発想ではないので、ガンカヌズは UNIX 開発者ではあるもののカヌネルの開発には関䞎しおおらず、UNIX コマンドの移怍などナヌザヌランド寄りの UNIX 開発者だったのだろうず掚枬しおいたす。

初版が出版された時点では Linux はただ登堎しおいたせん

これはちゃんず曞かれおいるので歪められたずいうわけではなく泚意したしょうずいう皋床の話ですが「UNIX ずいう考え方」に時々出おくる Linux の話は蚳者の脚泚です。目次のペヌゞに▲が原著者による脚泚、*が監蚳者による脚泚であるず曞かれおいたす。曞いおありたすが読み飛ばしちゃいたすよね  。

Linux の開発が初めお公になったのは 1991 幎です。圓時のガンカヌズが Linux の存圚を知っおいた可胜性はありたすが、初期のディストリビュヌションの䞀぀ Slackware のリリヌスは 1993 幎です。商甚利甚の遞択肢になったのは 1996 幎の Linux 2.0 ぐらいからなので、ガンカヌズだけでなく圓時の人が Linux が Unix の埌継ずしお䜿われるようになるずはただ思っおいなかったでしょう。

日本語版の「UNIX ずいう考え方」の出版は 2001 幎です。翻蚳者の芳尟桂さんは「今日からDebian GNU/Linux2.2」ずいう本を曞いおいるのもあっお、枠倖などにちらほら Linux に぀いおのコメントがあったりしたす。そのため Linux が誕生した以降の話が含たれおいるず勘違いしおしたうかもしれたせんが、本の物語の䞭の時代には Linux は登堎しおいたせん。登堎するのは改蚂版の「Linux ず UNIX 哲孊」からです。

ガンカヌズにずっおの UNIX の歎史認識

たず最初に䞀蚀、UNIX の歎史などを知りたい人は「The Art of UNIX Programming」や「Unix考叀孊 Truth of the Legend」を読んでください。ガンカヌズの UNIX の歎史認識は根拠がなく思い蟌みに近いです。

ガンカヌズの UNIX 発明者の扱い

UNIX は誰が開発したのかず聞かれたら UNIX の歎史を知っおいる人はケン・トンプ゜ンずデニス・リッチヌず答えるのではないでしょうか

実際そのずおりで、UNIX は 1969 幎に AT&T ベル研究所でトンプ゜ンの手によっお誕生したした。そしおトンプ゜ンは最初の 2 ぀か 3 ぀のバヌゞョンを䞀人で開発したす。その埌 C で曞き盎されるこずになりたすが、リッチヌは蚀語ず I/O システムを、トンプ゜ンは残りの党おを担圓しおいたす。

https://en.wikipedia.org/wiki/Ken_Thompson より

I did the first of two or three versions of UNIX all alone. And Dennis became an evangelist. Then there was a rewrite in a higher-level language that would come to be called C. He worked mostly on the language and on the I/O system, and I worked on all the rest of the operating system.

しかし、ガンカヌズは P5 でこのように曞いおいたす。

UNIX の発明者は、AT&T のケントンプ゜ンずされおいる。ある意味で、それは正しい。

原曞: Many people credit Ken Thompson of AT&T with inventing the UNIX operationg system and, in a sense, they're right.

なぜか「ある意味in a sense)で正しい」ぐらいの扱いしかしおいたせん。

トンプ゜ンは、もずもずアセンブリ蚀語で UNIX を曞いた。1972 幎に移怍性のある B 蚀語を甚いお曞き盎した。

ずありたすが、ここは間違いで UNIX が B 蚀語で曞き盎された事実はありたせん。B 蚀語は型が無く䞭間コヌドを実行するむンタプリタ方匏で遅かっためです。この話は「The Evolution of the Unix Time-sharing System」に詳しく曞かれおいたす。以䞋はその日本語蚳「UNIX 原兞」の「UNIX タむムシェアリング・システムの発展」の P24 からの匕甚です。

UNIX 自身をアセンブラではなく B で曞こうずいう考えは䞀時的に出されただけであった。他のナヌティリティに぀いおも同様で、結局アセンブラでさえもアセンブラで曞き換えられたのである。こうなったのは、䞻に B の解釈コヌドが遅いずいうこずに原因があった。たた些现ではあるが珟実問題ずしお重芁だったのは、PDP-11 がバむト・アドレス方匏のマシンであるのに察し、B がワヌド・オリ゚ンテッドな蚀語だったこずである。

B 蚀語は PDP-7 Unix で動䜜する蚀語ずしおトンプ゜ンが開発したものですが、なぜかこの事実が曞かれおいたせん。ちなみに PDP-7 Unix 甚のアセンブラもトンプ゜ンが開発しおいたす。この文章はすでに移怍性がある B 蚀語が存圚しおいおそれをトンプ゜ンが䜿っただけのようにも芋えおしたいたす。

その埌、1973 幎に AT&T ベル研究所のデニス=リッチヌが、B 蚀語に広汎な拡匵を斜した C 蚀語を䜜った。これが、珟圚䞖界䞭のプログラマによっお愛され、たた嫌われおもいる C 蚀語だ。

䞀方 C 蚀語に関しおはリッチヌが開発したずしっかり曞かれおいたす。ただし嫌われおもいるずかいう䜙蚈な䞀蚀がありたすが。よく芋れば Unix を C 蚀語で曞き盎した事も曞かれおいたせんね。たあ垞識過ぎお抜けおしたったのでしょう。Unix は 1973 幎 2 月の Version 3 Unix でパむプが実装され、1973 幎 10 月に開催された第 4 回 Symposium on Operating Systems Principles (SOSP) で AT&T 以倖に広く公開され、1973 幎 11 月の Version 4 Unix では C 蚀語で曞き盎されたものがリリヌスされたす。

ずもかくガンカヌズは UNIX 発明者の功瞟を過小評䟡したいのではないかず疑っおしたいたす。そのこずは次の文章からも読み取れたす。

UNIX の考え方党䜓の発展にケン=トンプ゜ンが果たした圹目はごく限られおいる。ファむルシステムの構造やパむプ、入力サブシステム移怍性などに蚭蚈にトンプ゜ンは倚倧な貢献をしたが、その他の倚くはトンプ゜ン以倖の倚くの人々に垰せられる。

トンプ゜ン以倖の人の貢献が倚くあったのは疑うこずのないずころですが、最初の 2 ぀か 3 ぀のバヌゞョンはトンプ゜ン䞀人で開発しおいたす。たたパむプの発明もこの時期に含たれおおり起源ずなる UNIX 哲孊はこの時に誕生しおいるわけで「UNIX の考え方党䜓の発展にケン=トンプ゜ンが果たした圹目はごく限られおいる」ずいうのは、さすがに蚀い過ぎなのではないでしょうかたるでガンカヌズは UNIX 哲孊がどこから生たれたのか知らないかのようです。

ガンカヌズにずっおの初期の UNIX はどこたでか

P7 には以䞋のように曞かれおおり「初期の UNIX」に貢献した人の名前から、ガンカヌズが考えおいる初期の UNIX の範囲がわかりたす。

初期の UNIX に貢献した人々はそれぞれの埗意分野で顕著な業瞟を残した。䞻だったものを列挙しよう。

この䞭にはカリフォルニア倧孊バヌクレヌ校のビル・ゞョむが「C 蚀語に䌌たコマンド蚀語」、csh のこずですね、の貢献者ずしお名前が曞かれおいたす。他にもバヌクレヌ校に所属しおいた人の名前が䜕人かいたす。このこずからガンカヌズの考える「初期の UNIX」は、BSD ず csh が誕生した 1978 幎が含たれるこずがわかりたす。csh は 2 BSD (1979) ず共にリリヌスされたした。1979 幎には Version 7 Unix や 3BSD もリリヌスされおるので Research Unix ずしお完成された UnixVersion 8 Unix 以降は非公開たですべおを「初期の UNIX」ずしお考えおいるようです。

どこたでを「初期の UNIX」ずしお扱うかに぀いおは人ぞれぞれだず思うので、そこに関しおは文句は蚀いたせん。UNIX がベル研究所の倖郚に広く公開されたのは Version 6 Unix からでガンカヌズは AT&T の倖郚の人間ですから、UNIX の初期の歎史に疎くおも仕方ありたせん。倖郚の䞀般プログラマにずっおは、この頃がようやく䞖間に認知されおきた時期なわけで䞍自然な考え方でもありたせん。今はむンタヌネットで圓時のこずを詳しく知っおいる人がたずめおいるから、こうしお私は調べお知るこずが出来るわけですが、圓時をリアルタむムに生きおきた人にずっおは詳しく知るこずは難しかったでしょう。

私が気に入らないのは、なぜいちいちガンカヌズが考えおいる「初期の UNIX」を掚枬しなければいけないのかずいう所です。ガンカヌズが䞀蚀「Version 7 Unix のこずである」ず曞いおいれば、掚枬する必芁はなかったし、叀文曞の解読をしおいるかのような蚘事を曞く必芁もなかったわけです。䜕を匕甚しおいるかずか、本来曞いお然るべきこずを曞いおいないのが「UNIX ずいう考え方」です。䞻匵の根拠がわからず、根拠を曞いおある箇所は叀くなった技術に基づいおいる、それがこの本を「技術曞ずしお読たないこず」の理由の䞀぀です。

さお話を戻すず「初期の UNIX に貢献した人々」の䞭には Perl のラリヌ・りォヌルたで含たれおいたす。ラリヌ・りォヌルの貢献で有名なのは Perl (1987) ですが、䟋ずしお曞かれおいる゜フトりェアの䞭で最も叀いものは rn ニュヌスリヌダヌです。rn ニュヌスリヌダヌは 1984 幎に開発されるのですが、その頃には DEC は自瀟の VAX 甚の Unix である Ultrix (4.2BSD ベヌス)をリリヌスしおいるわけで、そこたで初期の UNIX に含めるには違和感がありたす。たあこれはおたけで加えちゃったずいうこずで芋なかったこずにしたしょう。

埓っおガンカヌズによっおの「初期の UNIX」ずは 1979 幎の Version 7 Unix たでを含んでいるこずずなりたす。DEC は 1980 幎に初の公匏 UNIX である V7M (Version 7 Unix ベヌス)をリリヌスしたす。ガンカヌズにずっおの UNIX 哲孊は 1973 幎に生たれたものではなく、Version 6 以降に倧孊や䞖間に公開され、みんなでわちゃわちゃず開発しおいた時に生たれたもののように考えおいるのでしょう。

ビゞネス界は UNIX の䟡倀を認めなかったわけではない

ガンカヌズはビゞネス界は UNIX に䟡倀を認めなかったず䞻匵しおいたす。P2 には以䞋のように曞かれおいたすが、本圓にそうなのでしょうか

UNIX は、倧孊の研究宀の閉じ蟌められ略
残念なこずに、ビゞネス界は UNIX に䟡倀を認めなかった。UNIX はハッカヌのおもちゃでしかなく、単なる奜奇心の察象でしかなかった。研究宀から生たれ、倧孊で育おられ、買った人間が自分でサポヌトしおいたオペレヌティングシステムに、リスクを犯しおたで投資する䌁業はなかった。その結果ずしお、UNIX は、その将来を嘱望されながらも 15 幎もの長きに枡っお䞍遇の時代を過ごすこずになる。
しかし、1980 幎代初頭に驚くべきこずが起こった。どのオペレヌティングシステムよりも柔軟で移怍性に富み、性胜の高いオペレヌティングシステムがあるずいう噂が広たりだした。さらには、それは栌安の費甚で広く入手でき、ほずんどのマシンで動䜜するずいう。

UNIX がハッカヌのおもちゃだずいうのはある意味正しいでしょう。元々 UNIX はプログラマヌがプログラミングするための道具ずしお䜜られたからです。しかしビゞネス界が認めなかったかどうかは別の話です。

ここでヒントずなるのは、1980 幎代初頭にほずんどのマシンで UNIX が動䜜するず曞いおある所です。この「ほずんどマシン」に PC は含たれおいたせん。PC で UNIX が動くようになるのは 1990 幎代になっおからです。 Xenix は PC にも移怍されおいたようですコメント 参照。もう少し調べおからこのあたりの文章を修正する予定です。具䜓的には 1992 幎の 386BSD で初めお PC-UNIX ずしお PC で UNIX が動くようになり、翌幎 FreeBSD が誕生、1994 幎に Linux 1.0 の誕生です。1980 幎代の間、PC で UNIX は動きたせんでした。その䞀方で MS-DOS は 1981 幎に 1.0 がリリヌスされ 1980 幎代の間 MS-DOS が PC の OS ずしお倩䞋を取りたす。そしお 1990 幎代のはじめには Windows 3.x の時代ずなっおいたす。

UNIX は、埐々にコンピュヌタ業界ぞず浞透しおいったが、䌚瀟の官僚組織はこの革呜的な考え方を拒吊しおいた。PC ずメむンフレヌムの秩序だった䞖界が奜きだったのだ。苊劎しお芚えたいく぀かの簡単なコマンドだけで日々の仕事ができ、それで「職の安定」が埗られおいるず圌らは信じおいた。そこでは UNIX は悪魔ずなった。UNIX は本質的な悪ではなかったが、珟状を脅かしたゆえに敵芖されたのだ。

この説明はメむンフレヌムには圓おはたるかもしれたせん。しかしものすごく高䟡なメむンフレヌムを䜿っおいるような所が、なんのサポヌトもないような OS を䜿うでしょうか メむンフレヌムの䞖界では OS はハヌドりェアの付属品でした。䜿っおるプログラミング蚀語は FORTRAN や COBOL です。1980 幎代に入るたでは UNIX は DEC のコンピュヌタの特定の機皮でしか動䜜せず、移怍性はありたせん。䟡栌が倧きく違うから圓然ですがメむンフレヌムほどの性胜はありたせん。1980 幎代に入るず商甚 UNIX の䞖界ずなり、それも倉わっおいきたすが、今床は「栌安の費甚で広く入手でき」なくなっおしたいたす。PC で UNIX が動かない時代に UNIX が栌安の費甚で入手できお嬉しいのは DEC のようなコンピュヌタ開発䌚瀟ぐらいでしょう。自瀟で OS を開発するコストが枛らせたすからね。PC を買うような倚くの人にずっおは UNIX が栌安で手に入ったずしおも、それを動かすコンピュヌタが高いから手が出せないのです。

぀たりビゞネス界が認めなかったのは UNIX ではなくそれを動かすコンピュヌタです。高機胜なデスクトップワヌクステヌションずしお UNIX は䜿われるようになっおいきたすが、「UNIX ずいう考え方」が出版された 1994 幎の 1 幎前に、AT&T は Novell に UNIX の暩利を売华しおいたす。これは PC の性胜が向䞊しワヌクステヌション垂堎が瞮小し始めたからです。この時点で芋切りを぀けた AT&T の察応は実に早かったず蚀えたす。ガンカヌズは䞖の䞭が PC の䞖界ぞず移行しおいる䞭で「䌚瀟の官僚組織は PC の䞖界が奜きだったのだ」ず嘆いおいたこずになりたす。今だからこそ蚀える事ですが、未来を芋通せおいなかったのはどちらなのでしょうかそしお 1998 幎に DEC はコンパックに買収されたす。日経新聞の蚘事では DEC の倱敗の本質は独自技術症候矀NIH 症候矀であったず芋解を述べおいたす。

「PCやMacの将来性を芋抜けなかった誀算」より

これらのケンひいおはDECの倱敗の本質は、いわゆる"Not Invented Here syndromeNIH症候矀"ず呌ばれる技術志向の匷い䌚瀟に特有のものである。

぀たり、自瀟Hereの技術を過信するあたり、他瀟Not Hereで生み出されたInvented技術やアむデアや補品を、評䟡したがらない傟向のこずである。

DEC の倱敗はどちらかず蚀えばハヌドりェアの話です。たた DEC の考えずガンカヌズの考えが必ずしも䞀臎しおいたずは限りたせん。実際 DEC の創業者であるケン・オルセンは UNIX を嫌っおいたようなので、どちらかず蚀えばガンカヌズの考えは DEC の䞭では少数掟だった可胜性が高いず思いたす。ガンカヌズは独自技術症候矀を避けるこずの重芁を痛いほど述べおいるわけですが、UNIX の䟡倀を認めなかったずいう批刀は、UNIX の䟡倀を認めなかったケン・オルセンぞの批刀にも等しく、独自技術症候矀に陥り PC の䟡倀を認めなかったずいう圢で DEC のビゞネスそのものず蚀えるのです。

知っおの通り PC や Mac は今も健圚です。しかも Mac は優れた GUI をメむンで䜿う UNIX ずなり、Windows は WSL で Linux を取り蟌みたした。Linux は UNIX の正統埌継ずしお倚くの䟿利な機胜を远加しお UNIX を眮き換えたした。すべおが UNIX 哲孊を内包しながら UNIX 哲孊を超えるものを実珟したした。今の䞖の䞭はビゞネス界が UNIX の䟡倀を認めた結果です。これは UNIX および UNIX 哲孊はすべおの OS の䞭の䞀郚ずしお生き続けるずいうこずを意味しおいたす。消え去るこずはありたせんが、他の OS に取っお代わるこずも無いでしょう。

ガンカヌズはどこたでの UNIX の歎史の話をしおるのか

「UNIX ずいう考え方」が出版されたのが 1994 幎なので、そこたでの UNIX の話をしおいるずいうのは圓然なのですが、この時代の UNIX をガンカヌズはどう捉えおいたのでしょうか P3 の最埌にはこのように曞かれおいたす。

私は、UNIX が䞖界暙準のオペレヌティングシステムになるのは時間の問題だず䜕幎も前から蚀い続けおきた。それは、少なくずも間違っおはいなかった。しかし皮肉なこずに、その暙準オペレヌティングシステムは「UNIX」ず呌ばれるこずはなさそうだ。UNIXずいう名前の持぀䟡倀に気づいた䌁業が、匁護士を䜿っお倧急ぎで、UNIX を商暙ずしお登録しおしたったのだ。今埌は、「オヌプンシステム」ずいう名のもずに、むンタヌフェヌスが蚭蚈され、暙準が提案され、倚くのアプリケヌションが開発されるこずになるだろう。

DEC に UNIX を導入させた Unix Engineering Group (UEG) のメンバヌなので、䜕幎も前から蚀い続けおいたのは䞍思議ではありたせん。さお UNIX ず呌ばれるこずはなさそうだずいうのはどういうこずでしょうか「オヌプンシステム」ずいう蚀葉から、これは UNIX 戊争の最埌の時期の話でしょう。しかし「UNIX ずいう名前の持぀䟡倀に気づいた䌁業」ずはどこなのでしょうか少し自信がないのですが AT&T が商暙登録をしたのは 1985 幎です。その事を指しおいるのでしょうかただし米囜は商暙に䜿甚䞻矩を採甚しおいるので䜿甚しおいる地域内では登録する必芁はありたせん。米囜党土でビゞネスをする堎合は登録が必芁なようですが開発した AT&T が取埗するのであれば正圓な暩利でしょう。ガンカヌズの曞き方は、自分たちが自由に䜿えたはずの UNIX を誰かが奪い去ったず蚀っおるように芋えおしたいたす。1993 幎 6 月、AT&T は UNIX の暩利のすべおを Novell に売华、Novell は 10 月に X/Open に UNIX の商暙暩を移管したす参考。ちなみに原曞の始めのペヌゞには、Novell が UNIX の商暙暩を持っおいるこずが曞かれおいたす。X/Open でないのは執筆が間に合わなかった

これがこの本の良くない所です。事実をがかしお曞くから、䜕が蚀いたいのかさっぱりです。さらに私情を挟んでいるようにしか芋えないので、それを隠すためにがかしたのかなず思えおきたす。もしかしたら出版された時点では垞識レベルで共通認識があったのかもしれたせんが、今読む人にずっおは前提知識がなければよくわかりたせん。BSD Unix 寄りの人たちにずっおは「元は AT&T の Unix が出発点だったずしおも、BSD Unix は自分たち倧孊・コミュニティの手で開発しおきた Unix なんだ」ずいう気持ちがあっただろうずいうのは想像できるのですが「UNIX ずいう考え方」にはそれが曞いおおらず、おそらく BSD ずいう文字すらありたせん。

UNIX 戊争は前半は、AT&T の System V 系ず BSD 系の戊いずしお 1980 幎代の䞭頃に始たりたす。埌半は AT&T や Sun が属する UNIX InternationalUI連合ず DEC が属する OSF 連合の二぀の戊いずしお 1988 幎頃に始たりたす。1980 幎代埌半にはミニコンはワヌクステヌションぞず眮き換わっおいたしたが、ワヌクステヌションの䞻力マヌケットであったデスクトップ垂堎は Windows ず PC によっお奪われおいきたす。それに察抗すべく AT&T は Novell ず手を組みたすが、最終的には UNIX の開発から撀退し Novell に UNIX の暩利を売り UNIX 戊争は幕を閉じるこずになりたす。それが 1993 幎頃です。それを受け UI 陣営ず OSF 陣営は共同で「Common Open Software EnvironmentCOSE」ずいう新しい暙準を䜜る団䜓を蚭立し、翌 1994 幎 3 月には UI が OSF に吞収されたす。「UNIX ずいう考え方」が出版されたのはこの埌の 1994 幎 12 月です。OSF ずしおは UNIX の商暙は䜿えないず思っおいたのだず思いたす。だから今埌は「オヌプンシステム」の名のもずに暙準が提案されるだろうず蚀っおいるのでしょう。

その埌は 1996 幎に OSF ず X/Open が合䜵し The Open Group ずいう今も存圚する暙準化団䜓が蚭立されたす。X/Open が合䜵したこずで、The Open Group は UNIX の商暙を手に入れ、Single UNIX Specification ずいう UNIX の暙準芏栌を策定したした。巡り巡っおオヌプンシステムではなく UNIX ずいう名のもずに暙準芏栌が䜜られるこずになったわけです。商甚 UNIX のベンダヌは有料の認蚌を埗お UNIX を名乗るようになりたす。UNIX 戊争は元々の開発元である AT&T が UNIX の開発から撀退するこずで 商甚 UNIX の䞖界ずしお統䞀されたした。しかしオヌプン゜ヌスの波ず共に登堎した Linux や PC-UNIX ずなった BSD の子孫たちは PC の性胜向䞊ず共に商甚 UNIX を远い詰めおいたす。

なお Single UNIX Specification はその埌 2001 幎に もう䞀぀の暙準芏栌である POSIX ず内容が統合され、珟圚は The Open Group、ISO/IEC、IEEE の  ぀の暙準化団䜓からなる AustinGroup によっお POSIX は維持され続けおいたす。

2003 幎から始たる SCO による UNIX に関する䞍圓な暩利䞻匵は、さすがに省略しお良いですよね

UNIX 間の移怍性問題が倧きくなる前の時代の話をしおいる

「UNIX ずいう考え方」を読んで気になる点の䞀぀が「シェルスクリプトは移怍性が高い」ずいう前提になっおいる所です。これはガンカヌズが各 UNIX 間での互換性が問題になる前の話をしおいるからだず考えられたす。UNIX 間での互換性の話は POSIX 暙準芏栌の話に繋がりたすが「UNIX ずいう考え方」には POSIX ずいう名前すらでおきたせん。

よく読めばわかるず思いたすが「UNIX ずいう考え方」で重芁だず䞻匵しおいる「移怍性」ずは「異なるハヌドりェアに察する UNIX の移怍性」の話です。DEC はさたざたなアヌキテクチャのコンピュヌタを開発しおいたずいうこずを思い出しおください。そういった自瀟のさたざたなコンピュヌタに UNIX を移怍するずいう話をしおいるのです。圓時はただ PC のように基本のアヌキテクチャが統䞀されおいる時代ではありたせん。新しいコンピュヌタを開発するのであれば、そのコンピュヌタに OS を移怍しなければいけたせん。栌安で䜿えお異なるコンピュヌタぞの移怍性が高い UNIX は、コンピュヌタ䌚瀟にずっお OS の開発コストを枛らすこずができる郜合の良い OS だったず蚀えたす。

UNIX が AT&T のベル研究所で䜜られおいる間は UNIX 間での移怍性の問題はありたせんでした。UNIX の開発元が䞀぀しか無いわけだから圓然です。UNIX の移怍性が問題になるのは UNIX がベル研究所の倖に出お、BSD ç³» UNIX が誕生し、UNIX に目を぀けた DEC を含むいく぀もの UNIX ベンダヌがそれぞれ独自に UNIX に機胜を远加しおからです。なぜ UNIX ベンダヌはそれぞれ独自の機胜を远加したのかそれは自瀟の UNIX マシンを売るためです。UNIX マシンを売るためには他瀟よりも優れた機胜を持っおいなければなりたせん。ラむバルコンピュヌタ䌚瀟のこずより自瀟のコンピュヌタが売れるこずの方が重芁です。そのためには機胜を充実させお差別化し、悪く蚀えばみんなベンダヌロックむンを目指しおいたわけです。UNIX ベンダヌによる UNIX の開発競争が UNIX 間の移怍性を䜎䞋させたした。

䞀方で、゜フトりェア開発䌚瀟にずっおこの状況は嬉しくありたせん。各コンピュヌタ䌚瀟が "UNIX" を搭茉したコンピュヌタを販売しおいながらそれらに互換性がないので、それぞれの UNIX 毎に移怍䜜業が必芁になっおしたうからです。UNIX のラむセンス販売ビゞネスを始めた AT&T もこの問題は認識しおおり UNIX 間での互換性を実珟するための暙準芏栌を䜜りたした。それが 1985 幎の System V Interface Definition (SVID) です。その名の通り AT&T の System V の動䜜を説明した暙準芏栌です。䞀方でベンダヌ䞭立の暙準芏栌ずしお䜜られたのが 1988 幎の POSIX (POSIX.1-1988) です。シェルずコマンドに関しおは少し遅れお 1992 幎の POSIX.2-1992 で暙準化されたす。元々は BSD ず SystemV ず Xenix を統䞀する芏栌ずしお䜜られたした。埌の Linux も POSIX 準拠を目指しお開発が進められたす。AT&T は埌に UNIX 開発から手を匕くので 1995 幎の SVID Version 4 が最埌のバヌゞョンです。䞀方で POSIX は今も暙準芏栌が維持されおいたす。

しかし POSIX があるからず蚀っお UNIX ベンダヌはそれに察応する矩理はありたせん。䜕かのメリットがなければ採甚しないでしょう。そのメリットになったず思われるのが 1989 幎の FIPS です。米囜政府はコンピュヌタヌの賌入芁件に POSIX に準拠しおいるこずを芁求したした。各 UNIX ベンダヌがい぀頃から POSIX に準拠し、他瀟の UNIX ず互換性を持たせようず考えたかは䞍明ですが、1980 幎代の倧郚分の期間は UNIX 間の移怍性に関しお気にしおなかったず思われたす。UNIX ベンダヌが気にしおいたのは自瀟のコンピュヌタヌの移怍性なのです。

ここたで来れば、なぜガンカヌズがシェルスクリプトが移怍性が高いず蚀っおいた理由がわかるこずでしょう。そうです、シェルスクリプトは実装に现かい違いがある他瀟の UNIX ずの移怍性は䜎いのですが、自瀟の異なるコンピュヌタぞ自瀟の UNIX を移怍するずいう話に限れば高いのです。これを読み間違えるずおかしな結論になっおしたうので十分気を぀けおください。

道を倖れた UNIX コマンドずは BSD 版ず System V 版

序文ペヌゞ iiiより

たた、これずは別に UNIX に䌌たシステム ─ UNIX ずうたっおはいるが、その方法論からは離れおいっおいるものたち ─ の発展の床合いを本曞でチェックできるようにしたい。UNIX システム・ラボラトリヌズのブラむアン・カヌニハンは、最近登堎しおいた「お粗末な UNIX (crappy UNIXes)」に懞念を衚明しおいる。私もたた、UNIX を名乗るオペレヌティングシステムであるからには、UNIX の基本的な考え方を芋倱っおほしくないず願っおいる䞀人だ。

「crappy UNIXes」を怜玢しおもほずんど䜕も芋぀からなかったので、こう蚀っおるのはブラむアン・カヌニハンではなくお、ガンカヌズなのだず思いたす。

さおこの「お粗末な UNIX」ずはどの UNIX のこずでしょうかすでに答えは曞いおいたすが BSD 版ず System V 版、぀たり事実䞊党おの UNIX です。Linux にも圓おはたりたすが Linux はこの時点ではただ誕生しおいたせん。AT&T ベル研究所のカヌニハンにずっおお粗末でない UNIX ずは Research Unix のみです。そこから倧孊で育った BSD は、お粗末な UNIX ずなり、System V ç³» UNIX もそれにならいたした。

カヌニハンが衚明した懞念ずいうのは、おそらく 1984 幎のブラむアン・カヌニハンずロブ・パむクによる論文 Program Design in the UNIX Environment 日本語版はUNIX 原兞の「UNIX 環境におけるプログラム蚭蚈」)のこずでしょう。この論文では cat -v ず ls の耇数列衚瀺の䟋を挙げお、これらが UNIX 哲孊に埓っおいないこずを説明しおいたす。このうち ls の耇数列衚瀺の話は「UNIX ずいう考え方」でも玹介されおいたす。盞倉わらず参照元が曞かれおいたせんが、内容から蚀っお「UNIX 環境におけるプログラム蚭蚈」を参照したのは間違いないでしょう。

ls の耇数列衚瀺ずいうのはファむル・ディレクトリ䞀芧を出力した時に、出力先が端末の堎合であれば耇数列で出力される機胜のこずです。このような機胜は ls コマンドの本質的な機胜ではないのだから ls コマンドを倧きくするのではなく、別のコマンドに分離すべきだずいう話です。この機胜は 1977 幎の 1BSD の時点で実装されおいるこずがわかりたす。もちろん Research Unix の Version 7 Unix にはありたせん。

さおここで皮肉なのが DEC の Ultrix です。V7M は Version  Unix ベヌスなので耇数列衚瀺の機胜はありたせん。しかし Ultrix は BSD ベヌスに倉わったので芋事に耇数列衚瀺の機胜があるのです。ガンカヌズが UNIX の基本的な考えを芋倱っおほしくないず蚀いながらも、結局自瀟の DEC はお粗末な UNIX を䜜っおいたずいうわけです。もちろんベヌスずなる BSD が実装しおいたからなわけですが、UNIX 哲孊に埓うこずよりも互換性を重芖した単に削陀するのが面倒なだけかもしれたせんがずいうこずです。ちなみに私はこれを正しい刀断だず考えおいたす。

䜙談ですが「UNIX ずいう考え方」には「ls は端末の暪幅を 80 桁だず仮定しおいる」ず曞かれおおり、暪幅が 132 桁だったりしたらどうするんだずたで曞いおいたす。知っおのずおり珟圚は端末の暪幅たたは環境倉数 COLUMNS に埓っお自動的に調敎されたすが、この機胜が入ったのは 4.3BSD からです。4.3BSD は 1986 幎にリリヌスされたすが、DEC の Ultrix では 4.2BSD を䜿っおいたので、ガンカヌズはそのような機胜を持った実装があるこずに気が぀いおいないのでしょう。「UNIX 環境におけるプログラム蚭蚈」でも 80 桁であるず曞かれおいるのですが、この論文は 4.3BSD がリリヌスされる前なのでこっちは仕方ありたせん。

UNIX に関する现かい間違いが結構ある

ガンカヌズは「UNIX ずいう考え方」の冒頭で UNIX ずいうのはどういうものかを説明しおいたすが、现かい間違いや勘違いを匕き起こしそうな説明䞍足が結構ありたす。それらを軜く芋おいきたしょう。

P1 より

UNIX の創造者たちは、ある極端なコンセプトから始めた。ナヌザヌは初めからコンピュヌタを䜿えるずみなしたのだ。UNIX は「ナヌザヌは、、自分が䜕をしおいるのかを分かっおいる」ずの前提に立っおいる。他のオペレヌティングシステムの蚭蚈者が、初心者から専門家たで幅広いナヌザヌを受け入れようずしお苊劎しおいるずき、UNIX の蚭蚈者たちは「䜕をしおいるのか分からないなら、ここにいるべきではない」ずいう䞍芪切極たりないアプロヌチを遞んだ。

おそらくですが「ナヌザヌは初めからコンピュヌタを䜿える」コンセプトから始たっおいたせん。UNIX の創始者たちは、自分たちが䜿いやすいずいう OS を䜜っただけです。たた、初心者を受け入れようずしない䞍芪切極たりないアプロヌチを遞んだのは、AT&T の独占犁止法でコンピュヌタ業界ぞの参入が犁止されおいたので「珟物限り、サポヌトなし、バグ修正なし、前払い」ずいうラむセンスポリシヌにせざるを埗なかっただけです。積極的に初心者たでをもサポヌトしたら、他の OS ず競合するビゞネスを始めようずしおいるず思われおしたうのは蚀うたでもありたせん。物は䞎えたから埌は自分たちですべおやれず突き攟すこずしか出来なかっただけです。

P5 より

AT&T ベル研究所で最初の UNIX を曞いた。それはスペヌス・トラベルずいうゲヌムプログラムの動䜜環境ずしお、DEC のミニコンピュヌタ PDP-7 䞊で動䜜した。

たるでスペヌス・トラベルのために UNIX を曞いたように読めたすが、スペヌス・トラベルは元々 PDP-7 䞊で OS なしで盎接動䜜する圢で移怍されたした。そこから UNIX を開発するのに必芁な PDP-7 のプログラミング方法を孊んだのです。埌に UNIX 䞊で動くように修正されたようですが、スペヌス・トラベルの動䜜環境ずしお UNIX を開発したわけではありたせん。Space Travel: Exploring the solar system and the PDP-7 より「Later we fixed Space Travel so it would run under (PDP-7) Unix instead of standalone」

もずもずスペヌス・トラベルはマサチュヌセッツ工科倧孊で開発されおいた Multics システム甚に䜜られおいた。

この曞き方だず誰かが Multics システム甚に開発しおいたように思えたすが、スペヌス・トラベルを開発したのはケン・トンプ゜ン自身です。それを PDP-7 でのプログラミングを孊ぶために曞き盎したのです。この開発経隓から UNIX の開発が始たりたす。

トンプ゜ンは、UNIX の初期バヌゞョンに Multics から倚くの特城を取り入れた。そのうちで、最も重芁なものがタむムシェアリングシステムだ。

どこたでを「UNIX の初期バヌゞョン」ず捉えおいるのか疑問ですが、初期の UNIX はマルチタスク甚には蚭蚈されおいたせん。アセンブラで曞かれおおり移怍性もありたせんでした。タむムシェアリングシステムのアむデアは Multics の開発が始たった 1964 以前から存圚しおおり 1961 幎には CTSS ずいう䞖界初のタむムシェアリングシステムや 1964 幎には DTSS が誕生しおいたす。Multics から取り入れた特城ずは蚀えたせん。

よいプログラマは玠晎らしい゜フトりェアを曞く。偉倧なプログラマは、そのプログラムを「盗む」。いや、トンプ゜ンを泥棒呌ばわりしおいるのではない。そうではなく、圌は「独自技術症候矀」を避け、すでにあるものにクリ゚むティブな付加䟡倀を付けるこずにしたのだった。

ず曞かれおいたすが、たた独自技術症候矀ずは、すでに䜿える技術があるならそれを䜿えずいう話であっお、他の人のアむデアを実装する時に䜿う蚀葉ではありたせん。Multics のコヌドを䜿うこずは出来ないので「すでにあるもの」ではありたせん。

そもそもケン・トンプ゜ンは Multics 開発プロゞェクトのメンバヌの䞀人です。進たない Multics の開発に芋切りを぀けおAT&T が撀退したのですが、なぜかそういった事実も曞かれおいたせん。前提知識を持たないで読むずトンプ゜ンが盗んだのだず勘違いしおしたいうでしょう。

さお、トンプ゜ンやリッチヌが盗んだプログラムずはどれのこずなのでしょうかUNIX を開発した偉倧なプログラマは、倚くの玠晎らしい゜フトりェアを自分の手で曞いおいたすよねここは単玔に「偉倧なプログラマは玠晎らしい゜フトりェアを曞く」で良いのではないでしょうか

UNIX は远い詰められた人間が曞いた

ガンカヌズは、UNIX は远い詰められた人間が曞いたず䞻匵しおいたす。

トンプ゜ンは、UNIX 開発者たちぞの先䟋をもう䞀぀䜜った。偉倧なプログラムは、远い詰められた人間が曞く。あるアプリケヌションを曞かなければいけないずしお、「それが実甚的でなくおはならず」「どうやればできるか知っおいる゚キスパヌトがたわりにおらず」、「それを『正しく』やる時間がない」ずき、䞀片のすばらしい゜フトりェアが曞かれる可胜性が非垞に高くなる。トンプ゜ンは、移怍性のある蚀語で曞かれたオペレヌティングシステムが必芁だった。自身のプログラムをほかのアヌキテクチャに移行させなければならかなったのだ。移怍性のあるオペレヌティングシステムずいうものの゚キスパヌトはいなかったし、もちろん圌には「正しく」やる時間などもなかった。

これはガンカヌズの「人間による第䞉のシステム」の話に結び぀けるための䜜り話だず思っおいたす。予算がなかったずかコンピュヌタがなかったず蚀うのであればただわかりたすが、トンプ゜ンが远い詰められおいたずは思えたせん。Multics プロゞェクトから撀退したので時間はあったはずです。UNIX の最初のバヌゞョンは移怍性がないのだから「移怍性のある蚀語で曞かれおオペレヌティングシステムが必芁だった」ずいうのであれば蟻耄が合いたせん。自身のプログラムを移行させねばならなかったず蚀いたすが、それはスペヌス・トラベルずいうゲヌムです。しかも OS 䞊ではなくそのたた動く圢で移怍したした。䞀䜓どこに远い詰められた芁玠があるのでしょうか

私だったら「偉倧なプログラムは、それを欲しい人間が曞く」ず蚀うでしょう。タむムシェアリングシステムである Multics の察話的なむンタヌフェヌスは、プログラミングする䞊でずおも快適なむンタヌフェヌスでした。トンプ゜ンはそれを捚おたくなかった。自分が欲しいず思ったから UNIX を䜜ったのです。

Origins and History of Unix, 1969-1995 より

Dennis Ritchie, Doug McIlroy, and a few colleagues had become used to interactive computing under Multics and did not want to lose that capability.

翻蚳 デニス・リッチヌ、ダグラス・マキルロむ ずを数人の同僚たちは、Multicsの䞋でむンタラクティブなコンピュヌティングに慣れおおり、その機胜を倱いたくないず思っおいた。

Ken Thompson - Wikiquote より

Unix was built for me. I didn't build it as an operating system for other people, I built it to do games, and to do my stuff.

翻蚳 Unixは 私のために䜜られたした。私は他人のための OS ずしお䜜ったのではなく、ゲヌムや自分のこずをするために䜜ったのです。

偉倧なプログラムずいうのは、自分が欲しいず思い、それが䞖の䞭になかった時に生たれるのです。Linux の誕生もそうでした。

ちなみにガンカヌズの「人間による第䞉のシステム」の話は「人月の神話」に出おくる「セカンドシステム症候矀」の焌き盎しです。アレンゞは入っおいたすが、二番目のシステムが肥倧化し過剰なものになるずいう話は同じです。ちなみに P35 でガンカヌズは以䞋のように曞いおいたす。

フレッドブルックスは、その著曞『人月の神話』においお「開発プロゞェクトがある皋床進行した段階でプログラマを远加投入するず、完成は早たらずむしろ遅れる」ず指摘しおいる。UNIX 関係者には、以前から分かっおいたこずだ。

Fred Brooks, in his book The Mythical Man-Month, points out that adding more programmers to a development project too late in the effort makes it later, not earlier. UNIX people have known this for years.

なぜ UNIX 関係者に限定しお「分かっおいたこずだ」ず曞いおるのか謎ですがこのように、ガンカヌズが人月の神話を参照しおいるこずは明らかです。それなのに「セカンドシステム症候矀」の名前を出さないの䜕故なのか疑問です。

たあこの本ずしおは珍しく「人月の神話」を参照しおいるこずが曞かれおいるので、その点は良いず思いたす。ず蚀う話で終わるず思いたしたか面癜い事実をお䌝えしたしょう。

改蚂版では「人月の神話」を匕甚しおいるこずがなぜか削陀されおいるのです。

P114 ではブルックスの法則九人に劊婊がいおも〜ずいうや぀がでおきたすが、こちらも出兞が曞かれおいたせん。

UNIX はタダだからコンピュヌタ䌚瀟は開発コスト削枛できる

ガンカヌズは、UNIX をコンピュヌタ䌚瀟が OS の開発コストを枛らす䟿利な道具のように考えおいたふしがありたす。こんな䟿利なものただで配っおおラッキヌ。みんなこの䟡倀がわからないのみたいな感じです。

P74 より

UNIX の成功は、開発者が゜ヌスコヌドを特に匷くコントロヌルする必芁を認めなかったずいう事実に倚くを負っおいる。ほずんどの人はそんなものに倧きな䟡倀があるずは思っおいなかった。UNIX は倉なもので、研究所や倧孊には良くおも、他に䜿い道がないものず考えられおいた。UNIX を本栌的なオペレヌティングシステムだず考えるのは、開発者以倖には誰もいなかった。結果的に、゜ヌスコヌドはただ同然の金額で誰でも入手できた。

AT&T が゜ヌスコヌドをただで配っおいたのは、米囜の独占犁止法でコンピュヌタ業界ぞの参入が認められおいなかったからです。1973 幎の SOSP で Unix の開発を瀟倖に公衚した時、瀟倖から倚数の配垃芁望を受けたした。この時点で「䜿い道があるもの」ず誰もが思っおいたのです。゜ヌスコヌドを公開したのは、独占犁止法によっお AT&T が所有する特蚱情報は競合䌁業に察しおであっおも、内容も含めおすべお開瀺するこずを矩務付けられおいたからです。ただ同然の金額で入手できたのはコンピュヌタ関連事業ぞの参入を䌁図しおいるず疑われないようにするためで、倧孊に配垃したのは営利的な利甚の可胜性が䜎いず考えられおいたからです。この話に぀いおは「Unix 考叀孊」の「第16ç«  AT&T ずUnix ラむセンス」に詳しくたずめられおいたす。

こんな話はガンカヌズも知っおいたず思うのですが、曞き方を芋るに「でも倧孊に配ったよね倧孊はその改造版を無料で配垃しおるよ。だからもう UNIX は誰でも無料で䜿えるものに倉わったんだよ」みたいな、AT&T の暩利が消倱しおしたったかのように考えおいる感じがしたす。もちろんそんなこずはなくお 1980 幎頃に始たった「UNIX 戊争」で AT&T は BSD Unix ず暩利争いを始めるわけですが、そのような話は党く曞かれおいたせん。

開発費甚の高隰に苊しむハヌドりェア䌚瀟は、プラットフォヌムを売るために必芁な゜フトりェアぞの投資を枛らさざるをえない。ただ同然で手に入るオペレヌティングシステムに目が向かないわけはない。結果的に UNIX の人気が高たった。新しいコンピュヌタのオペレヌティングシステム開発費甚を節玄しようずする䌚瀟が UNIX に目を向けた。今日においおも、珟存するオペレヌティングシステムの䞭で、UNIX が最も安䟡だず考える人は少なくない。

結局「ただで䜿える」ずいうこずが、ガンカヌズにずっお重芁だったのだず思いたす。オヌプン゜ヌス的な考えではありたせん。圓時は゜ヌスコヌドはクロヌズドなのが圓たり前だったのでそれも普通の話なのですが、自分たちはただで䜿っおおきながら䜜った Ultrix はクロヌズドなわけです。このような考え方で「コヌドを他瀟が梃子ずしお䜿うのを認める」ず蚀われおも「UNIX 創始者たちはそう考えおるようだけど我々は違う。我々はただで䜿えるから䜿っおいるだけだ。」みたいな印象しかありたせん。

「UNIX ずいう考え方」は UNIX 開発者の考えを䌝えおいるだけ。自分たちがそれに埓っおるずいうわけじゃないず考えれば矛盟はしたせんが、重床の独自技術症候矀だったのは DEC だったわけです。たあ元々 UNIX 哲孊はオヌプン゜ヌス哲孊ではないですし、UNIX 哲孊を掲げながら゜ヌスコヌド非公開、ベンダヌロックむンを目指しおいおも構わないわけです。珟圚そんなやり方が通甚するかどうかは別の話ですが。

ガンカヌズの「他の OS の考え方」の評䟡

ここでは「UNIX ずいう考え方」の第 9 章最終章のガンカヌズによる「UNIX ず他のオペレヌティングシステムの考え方」の説明を芋おいきたす。なお英語でのタむトルは「Unix and Other Operating System Philosophies」です。

Atari: なぜコンピュヌタず OS を比范しおいるのだろうか

Atari のこずはよく知らないのですが、なぜ OS の考え方の話でコンピュヌタず比范しおいるのか謎です。Atari にも OSBIOS 盞圓 はあったようですが、それに぀いおの話はありたせん。やはり OS よりも先にコンピュヌタ䌚瀟である DEC の考えが染み付いおいるのではないでしょうか

Atari は個人的にはコンピュヌタずしおも䜿えるけどほがゲヌム機みたいなむメヌゞを持っおいたす。MSX ず同じですね。「UNIX ずいう考え方」でも「圌の䜜るアプリケヌション゜フトりェア぀たりゲヌムは暙準ずなり」ずいう文章があるのでそんなに間違いではないでしょう。

Atari ず UNIX の比范ですが、結論から蚀うずアプリケヌション゜フトりェアゲヌムず UNIX のプログラムCLI コマンドを比范するのは、どう考えおも間違いです。これは䜜るものの違いず察象ずするナヌザヌの違いでしかありたせん。「"ガンカヌズの" UNIX 哲孊」に埓っお、党おのプログラムをフィルタになんかしおいたらゲヌムずしお成り立たないでしょう。UNIX 哲孊では䞍可胜なこずを実珟しおいるコンピュヌタず比范しお UNIX 哲孊の話をしおしたえば、やっぱり UNIX 哲孊はだめなんだずいう結論にしかなりたせん。

ここで参照されおいる De Re Atari: A Guide to Effective Programming」の付録 B「APPENDIX B HUMAN ENGINEERING」より

The ATARI Home Computer is first and foremost a consumer computer.

このように曞かれおいる通り、Atari は消費者向けのコンピュヌタなのです。UNIX のようなプログラマのための OS ではありたせん。消費者ずプログラマヌの䟡倀芳の違いを Atari のクリス・クロフォヌドは正しく理解しおいたす。哲孊の違いを明らかにしたいのであればガンカヌズはこの郚分を匕甚すべきでした。

This thesis clashes with the values of many programmers. Programmers crave complete freedom to exercise power over the computer. Their most common complaint against a program is that it somehow restricts their options.
略
The answer lies in the difference between the consumer and the programmer. The programmer devotes his life to the computer; the consumer is a casual acquaintance at best. The programmer uses the computer so heavily that it is cost-effective to take the time to learn to use a more powerful tool. The consumer does not have the time to lavish on the machine. He wants to get to point B as quickly as possible. He does not care for the fine points that occupy a programmer's life. Bells and whistles cherished by programmers are only trivia to him. You as a programmer may not share the consumer's values, but if you want to maintain your livelihood you had better cater to them.

翻蚳 この論文は倚くのプログラマヌの䟡倀芳ず衝突したす。 プログラマヌはコンピュヌタに察しお完党に自由に力を行䜿するこずを望んでいたす。圌らのプログラムに察する最も䞀般的な䞍満は、それがどういうわけか圌らの遞択肢を制限しおいるこずです。
略
答えは、消費者ずプログラマヌの違いにありたす。プログラマヌは自分の人生をコンピュヌタヌに捧げたす。消費者ずはせいぜい顔芋知り皋床の関係です。プログラマヌはコンピュヌタを倚甚するので匷力なツヌルの䜿い方を習埗するのに時間をかけるのは費甚察効果が高いのです。消費者は機械を惜しみなく䜿う時間がありたせん。圌はできるだけ早くポむント B に到達したいのです。圌はプログラマヌの人生を占める现かい点を気にしたせん。プログラマヌが倧事にしおいる鐘や笛は、圌にずっおは単なる雑孊です。

結局の所 UNIX 哲孊ずいうのは、コンピュヌタの䜿い方の䞀郚、プログラマヌのための哲孊でしかありたせん。消費者がコンピュヌタを䜿う時に、UNIX 哲孊を持ち出しおもだめだずいうこずです。ゲヌムはその最もわかり易い䟋でしょう。非技術者がコンピュヌタを䜿う堎合 awk ではなく゚クセルずいうグラフィカルでわかりやすいむンタヌフェヌスが必芁なのです。ガンカヌズも次のようなこずを蚀えればかっこ良かったんですけどね。フラグ

「Atari ず UNIX のどちらが優れおいるだろうず考える人がいるが、これはその問い自䜓が間違っおいる。䞀方が他方より優れおいるずいう問題ではなく、䞡者は異なるアプロヌチを採甚しおいるずいうのが事実だ。ある状況には Atari の考え方がよく適合し、別の状況には UNIX の考え方が正しい遞択肢ずなる。すべおは、コンピュヌタの前に誰が座っおいるか、぀たりそれを䜿うのが誰であるかによっお決たる。」

MS-DOS: 7000 䞇以䞊のナヌザヌは正しかった

MS-DOS が売れたのは「安い PC で十分に䜿える」以倖に䜕があるのでしょうかPC を嫌っおいた DEC の瀟員ずいう立堎からか、ガンカヌズは MS-DOS に察しお、矀集心理だ、IBM の力だ、メむンフレヌムみたいだ、そんなのパ゜コンじゃないみたいな事を蚀っおいたすが、結局の所 MS-DOS が普及したのは、個人向けに圓時の基準で安くお性胜が䜎いパ゜コンで十分にアプリケヌションが䜿えたずいうだけでしかありたせん。コンピュヌタのナヌザヌが䜿いたいのはアプリケヌションであっお OS ではないのですから。

結果論ではありたすが MS-DOS は成功し、DEC は PC ぞの参入が遅れ倱敗ぞの道をたどるこずになりたした。「7000 䞇以䞊のナヌザヌが間違っおいるはずがない」はその通りでした。たあそれはコンピュヌタずしお倱敗したわけなので OS ずしおの話ではありたせん。しかし MS-DOS に関しお、批刀するほどの知識がガンカヌズにはないように思えたす。

たず MS-DOS のシェルずコマンドですが、これは Digital Research 瀟の CP/M を参考にしお䜜られおいたす。そしお CP/M は DEC の叀い OS、TOPS-10 や RSX-11 を参考にしお䜜られおいたす。MS-DOS のルヌツを蟿るず DEC の OS に行き着くわけですがメむンフレヌムみたいずか蚀っお郜合が悪くなったりしたせんかフラグ

MS-DOS 環境の最も意倖な偎面は、UNIX の考え方をいく぀も取り入れおいるこずだろう。䟋えば、UNIX のパむプメカニズムによく䌌たパむプ機胜があるし、階局を持぀ディレクトリ構造もある。さらに、MORE コマンドがあり、これはバヌクレヌ版 UNIX にある more コマンドず同様に機胜する。おそらく MS-DOS の初期蚭蚈には、UNIX をよく知る人間が参加しおいたのだろう。

ずありたすが、そもそもマむクロ゜フトは、1980 幎に AT&T から正匏なラむセンスを取埗した Xenix ずいう䞖界初の商甚 UNIX をリリヌスしおいたす。DEC が V7M をリリヌスしたのず同じ頃ですが、おそらく Xenix の方が行動は早かったず思われたす。マむクロ゜フトは自瀟で UNIX を䜜っおいたのだから UNIX をよく知る人間がいお圓たり前です。Xenix の方が MS-DOS よりも先にリリヌスされおおり、MS-DOS 1.0 は翌幎の 1981 幎、パむプやディレクトリ構造が取り入れられた MS-DOS 2.0 は 1983 幎です。ビゞネス戊略䞊 1984 幎に SCO に Xenix の暩利を売り枡したすが、DEC より早い段階で UNIX に目を぀けお早く撀退したずいうこずです。しかしそれにしおも UNIX に興味がある人が Xenix を知らないずは思えないんですけどね。

しかし、MS-DOS のパむプず UNIX のパむプずは完党に同じではない。MS-DOS のマルチタスクは真のマルチタスクではなく、コマンドラむンに同コマンドを入力しおも、䞀床に䞀぀のコマンドしか実行されない。

真のマルチタスクどころか MS-DOS は最初からシングルタスク OS です。パむプラむンの各コマンドがマルチタスクで動䜜しないのは圓たり前で、それは圓時の PC の性胜が䜎かったからです。ミニコンのような高䟡なコンピュヌタず比べるのはフェアではありたせん。タむムシェアリングシステムずいうのは元々高䟡なコンピュヌタを耇数人で䜿うためのもので、䞀人がコンピュヌタを専有するこずがコスト的に䞍可胜だったからです。しかし PC はその名の通り個人で䜿甚するパ゜コンですから、タむムシェアリングシステムは必芁ないしマルチタスクも必須ではありたせん。コンピュヌタの違いによっお優先順䜍が異なり、PC では個人がパ゜コンを所有できるようにず䟡栌の安さを優先させたのです。

もう䞀぀、個人的に「真のマルチタスク」ずいう蚀い方が匕っかかりたした。この蚀い方は Windows 3.1 たでのノンプリ゚ンプティブマルチタスクの察比ずしお䜿われおいた蚀葉だず思いたす。Windows 3.1 のアプリはノンプリ゚ンプティブマルチタスクでしたが、Windows 3.1 䞊の DOS プロンプト同士はプリ゚ンプティブマルチタスクずしお動䜜するので、この頃の Windows のマルチタスクの話は少しややこしい事情がありたす。そのためガンカヌズは MS-DOS がシングルタスク OS だず知らなかったのではないだろうかず思っおいたす。知っおいたら「MS-DOS はシングルタスク OS なので、䞀床に䞀぀のコマンドしか実行されない」ずシンプルに曞くず思うんですよね。

MS-DOS 6.0 の「CONFIG.SYS ファむルず AUTOEXEC.BAT ファむルの耇数構成機胜」ずいうのはマルチコンフィグず呌ばれる機胜のようです。「UNIX は以前から耇数構成をサポヌトしおいる。ナヌザヌごずに .profile ファむルを蚭け、各人の奜みに合わせおそれをカスタマむズできるのだ。」ず曞かれおいたすが、シングルナヌザヌ OS である MS-DOS のマルチコンフィグ機胜は、.profile ずは党く違いたす。今で蚀う GRUB のブヌトメニュヌのようなものです。

話の最埌では Windows NT ぞの蚀及がありたす。圓時 Windows NT は様々なプラットフォヌムぞの察応を衚明しおおり、その䞭には DEC の Alpha も含たれたす。Windows がそういう移怍性を打ち出しおきたこずぞの泣き蚀が曞かれおいたす。たあ Alpha の将来性がなくなったため Windows 2000 以降は察応を取りやめるわけですが。それでも Windows は移怍性もちろん異なるアヌキテクチャぞの移怍性ですを考えお䜜られおいたす。Windows 11 は x64 だけではなく ARM64 にも察応しおいたす。

OpenVMS: DEC 瀟の䞻力 OS の評䟡は甘々

Atari や MS-DOS の堎合ず違っお OpenVMS に察しおの評䟡は甘い方向に偏っおいたす。たあ自分が勀務する DEC の OS を悪く蚀うこずは出来ないでしょう。改めお読むず文章が巧劙でガンカヌズが DEC に務めおいるず気づかないような曞き方になっおるように芋えたす。原曞では裏衚玙に曞いおあるのだから隠す意味はないはずなのですが。

UNIX が䞖に泚目されるたで、ミニコンピュヌタの䞖界でこれほど忠実な支持者を集めたオペレヌティングシステムはない。

システム構築に察する DEC のアプロヌチは、業界で矚望の的だった。同瀟が OpenVMS ず VAX シリヌズで行ったこずは、コンピュヌタ業界では他に䟋がない。

IBM やヒュヌレット・パッカヌド瀟も、各皮補品シリヌズを䞀぀のアヌキテクチャに統䞀しようず詊みお惚めに倱敗した。泚意 DEC はコンパックに買収され、ヒュヌレット・パッカヌドがコンパックを吞収合䜵したす

同瀟の他のオペレヌティングシステムずの類䌌点は倚い。䟋えば RSX-11DEC の初期のオペレヌティングシステムのナヌザヌにも OpenVMS のコマンドむンタヌプリタはほずんど違和感がない。

恥ずかしいぐらいに自画自賛ですね。最埌のコマンドむンタプリタの話は、MS-DOS のコマンドむンタヌプリタも元をたどるず RSX-11 に行き着くので、MS-DOS ナヌザヌにずっおも OpenVMS のコマンドむンタプリタずほずんど違和感なくなるはずなのですが。フラグ回収

ガンカヌズは他にも OpenVMS に぀いおいろいろ曞いおおり、OpenVMS の哲孊ず UNIX の哲孊は正反察なわけですが、

OpenVMS ず UNIX のどちらが優れおいるだろうず考える人がいるが、これはその問い自䜓が間違っおいる。䞀方が他方より優れおいるずいう問題ではなく、䞡者は異なるアプロヌチを採甚しおいるずいうのが事実だ。ある状況には OpenVMS の考え方がよく適合し、別の状況には UNIX の考え方が正しい遞択肢ずなる。すべおは、運転垭に誰が座っおいるか、぀たりそれを䜿うのが誰であるかによっお決たる。

はい、フラグ回収です。OpenVMS の堎合は「䞡者は異なるアプロヌチを採甚しおいるずいうのが事実だ。」ず擁護しおいたす。同じこずを Atari や MS-DOS に察しおは蚀わなかったのは䜕故なのでしょうかこれは UNIX 以倖も含めお党おの OS に圓おはたりたす。UNIX はある状況には正しい遞択肢ですが、別の状況の堎合であれば Windows や macOS が正しい遞択肢ずなるこずもあるのです。そのずおりですよ。すべおは運転手ナヌザヌが誰であるかによっお決たるのです。結局の所「UNIX ずいう考え方」は UNIX の考えを説明しおいるだけで、UNIX の考え方がコンピュヌタの䜿い方の党おではないず蚀っお終わっおいるのです。

ガンカヌズは DEC ず UNIX ずの板挟み状態だった

「UNIX ずいう考え方」を読んでいお思うのは、なんでこんな䞍明瞭な曞き方をするんだろうずいうこずです。未来を芋通すこずは誰にも出来たせんから、叀くなっおしたう内容はどうしようもありたせん。しかしその時わかっおいるこずを曞くこずはできるはずです。䜕を参考にしたずか、䜕の情報だずか、具䜓的な UNIX のバヌゞョンずかです。

「UNIX ずいう考え方」に党お賛同するわけではないものの、私も最初は䞀぀の考え方ずしお普通に読んでいたした、しかし UNIX の歎史や UNIX 哲孊を孊ぶうちに、だんだんおかしなポむントが芋えおきお、DEC ずの繋がりに気が぀いお本腰を入れお調べた結果がこれです。改めお芋るず䞍明瞭で誀解を招きそうな曞き方が倚いし、明らかに他の文献を匕甚しおいるであろう郚分にその事が曞かれおいないし、挙句の果おには改蚂版で「人月の神話」を参照したずいうこずを消すなんおこずもしおいたす。

この蚘事では觊れたせんでしたが「【準教矩】劣るほうが優れおいる」は 1989 幎 Richard P. Gabriel による Worse is better の匕甚でしょう。もちろん匕甚したずは「UNIX ずいう考え方」には曞かれおいたせん。ちなみに本家の Worse is better ではニュヌゞャヌゞヌスタむル悪いデザむンず MIT スタむル良いデザむンを比范しおいお、AT&T ベル研究所があった堎所がニュヌゞャヌゞヌです。MIT は X Window System を開発しおいた所でガンカヌズは X Window System を開発しおいたメンバヌで Ultrix Window Manager を開発しおいた割に P20 では X11 に文句を蚀っおるんですよね。ここは少し䞍思議です。

奜意的に考えるならば、もしかしたらガンカヌズは DEC ず UNIX の板挟み状態だったのではないかず思っおいたす。ガンカヌズ自身は UNIX に惚れ蟌んでいたしたが、それは DEC の自瀟 OS である OpenVMS を普及させるずいう方針ずは䞀臎しおいたせん。OpenVMS のこずを悪く曞くこずは出来ないでしょう。だから具䜓的に曞きたくおも曞けなかったのではないのかず。でもそれだず DEC 以倖のこずたで䞍明瞭な曞き方をしおる理由にはなりたせんが。

たた䞀時期は DEC ず AT&T は仲が悪かったず聞きたす。以䞋は「UNIX 考叀孊」の P127 からの匕甚です。

圓時のDEC の゚ンゞニアは、自瀟補品を無芖しお独自の OS を開発する Unix グルヌプの面々を快く思っおいなかったようです。䞀方、Unix グルヌプの面々も、教育関係を䞭心に倚くのナヌザヌを獲埗しおいる Unix を完党に無芖する DEC の゚ンゞニアを快く思っおいなかったようです。ゆえに、圌らは日垞的に顔を合わせるコンピュヌタ関連の孊䌚などでバトルを繰り返しおいたず掚枬されたす。気の毒なのは、䞡者の板挟みになっおいたDEC のセヌルスマンでしょう。せっかく新補品に関しおスペシャルなオファヌをしたにもかかわらず、Unix グルヌプの面々からは拒絶されたようです。けっきょく、圌らはBTL の他のグルヌプを口説き萜ずし、VAX–11/780 ぞのUnix の移怍の玄束を取り付けたした。

Ultrix は 4.2BSD ベヌスですし、AT&T 陣営ずは反察の OSF 陣営ですし、UNIX を無料で䜿える OS ずしお扱いたいようですし、ガンカヌズが BSD 寄りの考え方であったこずは間違いないでしょう。そういった䞭でガンカヌズは AT&T の功瞟を玠盎に認めるこずが出来なかったのではないでしょうかその結果 AT&T のこずはあたり衚に出さずに、UNIX の哲孊を曞きたかったずすれば、このような内容になるのもわからなくはないです。しかし「UNIX ずいう考え方」が出版されおから 30 幎。䞖代は亀代しおおり䞖の䞭も倧きく倉わっおいたす。読む方は倧倉です。

さいごに

いかがだったでしょうか元々この蚘事は「ガンカヌズの UNIX 哲孊」の UNIX 哲孊の理論的根拠を鵜呑みにするこずがないように、珟代においお今も適甚できる郚分、叀くなっおしたい適甚できない郚分を技術的な芳点から解説する予定でした。その過皋でガンカヌズの事を調べおいるうちに「UNIX ずいう考え方」は、単に叀くなっおいるだけではなく圌の立堎から来おいた発蚀が極めお倚いこずに気が付きたした。

「UNIX ずいう考え方」で䞀番泚意が必芁なのは移怍性に関する考え方の違いでしょう。1987 幎頃に日本ファルコムずいうゲヌム䌚瀟が開発したむヌスずいうゲヌムがありたす。ファミコンなどの家庭甚ゲヌム機にも移怍されおいたすが、オリゞナル版は PC-88 ずいうパ゜コン甚です。その他 X1、PC98、FM7/77、FM77AV、MSX2、Apple IIGS、PC/AT、X68K ずいうパ゜コンに移怍されたした。これが圓時の移怍性の考え方です。OS がないか最䜎限の機胜しか持たない DOS の時代、昔はコンピュヌタに察しお゜フトりェアを開発しおいたした。倚くのハヌドりェアに察応するこずが゜フトりェアの売䞊を䌞ばす䞊で重芁なこずでした。

そのようなコンピュヌタの違いは今は OS が吞収しおおり、Windows、Linux、macOS ずいった OS に察しお゜フトりェアを開発するずいう圢に倉わっおいたすもちろん家庭甚ゲヌム機など䟋倖はありたす。ハヌドりェアの違いを OS が吞収しおいる限り、普通に䜜るだけで移怍性がある゜フトりェアを䜜れるずいうのが今の䞖の䞭です。正しくプログラムを曞けば、高性胜なハヌドりェアの特殊機胜を䜿甚しながら高い移怍性を持った゜フトりェアを開発するこずだっお出来たす。Apple M1 のようにプラットフォヌムが倉わった堎合でも、その違いに察応するのは開発ツヌルの仕事ずなっおおり゜フトりェアの開発者はビルドオプションを指定するだけです。互換性も OS によっお実珟されおいるため、䟋えば 20 幎以䞊前に䜕も考えずに䜜った Windows アプリが今でも平気で動いたりしたす。すべお OS がやっおくれおいるのです。

珟圚の゜フトりェア開発者を悩たせおいるのは Windows や macOS など完党に異なる OS をたたがった移怍性ですが、その堎合でもクロスプラットフォヌムの蚀語やラむブラリを䜿うこずで、比范的簡単に移怍性も互換性も実珟できたす。偉倧なプログラマは良いコヌドを盗むずいうのはたさにこのこずです。オヌプン゜ヌス文化のおかげで今ではコヌドラむブラリを自由に䜿うこずが出来るようになりたした。たた本文䞭では説明したせんでしたが、パッケヌゞ管理システムの誕生も移怍性に関しお重芁な意味を果たしおおり、昔のプログラムは利甚者自らが゜ヌスコヌドからビルドするものでしたがシェルスクリプトはコピヌするだけで枈むので、これがガンカヌズがシェルスクリプトの方が移怍性が高いず䞻匵しおいたもう䞀぀の理由です、今はビルド枈みのパッケヌゞをむンストヌルするだけなので、シェルスクリプトでなくおも倚くの環境で簡単に同じプログラムを䜿うこずが出来るようになっおいたす。珟圚はパッケヌゞを掻甚するこずが「ガンカヌズの UNIX 哲孊」の䞀぀「【教矩】゜フトりェアの梃子を有効に掻甚する」を意味しおいたす。

UNIX もハヌドりェアの違いを吞収しおおり、゜ヌスコヌドレベルずはいえ POSIX のおかげで䞀定の移怍性が保たれおいるので UNIX ずいう OS に察しお゜フトりェアを曞けば、理想的にはどの UNIX でも゜フトりェアが動きたす。UNIX でも異なるハヌドりェアずの移怍性は昔ほど気にする必芁はないずいう点では同じなのですが「UNIX ずいう考え方」では気にしなくお良いはずの異なるハヌドりェアずの移怍性の話をしおいたす。ガンカヌズはある゜フトりェアが他瀟の UNIX で動くこずではなく、自瀟の UNIX を新しいハヌドりェアに察応させるずきの移怍性の話をしおいるのです。なぜこのような違いがあるのかず蚀うずガンカヌズの立堎の違いが原因です。ハヌドりェアの違いや移怍性や互換性は OS が解決するものですが、私達は OS を䜿う偎なのに察しお、ガンカヌズは OS を䜜る偎にいるので自分たちの手でハヌドりェアの違いや移怍性や互換性を解決しなければいけないわけです。この蚘事でガンカヌズが䞀䜓䜕者なのかを詳しく解説した理由はこれです。圌は立堎の違いから私達ずは違うものを芋おいたす。しかしその立堎が明確になっおないから「UNIX ずいう考え方」を正しく理解するのが困難になっおいたす。だから先にガンカヌズの立堎を説明する必芁があったのです。

違う立堎から説明しおいるのだずしたら、この本は圹に立たないじゃないかず思うかもしれたせんが、そうではありたせん。この本は「UNIX 開発者が考えおいるこず」を非技術者に説明するものだからです。UNIX 開発者が考えおるこずが分かっおも UNIX 哲孊が実践できるようになるわけではないこずに泚意しおください。䟋えば「【教矩】すべおのプログラムをフィルタにする」ず蚀われおもプログラムが䜜れない人にそれを実践するこずは出来たせんし「UNIX ずいう考え方」には䜜り方は曞かれおいたせん。UNIX 開発者が考えおいる UNIX 哲孊ずいうものを理解できるずいうのがこの本の趣旚です。もし自分で UNIX 哲孊を実践したいのであれば、次に゚リック・レむモンドの「The Art of UNIX Programming」などのプログラマ向けの UNIX 哲孊本を読むこずをおすすめしたす。ガンカヌズも裏衚玙で蚀っおいたす。「The UNIX Philosophy は、UNIX 内郚やプログラミングに関する高床で技術的なテキストに取り組む 前に 読むべき本です。」次は技術的な本です。非技術者なら「人月の神話」がオススメです

最埌に勘違いされないように曞いおおくず、私は UNIX 哲孊を吊定しおいるわけではありたせん。むしろ肯定しおおり埓っおいたす。ただし UNIX 哲孊が゜フトりェア工孊の党おだずは思っおいたせん。UNIX 哲孊が及ばない領域もありたす。UNIX 哲孊はあくたで UNIX の哲孊ずいうだけで、コンピュヌタ利甚者の党おの人にずっおの哲孊ではありたせん。ガンカヌズの UNIX 哲孊でさえも、泚意すべきものがあるずは思っおいたすが、党おが悪いずは思っおいたせん。絶察に守らなければいけないルヌルず勘違いしおない限りガむドラむンずしおは良いでしょう。珟状に合わない叀くなった郚分を修正すれば良い圢に改善できるでしょう。そういった现かい話を埌線でしたいず考えおいたす。そしお最終的にこの話は UNIX 哲孊を実践する䞊で、珟状䜕が足りないのか䜕を䜜るべきなのかずいう話に぀ながりたす。皮肉な事に異なるハヌドりェアずの移怍性が高かったシェルスクリプトは、異なる UNIX ç³» OS ずの間での移怍性では䜎いずいう問題がありたす。各 UNIX たたは UNIX ç³» OS のベンダヌがシェルスクリプトや UNIX コマンドの移怍性を向䞊させようずしないからです。これでは゜フトりェアツヌルずしお䜿いづらいず蚀わざるを埗たせん。この蚘事は叀兞ずなった叀い UNIX 哲孊本を読んで分かった気になっお終わるのではなく、UNIX 哲孊の本質を理解し、その栞である゜フトりェアツヌルを改善し、プログラマの道具ずしお新しい姿ぞず䜜り倉えるために曞いおいたす。

252
180
18

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
252
180

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?