|
この記事では、一般的な構造の概要のみを説明し、詳細な説明は行いません。 I. コンピュータの発明 もともと世界には道路は存在しなかったが、人々が歩くにつれて道路は形成され、コンピュータも存在しなかったが、人々が考えるにつれてコンピュータが誕生した…コンピュータがなければ、何も議論できない。 コンピュータの発明に計り知れない貢献をした 3 人の人物、アラン・マシスン・チューリング、ジョン・ヴィンセント・アタナソフ、ジョン・フォン・ノイマンです。 チューリングはコンピューターの実現可能性を理論的に証明し、アタナソフはチューリングの理論を実践し、フォン・ノイマンは現代のコンピューターのアーキテクチャの基礎を築きました。 チューリングは、これは作れるはずだし、すでに証明されていると言い、アタナソフはためらうことなくすぐにそれを作り、フォン・ノイマンは、このようにしたほうがよいだろうと言いました。 チューリングは多大な貢献をしましたが、同性愛者だったというだけの理由で悲劇的な死を遂げました。最期の瞬間、彼はシアン化カリウムを混ぜたリンゴを食べました。Appleのロゴはチューリングに敬意を表して作られたものだと言う人もいますが、これは誤りです。チューリングを称える真の栄誉は、1966年に米国計算機協会(ACM)によって設立されたコンピュータサイエンスにおける最高の賞であるチューリング賞です。 アタナソフはあまり有名ではありませんが、長生きしました。世界初のコンピューターは、多くの書籍で言及されているENIACではなく、アタナソフが開発を主導したABCコンピューターでした。 ABCコンピュータ設計図 ジョン・フォン・ノイマンはハンサムで聡明、幅広い研究分野を持ち、多くの逸話を持つ人物でした。今日私たちが使っているコンピューターには、彼の深い足跡、フォン・ノイマン・アーキテクチャとして知られる痕跡が刻まれています。 コンピュータの父については様々な説や主張がありますが、この3人全員がコンピュータの父と言えるでしょう。ジョン・フォン・ノイマンをコンピュータの父と呼ぶ人もいますが、ノイマン自身は自分がその称号に値しないと述べ、その栄誉はアラン・チューリングに帰属すべきだと主張しました。 創立当初、アメリカのプリンストン大学は世界有数のコンピューティング研究の中心地であり、優れた頭脳が輝きを放つ場所でした。ジョン・フォン・ノイマンはそこで働き、アラン・チューリングはそこで学び、二人はプリンストンの庭園で語り合うことさえありました。フォン・ノイマンはチューリングを助手にしたいと申し出ましたが、チューリングは断りました。 II. 初期のUnixとC言語 初期のコンピューターはかさばり、多くの電子部品を搭載しており、一度使用するだけでもかなりの電気代がかかりました。また、使い勝手も非常に悪かったです。まず、一度に一つのことしかできないのは耐え難いことでした。まずお粥を炊いて、出来上がりまで30分待ってから野菜を炒めるところを想像してみてください。高額な報酬を得ているシェフに、お粥を炊いている間に野菜を炒めてもらうのはなぜでしょうか?一度に一つのことだけを行う、いわゆるシングルタスクは、かなり非効率的です。 我慢できないなら、解決策を見つけなければなりません。そこでオペレーティングシステムというアイデアが生まれました。オペレーティングシステムは、コンピューターをより使いやすくし、より効率的に機能させることを目的としています。 1965年、MIT、ベル研究所、ゼネラル・エレクトリックは協力してスーパーオペレーティングシステムを開発し、Multics(Multiplexed Information and Computing System)と名付けました。このオペレーティングシステムは、複数の人が同時に多くのタスクを実行できるように設計されており、マルチユーザー・マルチタスク・オペレーティングシステムとしても知られています。 Multics は評判は良かったものの、何も達成できませんでした。目標があまりにも野心的だったため、結果としてその野望は達成されませんでした。 1969年、Multicsプロジェクトは遅々として進まず、中止を余儀なくされました。関係者のケン・トンプソンとデニス・リッチーの二人は、何もすることがなくなってしまいました。二人ともベル研究所出身でした。仕事がなくて、二人はビデオゲームをしていました。壊れたコンピューターを見つけ、以前自分たちが開発したゲームをプレイしようと準備しました。 ゲームを遊休マシン(PDP-7)に移植する過程で、シンプルなオペレーティングシステムが実装されました。1970年までにこのシンプルなシステムは使用可能になりましたが、同時に使用できるのは2人だけでした。ある人が、自分たちのいじくり回しはMulticsとは程遠いと冗談を言い、Unix(UNiplexed Information and Computing Service)と呼ぶことを提案しました。UnicsはMulticsの反対語なので、これは2人へのジョークというよりは、Multicsへの嘲笑でした。ケン・トンプソンは名前を少し変更し、Unixと名付けました。 UNIX ナンバープレート こうしてUnix時代の幕開けとなりました。1970年はUnix元年とされ、今年はUnix誕生45周年にあたります。Unixタイムスタンプは1970年1月1日から計算されており、この日はUnix誕生の日付と密接に関連しています。 初期のオペレーティングシステムは元々アセンブリ言語で書かれていましたが、これは原始的で時代遅れだったため、記述するのが非常に困難でした。Unixの開発中に、トンプソンはB言語を発明し、リッチーはそれを改良してC言語と名付けました。 C言語の発明後、リッチーとベル研究所の同僚ブライアン・W・カーニハンは、後に『K&R』として知られるC言語に関する書籍を共著しました。カーニハンはリッチーほど有名ではありませんでしたが、並外れた人物でした。UnixコマンドAwkの「K」はカーニハンを指しています。 次に、トンプソンとリッチーはUNIXシステムをC言語で書き直しました。その結果は非常に満足のいくもので、UNIXは一般公開の準備が整いました。1974年、デニス・M・リッチーとケン・トンプソンはUNIXに関する最初の論文「UNIXタイムシェアリングシステム」を発表し、それ以来UNIXは広く知られるようになりました。 近年、世界のコンピューティング産業の中心はベル研究所に移り、トンプソン、リッチー、カーニハンといった著名な人物が活躍しました。トンプソンとリッチーは後にチューリング賞を受賞しました。 大切に育てた花がうまく育たないこともあるし、意図せず植えた柳が繁茂することもある。Multicsは壮大な野望を抱いたものの実現には至らなかった。UnixとC言語は当初、壮大なビジョンを抱いたプロジェクトではなく、余暇に取り組んだものだったが、最終的には偉大な成果となったのだ。 UnixとC言語は、コンピュータサイエンス分野における永遠の柱であり、時代を超えてその重要性を保っています。発明以来、その揺るぎない活力とほぼ完璧な保存状態は、その偉大さを雄弁に物語っています。 #p# III. Unixの混沌とした開発プロセス Unixが登場した当初、それは広く注目を集め、多くの人がUnixのソースコードを求めてトンプソンとリッチーを訪ねました。当時はオープンな時代であり、相互学習と研究の時代であり、プログラムのソースコードを共有することは当たり前のことでした。Unixのソースコードのコピーは、様々な研究所、学校、企業に流通していました。 カリフォルニア大学バークレー校には、ソースコードを入手した後、継続的に研究と改良を行い、Unix の開発を大きく前進させた Unix 愛好家のグループがあります。 この時期、Unixの開発は主に2つの流れを辿りました。1つはベル研究所、もう1つはカリフォルニア大学バークレー校でした。バークレー校の功績は目覚ましく、UnixにおけるTCP/IPプロトコルの有名な実装を担いました。このバージョンのUnixは後にBSD(Berkeley Software Distribution)と呼ばれるようになりました。 カリフォルニア大学バークレー校はかつて名声の頂点にありました。その中で最も傑出した人物はビル・ジョイでした。Vi、Csh、そしてその他数々のソフトウェアプログラムの作者であるビル・ジョイは、サン・マイクロシステムズの創設者でもあります。サン・マイクロシステムズがなければ、今日私たちが知っているようなJava言語は存在しなかったでしょう。 Unixが最初に開発された当時、ベル研究所は独占禁止法によりコンピュータ事業への参入を制限されていました。彼らはUnixの驚異的な成功を全く予想していませんでした。 1983年までに、ベル研究所の親会社であるAT&Tは複数の小規模企業に強制的に分割され、独占禁止法の適用範囲から外れました。この時、AT&TはUnixの最新バージョンであるSystem Vをリリースし、今後Unixは商用利用のみに限定され、ソースコードはオープンソースではなくなると発表しました。AT&TはUnixで巨額の利益を上げようとしていました。 BSDは大きな影響を受けました。彼らは金儲けを急ぐのではなく、オープンソース化を望んでいました。他に何もできず、カリフォルニア大学バークレー校は影響を受けたBSDのソースコードを書き直すことを決定しました。カリフォルニア大学バークレー校の卒業生数名が、BSDプロジェクトの開発に特化した会社を設立しました。しかしある日、彼らはBSDにはもはやベル研究所のオリジナルのソースコードが含まれていないと発表したのです。AT&Tはこれを受け入れず、訴訟を起こしました。 これは長引く法廷闘争となり、決着がつく前にUnixの著作権は何度も転売されました。著作権を購入した複数の企業はBSDを訴え続け、さらにそれらの企業同士が訴訟を起こし合う事態にもなりました。 騒ぎが収まった後、BSDはついに独自のUnixシステムをリリースしました。著作権の問題により、もはやUnixと呼ぶことはできず、Unixライクなシステムとしか呼べなくなりました。 Unix系システムであるBSDは、FreeBSDとmacOSの前身です。現在AppleのコンピューターやiPhoneで使用されているオペレーティングシステムはすべてBSDから開発されています。 長引く法廷闘争はBSDへの人々の熱意を失わせ、開発の絶好の機会を逃す結果となりました。FreeBSD、NetBSD、OpenBSDといった後継バージョンはすべてBSDから派生したもので、無料、オープンソース、そして優れたものでしたが、Linuxが既に存在していたため、かつての栄光を取り戻すことはありませんでした。 Unix開発プロセス図 IV. ストールマン博士のGNUプロジェクト AT&TがUnixで利益を上げようとしたとき、AT&Tだけでなく多くの企業がソフトウェアから利益を得ようとしていました。ソフトウェアの無料提供、ソースコードの公開、そして互いのソースコードから学んだり研究したりすることをやめ、という流れに変わりました。 かつてはなんて素晴らしい時代だったのだろう! 一体どうしてお金がすべてになってしまったのだろう? ある男は深い不満を抱きました。ある時、あるシステムに問題があり、修正のためにソースコードのコピーを求めたのですが、周りの人たちに嘲笑されました。 衰退の一途を辿る世界の中で、彼はこの絶望的な時代に挑戦し、オープンソースで自由なシステムを世界に復活させたいと考えました。この人物の名前を覚えておいてください。リチャード・マシュー・ストールマン博士。 ストールマン氏はベテランハッカーであり、Emacsの開発者です。EmacsとVi(前述)はコンピュータ分野における最も強力な編集ツールの2つであり、どちらが優れているかという問題は最も議論の多いトピックの一つです。議論を避けるためには、BMWのオーナーにメルセデスの方が優れているとは決して言わないようにしましょう。 長髪、髭、そしてボサボサの容姿のストールマン博士は、独身を貫いた。彼はフリーソフトウェア運動に深く関わり、フリーソフトウェア財団(FSF)を設立した。彼は野心的な壮大な計画を提唱した。GNU(GNUはUnixではない)。Unixではなく、Unixのように動作するフリーでオープンソースのシステムだ。
リチャード・ストールマン博士 GNUは当初順調に開発が進み、GLibc、GCC、GDBといった必須のオペレーティングシステムソフトウェアが着実に開発されました。「G」はすべてGnuの頭文字から取られています。「G」という名前が付けられた理由について、ストールマン博士は、面白かったことと、子供の頃に好きだった「The Gnu」という歌にちなんで名付けられたと述べています。 完全なオペレーティングシステムの開発は容易ではありません。GNUは、膨大な量のソフトウェアを完成させた後で初めて、重大な問題に直面していることに気づきました。GNUカーネルプロジェクトであるHurdは、長らく満足のいく成果を出せませんでした。カーネルはオペレーティングシステムにとって、自動車にとってのエンジンのように、なくてはならない存在なのです。 V. Linuxの誕生 1991年、リーナス・トーバルズはフィンランドのヘルシンキ大学でオペレーティングシステムのコースを受講していました。彼はまた、実験用に独自のオペレーティングシステムを開発したいと考えていました。当時、彼は既にBashやGCCといったGNUプロジェクトのソフトウェアを使用していました。GNUの影響を受け、彼は自身が開発した基本的なオペレーティングシステムカーネルをインターネットに公開しました。 このカーネルシステムはLinux、LinusのUnixです。Linux自体が名前を選んだわけではありません。Linuxは一貫して遊び心のある名前を使うのが通例です。しかし、当時の管理者がLinuxは良いと言ったので、名前が決まりました。 Linuxがオンラインで利用可能になると、大きな関心を集め、人々は徐々にインターネットを通じてLinux開発プロセスに参加するようになりました。1993年には、約100人のプログラマーがLinuxカーネルのコード開発に関わっていました。当時はインターネット時代であり、プログラマーたちは互いに知り合いであったり、直接会ったりする必要はなく、オンラインでの議論と協力を通じてLinuxを発展させていました。 1994年3月、Linux 1.0がリリースされ、Linuxはほぼ実用的なカーネルとなりました。それ以来、Linuxは成長を止めることなく、苗木から一歩一歩、そびえ立つ木へと成長していきました。 リーナス・トーバルズは子供の頃にペンギンに襲われた経験があり、Linuxのロゴにペンギンを選んだそうです。その論理が全く理解できません。QQ以外にも、Linuxはペンギンに似た会社です。
リナックス Linuxは前例のないソフトウェア開発モデルの先駆者でした。共同作業が求められ、いつでもコードが提出され、問題があれば迅速に対応されました。参加者はエリートではなく、熱心な支持者のグループでした。数え切れないほどの人々がLinuxプロジェクトに貢献したため、組織は構造化されておらず、多くの議論や討論が行われました。リーナス・トーバルズは、伝統的なリーダーではなく、頻繁にコードを書き、時には調停者としての役割も担っていました。 その後、オープンソース運動の提唱者であるエリック・レイモンドは、「大聖堂とバザール」という記事を執筆し、Linuxの開発モデルを分析しました。大聖堂を建設するには、綿密に設計された設計図、熟練した職人、そして秩序あるエンジニアリング計画が必要です。市場にいる人々のように、騒々しく混沌とした集団が大聖堂を建設できるでしょうか?答えはイエスです。なぜなら、彼らは実際にそうしたからです。 リーナスは後に、Linuxを開発した当時はFreeBSDのようなプロジェクトの存在を知らなかったと認めています。もし知っていたら、おそらくLinuxの開発を始めなかったでしょう。当時、様々なBSDシステムが訴訟の影に隠れており、それがLinuxの開発をある程度促進したのです。 当初、彼らには設計図などありませんでした。彼らは進みながら建て、人々を招き、問題が起きればすぐに解決し、時にはすべてを壊してやり直すことさえありました。厳格な組織はなく、大まかな分業体制しかありませんでした。人々は絶えず教会を利用し、様々な提案をしました。彼らが建てた教会は既に十分に立派であり、完成するまでは、彼らはそれを際限なく建て続けました。 エリック・レイモンドは特筆に値します。彼はキャリアの初期にストールマン博士と仕事をし、Emacsのコード修正にも協力しました。しかし、彼はプログラミングよりも、人前で話すことや文章を書くことに長けています。著書『伽藍とバザール』は、オープンソース文化に関する先駆的な著作です。ストールマン博士はオープンソース運動の精神的指導者であり、レイモンドはその伝道者であり理論家です。 #p# VI. さまざまなLinuxディストリビューション GNUプロジェクトがカーネルの開発に苦戦していた頃、Linuxカーネルプロジェクトが突如として現れました。まさに天の恵みだったと言えるでしょう。実際、迅速に行動を起こした人々は、ストールマン博士の苦悩に同情する暇もなく、複数のGNUプロジェクトとLinuxを統合し、新たなシステム、GNU/Linuxを生み出しました。 よし、これで誰でも使えるようになった。完全に無料のオープンソースシステムを手に入れられる。 今日、多くの人が自分が使っているシステムをLinuxと呼んでいますが、これは不公平であり、GNUの活動を無視していると言えます。正しい用語はGNU/Linuxです。
GNU/Linux が使えるだけでは十分ではありません。基本的なオペレーティングシステムに過ぎません。より効果的に使うには、多くのソフトウェアが必要です。Windows があるのに Word も Excel もブラウザもゲームもないようなものです。できることはあまり多くありません。 幸いなことに、GNU/Linuxが誕生した頃には、既に多くの優れたオープンソースプロジェクトが存在していました。これらのプロジェクトはGNUとは無関係で、個人や組織によって開発されており、いずれもフリー&オープンソースの原則を遵守していました。これらのオープンソースプロジェクトには、Apache、Perl、Python、Vim、TeXなどが含まれます。 オペレーティングシステムを構築したい人々が一斉に開発を始め、GNU/Linuxディストリビューションと呼ばれるものを生み出しました。GNU/Linuxシステムを最初に構築した企業はRed Hatで、その後、Slackware、Mandrake、Gentoo、Debian、Ubuntuなど、数多くのGNU/Linuxディストリビューションが生まれました。中にはその後消滅したものもあれば、今もなお繁栄しているものもあります。 GNU/Linuxディストリビューションは、本質的には事前に組み立てられたGNU/Linuxシステムです。GNUプロジェクトから基本ソフトウェアを選択し、Linuxカーネルを追加し、ライセンス付きのオープンソースソフトウェアやフリーソフトウェアを多数探し出し、最後にインストーラーを作成します。これで完了です。優れたディストリビューションは一般的に、より包括的で、ソフトウェアパッケージのアップデート、インストール、アンインストールが容易です。 独自のGNU/Linuxディストリビューションを構築できますか?もちろんできます!オンラインプロジェクト「Linux From Scratch」では、独自のGNU/Linuxディストリビューションをゼロから作成する方法をステップバイステップで学べます。 2002年、南アフリカの実業家マーク・シャトルワースは2000万ドルを投じてロシアの宇宙船に乗り込み、宇宙へ旅立ちました。翌年、彼はオープンソース文化の推進を目的としたCanonical社を設立し、GNU/Linuxディストリビューション「Ubuntu」を発表しました。金銭はものを言う、Ubuntuは大成功を収め、GNU/Linuxユーザーが殺到し、UbuntuはGNU/Linuxディストリビューション市場をほぼ独占しました。 V. GNU/Linuxとオープンソース文化の背後にあるもの GNU/Linuxが登場しました。まだほとんどのコンピュータのOSにはなっていませんが、誰もが利用しています。多くのインターネット企業が自社のサーバーでGNU/Linuxを稼働させています。そのリストは完全には確認されていませんが、Google、Facebook、Taobao、Baidu、Tencent、オンライン小説サイトなどが含まれています。 人々が使用するほとんどの Android スマートフォンも Linux カーネル上で動作します。 GNU/Linux の繁栄は、壮大な計画、個人の努力、そして多くの無形の力の作用によるものです。 Unix がなければ、GNU/Linux も存在しなかったでしょう。Unix は大きなインスピレーションを与えました。 C言語がなければ、GNU/Linuxは存在しなかったでしょう。C言語はシンプルで洗練されており、高水準言語と低水準言語の中間に位置するため、システムソフトウェアの開発に最適なプログラミング言語となっています。 GNU/Linuxの繁栄は、一連のUnix標準の確立なしにはあり得なかったでしょう。標準とは「馬車の軌跡を標準化し、文字体系を統一し、度量衡を標準化する」ようなものであり、秦の始皇帝は最古の標準設定者と言えるでしょう。POSIX標準への準拠は、GNU/Linuxの開発への道を開きました。 インターネットがなければ、GNU/Linuxは存在しなかったでしょう。GNU/Linuxは一人の人間によって開発されたものではなく、世界中の無数の人々の協力の成果です。GNU/Linuxなしでは、インターネットの存在は想像もできません。もちろん、GNU/Linuxはインターネットにも貢献してきました。数え切れないほどのインターネット企業がGNU/Linuxを使ってサーバーを構築し、GNU/Linuxはインターネットの繁栄に貢献してきました。 ストールマン博士の尽力なしには、GNU/Linuxは存在しなかったでしょう。彼の貢献はGNU組織の設立やEmacs、GCC、GDBの開発にとどまりません。彼の精神は、数え切れないほどの人々にオープンソース運動への貢献を促してきました。 もちろん、レイモンドの熱狂的な応援と叫びもありました。 GNU/Linuxが誕生する前から、オープンソースプロジェクトを開発していた人々や組織も存在します。ラリー・ウォールは、怠惰とレポート作成の絶え間ない頭痛からPerl言語をリリースしました。タイプライターに満足できなかったクヌース教授は、重要な研究を10年間中断し、優れた組版ソフトウェアTeXを発明しました。グイドはクリスマスの暇つぶしに、新しいスクリプト言語Pythonを開発しました…。 GNU/Linuxのリリース後、先人たちに触発され、数え切れないほどの人々がオープンソースのアイデアとコンセプトを受け入れ、オープンソース文化に浸り、オープンソースムーブメントを生み出しました。数多くの個人や組織がオープンソースプロジェクトに貢献し、PHP、MySQL、Ruby、Node.js、X.Org、Gnome、KDEなどをリリースしました。彼らはGNU/Linuxを豊かにし、オープンソースムーブメントをさらに推進し、そして今もなお他の人々にインスピレーションを与え続けています。 KDE(Kool Desktop Environment)の当初の目標は、使いやすいデスクトップシステムの開発でした。Windowsは、一日中暗い画面を見つめているプログラマーとは違い、使いやすいデスクトップ環境です。デスクトップシステムにはブラウザが必要であり、KHTMLと呼ばれる開発チームが結成されました。ブラウザカーネルを開発できる企業は世界でもほんの一握りで、KDEはそれを実現しました。その後、AppleとMicrosoftは対立し、KHTMLをベースにした独自のブラウザSafariを開発しようとしました。KHTMLのブラウザカーネルモジュールはWebkitと呼ばれています。GoogleのAndroidブラウザもWebkitをベースにしていました。 今日の iPhone と Android フォンはすべて、ブラウザに Webkit エンジンを使用しています。 GNU/Linuxの開発は、GNUのGPLとLGPL、Apacheライセンス、BSDライセンスなど、様々な著作権ライセンス契約の確立によって実現しました。オープンソースプロジェクトにおいて、誰もが独自の著作権契約を持つことは不可能ですが、確立された著作権ライセンス契約はソフトウェアのより良い流通を促進します。 オープンソースは必ずしも自由ではありません。GPLは自由を抑圧するために自由を利用していると主張する人もいます。GPLライセンスでは、GPLライセンスの下でリリースされるソフトウェアはすべてオープンソースでなければならないと規定されています。BSDライセンスとApacheライセンスは比較的寛容であり、準フリーソフトウェアと見なすことができます。 バージョン管理ソフトウェアは、GNU/Linuxの開発とオープンソース運動においても重要な役割を果たしてきました。当初、Linuxカーネルの開発では商用のバージョン管理ソフトウェアが使用されていましたが、ある日、Linus Torvaldsはそれにうんざりし、独自のバージョン管理ソフトウェアを開発しました。彼は冗談で「役に立たない」という意味のGitと名付けました。 Gitは決して役に立たないものではなく、非常に便利です。Linuxカーネルのソースコードは現在、Gitで管理されています。Gitは無料のオープンソースであり、優れたソースコードホスティングプラットフォームであるgithub.comという素晴らしいウェブサイトを生み出しました。多くのオープンソースプロジェクトが、GitHubでソースコードをホスティングすることを選択しています。 GNU/Linux は不滅です、オープンソース運動は不滅です! VI. 追記 Red Hat Linuxを初めてインストールして以来、様々なGNU/Linuxディストリビューションを試してきました。その後、GNU/Linuxとオープンソース文化に関する本を執筆したいという思いが浮かびましたが、様々な理由でその願いを叶えることができませんでした。 GNU/Linux とオープンソース運動の支持者として、この本をいつ書き終えるか分からないので、この記事を記念として書いています。 |