三行で頼む
- 興味のある対象があったら気軽にオープンソースプロジェクトに参加するといいと思うよ
- コード書くだけがオープンソース開発じゃないよ
- 運が良いと(悪いと)それが仕事になるよ
はじめに
私が学生時代に(今でいうところの)オープンソース活動を始めてからそろそろ20年くらいになるんですけど、やってきたことが割とニッチなので、人に説明しようとしても前提知識が共有されてなくて難しいことが多いんですよね。私がメインフィールドとしていたのがUNIXの周辺のため、Windowsをテリトリーとしている人への説明は特に苦労します。これはオープンソース活動に限らず現在の本業もなんですけど。
というわけで、こうやって誰でも読める場所に書いておけば、説明を求められたときにURLを示すだけで済むかなー、なんて思うわけです。基本的に自分のためのメモみたいなもんですが、まあ、こういうオープンソースへの関わり方もあるんだ、というような話として読んでもらってもいいんじゃないかと思います。今回は1997年ごろのX-TrueType Serverプロジェクトのお話。
背景
私が大学の研究室に配属になったのが学部3年の1994年の末から1995年の頭ごろなんですが、当時はまだWindows95は出ておらず、世間一般にはインターネットというものが普及していない時代でした。1995年の末にはWindows95が出て、家庭にも徐々に普及し始めますが、それより少し前のこの頃は、企業の研究開発職、あるいは大学の電子系や情報系の学科にいないとなかなかインターネットに触れる機会がなかったというような状態で、私は世間より一足先にインターネットに触れていた最後の世代と言えます。
研究室に配属になると、SUN Microsystems社のSPARCStationというブランドのUNIXワークステーションが並んでいました。UNIXはもともとテキストベースのシステムとしてスタートしたオペレーティングシステムであり、GUIを実現するためのウィンドウシステムはOSとは独立に後付けで搭載される形でした1。そんな状況だったため、80年代末ごろにはさまざまな企業や研究機関がそれぞれ思い思いに設計開発したウィンドウシステムが存在していたのですが、95年ごろには既にXウィンドウシステムがUNIX界のデファクトスタンダードとして君臨していました。XウィンドウシステムはMITが中心となって80年代中ごろに開発したもので、この文章を書いている現在でも、LinuxディストリビューションのほとんどがGUIとしてXウィンドウシステムを採用しており、非常に息の長いシステムとなっています。また、Xウィンドウシステムは最古のオープンソースソフトウェアの一つでもあります。もっとも、当時はまだオープンソースという言葉はありませんでしたけど、この文章では面倒くさいので、時系列は無視してオープンソースと呼ぶことにします。現在メジャーなオープンソースライセンスの一つであるMITライセンスは、もともとXウィンドウシステムの配布条件を記したものでした2。
このXウィンドウシステムの上で動いていたアプリケーションの一つにNCSA Mosaicというウェブブラウザソフトウェアがありました。Mosaicは現代的なウェブブラウザの原型となったソフトウェアです。これより前のブラウザがCUIに毛が生えたようなものだったのに対し、Mosaicでやっと現在のブラウザと同様に、さまざまなサイズの文字や画像を一つのウィンドウの中に配置して表示できるようになりました。また、95年頃には既に、Mosaicを作った人々がNetscape社を起業して、Netscape Navigatorもリリースされていました。しばらくの間、私がウェブサイトを見る環境は、SPARCStationのXウィンドウシステムの上で動いていたMosaicやNetscape Navigatorでした。
ウェブブラウザにはさまざまな大きさの文字が表示されます。ところが、当時のXウィンドウシステムは基本的にビットマップフォントを使用していました3。ビットマップフォントは、その名の通り、各文字をモノクロのビットマップ画像ファイルとして表現したような形式のため、あまり拡大や縮小には向いていません。無理に拡大しようとすれば、元のビットマップ表現がそのまま拡大されてギザギザになってしまい、あまり見た目が良くありません。それでも、英数字のためにはさまざまなサイズのフォントがあらかじめ用意されていたので、文字の大きさが変わってもそれなりに綺麗に表示できていたのですが、当時のXウィンドウシステムに標準されていた日本語フォントは14ドット、16ドット、24ドットの3サイズだけでした。そのため、Xウィンドウシステム上でブラウザを動かしても、日本語のページの文字の見た目は残念なものになりがちでした。
一方、Windowsには拡大や縮小に向いたアウトライン形式のTrueTypeフォントが採用されていました4。アウトラインフォントとしては、TrueTypeフォントよりも前からPostScriptシステム用のType1フォントなどが存在していたのですが、これは高価なものでした(現在でも出版向けクオリティのType1フォントは高価です)。ところが、WindowsがTrueTypeフォントを採用してからは、安価なTrueTypeフォントが各社から発売されるようになりました。また、あえてフォントを買わずとも、日本語版のWindowsには最初からMSゴシックとMS明朝という二つの日本語フォントが搭載されていたため、少なくともXウィンドウシステムよりは、デフォルト状態でマシな表示ができました。
さてこのように、当時のXウィンドウシステムは、ウェブブラウザという新しいアプリケーションを動かすためにはフォントの表現力が欠けていました。しかし、Windowsの台頭にともなって安価なTrueTypeフォントがいくつか出てくると、TrueTypeフォントをXウィンドウシステムでも使えないかと考える人々が出てきました。Xウィンドウシステムはオープンソースソフトウェアですから、ソースに手を入れることが可能です5。また、幸いなことに、TrueTypeフォントのファイルフォーマットも公開されていました。そのため、96年から97年ごろになると、TrueTypeフォントを読めるオープンソースのライブラリが出てくるようになりました。
VFlibとX-V
角川裕次さんによって作られたVFlibは、TrueTypeフォントだけではなく、アウトラインフォント一般を扱うためのライブラリです。VFlibはXウィンドウシステムとは独立した存在であり、このライブラリを使用するためには、各アプリケーションがそれぞれ個別に対応する必要がありました。ところが、1997年になると、このVFlibをXウィンドウシステムのフォント機構そのものへと組み込んだX-Vという仕掛けが高木淳司さんによって作られました。これにより、あらゆるアプリケーションでアウトラインフォントを使用することができるようになります。そこで、XウィンドウシステムでTrueTypeフォントを使おうという機運が、当時の一部コミュニティで高まりました。
FreeTypeとX-TrueType Server (X-TT)
一方同じころ、TrueTypeフォント専用6のライブラリとしてDavid Turnerさんによって作られたのがFreeTypeです。VFlibは高機能な半面、vfontcapという設定ファイルを書く必要があって煩雑だという側面がありましたが、FreeTypeはシンプルな分、設定らしい設定もなく使うことができました。FreeTypeもXウィンドウシステムとは独立した存在だったため、各アプリケーションが個別に対応する必要があったのはVFlibと同様です。前述したX-Vにインスパイアされて、FreeTypeをXウィンドウシステムのフォント機構に組み込んだのが、渡邊剛さんによって1997年に作られたX-TrueType Server(X-TT)という仕掛けです。
既にX-Vがあったのだから、あえてFreeTypeで同様の物を作る必要はなかったんじゃないか、という考え方もできますが、前述したとおり、VFlibにはvfontcapという設定ファイルが必要で、これに加えて、Xウィンドウシステムの側でもfonts.dirというフォント設定ファイルが必要だったため、なかなか煩雑でした。一方、X-TTの場合にはこれがfonts.dir一本に統一できたため、使用するフォントがTrueTypeフォントだけであれば、こちらのほうが簡便に使うことができました。
私とX-TTの関わり
ここまでが背景の説明で、ここからが本題。本題の方が短い。
X-TTが登場した1997年ごろの私は修士2年で、就職先も決まって後は修論を書けば修了というような状況でした。平たく言えば、修士論文書きの逃避行動としてX-TTに関わるようになったような感じですね。
私が当初行った作業は、X-TTを少し導入しやすい形にしたりとか、その程度のことでしたが、その頃は、いろんな人々がX-TTへの改良をしてパッチを投げたりしていたため、私は、じきにそれらを取りまとめて配布物を作成するリリースエンジニアリングのようなことをするようになりました。
そのような経緯なので、コード書きという観点では、X-TT全体に占める私のコードはさほど多くはありません。私の書いたコードで一番大きい部分は、TTCapというフォント設定のためのad hocな表記法くらいでしょうか。オープンソースプロジェクトではだいたいコードを書きたがる人間がほとんどなので、ドキュメント作成やリリースエンジニアリングを行う人間は不足しがちです。オープンソースプロジェクトへコミットするにはこういう方法もあるんだよ、という話として覚えておくといいかもしれません。
その後、XFree86プロジェクトへX-TTをマージしたりする作業にも携わりましたが、これについてはまたの機会ということで。私はXFree86へのマージを最後にX-TTを離れ、後をAfter X-TT Projectへと託すことになりました。
その後
この記事を書いている現在、私はWindows向けXサーバの開発を仕事としているわけですが、そのきっかけとなったのがX-TTなので、何だかんだで20年近く前のオープンソース開発への参加で15年以上飯を食ってきたということになりますわね。まさか、2010年代にもなってXウィンドウシステムの仕事をしているとは思わなかったようん。
脚注
-
「GUIを実現するためのウィンドウシステム」 ― この辺からして、WindowsやMacのように、ウィンドウシステムが最初からOSと一体化しているシステムしか知らない人々に説明しようとすると少々面倒くさい部分なのです。 ↩
-
「MITライセンスは、もともとXウィンドウシステムの配布条件」 ― Athena? 知らない子ですね。 ↩
-
「Xウィンドウシステムは基本的にビットマップフォントを使用」 ― 一応、英数字(いわゆる1バイト文字コード)ではType1などのアウトラインフォントも利用できました。 ↩
-
「Windowsはアウトライン形式のTrueTypeフォントを採用」 ― 念のため書いておくと、Windowsはビットマップフォントも搭載しています。 ↩
-
「Xウィンドウシステムはオープンソース」 ― 実際には、オープンソースで配布されていたソースを元に各ベンダが自社のハードウェアに対する対応コードを追加した上でバイナリ配布していたため、そんなに話は簡単ではありませんでしたが。 ↩
-
「TrueTypeフォント専用」 ― 現在のFreeTypeは、TrueTypeフォント以外にも多くのフォント形式をサポートしています。 ↩