小山哲志のコーディング天国

技術の興廃を恐れるな

小山哲志
株式会社ビート・クラフト
シニア・エンジニア

2008/8/6

 私はいまでこそWeb開発を本業にしていますが、本格的にプログラミングを始めてから20年以上、さまざまなOS上でいろいろな技術を用いてプログラム開発をしてきました。もちろん世の中には私よりももっと多くのプログラミング経験をしている方も多いでしょうが、1つの例として私が魅了されてきたいろいろな技術について書いてみたいと思います。

 UNIXとの出合い

 大学を4年間で卒業できずにめでたく(?)留年して、余った時間でプログラミングのバイトを始めたのが、私が本格的にコンピュータにのめり込んだきっかけとなりました。

 そのときに初めてUNIXワークステーションを触り、プログラミングの楽しさに没頭していきました。バイト先にはアーデントコンピュータのTitan(日本の販売はクボタコンピュータ)とSONY NEWSが入っていました。

 Titanはベクトルプロセッサを内蔵した3Dグラフィックスワークステーションで、OSは確かSVR3にBSD拡張が入ったもの、ウィンドウシステムにX11R2が採用されていました。3DライブラリとしてDore(どーれ)というものが用意されており、これを使って3DCG画像を生成するプログラムを作成するバイトでした。

 なにせ本格的なCプログラミングも初めてですし、UNIXを触るのも初めてでしたので、たくさん技術書を買い込んで片っ端から読みまくって勉強したものです。DoreはCのAPIですが、オブジェクト指向のライブラリとなっており、内部構造はライブラリの外には見えないようになっていました。

 そこで英語のドキュメントと格闘しながら山のようにサンプルプログラムを作成し、APIの細かい使い方を手探りで調べていきました。現在でもよくあることですが、ドキュメントに書いてあるとおりにライブラリが動作するとは限らず、正常に動作する条件やうまく動作しない場合の回避方法などを見つけ出すには、とにかくたくさん試してノウハウをためるしか手段がありませんでした。

 いま考えると結構泥臭い仕事でしたが、当時はすごく楽しくて、そこでプログラミングの楽しさに味を占めた私は、ソフトウェア開発者としての人生を歩んでいくことになるのです。

 Sun NeWS

 さて、その後無事に卒業できた私は、ソフト開発会社に入って仕事としてプログラム開発をすることになりました。MS-DOS上での印刷業向けCADの開発です。ちょうどPC-9801シリーズの80386への移行と重なったので、アプリケーションの基盤となっていた8086アセンブリ言語で書かれたライブラリを80386ネイティブモード用に移植する仕事などをしました。

 3年弱で別の会社に転職し、再びUNIXでのアプリケーション開発にかかわったときに出会ったのがNeWSというサン・マイクロシステムズのウィンドウシステムです。

 いまでこそUNIX系OSのウィンドウシステムはX Window System一色ですが、当然ながら最初からそうだったわけではありません。サンはX以前にもSunViewという独自のウィンドウシステムを持っていましたし、日本でも京都大学、オムロン(当時は立石電機)、アステックがGMWというウィンドウシステムを共同開発していました。

 その中でもNeWSは、基本モデルにPostScriptを採用したかなり異色なウィンドウシステムでした。現在はJavaのキーマンとして有名なJames Goslingがメイン開発者としてかかわっています。PostScriptは1984年にアドビシステムズが開発したページ記述言語で、プリンタの高機能な描画エンジンとして作られたものです。

 サンはPostScriptのプログラミング言語としての側面に目を付けて、描画モデルのみだったアーキテクチャを拡張し、イベントモデルやウィンドウオブジェクトを追加してウィンドウシステムを作り上げてしまいました。そこでは基本はベクタベースのPostScriptのグラフィックスモデルの特長を生かして、任意の形状のウィンドウや縮小・拡大・回転が自由に行えるウィンドウを作ることさえ可能でした。

 以前の仕事でPostScriptのプリンタドライバを書いたことがあったのでPostScriptには親しんでいましたが、ウィンドウシステムのイベントハンドラをPostScriptで記述するのは最初すごく違和感があったものです。

 その後SunOSの標準ウィンドウシステムはOpenWindowsという名称で、X11とNeWSのハイブリッドなウィンドウサーバが搭載されました。OpenWindowsではX11とNeWSの両方を使用するプログラムを動かすことが可能で、当時の所属会社では出版社向けの雑誌紙面デザインシステムをその技術を使って開発していました。比較的単純な描画機能しか持たないX11の描画モデルを、NeWS部分を使用して補うことで、写真画像の縮小、拡大、回転やフォントの高速描画などを行っていました。

 サンはその後NeWSを捨て、アドビからDisplay PostScriptのライセンスを受けてX11の拡張として組み込んで自社のウィンドウシステムとしています。これは現在のSolarisでも使用されています。

 余談ですが、当時UIのルック&フィールの分野でも、サンやAT&Tが推すOPEN LOOKOSF陣営(DEC、HP、IBMなど)が推すMotifの競争がありました。私は両方のデザインガイドを読みましたが、OPEN LOOKの方がポリシーが明確で優れているように思えました。

 しかし、実際に一般に広く普及したのはMotifの方です。そのMotifも現在では見る影もなくGNOMEに取って代わられているわけですが(笑)。

 Apple QuickDraw GX

 先ほど紹介したX11/NeWSで作成したデザインシステムを、今度はMacで実現するというプロジェクトが立ち上がりました。そこで白羽の矢が立ったのがQuickDraw GX(QDGX)というAppleのグラフィックスエンジンです。

 これはその当時のMac OSの基礎になっていたQuickDrawというグラフィックスエンジンを、ゼロから設計し直し大幅に機能拡張したもので、ベジェ曲線や座標変換行列などモダンなグラフィックス機能をサポートしていました。特に世界中のあらゆる言語の文章表示を可能にすべく練り込まれたフォントレンダラとテキスト表示エンジンは、当時として最高峰のものであったと思います。

 以前は数百万円したサンワークステーションと同じかそれ以上のことが、数十万円のMacでできるようになったのです。ハードウェアの進化と低価格化がものすごい速さで進行していた時代でした。

 QDGXを用いたデザインシステムは無事に完成し、QDGXの機能を使い尽くしたアプリケーションが多数出てくるのを個人的に楽しみにしていました。しかし、そのころのAppleは迷走を続けており、QDGXがMac OSの標準グラフィックスエンジンになる日はついに来ませんでした。

 QDGXは1997年にリリースされたMac OS 8から標準リリースにも含まれなくなり、同年のAppleのNeXT買収によりスティーブ・ジョブスが復帰したことで、NEXTSTEPが次期Mac OSの中核となり、当時開発されていたMac OS上の新機能のほとんどはその命運を絶たれたのです。ただし、当時開発された技術は、形を変えて現在のMac OS Xにも受け継がれています。

 BeOS

 1995年に一般販売されたBeBoxとそのOSであるBeOSは、私の興味を大いに刺激しました。

