2012/07/09 修正
The Dawn of Haiku OS の本文の訳です(囲み記事、著者紹介、写真のキャプションはありません)。訳のおかしいところは、原文を参照ください。

Haiku OS の夜明け
いかにしてボランティアチームは素晴らしいオペレーティングシステムを復活させたか
Ryan Leavengood / 2012 年 5 月

それは 2001 年夏のことでした。コンピュータープログラマー Michael Phipps は問題を抱えていました。彼のお気に入りのオペレーティングシステム、BeOS がまさに死に絶えようとしていたのです。ソフトウェアのひとつに愛着を持つのは奇妙に思えるでしょう。しかし、Phipps やほかの多くの人々 (筆者を含む) にとって、BeOS はそれだけの価値があるものでした。それはその当時のハードウェアでとても速く動作し、クリーンで直感的なユーザーインターフェースを提供していました。また、リッチで楽しいモダンなプログラミング環境を提供していました。要するに、我々は利用できるほかのすべてのコンピュータオペレーティングシステムに比べて BeOS が非常に優れていると感じていたのです。しかし、BeOS を生み出した会社は市場で期待に応えられず、BeOS を含む資産は、競合へ売られつつありました。

新しいオーナーの元で BeOS が緩慢な、非サポートの死を迎えることを心配して、Phipps は考えられるただひとつの当然のことを行いました。つまり、BeOS をオープンソースのコードとして、完全に一から作りなおすことに決めたのです。オープンソースシステムは、彼の判断ではどの企業や人も所持していません。そのため、ビジネスが破産した、または主要開発者が辞めたというだけの理由でそれが消えることはありません。

さて、これまでプログラミングの経験がなくても、オペレーティングシステムを作り上げることが非常に大きな仕事であることは理解できるでしょう。そして、それを人々が無償で行ってくれることを期待するのは少しおかしなことです。しかし、Haiku で働いてきた多数のボランティア開発者にとっては、それは好きでしてきたことです。プロジェクトが始まってから 11 年間で、我々は 3 つの α 版ソフトウェアをリリースしてきました。そして今月、4 番目で、最後の α 版をリリースするつもりです。その後、β 段階に移行します。それは今年の終わりに出したいと希望しています。続いて、R1 として知られている最初の公式リリースを 2013 年の早い時期に出したいと思っています。

今でも、インテル x86 ベースのコンピューターに Haiku をインストールして実行できます。実行した人々の多くは、α版の Haiku でも、他のいくつかのソフトウェアのファイナルリリースのように安定しているようだとコメントしています。実際に、多くの現在進行中の代替オペレーティングシステムの中で、Haiku は Microsoft WindowsMac OS のような主流のオペレーティングシステムに挑戦するためのもっとも良い位置におそらく来ているでしょう。ユーザー、および開発者の双方とも、Haiku の実行経験から得られたものは、信じられないほど一致します。それは、BeOS と同様に、速く、反応性に優れ、効率が良いというものです。さらに、Haiku はより大手の競合と違い、最近のコンピューティングにおける困難な挑戦のひとつである、マルチコアプロセッサへの取り組みが非常に優れています。それはなぜなのか、Haiku はどのようなものになったのか、そしてコンピューター上で動作しているオペレーティングシステムが、本当にコンピューターが出すべき性能を出しているかどうかについて少し見て行きましょう。

はじめに、短い歴史から。1991 年、フランス人 Jean-Louis Gassée と Apple の元従業員数名が Be Inc. を設立しました。なぜなら、彼らは新しい種類のコンピューターを創り上げたかったからです。特に、彼らが Apple で経験した後方互換性のわなから逃れようとしていました。そこでは、新バージョンのハードウェアやソフトウェアはすべて、欠点も含めて長年のレガシーシステムを考慮する必要がありました。Be 社の最初の製品は BeBox と呼ばれるデスクトップコンピューターでした。Be 社のエンジニアたちの要求に合うオペレーティングシステムがほかに見つからなかったので、彼らは自分たちで作成しました。

