前回、UNIX系環境に於ける「プログラミング」の意味、あるいは方法論に付いて若干語った。
大きく言うと、Windowsの世界では「全てを一から自力で作り上げる」のがプログラミング、って事になる。ライセンスの問題で、他人が作ったプログラムに「タダ乗り」するのは色々とマズい、からだ。
一方、UNIX系環境だと「他人の成果」にタダ乗りするのは、むしろ推奨される。「一から自分で全部作り上げる」のは「車輪の再発明」として「無駄な行為」と思われるのがUNIX系OSでのプログラミングなんだ(※1)。
さて、UNIX系OSのそのテの「プログラミングに対する考え方」を知っておくのはトリビアでもあるし、重要な考え方でもある。
少なくとも、現在、UNIX系OSで生まれたプログラミング言語は数多い(※2)。Lispは違うし、BASICも違う。また、Windowsで生まれたHSPやなでしこなんてプログラミング言語もあるが、それでも圧倒的にUNIX系OSで生まれたプログラミング言語の方が多いんだ。
よってここではUNIX系OSの歴史、ってのをかいつまんで説明してみようと思う。取り立てて役立つとは思えないが(特にWindowsユーザーには)、歴史をチラッと知っておけばたまには役に立つだろう、って話だ。あるいはキャバクラにでも行った時にキャバ嬢のねーちゃん達に自慢できるかもしんない(爆
いや、自慢できないかもしんねぇけどな(笑)。あとは貴方の話術次第、だ(笑)。
ところで、OSとは一体いつ出来たんだろうか。黎明期のPC(例えばNECのPC-8001とか6001とか)を覚えてる人は「OSなんぞ無かった」事を記憶してるだろう。
元々、メインフレームなんかの大型コンピュータにもOSなんぞは無かったんだ。だって「計算機」だもんな。極端な話、「電卓」にOSなんぞ要らんだろ。
要は、ハードウェアメーカーは当然ハードウェアを作って「売る」のが商売なんで「デフォルトで搭載するソフトウェア」なんぞ考えてなかった。雛形は色々あったが、最初に「OS」を作ったのは実はユーザーだ。なんと自動車会社の米国GM(ゼネラル・モーターズ)が1956年に初めてOSを作った、と言われてる(電子式計算機が登場してほぼ10年後、だ)。GMが自社で購入したIBM製のメインフレーム用に各種ユーティリティを統合し、「仕事の効率を上げる」為にOSなるモノを開発したわけだ。
これが契機となって、ハードウェアメーカーは「自社ハードウェアの為のOS」を開発して載せて販売する、ように変わっていくわけだ。今じゃ半分以上の人には信じられないだろうが、当時は「ハードウェアメーカー = OSメーカー」だったんだ。つまり、メーカー別にOSが乱立してて、共通基盤なんぞない、ってのが当時の状況だった。
そんな中で1960年代にGE(ゼネラル・エレクトリック)とMIT、そして米国の電話会社であるAT&Tが共同でMULTICSと言うOSを開発しようとするが、結果このプロジェクトは失敗する。「開発に終わりが見えなかった」からだ。
しかし、このプロジェクトの「失敗」がUNIXを生み出すキッカケになる。
さて、UNIXは元々はAT&Tの登録商標だ(現在はThe Open Groupが商標を管理している)。よってLinuxを含むUNIX系OSは事実上、全てが「UNIX」ではない。
結果、言い回しとしては「POSIX準拠」とか「PC-Unix」とか「UNIX-like」とか色々あるんだけど、まぁその辺はどうでもいいだろう。
いずれにせよ、UNIXのオリジナルはAT&Tのベル研で生まれた。しかも会社の命令でも何でもない。UNIXは開発者のケン・トンプソンがゲームをしたいってだけで開発を始めたOSだ(笑)。仕事中にゲームをしたい、とか随分と緩い時代だったんだな、ヲイ(笑)
ケン・トンプソンはMULTICSの開発に出向してたんだけど、そこでスペース・トラベルと言うゲームを作る。なかなかの自信作だったようだが、MULTICS上で作った上にAT&TがMULTICSの開発から撤退しちまった。
しょーがないんで、ケン・トンプソンはベル研に転がってて既に誰も使ってなかったミニコン、DEC PDP-7にスペース・トラベルを移植しようとする。また、(当時)未完成だったMULTICSでの開発経験を活かし、スペース・トラベルが動くOSを作ろうとする。これがUNIXになったわけだ。
そういう出自を鑑みると、UNIXって言うのは別段大したOSでもない(笑)。また、当時の、「ハードウェアメーカーがOSを作るモノ」と言う常識から考えると、UNIXは「特定のプラットフォームを持たない」OSとして誕生したわけだ。
なお、この時の開発協力者が、一緒にMULTICS開発に出向したデニス・リッチーで、彼が中心となって最初の「C言語」を開発する。
良く、C言語は「UNIXを書く為に開発されたプログラミング言語だ」と言われ、僕もそう思ってたんだけど、事実じゃない。厳密に言うと、UNIXのユーティリティ(コマンド)を記述する為に作られたのがC言語で、UNIX自体は元々マシン語/アセンブリ言語で書かれた。それが「徐々に」C言語で書かれたコードに「置き換えられていった」と言った方が正しい。
また、前にも書いたけど、元々UNIXは「ユーザーはC言語なんざ使ってプログラムを書くな」と言う思想を持ったOSだ。C言語は言わば伝家の宝刀、OSが提供するユーティリティでは「どうしようもなくなった時」敢えて使うプログラミング言語としてOS本体に導入された。
UNIXは当時の業務のメイン、テキスト処理を得意としたOSで、性器正規表現を重要視したOSだ。そして日々の業務を自動化させる為にコマンドsedと(ちょっと後になるが)スクリプト言語AWKを作って導入してる。
ここで言う「スクリプト言語」とは
- OS組み込みのプログラミング言語
- 定形業務を自動化するツール
と言う意味だ。以前説明した「スクリプト言語」とは若干違う意味を持ってる(※3)。
いずれにせよ、Microsoft ExcelやWordに於けるVBAをOSレベルに拡張したモノか、ストレートにWindowsでのVBScriptにあたるモノがスクリプト言語(の1つの意味)で、UNIXでは特にAWKがその役割を担っていた。
尤も、sedやAWKは使用方法としては後にPerlに置き換えられてその座を譲ったように見えるが(※4)、現在でもUNIX系OSでは密かに「必須スクリプト言語」としてインストールされている。
そして上にも書いたけど、UNIXでプログラミングするなら「Cを使うな」、sedやAWKを駆使しろ、ってのが当初のやり方、だったんだ。
さて、テキスト処理と業務の自動化を重視したUNIX。今の印象と違って、特に「プログラミングの為の」OSでも無かったわけだ。むしろ、AT&T内でも使用されるに至って「ビジネス用OSの日の目」もあるんじゃないか、と期待されたらしい。
ところがどっこい、ビジネス分野ではUNIXは「マトモなOS」だとは捉えられなかった。全然ビジネス関係ではウケなかったんだよな。
理由はハッキリしている。UNIXにはマトモなワープロが無かったから、だ。
ここでMS-DOSに視点をちと移そう。
Appleマニアって連中がいて、連中はマイクロソフトが「OSを作った」んではなくって「OSを作る企業を買収した」と言う話で、さも「マイクロソフトには技術力がなかった」的な話をしてた。今はどうだか知らんが。
これは真実じゃない。「買収した」のはあくまでビジネス上の判断だったんだ。
今のWindows機の原型、IBM-PCだが、「何か今からパソコンが流行りだしそう」ってのを受けてIBMが企画したわけだが。
IBM自体はメインフレームで稼いでた会社なんで、「パソコンを作りたい」と言うのはあったけど、「マジメにパソコンを作りたい」とまでは行かんかったんだよな。
先にも書いた通り、元々メインフレームの会社は「OSも」作ってた。当然IBMにもそのノウハウがある。
ただ、「どうやらこれからパソコンが流行りそうだ」となった時、市場にさっさと自社製品を普及させる事をIBMは望んだ。
そこで「外注」を徹底活用する道を選んだわけだ。CPUなんかもIBMは作れたが、その辺時間がかかるので「全部自分で設計して自分で作る」わけには行かない。よって市場に溢れてる市販製品(部品)で「パソコンを速攻でっち上げる」事をIBMは計画した。これが後にIBMの首を締める事に繋がるわけなんだけど(笑・※5)。
そして何故かIBMは「BASIC言語屋として名高い」マイクロソフトにOS作成を依頼するんだ。
で、実の事を言うとビル・ゲイツは全然乗り気じゃなかったらしい。むしろ「断ろうか」と考えていた、とか。今から出る「新マシン」が成功するかどうか分からんのに、専門分野じゃない「OS」なんぞを社内リソースを賭けて開発なんて出来るか、と。
ところが、ビル・ゲイツに「OSを作れ」と言った男がいた。日本人だ。今や角川グループになっちまったアスキーの創業者の一人、西和彦だ。当時はなんと、マイクロソフトの副社長を兼任してた。彼がビル・ゲイツを説得したらしい。
そんなわけでマイクロソフトはOS製作に関わる事にしたが、「作る」よりも「買った」方が色々と早い、と決断した模様だ。
これには2つ程理由がある。
1つ目。MS-DOS自体がクローンなんだけど、その元ネタをCP/Mと言う。
実はCP/Mは現時点、Wikipediaなんか見ても詳細が分からないOSになっている。なんせ登場が「(いわゆる)パソコン以前」の製品だから、だ。
登場は1976年だが、この頃にはまずはキット式のパソコンしかなかった。今で言うとラズパイみたいな、な(笑)。んで、CP/Mはインテルプロセッサ向けに開発されたんだけど(※6)、この後すぐ、いわゆる「オフコン」と呼ばれるミニコンの一種に移植されて、広まったようだ。そう、「一般に」ではない。「企業で」と言う事だ。
ただ、当時あったオフコンの一体どれに移植されたのか、と言うのも良く分からない。しかも複数メーカーに移植されてた形跡があるんだけど、OS全体の何十%で「オフィスコンピュータ」を支配してたのかもよう分からん。
要は、「大学でのコンピュータの歴史」はある程度資料が残ってるんだけど、ビジネス分野だとそういう資料が残ってないんだ。
ただし、間接的にはどうやらCP/Mが支配的だった、と言える。何故なら、IBM-PC及びマイクロソフトがアーリーアダプターとして狙ってたのはビジネスで既にオフコンを利用した事がある層だから、だ。
要は「新しいOSを設計すると」当時はCLIが当たり前なんで、新しいコマンドを「覚えなくてはならない」。一方、オフコンで使った事があるOSのクローンだったら「新しくコマンドを覚える必要がない」。当然だ。
つまり、「CP/Mクローンを作ってる」会社を買収する、と言う事はユーザーに負担をかける事なく、IBM-PCと言う「新商品」を受け入れてもらう土壌を作る事、となる。
2つ目。決定的だったのはCP/Mには既に実績があるWordstarと言うワープロがあったから、だ。ぶっちゃけマイクロソフトの一番の狙いはこれだった。端的に言うとWordstarが欲しかったんだ(※8)。
それだけじゃない。「新規にOSを作る」と言う事は「新規にソフトウェアを作らなければならない」と言う事だ。OSだけあっても何も出来ない。マイクロソフトが狙ったのは、既存のCP/Mのソフトウェアを簡単にMS-DOSに持ってこれる「その仕組み」であり、それは新規にOSを作成したら得られない事だったんだ。
つまり、マイクロソフトは「CP/Mクローンを作ってる会社を買収」してでも付随するメリットを取った。「新規にOSを作る」のは明らかにリスキーで、先行してる「環境」から資産を受け継いた方が有利、と言う判断だ(※9)。
MS-DOSの性交成功を見れば何がUNIXに欠けていたか明らかだろう。1にコマンド体系がビジネス系の人たちが使っていたCP/Mと全く違っていて「新しく覚えなければならなかった事」、そしてもう1つは「ワードプロセッサも無く、ビジネスでマトモに使えるソフトウェアが皆無だった事」(※10)。
一応、UNIXはAT&Tでは使われてたらしいが、それだけじゃダメだったんだよな。そもそもAT&Tなんざに勤められる人、なんつーのは高学歴も高学歴だ。NTTの人間なんざ足元にも及ばん(笑)。AとNじゃ大違いなんだよ(笑・※11)。そうそう「新技術」に飛びつける人間は一般にはいないわけだ。
そしてもう1つUNIXのバックグラウンドには弱点があった。米国AT&Tは大企業なんだけど、そのせいで独占禁止法によりコンピュータビジネスには進出出来なかったんだ。つまりOSは売れない。
ところがこのお陰で、ここまで散々っぱらなUNIXだったんだけど、これがアメリカの大学に広まって行くんだ。
理由はハッキリしてる。タダだからだ。AT&Tも売れないならタダで配布してもしゃーないわ、ってカンジになってたんだ。日本人ならタダほど高いモノはないと警戒するトコなんだけど、そこはアメ公、ヤンキーは気にせんらしい。「HA HA HA、タダなら美味しい」ってぇんで各大学がUNIXを使う事を決定するんだよ。
これは大学側のこういう事情によるんだ。今でもあんだろ?ハードウェアの保証期限ってヤツ。サポート終了、ってヤツ。保証とサポートが欲しかったら新しく当社の製品をお買い上げくださいってヤツ。
つまりだな、大学で買ってたミニコンも同じ状況になってたんだ。大枚叩いて「コンピュータ」なるものを買った。でもメーカーが「ある年数を過ぎると」保証もサポートも打ち切ってしまう。すわ、大学が購入した「コンピュータ」は屑鉄化か?と。今のPCに対する我々と同じ問題を当時の大学も抱えてたわけだよ。そうそう「新製品」に大枚を叩けない。
そこにUNIXの登場だ。なんせ「プラットフォームを持たない」OSで、移植性が高い新登場の高級言語「C言語」で書かれててメーカーを問わず動く、と言う(※12)。
渡りに船、ってぇんで中古ミニコンを中心にしてUNIXは広まっていくわけだ。
そう、本質的に「中古マシンで生まれた」特定のプラットフォームを持たないUNIXは、「中古マシンをターゲットとして」インストールされていくわけだ。期限切れのWindows機にLinuxをインストールするように。
中古マシン再生術の為のOS、それがUNIXで、今も昔も変わらないんだ。
UNIXが北米の大学で広まると、自然とC言語も広まっていく。
別に「C言語が素晴らしいプログラミング言語だったから」じゃない。単に、コンピュータ・サイエンスで「OSに付いて」の講座を行う際、眼の前で動いてるOS、UNIXを読解するにはC言語を使うしかなかったから、だ。「必ずソースコード付きで配布されていた」UNIXは活きた教材だったんだ。
このお陰でコンピュータ・サイエンスの学生は「C言語を学ぶ」事になった。全ては「活きた教材」UNIXを理解する為だ。当時(1970年代後半〜1990年代前半辺りまで)は最初にPascalを学び、後に「OSを学ぶために」C言語を学ぶ。結果コンピュータ・サイエンス卒業学生は結構な確率でPascalとC言語を操れるようになるわけだ。
1981年にはIBM-PCが発売されるが、要はここでPCとしては初めて16bit機が登場し、そのうち16bit環境で生まれたC言語がここで紹介される(※13)。そして普及していくわけだ。
理由としては次の2つがある。
- コンピュータサイエンス学科の卒業生はPascalかC言語に明るい
- ミニコンに比べると圧倒的に性能の足りないPCでは、速度を稼ぐ為、アセンブリ言語や機械語でコーディングする必要性がどうしても出てくるが、一方C言語はその代替になり得る。
プログラマを雇いたい、と思ってもC言語かPascalを知ってる学生が多く卒業してくる、となれば当然それが主流になる。当時のソフトウェアビジネスだと「ソフトウェアを作って売る」以上、使い手が使い慣れた言語になるのは当然だろう。
もう1つもそのまんま、だ。PCの性能が低い以上ソフト側で速度を上げるテクニックを導入せなアカンが、当時はポピュラーだったにせよ、アセンブリ/マシン語でプログラムするのは大変だ。それに比べると「低レベル言語に近い」C言語の方が扱いがラクな上に速度がまぁまぁ稼げるわけだ。
断っておくが、UNIX以外のOSが走ってたミニコンでは別に「C言語で行うプログラミング」は主流じゃなかった。BASICでプログラミングしたりLispでプログラミングするのが「かなり」フツーだったんだ(※14)。ただし、それは貧弱なPCの環境とは違って「贅沢な」リソースを持ってた、からだよな。
そう、C言語がPCでのプログラマの半数前後を魅了したその最大の理由は「PCの性能が貧弱だったから」に尽きるんだ。別に「C言語が設計上素晴らしかった」からじゃない。
また、そういう意味で言うと、「教育環境の提供」以外だと(いや、それはデカイんだけど)、UNIXはCの一般認知度にそこまで影響を与えてない、んだ(※15)。
さて、米国の大学でUNIXが流行って、UNIXに1つの変化が起きる。AT&Tからソースコード込みで無償提供されたUNIXに「改造」が起こるんだ。場所は米国の公立大学の名門校、カリフォルニア大学バークレー校だった。最初はUNIX用の追加ユーティリティやソフトウェア集から始まって、後にUNIX本体にも手が入る。
この「カリフォルニア大学バークレー校版UNIX」をBSD(Berkeley Software Distribution: バークレー校ソフトウェア問屋?・笑)、あるいはBSD UNIXと呼ぶ。
ある程度UNIXが普及すると、AT&Tが配布したオリジナルのAT&T版UNIXより、こっちの(言わば二次著作物の)BSD UNIXの方が人気が出て逆転する事となる。ハッキリ言うとUNIXはプログラミングの為のOSと言う印象を決定付けたのはこのバークレー版だ。
例えば、オリジナルのUNIXにはラインエディタのedしかなかった。ソースファイルの一行一行を「選択」して「編集」しか出来なかったオリジナルのUNIXは、決して「優れたプログラミング環境」を提供してたわけじゃなかったんだ。
Windowsユーザーにとってはヘンテコリンな操作体系を持つviと言うスクリーンエディタの出自はこのBSD UNIXだ(※16)。ここで初めてUNIXは「マトモなプログラミング環境」を入手する。
そしてこのvi自体が「UNIX的プログラミング」の代表的な例だ。組み込みコマンドだったedを利用しつつ作られたソフト、なわけだ。
そしてviはAT&TのオリジナルのUNIXに逆輸入されたりする。
このBSD UNIXの開発に関わった人たちが中心となって立ち上げた企業が、今は亡き、Sun Microsystemsだ。そしてSunが作ったUNIX系OSをSolarisと言う。
Sun Microsystemsはビジネス用ミニコンに対し、「ワークステーション」と言う分散型コンピュータを企業向けに売出し、かなりの性交成功を修める。また、Solarisによって初めて「ビジネス用UNIX」と言うモデルも性交成功させる。IT系ベンチャー企業としては初めての大性交成功例だ。
また、プログラミング言語Javaが生まれたのもSolaris上だ。そして「プラットフォームを選ばない」JavaはWindowsにも移植されて(宣伝効果が大きいが)人気のある言語の1つとなる。
さて、Solaris。Oracleに買収される直前にオープンソース化して、Linuxに代わるUNIX系OSのスタンダードになるか?と一瞬思われたが、結果あまり性交成功せんかったんだよな。それだけLinuxの性交成功はもう、覆せない辺りまで来てたんだ。今では細々と何かやってる、って程度になってるみたいだ。
残念。ホントSunを語ると「兵どもも夢の跡」ってカンジになる(※17)。
AT&Tのベル研と米国の大学は70年代半ば辺りから80年代を通じて友好関係を築いていたが、1990年に近づいていくとその蜜月が怪しくなる。米国独禁法が若干緩んだのか、大学間にUNIXが広まってるのに一銭もベル研にもたらさない、と言う状況を打破する為にベル研が動く事となる。
カリフォルニア大学バークレー校側では、「フリーでOSを配布する」効果を実感してて、ベル研からもたらされたUNIXのソースコードを完全に排除したUNIX互換のOSを作ろうと画策するが、1992年にAT&T側から訴えられる。これによって暫くBSD UNIXが配布不可能になってしまった。
この時に出てきたのがLinuxだ。前にも書いたけど、Linuxとは実はカーネルを指し、同じくUNIXクローンを作ろうとしていたFSFのコマンド群と合わせてGNU/Linuxと言うOSになる。BSDが「機能停止」している間隙を突いて、新しい「UNIX互換OS」として一躍脚光を浴びる事となるわけだ。
なお、FSFが作ったコマンド群、GNUもLinuxも総体的に見ると「OSを作るパーツ」と言うかキットだ。言い換えると「どういった性質のシステムにするか」は実は個人の趣味に委ねられる。つまり「カスタム性が大きい」ってのが特徴となる。当たり前だよな。
とは言っても「個人の趣味で」OSを一から「組み立てる」っつーのはなかなか洒落になんない。いや、好きな人はやるでしょ。でもいくら「コンピュータ好き」でもそこまで暇なヤツはいない。言っちゃえばコンピュータユーザーは、「ソフトウェアを使いたい」んであって、別に「OSを弄り倒したい」わけじゃないんだ。
そこで、Linuxでは「配布形式」、要は「ディストリビューション」と言われるモノが中核となったわけ。これはWindowsとか使ってるとピンと来ないんだよ。Windowsで「同時に色々なヴァージョンがアッチコッチから出ています」なんつーのは無いだろ?でもLinuxには「それがある」。それが、Linuxニュービーには「敷居が高く」映るんだ。「何かよく分からんぞ」と。
大まかに言うと、Linuxには四大ディストリビューション、ってのがある。「その他」もあるんだけど、数多いLinuxディストロは、大体「子」としてこの4つのどれかに属してる、って考えていい。「親」が更新されると「子」も影響を受ける、と。
その4つはこれらだ。
繰り返すけど、世の中には星の数程の「Linuxディストロ」と言われるモノが存在してて、そのどれもが基本的にはLinuxと言うカーネルとGNUのコマンドツール群を組み合わせたモノを提供している。
じゃあ何が違うんだ、と言うと大きくは「パッケージ管理方法」が違う。要は「どうやってソフトウェアをインストールするのか」だな。
1番のSlackwareがこの4つじゃ一番古くて、いわゆる「LinuxはマニアのOS」「Linuxを使うのは難しい」「Linuxを使うと黒画面に文字を打つ羽目になる」と言うイメージを作り上げたのはこのディストロだ。
特定のパッケージ管理システムを持たない。従って「ソフトウェアをインストール」する場合、自分でソースコードを全部持ってこないとなんない。要コンパイルの場合は自分でコンパイルしてインストールする。
甚だメンド臭いんだけど、実はこの4つの中では一番軽い。「Linuxは軽い」と言う、ある種「間違った」印象を作ったのはこのディストロだ(笑)。だって何もやってくれねぇからな(笑)。しかしながらマニアには人気がある。だからマニア向けだ。初心者は避けた方がいい「系列」となる。
2番目は3番目のDebian系列と人気を二分するディストロだ。登場時期もほぼ同じだ。
ただし、このRedHatってのは元々、企業がLinux採用の際「選ぶ」性質のディストロなんだよな。言わば「企業向け」。個人ユースの為のディストロじゃない。
Googleが使ってるサーバーのLinuxが、このRedHatだと言われてる。
パッケージ管理システムはRPMと言って、このコマンドを走らせるとネット経由で欲しいソフトがRedHat系サーバーからインストールされて使えるようになる。「ソースコードからコンパイル」する形式じゃなくって「コンパイル済みの」ソフトが提供されるわけだ。
RedHatは「商用利用の為」のディストロで、今や親会社はIBMだ。でも子ディストロも色々あって、例えばRedHatの実験版Fedoraなんかはマニアに人気がある。「バグ込み」でリリースされてるんでマニアにしか太刀打ち出来ないけど(笑)。「OSそのものに興味がある」って人向け。
他にも科学用途向けのScientific Linuxや個人でサーバーを立てる人の愛用率が高いCent OSと言うのもある。
3番目のDebianは2番めのRedHatと双璧を成すLinuxディストロだ。実は日本では2000年代後半になるまであまりメジャーなディストロではなかったが、登場自体は結構古い。
このディストロの特徴は「保守的である事」だ。RedHatと同様にdebパッケージと言われるスタイルで「コンパイル済みの」ソフトウェアをアーカイブからインストールする。
ただし、個人用サーバー等を元々ターゲットにしているらしく、「最新版のソフト」がなかなか入らない、と言う特徴っつーか、見方によっては「欠点」がある。安定運用を最重要視してるせいで、「今上手く動いてる」ソフトウェアを新しいモノにすぐには更新してくれない。もちろんセキュリティに穴がある、なんつー場合はその限りじゃないが。
とにかく徹底した「安全性のテスト」がDebianの特徴で、結果、21性器世紀に入っては「最新版ソフトを使いたい」人はFedora、「安定版を使いたい人」はDebian、って選択肢になってる、ってカンジかしら。
現在では、古参のDebianユーザーはともかくとして、大体がサーバー用途にDebian、PC用OS用途としてはUbuntuかUbuntuからの派生版を使う、ってのが
スタンダードになってる、って言って良いと思う。「初めてのLinux」にはUbuntu辺りを選んでおけばそうそう失敗はせんだろう。Ubuntu系ディストロはほぼ、PC向けLinux OSとしてはプライマリ・チョイスとなっている。
4つ目がGentooで、これはちと特殊なディストロだ。性質的には1番のSlackwareに似てるが、もっとシステマティックだ。Portageと言うパッケージマネージャを抱えてるが、RedHat系やDebian系と違い、「ソースコードからソフトをコンパイルしてインストールする」形式になっている。
このディストロはある意味UNIX系の「思想」に反していて、1つ目の特徴は「ソフトウェアの最適化」だ。実はUNIX系の思想は「ポータビリティ」が第一に来てて、「最適化」は考えてない。従って、実の事を言うと、RedHatやDebianみたいに「無難なスピードの」コンパイル済みバイナリを配布する、ってのは「正しい」んだけど、Gentooは真っ向からこれに逆らってる。「貴方の使ってるPCに最適化したソフトをリアルタイムで作る事」がGentooの第一命題なんだ。
しかし、その「貴方のPC向けのソフト」をその場で「自動で」作る事がGentooの工夫で、その辺がSlackwareとは方向性が違う辺りだ。
第2に、Gentooは一般に「ディストロを自作する為のOS」と言う印象になっていて、そのカスタマイズ性の高さから「Linuxディストロを作るディストロ」として名高い。よってメジャーになりきれなくても「子ディストロ」が異様に多いディストロになっている。
第3に、Gentooには一般で言う「ヴァージョン番号」ってのがない。大体1週間に一回くらいで「新しいパッケージ」・・・この場合はソースコードの、って事なんだけど、がガンガンリリースされて、手元のGentooではそれで「貴方のPCに最適化した」ソフトが作れてしまう。これが恐らくGentoo最大の特徴で、「ヴァージョン番号に縛られた」他のLinuxのディストロと違って、「常に最新の状態」を保つ事が出来る・・・こういうのを「ローリングリリースモデル」って言うんだけど、その「ローリングリリースモデル」の最初の性交成功例だろう。
いずれにせよ、Gentoo自体はかなりマニアックな性質のディストロだ。子ディストロで一番有名なのは、ご存知、GoogleのChrome OSだろう。
さて、僕がLinuxを導入したのはエリック・レイモンドの言に従ったから、だ。
ここではあなたが自分のコンピュータを持っているか、あるいはコンピュータにアクセスできるものと仮定します(これがどんなにすごいことか、ちょっと考えて見てください。ハッカー文化はもともと、コンピュータがあまりに高価で個人所有など不可能な時代に発達したんです)。新米さんがハッカー技術を習得するための唯一最大の重要な一歩は、Linux かフリーの BSD UNIX 類のどれかを入手し、それを自分のマシンにインストールし、動かすことです。ええもちろん、UNIX 以外にも世界にはオペレーティングシステムがあります。しかしそれらはバイナリで配布されているので、コードを読んだりいじったりできないんです。MS Windows マシンやその他ソースがクローズドなシステムでハッキングを学ぼうとするのは、全身ギプスをつけてダンスを学ぼうとするようなものです。Mac OS X を使えばコードを読んだりいじったりはできますが、システムのうちオープンソースなのは一部だけです。いろいろ壁にぶちあたるでしょうし、アップルの独占コードに依存した悪いクセを身につけないよう注意する必要が出てきます。でも根底にある Unix にだけ専念すれば、いろいろ有益なことが学べます。UNIX はインターネットのオペレーティングシステムです。UNIX を知らなくてもインターネットの使い方は学べますが、UNIX がわからずにインターネットハッカーにはなれません。そういうわけで、現在のハッカー文化はかなり強く UNIX 中心となっています(昔からずっとそうだったわけではありません。だから一部の古参ハッカーは、いまだに現状を苦々しく思っています。でも UNIX とインターネットの共存は非常に強く、 マイクロソフトの力をもってしても、それを本気でつぶすのはむずかしいようです)。だから UNIX をたちあげなさい――わたしは Linux が好きですが、他の方法もあります(そして、ええ、 Linux と MSWindows を同じマシンで走らせることは十分可能です)。UNIX を学びなさい。走らせなさい。いじりたおしなさい。それでインターネットと語りあいなさい。コードを読もう。コードを改変しよう。Microsoft のオペレーティングシステムでは夢見ることもできないほどよく出来たプログラミングツール(C や Lisp や Python、Perl など)が手に入ります。楽しいですよ。そしてあなたがマスターハッカーになってふりかえったら、この時期にどれほどの知識を自分が吸収したかようやく理解できるようになるでしょう。
それで馬鹿みたいに何も考えずにLinuxを導入したんだよな。
いや、今考えてみればどうだろ。プログラミングをやりたい、ってだけでLinux類を導入するのは、結構大変な気がする(笑)。加えると、後に分かるんだけど、エリック・レイモンドって人はわりかし、こう、悪い意味でのステロタイプそのものの人なんだよね。反マイクロソフト、的な。
実際問題、Linuxは確かにプログラミングには便利だ。Windowsとかだとネット中走り回って「バラバラのパーツを」インストールせなアカンようなモノでもパッケージ一括管理のお陰で、必要なモノを1つのコマンドで、依存関係を解決しつつ一気にインストールしてくれる。要は面倒が無いって意味では確かに超強力な環境なんだよ。Windowsじゃ下手すりゃ1時間以上かかる事が3分で済む事が多い。
ただし、それは確かにメリットなんだけど、プログラミング初心者にいきなりOSをインストールしろ、ってのはやっぱ暴論だと思う。メーカー保証の問題もあるしな(※18)。
今だとWindowsならWSLがあるんで、どうしてもLinuxを試してみたい、って人ならそれを使ってプログラミングすればいいと思う。Linuxをインストールするのは、今使ってるPCが古くなって、それこそメーカー保証が切れた際に「インストールする」が正しいと思うな。
少なくとも、個人的意見だと星田さんくらいアタマが良くないとLinuxの即インストール/使用はアブないんじゃないか、って思ってる。まぁ、ブログ記事見れば分かるけど、そもそも星田さんってある種「中古PCマニア」なんだよ(笑)。彼の性質を見るとむしろ、「UNIX系OSを使う為に生まれてきた人」のように見える(笑)。UNIXの「中古PC再生術」と言う本来の目的に合致してる人なんだ(笑)。
いずれにせよ、PCへのLinux導入は「プログラミングに慣れてから」で充分じゃないか。あるいはMacを買う、ってのも手だ。エロゲは出来なくなるが(笑)。エロゲを選ぶか、プログラミングを選ぶか、だな(笑・※19)。
さて、残りはAT&Tのベル研との裁判を終えたBSD UNIXだ。完全にLinuxにお株を奪われたカタチになってしまったが、Linuxとは違って「正統派の」UNIXだ。
今ではBSD UNIXの中核になるのはFreeBSDと言うOSになっている。
GoogleのサーバーではLinuxを利用してるがYahoo!のサーバーではFreeBSDを用いてる。
ただ、今はどうだか知らんが、インストールに関してもFreeBSDはLinuxより遥かに難しい。Linuxでのインストーラはインストールの簡易化を目指してLiveCD/LiveDVDと言う「試験運用」も兼ねたインストールメディアにまで進化したが、一方、FreeBSDは何十枚にも渡る「フロッピーベースの」インストール形式にこだわった。一々「伝統的な手法」にこだわっている。
印象的だったのが,昔ながらの環境に固執するFreeBSDユーザーのかたくなさだ。特にGUIに対する嫌悪感たるやすさまじいものがあった。Linuxでよく使われているデスクトップ環境であるK Desktop Environment(KDE)のメニューを「気持ち悪い」と言い捨てるFreeBSDユーザーすらいた。こうしたコミュニティの中から初心者に使いやすいインタフェースなど出てくるわけがない。プライドの高さはまるで「明智光秀」である。一方Linuxは,「使いやすければWindowsの真似だって平気」というスタンスだ。Linuxで使われている二大デスクトップ環境であるGNU Network Object Model Environment(GNOME)とKDEは,いずれもWindowsのGUIを真似て作られている。画面左下からアクセスするメニュー,デスクトップ上に置けるショートカット,ごみ箱などだ。GNOMEで使えるアプリケーションには,米Ximian社が開発したOutlookそっくりのクライアント「Ximian Evolution」もある。米CodeWeavers社はLinux上でWindows用のOfficeを動作させられる製品「CrossOver Office」を開発した。Windowsエミュレータの一種であるWineを利用するものだ。「メジャーになったのがなぜFreeBSDではなくLinuxだったのか?」というのは取材当初からの疑問だった。そこで,さまざまな取材先にこの質問をぶつけてみた。ある人は「時の運」と言い,ある人は「Linus Torvalds氏のやさしい独裁者モデルがよかったのでは」と言った。いずれもその通りである。だが,最大の理由は「FreeBSDのかたくなさ」と「Linuxの節操のなさ」の違いにあったのではないかと私は思っている。FreeBSDはUNIXの世界で閉じている。これに対しLinuxには,UNIXの成果もWindowsの成果も取り入れるどん欲さがある。
今現在ではやっぱりUNIX系OSとしてはLinuxが圧勝してるし、仮にFSFが「マイクロカーネル方式のカーネル」の開発を性交成功したにせよ、そうそうひっくり返らないだろう。Solarisでさえ勝てなかった、んだ。
だからFreeBSDは「トリビアとしてその存在を知っておけば良い」程度だと思う。
ポール・グレアムはFreeBSDを使っていた。今やMac OS Xだ。FreeBSDに新規に参加する価値は既にあまりないだろう(※20)。
よってここでは、FreeBSDの亜種を紹介する程度に留めて、この記事を終わる事、とする。
※1: 敢えてかなり極端な書き方をしている。コンセプトをハッキリとさせるため、だ。
しかしながら、どうしてUNIX系プログラムを作る会社がWindows向けに「商用製品」の開発に乗り出さないか、の遠い理由でもある。Web系開発会社は言わばライブラリ的には「他人の作ったモノ」を使いまくっていて、これを含めて「売る」となれば色々と問題が生じるから、だ。ネットでサーバー越しに「稼働」させるのなら商品が手元に無いから「バレない」(笑)。
もう1つ、これはUNIXと言うよりFSFの意向だが、FSFが作ったライブラリを利用すると、原則、「ライブラリを利用した商品はソースコードを開示しなければならない」義務が生じる。つまり、Windows用に「売る」商用製品を作ると、そのソースコードもユーザーに求められれば公開しないとならない・・・ライバル会社にも、だ。やはりネットで「サーバー越しに」使うWebアプリの方が商売上有利になるわけ、だ(また、製品にはFSFが作ったライセンスの継承義務が生じる)。
厳密に言うとFSFが提示してるライセンス(GPLとかLGPL)によって形態は違うんだけど、下手にUNIX系のOSで開発した商品をWindows向けに「販売する」となれば、色々と足枷が法的に生じるわけだ。
これが、いわゆる「WebIT系企業」がWindows向けの製品を「販売」しない遠い理由だ。
※2: ちなみに、PythonはUNIX系OS生まれでもWindows生まれでもない。オランダの実験的OS、Amoeba上で生まれたプログラミング言語だ。
Pythonが人の目に上ってきたのは登場から約十年後、大きいのは2002年頃にMac OS Xのデフォルト・スクリプト言語として採用された事だ。これが(Windowsユーザーに比べると数は少ないけど)多くの人に「Python」と言うプログラミング言語と「そのパワー」を知らしめた最初の例だと思う。
これ以前は「知る人ぞ知る」と言う、言っちゃえばマイナーなプログラミング言語だった。
※3: だから言ったろ、「正確な定義」じゃなくって、バズワードなんだって(笑)。文脈で意味が変わるんで気を付ける事。
※4: Perlは言っちゃえば文字列処理に特化したプログラミング言語で、Windows 95以降の「民間」インターネット黎明期に「掲示板記述用言語」として一斉を風靡した。プログラミングをやった事が無い人も大量に「掲示板を作りたい」が為にこれを学び、一般を巻き込んでブーム化したのは、ハッキリ言ってBASIC以来初めて、となる。
PerlをキッカケにしてWeb業界に飛び込んで行った人も多く、その爆発力は現在のPythonの比ではなかった。
「学校で学ばされる」プログラミング言語ではなく、素人まで巻き込んでブーム化したのはマジでBASIC以来で、「プログラミング人口」を増やした功績の大きさ、はBASIC以外では他の言語の比ではない。
※5: IBM-PCは互換機が出まくって、IBMの主導を離れていく。
そこで90年代初期に、まずはCPUの脱インテル化を図り、自社製作のPowerPCと言うCPUに変更しようとし、またマイクロソフトとタッグを組みつつ、新しいOS/2と言うOSを立ち上げた。
ところがこれがIBM-PC互換機メーカーに総スカンを食らう(笑)。互換機メーカーはIntel CPUに残留し、MS-DOSを継続的に支持していく、と。
結果、IBMが企画した「新しいPCのスタンダード」、PS/2は大きな成功が無く消えていく。そしてこの計画に乗り気だったApple「だけ」が暫くCPUとしてPowerPCを使っていくわけだ。後にPowerPCは「ゲーム機専用」CPUの印象を深めていく。
この時点で、完全にIBM-PC(今のWindows機)はIBMの手を離れた、と言って良い。
※6: いわゆる「パソコン」が登場したのは次の年1977年で、この年にApple II、TRS-80、Commodore PETの三機種がデビューする。
しかし、CP/Mがインテルプロセッサ向け、と言う事はこの三機種には「当てはまらない」。Apple IIもCommodore PETもMOSテクノロジーのCPUを採用してるし、辛うじてTRS-80が引っかかる程度か(互換CPUのZ80採用だが)。
Apple II用のフロッピードライブ、Disk IIが出たのは1978年で、これが出た以上DOS(Disk Operating System)が必要になる。スティーヴ・ジョブスが当初、CP/MをOSにしよう、と考えたらしいが、つまり、この時点で既にCP/Mが「ポピュラーになってた」って事に他ならない。でも「どこで?」と言う回答が見つからないんだ。答えは「パソコン以外で」なんだけど、一体登場の1976年から1978年たったの二年間の間「どこで支配的になってた」んだろう。
この辺は「パソコン前史」なんでWikipediaでさえ記述が見つからない「空白期間」なんだ。
※7: ある製品を「最初に」受け入れる人たち。アーリーアダプターを形成したあと、「より多くの人に」製品が宣伝されていく。
※8: 当時は当然、Microsoft Wordなんざまだ無かった。
※9: 実際、後のApple Macintoshの登場は衝撃的だったが、一方、作成者のスティーヴ・ジョブスが一番畏れてたのは「ソフトが全く出揃わなかった」事だと言う。そこで、初期のソフトウェアラインナップは全てAppleが揃える事となる。
しかしこれはある種変則的な力技で、こんな事が出来たのは、実は本質的にはAppleはハードウェアメーカーじゃなくってソフトウェアメーカーだから出来た事だ。Appleは同業他社のようにCPUを開発出来たり特殊なチップを開発する能力がなかった。全てソフトウェアで解決する、と言う手法がここで活きてて、またそれが出来るのもソフトウェアメーカーだから、だ。
しかしながら、DTPやDTMと言うような市場を開拓しつつも、IBM-PC陣営のようなソフトウェア資産を形成する事なく、またビジネス分野に食い込もうとしてもMacは「おもちゃ」のイメージが強く、一般には受け入れられなかった。
※10: こういった歴史的経緯もあって、UNIX系OSのユーザーにはワープロと表計算ソフトはウケが悪い。
しかしながら、現在は、UNIX系OSではWordとExcel互換のLibre Officeが主流となっている。
※11: なお、これにも絡んで、反マイクロソフトの人たちは「マイクロソフトは優れたOSであるUNIXを採用しなかった、バカだ」的な事を言うが、これも事実とは違う。マイクロソフトはUNIXの性能とその可能性を熟知してた。そこで、ポートフォリオ的発想に長けたマイクロソフトは、MS-DOSと同時にIBM-PC用UNIX「XENIX」を開発・販売する。
しかし端的に言ってこれは失敗するわけだ。別にマイクロソフトが悪かったわけでもなく、単にソフトウェアが揃わなかったし、ユーザーはCP/Mクローンの方を好んだ、ってだけの話だ。
つまり、仮にバカがいたとしたら、それはマイクロソフトじゃなくって市場、要はパソコンユーザー側の方だった、って話なだけ、だ。
マイクロソフトの責でも何でも無く、筋違いの批判だと言えよう。
※12: これが実は大嘘で、当時もUNIXのインストールはてんてこ舞いだったらしい。「インストール出来ないんですけど!」「動かないんですけど!」と言う連絡がひっきりなしにAT&Tのベル研に入り、UNIXの開発者、ケン・トンプソン自らが電話の受付嬢状態で、なんと「出張インストール」まで行ってたらしい(笑)。何とも贅沢、っつーか「いい時代だったんだな」と言うか(笑)。
これで言えるのは、実は当時から「C言語の移植性神話」には限界があった、と言う事。また、当時の「コンピュータの管理者」は当然大学勤めの専門家だったわけで、一般人よりも遥かに知識がある筈にも関わらず、彼らにとっても「メーカー保証が無いOSの新規インストール」はとんでもない労力と難しさがあった、って事だ。
我々一般人が「よし、Linuxをインストールしよう!」と思っても、その行為が難しいのは別段不思議じゃないんだ。専門家でも匙を投げてた、ってのが基本なんだから。
※13: 厳密にはオリジナルのUNIXが生まれた中古マシン、PDP-8は18bit機だ。ただし、ヒット作PDP-11は16bitで、いずれにせよ、C言語は元々も16〜18bit環境を想定して作られたのは間違いないだろう。
IBM-PCが登場するまで、米国のPCの殆どは8bitだったわけで、当然Cが走る、と言うのは考えられていなかった。8bit機では、BASICと、良くてPascalが選択肢だった。
Pascalは元々、Javaのように「仮想マシンで動く」前提の高級プログラミング言語だったんで、ハードウェアリソースは要求するが、移植性が極めて高く、8bitでも問題なく動くんで、当時の8bit PCで「プログラミングを極めたい」のならある種必須のプログラミング言語だった。
結果、80年代は、まずはMS-DOS上で「8bit時代からの古参のプログラミング言語」Pascalと「新参の」C言語との市場シェアを争う戦いになっていくわけだ。
※14: ここで言う「BASIC」はPC組み込みのBASICとは既に大違い、ってくらい発展してたらしい。IDEとコンパイラ完備で・・・と言う「PCのROM BASIC」とは全然別物だ。その「ミニコンで使える進んだBASIC」が後のISO FullBASICの礎となる。
※15: ちなみに、日本でのC言語普及の原動力になったのが「はじめてのC」と言う1986年に出版された本、だと言われている。
「はじめてのC」と言う本のタイトルのせいでプレイボーイ的邪な事Hot To、と勘違いされて売れた、と言うような笑い話がある(笑)。
確かに童貞がコーフンしそうなタイトルではある(笑)。
※16: viは元々、新入生にPascalを教える際の、「プログラミング実習で使用可能な」テキストエディタとして開発されたらしい。
※17: 90年代半ば頃にいいトコの大学に通ってコンピュータサイエンスを学んだ層は、学校で「Sunのワークステーションを使ってプログラミングした」と言うのが強烈な印象になってるらしい。
要は当時のPCより「数ランク上」のマシンを使ってプログラミングしたのが、一種ステータスだったんだろう。
※18: 例えばSONYなんかはPC業務から撤退したが、かつてメーカーから来た人に訊いてみたら、LinuxなんぞインストールしたVAIOは即刻保証対象外になる、と冷たい返答だった。
一方、NECなんかは寛容で、電話での相談でも快く応じてくれた。そういう意味では「PCにまつわる色んなトラブル」に対して、NECは「慣れている」と言える。「ユーザーが自社製PCで色んな事を行う」ってのは「NECでは想定内」なんだ。
また、Lenovoも同様で、これはIBM ThinkPad時代から「Windowsが唯一のOSではない」と言う哲学を持ってたメーカーだから、と言える。
いずれにせよ、メーカーによって全然対応が違うんで、「プログラミングをしたいならLinuxにしろ」たぁ簡単には言えないんだ。
※19: かつては「エンジニアはWindows」「アーティストはMac」って構図だったんだけど、今や「エンジニアはMac」「アーティストはWindows」と全く逆になってしまった。Mac OS Xと言うUNIX系OSになって、特に「Free BSDのインストール作業に辟易した層」が大量にMacにやってきたから、だ。
そう、「メーカー保証付きのUNIX」として考えるとMacが一番「ラクな」選択肢にはなる。
※20: FreeBSDの亜種でLiveCDを採用したFreeSBIEと言う派生ディストロもかつては存在したが、今は開発停止になってしまった。