いまのコンピュータがハードウェアの性能を引き出せていないのは、過去の資産との互換性を重視するあまり、幾層もの互換レイヤがOSに被さっているからだ。互換性をいったん白紙にして、ハードウェアの性能をフルに引き出すOSとAPIを用意すれば、現在のコンピュータでできることは大きく広がる

というBeOSの思想は、当時のWindowsやMac OSの複雑な内部構造に触れたエンジニアならば非常に納得のできる話でしょう。

 私も発売されたBeBoxを早速注文して、BeOSと戯れ始めました。C++のクラスライブラリがそのままOSのAPIとなっており、C++でうまく抽象化されたマルチスレッド前提のメッセージングシステムをすべての基盤に置いているところなどもよくできていました。

 BeOSに関してはMLで知り合った仲間たちとユーザーグループを結成し、BeaConというイベントを開催して、宣伝・布教活動をしました。このころから、友人に「小山が好きになる技術は必ず廃れる」と冗談で揶揄(やゆ)されるようになります。その友人がからかうにはBeOSもその例に漏れず必ず没落するというわけです(実際にこれは当たってしまうわけですが)。

 BeBoxは思うようには売れず、Beのビジネスはなかなか軌道に乗りませんでした。それに合わせてBeのビジネスはどんどん変遷していきます。

 まず、BeOSをPowerMacで動作するようにし、BeBoxの販売を中止しました。その後、Intel PC版のBeOSをリリースしてOSベンダとしての地位を確立しようとしましたが、やはり予想どおりには売れなかったようです。最後には、BeOSを組み込み用途向けのインターネット専用OSとして売り込んでいましたが、それも実を結ばず2001年にPalmに技術資産を売却する形でBeは解散しました。

 ちなみに、現在私が所属しているビート・クラフトはBeOS好きの仲間数名+αで立ち上げた会社です。BeOSがなければいまの会社もなかったことを考えると、BeOSは私の人生に大きな影響を及ぼしているといえます。

 好きになったらしょうがない、後は突き進むだけ

 こうやって私のプログラミング遍歴を振り返ってみると、結果的に主流とはならなかった技術に魅了され、のめり込んできたことが数多くありました。上記の例はすべてではなく廃れた技術を選んで紹介している部分もあるので、もちろん現在主流となっている技術にも多くを学んできています。

 また、どのような技術も“はやり廃り”というものから逃れることはできないので、いまとなっては廃れてしまった技術に深くコミットした経験は私に限らず多くのエンジニアが持っていることでしょう。

 ある技術に魅了されるにはそのときどきの理由があるわけなのですが、その時点では廃れるかどうかなんてもちろん予測できません。しかも廃れてなくなってしまうかどうかは、技術そのものの優劣とは実はあまり関係ありません。

 これまでの数多くの廃れた技術を見渡しても、マーケティングや開発者へのアピールなど、技術そのものではない取り組みの方により強く影響を受けているように感じます。さすがにいまでは勘違いする人はいなくなったと思いますが、素晴らしい技術だから将来にも確実に残っていくだろうと考えるのは大きな間違いです。

 だからといって、大手がやっている技術だから、現在主流の技術の延長線上にあるから大丈夫、と安易に考えるのはどうでしょうか。ある特定分野に視野が限定されると、より大きな全体の動きが見えなくなるのはよくあることです。

 本当に斬新な技術は、既存の流れからはまったく切り離された場所から生まれてくることも珍しくないので、既存技術の枠組みでしか物事をとらえない状態だと、せっかくのエキサイティングなチャンスを見逃すことになります。

 新しい技術を生み出したエンジニアの思いを確実につかみ取ることが同じエンジニアとして大事なことであり、なにより自分自身楽しんで開発に打ち込めることにつながるのではないでしょうか。

 たとえその技術が将来廃れたとしても、そのときに培った考え方や方法論は別の機会にいくらでも生かすことができます。技術にほれ込んで熱中してプログラミングしたことは、必ずや自分に対する大きな自信となって返ってくると思います。自分が魅了されたという事実をまず重要視して、とことんまでその技術と付き合ってみることはエンジニアとして大きく成長するきっかけとなると私は考えます。

 本稿を読んでいるあなたが、技術屋魂を奮わせる新技術と出合えることを祈っています。