1995 年 10 月にリリースされましたが、BeBox はあまり長続きしませんでした。一方、BeOS はすぐに少数ですが忠実な支持者が付きました。そしてまもなく、インテル x86 ベースの PC と Macintosh の PowerPC クローンで動作しました。ある時点で、Apple ですら、BeOS を自社のオペレーティングシステムの代替として考えていました。Be 社は、最終的にインターネット家電向けの縮小版 BeOS をリリースしましたが、それは十分ではありませんでした。2001 年に Palm は US 1,100 万ドルで Be 社を買収しました。

Be 社の販売が終了しつつあったのと同時に、Phipps は Haiku プロジェクトを立ち上げました。プロジェクトはその当時 OpenBeOS として知られていました。(プロジェクトの名称は数年後に変わりました。囲み記事の「名前の意味は」を参照ください)

プロジェクトの開始時点から、Phipps は BeOS の最後の公式リリース、R5 を再現することをプロジェクトの唯一の焦点にすることを決定していました。結果的に、これは天才のひらめきでした。オープンソース活動は、通常人々の余暇での楽しみで行いますが、しばしば、途中で失敗するか、具体的なものを何もリリースせずに横道にそれてしまいます。Haiku はこれらの結末を避けることができました。なぜなら、開発者は皆 R5 を再現するというゴールを信じていたからです。

さらに、Phipps と彼の仲間達は作業を自分たちに合うようにしてきました。オペレーティングシステム、特に、種々のレイヤーとアプリケーションが完全に一体となって動くようデザインされている BeOS のように包括的なものはとても複雑です。シリコンバレーでもっとも才能のあるエンジニアの何人かが、10 年以上にわたってソフトウェアを開発してきました。そのようなシステムをすべてボランティアのチームが自由な時間を使って再構築することはばかげた考えでした。しかしそれは、Linux がいかにして現在の様になったかということであり、また、GnuC コンパイラから会計プログラム GnuCash に至るフリーソフトウェア財団の GNU ソフトウェアにも言えます。

ケーキの層によく似て、ひとつのコンピューターシステムは、ハードウェア、ハードウェアを管理するオペレーティングシステム、オペレーティングシステム内で動作するアプリケーション、たとえば、Web ブラウザ、ドキュメントエディター、ゲームのようなお楽しみなどから構成されています。オペレーティングシステムはまた、プログラマーがハードウェアに指示をする手段ともなります。

幸いなことに、BeOS はモジュラー形式で書かれていたので、開発、テスト、そして BeOS の個々の部品をオープンソースの同等品で置き換えることは比較的簡単でした。BeOS のほんの少しの部分は、すでに Be 社によってオープンソースとしてリリースされていました。それはたとえば、TrackerDeskbar です。これらは、Windows のエクスプローラとタスクバー、OS X の Finder および Dock と同等のものです。ボランティアが最初に取り組んだコードの塊のひとつはスクリーンセーバーキットでした。それはとても単純な機能を持っていますが、それはまた多くの可動部を持っています。中でも、それは常にキーボードとマウスの活動を監視する必要があり、スクリーンセーバーの設定を適切な時に読み込む必要があり、スクリーンセーバーが終了するときはパスワードを要求する必要があります。すべての部品が確定したとき、Phipps は BeOS のスクリーンセーバーをオープンソース版と入れ替えました。そして皆が大いに驚き、喜んだように、それは動作しました。さらに重要なことは、それが、BeOS 内の個々のモジュールを入れ替えることができたことと、それが完全に互換性があることがわかったということを開発者たちに示す、コンセプトの証明であるということです。

2008 年に、我々はひとつの区切りに達しました。Haiku はすべてのソフトウェアと同じく、ソースコードで書かれています。ソースコードをコンピューターが実行できるバイナリ命令へと変換するには、それをコンパイルする必要があります。その区切りとは、我々がついに Haiku 自身の中から Haiku のソースコードをコンパイルできることでした。プログラマーはその技を「セルフホスティング」と呼びます。この段階はあらゆるオペレーティングシステムの開発で重要な意味を持ちます。それがなければ、オペレーティングシステムはほかのシステムに常に依存することになるからです。

