
ジョン・カーマックという名前を聞いたことはあっても、「具体的に何をした人なのか」をちゃんと説明できる人は意外と少ない。DoomやQuakeを作ったゲームプログラマー、という認識で止まっていると、彼の本質的な面白さを取りこぼす。
カーマックが残したのはゲームではなく、制約の中から最大を引き出す方法論だ。当時のハードウェアでは「不可能」とされていた3D描画を実現し、VRが夢物語だった時代にOculusのCTOとして実用化を牽引し、ロケットまで自分で作った。その一貫した動機は何だったのか、主要な仕事と逸話を追いながら問い直してみる。
ハードウェアを「騙す」ことから始まった
ジョン・カーマックは1970年、ミズーリ州カンザスシティ生まれ。幼い頃からコンピュータへの執着は異常なほど強く、自分のマシンを手に入れられなかった少年時代、彼は裕福な地区の学校に忍び込もうとした。使った道具はテルミットとワセリン。鍵を溶かして侵入しようとしたのだ。当然捕まり、少年院で1年を過ごすことになる。
このエピソードは「不良少年の武勇伝」ではなく、彼の問題解決スタイルの原型として読める。ルールや前提を所与のものとして受け入れず、「どうすれば目的を達成できるか」だけを考える。その姿勢は、後のプログラミングにそのまま引き継がれた。
釈放後、カーマックはミズーリ大学カンザスシティ校でコンピュータサイエンスを学ぶが中退。契約プログラマーを経て、ルイジアナ州シュリーブポートのSoftdiskに入社する。そこでジョン・ロメロ、トム・ホール、エイドリアン・カーマック(血縁関係なし)と出会い、夜な夜な会社の機材を借りて実験的なコーディングに没頭した。この深夜セッションから生まれたのが『Commander Keen』であり、1991年のid Software創業へとつながる。
1992年の**『Wolfenstein 3D』**は、当時のPCゲームの常識を根底から覆した。カーマックが採用したのはレイキャスティングという手法だ。プレイヤーの視点から放射状に「光線」を飛ばし、壁との交点を計算することで、3Dに見える2.5D空間を高速に描画する。本物の3Dではないが、プレイヤーには3Dに見える。ハードウェアを「騙す」発想だ。
Wolfenstein 3Dは商業的にも大成功を収め、各クリエイターに月約12万ドルのロイヤリティをもたらした。大学中退のプログラマーが21歳で富裕層の仲間入りをしたわけだが、カーマックはそこで立ち止まらなかった。
翌1993年の**『Doom』**では、セクターベースのレンダリングを実装し、天井と床の高さを変えられるようになった。空間の立体感は格段に増し、Doomのリアルな没入感は静止したままプレイしているユーザーが乗り物酔いを訴えるほどだったという。「ゲームとしての面白さ」と「技術的な達成」が、この時点ですでに不可分に結びついていた。
「速さ」への執着と、あの逆数平方根
1996年の『Quake』、そして1997年の『Quake II』の時代になると、カーマックの「速度への執着」はコードの隅々にまで浸透していた。その象徴として語り継がれるのが、Quake IIIのソースコードに含まれていたFast Inverse Square Rootだ。
float Q_rsqrt(float number)
{
long i;
float x2, y;
const float threehalfs = 1.5F;
x2 = number * 0.5F;
y = number;
i = * ( long * ) &y; // evil floating point bit level hacking
i = 0x5f3759df - ( i >> 1 ); // what the fuck?
y = * ( float * ) &i;
y = y * ( threehalfs - ( x2 * y * y ) ); // 1st iteration
return y;
}
コメントに「evil floating point bit level hacking」「what the fuck?」と書いてある時点で、このコードの異常さが伝わるだろう。浮動小数点数のビット表現を整数として操作し、ニュートン法の1回反復で逆数平方根の近似値を高速に求める。当時のFPUは除算が遅く、3Dグラフィクスのライティング計算で頻繁に必要となる逆数平方根をゲームループの中で愚直に計算していては話にならなかった。
ただし、このコードはカーマック本人が書いたものではない可能性が高い。Quake IIIのコードベースに含まれていたことでカーマックの作として広まったが、起源については諸説あり、Silicon Graphicsのエンジニアたちが関わっていたという説が有力だ。カーマック自身も著者ではないと述べている。
それでもこのコードが「カーマックの時代の産物」として語られるのは、id Softwareのコードベース全体がこの種の極限最適化で満ちていたからだ。速度への執着は美学ではなく、実用上の必然だった。ゲームループは1秒間に何十回も回る。1回の計算が数マイクロ秒遅ければ、それが積み重なってフレームレートを破壊する。
「Sometimes, the elegant implementation is just a function. Not a method. Not a class. Not a framework. Just a function.」という言葉は、抽象化の層を重ねることへの根本的な懐疑を示している。クラスもフレームワークも、それ自体がオーバーヘッドだ。問題を解くのに必要な最小の構造だけを使う。カーマックにとって「遅いコードは動かないコードと同じ」だった。
Quakeが変えた「当たり前」とオープンソースの哲学
1996年の『Quake』は、それ以前のゲームとは根本的に異なるものだった。Wolfenstein 3DもDoomも、厳密には「本物の3D」ではない。壁は常に垂直で、カメラは上下に動かせず、空間は2Dマップの延長線上にある。Quakeで初めて、プレイヤーは完全な3D空間の中に置かれた。
技術的な核心はBSPツリー(Binary Space Partitioning)と動的ライティングの組み合わせだ。BSPツリーは3D空間を再帰的に分割し、描画順序を効率的に決定する。動的ライティングにより、爆発が周囲を照らすという演出がゲームで初めて実現された。
そしてQuakeにはもう一つ、技術以外の側面で重要な出来事があった。ソースコードが盗まれ、地下コミュニティで流通したのだ。あるプログラマーがそのコードを使ってLinux版を作成し、パッチをカーマックに送ってきた。法的措置を取る代わりに、カーマックはそのパッチを公式Linux版の基礎として採用した。
「コードを共有することは正しいことのように思える。我々にとってのコストは小さいが、多くの人々に時として非常に重要な形で利益をもたらす」とカーマックは語っている。この哲学に従い、彼はid Softwareの主要エンジンをGNU General Public Licenseの下で順次オープンソース化していった。
この決断が後世に与えた影響は小さくない。公式Linux版の存在がLinux上でのゲーム開発の先例を作り、ソースコードへのアクセスがMOD文化を加速させた。id Techエンジンのコードは次世代のゲームプログラマーたちにとって最良の教科書になり、商業ゲームのエンジンをGPLで公開するという行為は当時としては異例で、業界の慣行を変えた。
ロケット、VR、そして「組織」との戦い
2000年、カーマックはゲーム開発の傍らでArmadillo Aerospaceを設立した。民間宇宙飛行を競うANSARI X Prizeに挑戦し、2008年にはレベル1の「ルナー・ランダー・チャレンジ」で35万ドルを獲得している。資金は主にカーマック自身が出し、チームは小規模で、実験と失敗を繰り返しながら開発を進めた。
2013年、カーマックはid Softwareを離れ、Oculus VRのCTOに就任した。VRヘッドセットの試作品にストラップをガムテープで貼り付け、センサーをホットグルーで固定してコードを書いた、という初期の開発エピソードが残っている。翌2014年にFacebookがOculusを20億ドルで買収した後も、彼はVR技術の開発を続け、Oculus Rift、Rift S、独立型ヘッドセットOculus Questの開発を主導した。モバイルVRの最適化は、まさに「制約の中で最大を引き出す」カーマックの得意領域だった。
しかし2022年末、カーマックはMetaを去る。その退職時のメモが公開され、大きな反響を呼んだ。
「We have a ridiculous amount of people and resources, but we constantly self-sabotage and squander effort」(私たちは馬鹿げた量の人員とリソースを持っているのに、常に自己妨害し、努力を無駄にしている)。続けてこう書いている。「I have never been able to kill stupid things before they cause damage, or set a direction and have a team actually stick to it.」(ダメージを与える前に愚かな取り組みを止めることも、方向性を定めてチームをそこに留めることも、一度もできなかった)。
問題の本質は「人が多すぎること」ではなく「意思決定の遅さと方向性のブレ」にある、というこの指摘は鋭い。リソースの豊富さが、かえって集中を妨げる。制約のない環境でこそ、カーマックは最も苦しんだ。
「泥の中で考える」という方法論
カーマックの思考スタイルを一言で表すなら、「真空の中でひらめきを待たない」ということだ。
「Great ideas don't come from eureka moments in a vacuum but from being down in the mud working on the problems」(偉大なアイデアは真空の中でのひらめきから生まれるのではなく、問題に取り組みながら泥の中にいることから生まれる)。この言葉は、彼の開発スタイルをそのまま説明している。
カーマックは小さなステップの積み重ねを、機械学習の勾配降下法に例えている。「Little tiny steps using local information winds up leading to all the best answers.」グローバルな最適解を一発で狙うのではなく、今手元にある情報で最善の一手を打ち続ける。その積み重ねが、結果として大きな革新になる。
自分のアイデアに対しては「I try to break my own ideas as quickly as possible. If an idea survives my own rigorous internal critique, it might be worth pursuing.」と語っている。仮説を立てたら、まず自分で壊しにかかる。どちらの実装が良いか迷ったときは「do it both ways and see which works better」、議論より実装で決める。機能追加のコストについては「The cost also includes the addition of an obstacle to future expansion」と言い切る。実装時間だけでなく、将来の拡張を阻む障害のコストまで含めて考える。
ゲームエンジン、ロケット、VR、そしてAGI。Meta退職後、カーマックは汎用人工知能の研究に転じた。一見バラバラに見えるが、「現時点で最も難しい問題に向かう」という選択基準は一貫している。次の制約がどこにあるのか、本人はまだ探し続けている。
株式会社ホコサキは、山口県宇部を拠点にWeb制作・業務システム開発・AI活用支援・DX推進に取り組んでいます。「制約の中で最善を引き出す」エンジニアリングの姿勢を大切にしながら、地方企業の現場に寄り添った開発支援を行っています。ご相談はお問い合わせページからどうぞ。