Coding Edgeフォーラム トップページ

 Coding Edgeお勧め記事
いまさらアルゴリズムを学ぶ意味
コーディングに役立つ! アルゴリズムの基本(1)
 コンピュータに「3の倍数と3の付く数字」を判断させるにはどうしたらいいか。発想力を鍛えよう
Zope 3の魅力に迫る
Zope 3とは何ぞや?(1)
 Pythonで書かれたWebアプリケーションフレームワーク「Zope 3」。ほかのソフトウェアとは一体何が違っているのか?
貧弱環境プログラミングのススメ
柴田 淳のコーディング天国
 高性能なIT機器に囲まれた環境でコンピュータの動作原理に触れることは可能だろうか。貧弱なPC上にビットマップの直線をどうやって引く?
Haskellプログラミングの楽しみ方
のんびりHaskell(1)
 関数型言語に分類されるHaskell。C言語などの手続き型言語とまったく異なるプログラミングの世界に踏み出してみよう
ちょっと変わったLisp入門
Gaucheでメタプログラミング(1)
 Lispの一種であるScheme。いくつかある処理系の中でも気軽にスクリプトを書けるGaucheでLispの世界を体験してみよう
  Coding Edgeフォーラムフィード  2.01.00.91


Coding Edge フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

>

Coding Edge 記事ランキング

本日 月間