開発が起動に乗ってくるのと同時に、Phipps は Haiku の組織的なホームの作成に取り組んでいました。それは最終的に、2003 年に非営利組織として Haiku Inc. の設立に至りました。プロジェクトの監督と寄付を得ることに加えて、Haiku Inc. は Haiku ウェブサイトのロゴの著作権と商標を保持します。もちろん、ソースコードについても保持しています。現在、Haiku ソースコードはすべて MIT ライセンスと呼ばれるものの元でライセンスされています。このライセンスは、私企業やほかのオープンソースプロジェクトを含むほとんどすべての人々に対して完全で自由なコードの使用を許可するものです。

もちろん、Haiku チームは、まだ有効な BeOS の特許を侵害しないようにする必要もありました。一般に、我々は、現在 BeOS の権利を有している日本のソフトウェア会社、Access と友好関係を維持しています。たとえば、Access 社は BeOS のドキュメントを我々のウェブサイトに置くことを許可しましたし、BeOS 技術を再現する我々の活動に異議を申し立てることはこれまでありませんでした。Access 社または我々のコードに権利を持つと考える他の企業が、我々のような小さなオープンソースプロジェクトを訴える選択をするでしょうか?ファイナンス的には、それはあまり意味の無いことでしょうし、訴えることでたくさんの悪評を生み出すしょう。しかし、我々は見守るしかありません。合衆国やその他の国での知的所有権訴訟の、現在の血迷った状況を考えると、あらゆるソフトウェアプロジェクトは法的なトラブルから完全には逃れられないとみなされるでしょう。

2007 年に、Phipps は個人的な理由のためプロジェクトを去ることを発表しました。そして新たな人々が Haiku Inc を引き継ぎました。Phipps が最初に予期していましたが、ひとりのリーダーの喪失はプロジェクトを挫けさせませんでした。筆者は現在会計を担当しており、Haiku Inc. の他の幹部と共に役員会の一員です。我々はプロジェクトの勢いを維持してきました。4 月初旬のドイツデュッセルドルフでの最近の集まりでは、Haiku 開発者は差し迫った α 版に取り組みました。

現在のところ、我々は、10 年以上前の古い BeOS アプリケーションが Haiku 上で動作できるぐらい、BeOS R5 を正確に再現してきました。プロジェクトが最初にスタートしたとき、大多数はこのような互換性は不可能であるという考えでした。そして、多くの重要な点で、Haiku は BeOS を上回ってきています。たとえば、Haiku は BeOS より多くの言語をサポートしており、その上、他の方法により、国際化をより受け入れられるようになっています。また、最新のビデオカード、より新しいプロセッサ、および無線ネットワークアクセスを扱うことができます。また、より多くのメモリーをサポートしています。

プログラムの面では、 Haiku ではアプリケーションのユーザーインターフェースのデザインがより一層簡単になっています。なぜなら、内蔵レイアウトツールにより、画面上のアイコンやその他の部品が自動で配置されるからです。BeOS では、開発者がレイアウトの詳細をひとつひとつ手で指定する必要がありました。たとえば、チェックボックス付きのボタンがあります。 コンピュータハードウェアやソフトウェアのとても早い変化のペースにも関わらず、これらや他の拡張により、Haiku はそれらについていけるのです。

それでも、疑問に思うかもしれません。Windowsや Mac OS X、沢山の種類の Linux、そして無数のモバイルオペレーティングシステムがあるのに、世界は Haiku を本当に必要としているのかと。

そうです、多くの理由から必要としています。自然界と同様に、コンピュータウイルスはモノカルチャー内で繁栄します。そして、我々の非常に多くが Windows コンピューターを使っているので、Windows のウイルスはたくさんの犠牲者を見つけます。さらに、 ひとつのオペレーティングシステムが独占していれば、その作者はソフトウェアを改良する理由がほとんどなくなります (Mozilla Firefox ブラウザとの競争は、結局、Microsoft に Internet Explorer のアップデートをおおいに促しました) 。そして、多様性は相互運用性の普及を促進します。なぜなら、多様性はソフトウェア開発者にほかのオペレーティングシステムとともにうまく動作するコードを書くことを強制するからです。オペレーティングシステムの競争がほとんどない場合、そのようなコードを書く動機はありません。

しかし、Haiku は単にオペレーティングシステムの遺伝子プールを拡大する以上のことを行います。人々が Haiku に対して気づく最初のことのひとつは、それが、Windows、OS X、Linux とまるで違うもののように感じるということです。それはユニークです。たとえば、Linux は、カーネルと呼ばれるコアの回りに基礎を置いていますが、それは最初サーバーで使うように設計されたもので、後になってデスクトップシステム用に修正されました。結果として、カーネルはときどきユーザーインターフェースの扱いが悪くなります。それは、Linux ユーザーが DVD を焼いている時やコードをコンパイルしている時のような特に負荷のかかる作業をしているときに悩ましい遅れとして経験することです。Haiku カーネルは常にデスクトップシステム向けでありました。そのため、カーネルは何が起こっても、グラフィカルユーザーインターフェースに常に優先度を与えます。

カーネルとグラフィカルユーザーインターフェースの間にあるものは、アプリケーションプログラミングインターフェース、または API として知られているものです。API はアプリケーション開発者が他のソフトウェアシステムにアクセスするために用いるものです。そして、API のデザインは、開発者と彼らのソフトウェアのエンドユーザーの双方に影響を及ぼすことができます。Haiku は API をたったひとつだけ持っています。対象的に、Linux は、たくさんの API と、同じぐらい多くのユーザーインターフェースを持っています。そのため、ひとつのバージョンの Linux から別のものへとシームレスな移行はできません。使用しているバージョンはコンピューターの画面の外観、プログラムの起動と実行方法、および他のいろんなものが非常に変更するかもしれません。それらすべては、あらゆる Linux システムで一貫して動作するソフトウェアの開発をとても難しくしています。

Haiku のすべての構成要素は、一体となって動作するように徹底的に設計されています。それには、メディアプレーヤーや Web ブラウザのようなアプリケーションを含みます。ソースコードさえも、一貫性のあるスタイルを使用しています。しばしば、開発者は本当に評価します。なぜなら、それにより、素早く把握することができるからです。Haiku のためにコードを書く開発者はそれがすべての Haiku インストール環境で動作し、同じようにふるまうことを確信できます。Haiku はオープンソースでありますが、常にただひとつのオフィシャル版だけしかありません。このすべてが結びついた結果、著しく一貫性のあるユーザー体験を提供します。

しかしながら、Haiku を真に特異なものにしているのは、その効率の良さとスピードです。筆者の 3 年前のデスクトップコンピューターでも、 Haiku はコールドスタートから 10 から 15 秒で起動します。そして、起動しているときは、たった 170MB しかRAM を消費しません。他のオペレーティングシステムと比べても、使用できる計算資源を最大化する点において卓越しています。Haiku は、ほかのオペレーティングシステムでは非サポートとみなされる古いシステム上でさえ、速くて反応性が良く感じます。なぜなら、それら古いシステムは、ほかのオペレーティングシステムの非効率性や膨張をすでに扱えないからです。

Haiku の効率の良さやスピードの多くは、BeOS 由来の直接の成果です。BeOS は最初からスレッドをフルに使用するようデザインされていました。ここでスレッドとは、コンピューター用語で一連の実行中のコードを示します。布地が多くのスレッド (thread = 糸) でできているように、オペレーティングシステムも、すべてがプロセッサ上で時間を分け合う必要があるスレッド (thread = スレッド) から成り立っています。ほとんどの場合、アプリケーションにそれぞれひとつのスレッドがあり、オペレーティングシステムのユーザーインターフェースにも同様にひとつのスレッドがあります。問題は、ユーザーインターフェースが特に複数のスレッドを必要とするということです。Windows での「応答待ち」メッセージ、そして OS X での “beach ball of death” は、我々のほとんどが多少の規則性とフラストレーションと共に経験することですが、ユーザーインターフェースにたったひとつのスレッドを使っていることの必然的な結果です。そのスレッドが作業または他の原因 (たとえば遅いネットワーク) でとても渋滞すると、アプリケーションインターフェース全体が動かなくなります。

それは BeOS 上では起こりませんし、Haiku 上でも起こりません。BeOS がその当時ほかのオペレーティングシステムの先を進んでいた (そして、Haiku がまだ同時代のオペレーティングシステムの先を進んでいる) ところは、それぞれ個々のアプリケーションがたくさんのスレッドを使っているということです。アプリケーション自体のコアはひとつのスレッドを持っています。そしてアプリケーションが作成した個々のウィンドウもスレッドをひとつ持っています。これは、コアの記述を少し複雑にしますが、結果的に、アプリケーションは遅れや固まることがほとんどなくなります。

この、高度にスレッド化されたシステムは、Haiku が、現在いたる所で使われているマルチプロセッサまたはマルチ CPU コアを素晴らしく使用できることを示しています。Haiku カーネルは、個々のスレッドがその自身のコアまたはプロセッサで動作することを許可します - たとえ、それが同じアプリケーションのスレッドであってでもです。ネットワークからのデータ取得のような、他の作業へさらにスレッドを追加することも、また簡単です。 ほかのオペレーティングシステムでのマルチコアの活用は、多くのアプリケーションが同時に動いているか、または特定のアプリケーションがそれに付け加えられた特別なマルチスレッドコードを持っている場合に限られます。しかし、このようなマルチスレッドコードは書くのが難しいので、ほとんどのアプリケーションは持っていません。

スレッドの相互作用をほとんど隠すことで、Haiku は、開発者が気にする必要のないように、マルチスレッドコードを書くプロセスを単純化します。この単純化作業を行うおおきな要素は、メッセージパッシングの活用です。ひとつのアプリケーションにスレッド A とスレッド B があり、どちらもスレッド C からデータの一部分を読みだすとしましょう。そのデータに直接アクセスする代わりに、スレッド A、B はそれぞれひとつのメッセージを渡します。それは、中央のメッセージキューに置かれ、指定された順序で配られます。そのようなメカニズムが無いと、ふたつのスレッドはスレッド C に同時アクセスしようとしてデッドロックを発生します。その状態になると、どちらのスレッドも際限なく待ってしまいます。Haiku では、メッセージはアプリケーション内、またはほかのアプリケーションにも渡せます。Haiku のメッセージパッシングコードは、上で述べたように、開発者が管理する必要としないように、スレッドのあらゆる複雑さを管理します。

BeOS がマルチスレッドを使った主な理由は、BeBox がメディアプラットホームとして考えだされたからです。BeOS のマーケティング上の別名のひとつは、実際、“the media OS.” でした。それは少し誇大広告ぎみかもしれませんが、BeOS はマルチメディアの扱いがとても得意でした。典型的な商品デモでは、1 台の BeBox は半ダースもの異なるビデオを一時に、遅れやフレーム落ち無しに再生しました。その間すっとシステムはまだ反応できる状態を保っていました。システムの効率の良さは、音声処理における低レイテンシの余地がありました。Haiku はこの分野ではまだ作業が必要ですが、多くのほかのシステムに充分先んじています。

Haiku が、ほかのオペレーティングシステムに対して持つもうひとつの利点とは、データベース風ファイルシステムの広範囲に及ぶ活用です。データベース風ファイルシステムにより、すべてのファイルにファイル自身に関するさまざまな属性を持たせられます。次に、これらの属性は牽引付けでき、ちょうど今時のデータベース内にあるようにクエリーを行うことができます。たとえば、Haiku 内の個々の電子メールメッセージは属性とともに保存されています。その属性には、表題、送信者名およびアドレス、受信者名およびアドレスといったものがあります。Tracker と呼ばれる Haiku のファイルマネージャーから、これら属性をどれでも検索できます。属性により、MP3 ファイルから曲情報を引き出すこともでき、次に、MP3 ファイルを簡単に整理し、Tracker を介して、音楽ライブラリを検索できます。Haiku のアドレスブックのエントリーは、People ファイルと呼ばれていますが、それはほとんどすべてが属性からできています。

オペレーティングシステムに電子メールとアドレス帳を管理させることは、おおきな利点を提示します。電子メールやコンタクトリストを管理するために、もはやひとつのプログラムに束縛されることはありません。肥大化した Microsoft Outlook のメールファイルから古い電子メールを取りだそうとしたことのある人なら、このアプローチの長所がわかるでしょう。電子メールを、たったひとつのプログラムからしかアクセスできないプロエタリなフォーマットに固定してきた代わりに、Haiku は好みのどんなプログラムでも使えます - 同じ電子メールの組に複数のプログラムを使うことさえできます。同様に、Haiku の People ファイルは、さまざまなプログラムで編集、管理でき、Tracker の中で編集することさえできます。ほかのオペレーティングシステムで、データベース風ファイルシステムをうまく実装しているものはありません。

その素質にも関わらず、Haiku はユーザーが期待するようになるいくつかのキー要素が欠けています。たとえば、今日の多くのオペレーティングシステムにはハードウェアアクセラレートされたインターフェースがあります。それにより、ウインドウの影、透明なウインドウ枠といった派手なグラフィックや、ウインドウの内容のサムネイルをビデオカードを使って速く、効率的に処理することができます。主流のオペレーティングシステムのユーザーは、そこから選択する非常にたくさんのアプリケーションもあります。Haiku は現在のところ、Haiku のために特に作られた少しのアプリケーションか、BeOS の残りもののアプリケーションに限られます。

そして、他のオープンソースシステムと同様、Haiku はハードウェアドライバーの不足に苦しんでいます。最新のビデオカード、プリンター、そしてその他の装置は複雑です - それら自身、小型コンピューターのようです。そして、動作のために、ドライバーと呼ばれている複雑なコード片を必要とします。ドライバーはオペレーティングシステムとハードウェアの間の橋のようにふるまいます。しかし近頃は、大変多くのハードウェアの型、ブランドおよびモデルがあるので、オープンソース開発者にとって維持していくのが難しくなっています。

幸いなことに、Haiku は Linux、FreeBSD、およびほかのオペレーティングシステムで作業している多くの開発者たちがすでに成し遂げた成果を出発点とすることができます。Haiku はすでに FreeBSD の有線ネットワーク - および無線ネットワーク - カードのドライバーを特別な変換インターフェースを通じて使用しています。また、新しい Gallium3D システムを組み込むための作業も進行中です。Gallium3D は将来 Linux 上のビデオカードドライバーとして期待されているものです。

さらに重要なことに、多くの Haiku の長所は、主要なオペレーティングシステムが恐らく対抗しえないか、少なくともすぐにはできないでしょう。Linux アプリケーションは、Haiku と同程度にマルチスレッドを利用するようにはデザインされておらず、最新のマルチコアハードウェアの利点を充分に活用できません。2 年前の OS X の Snow Leopard リリースでは、アップルは Grand Central Dispatch と呼ばれる新しいテクノロジーを追加しました。それは、アプリケーションにおける複数スレッドの使用をより簡単にするものでしたが、アプリケーションのユーザーインターフェースはまだスレッドがたったひとつだけです。なので、“beach ball of death” は生き残ります。

最新リリースの Windows 7 はその祖先に比べるとおおきな改善です。しかしそれもまだいろいろな問題があります。たとえば、広範囲におよぶインターフェースの矛盾、そして明らかな情報過多といった問題があります。コントロールパネルはそれだけでユーザーが頭痛を起こすに充分です。Windows はまた巨大です。Windows 7 Ultimate の最小限のインストールは、20 ギガバイトのストレージを消費するでしょう。Haiku についてくる多くのフリーアプリケーションを 含めたとしても、オペレーティングシステムのインストールにはたった 700MB しか消費しません - Windows 7 が要求するストレージの約 30 分の 1 です。そして、フリーでオープンなシステムであることに関しては、Windows と MacOS のどちらも決してないことです。

最後に、Haiku はあなたのパーソナルコンピューターへの異なる見方を示します。もし、ソフトウェアがバグや非互換や非効率に蝕まれるべきではないと考えるなら、もし、「アップグレード」がハードウェアを非サポートにするために、数年ごとにハードウェアを更新させられるのがいやなら、そして、速くて、反応性が良く、シンプルなオペレーティングシステムを使う考え方が爽快に新しく魅力的に感じたら、たぶん、もしかしたら、Haiku はあなたにぴったりです。

本記事は、最初 "Haiku の夜明け (The Dawn of Haiku.)" として掲載されました。 (訳注: 正式名称は、Haiku OS でなく Haiku です。)