世界を動かす技術を、日本語で。

ジョン・カーマックのメタにおけるカスタムXR OS構築への反論

概要

  • John Carmackによる ソフトウェア開発 に関する意見
  • AI開発 や大規模プロジェクトに対する考察
  • 効率的な開発手法 の重要性強調
  • 大規模チーム小規模チーム の違い
  • 成功するための 実践的アプローチ 提案

John Carmackによるソフトウェア開発の現実

  • AI開発 や他の 複雑なプロジェクト において、現実的な開発手法の重要性強調
  • 大規模チーム が複雑なシステムを構築する際、しばしば 非効率的 になりがち
  • 小規模チーム や個人による開発の方が、 柔軟性効率性 に優れる場合が多い
  • 膨大なリソース予算 を投入しても、必ずしも優れた成果に結びつかない現実
  • 実際に動作するもの を素早く作り、そこから改良していくアプローチの有効性

効率的な開発手法とチーム構成

  • 最小限の人数 でプロジェクトを進めることで、 意思決定の迅速化開発速度の向上 が期待できる
  • 大規模チーム では、 コミュニケーションコスト管理負担 が増大しやすい
  • 現場で動いているプロトタイプ を重視し、理論や計画よりも 実践 を優先
  • AI開発 においても、 シンプルな構成実験的アプローチ が成功の鍵となる
  • 大規模プロジェクト でも、まずは 小さく始めて から拡張する戦略が有効

成功するための実践的アプローチ

  • 完璧な設計理想的な計画 に固執せず、 動くもの を早期に作成
  • 試行錯誤 を繰り返しながら、 現実的な課題 を解決
  • チームサイズリソース配分 を常に見直し、 最適化 を図る姿勢
  • AIやソフトウェア開発 の現場で、 実用主義 を重視することの重要性
  • John Carmack 自身の経験に基づく、 効率的な開発文化 の提案

Hackerたちの意見

カスタムOSの本当の利点って、Linuxディストリビューションに対して何なの?OSはプロセススケジューリングやプログラム管理とかをやるでしょ。確かに、VRヘッドセットが遅くなったりクラッシュしたりするのは嫌だけど、いくつかのLinuxディストリビューションは実績があって安定してるし、速いから、普通のプログラムを速くて信頼性のあるもの(例えば、カメラの動きやパススルーはRTLinuxを使っていて、形式的に検証されたり広範にテストされたフェイルセーフがある)を書けばそれで十分じゃない?

自分で答えちゃったんじゃない?実際の違いはなくて、記事が増えたり、お金がかかったり、盛り上がりがあるだけ。

チェーンの後半のツイートを基に考えると、カーマックがフォベイテッドレンダリング(見ている画面の特定部分に処理能力を集中させること)をその利点の一つとして示唆しているのかな。でも、実際にそれによるパフォーマンス向上がカスタムOSを作る価値があるのか、既存のOSと一緒にGPUをオーバークロックするだけで十分なのか、確信が持てないって言ってるのかも。

XRプラットフォームには当てはまらないかもしれないけど、Linuxにはない自己検査機能を追加できるかも。Generaみたいに、開発者がドライバーのコードをホットパッチできるとか、共有アドレス空間で全プロセスを動かして、プロセス間でポインタを渡せるようにする(Unixモデルのデータのシリアライズ/デシリアライズを使わずに)とかね。

ここでの適切な比較対象は、Xbox 360以降のゲーム機がやってきたことだと思う。基本的には、ハイパーバイザーを直接ハードウェア上で動かして、アプリやゲーム、管理用のプランを別々のVMで動かすって感じ。これでゲームはハードウェアに近い体験ができるし、真のマルチタスクが必要ないところではリソースを無駄にしないんだよね。同時に、ダッシュボードやダウンロードなどのバックグラウンドタスクも動かせる。

Google Fuchsiaのこと、みんな忘れちゃったんじゃないかな。新しいOSにはいい兆候かもね。彼らは消費者向けデバイスにシームレスに展開するのがうまくいってるし。

その努力は全部撤回されたと思ってたんだけど。今出荷されてるデバイスにFuchsiaがインストールされてるのはどれ?

その安定性や有用性についてのレビューはあまり良くなかったよ。

それってちょっと議論の余地があるんじゃない?もともとはもっと大きな目標を持ってた(例えばChromebook OSとか)けど、結局Google Homeだけに範囲を絞ったみたい。面白いプロジェクトではあるけど、限られたユースケース(特定のハードウェアを持つスマートサーモスタットやスピーカー)では機能するけど、より広いユースケースで異種ハードウェアや複雑なインターフェース(実際の画面や周辺機器)ではうまくいかなかった感じ。

面白い噂だけど、GoogleがARプロジェクトを終了させて、チームをFuchsiaプロジェクトに移したのは、高度なスキルを持つ社員を維持するためだったらしい。つまり、新しいOSに対する本当の技術的ニーズはなかったってことだね。

それがあまりにも良すぎて、Googleは意味のある製品に使う計画をキャンセルして、代わりに下の棚の製品に回したんだ。

「かなり良い」って、どの指標で?一つのデバイスにしか出荷されなかったんだよ。それって、想像できる中で一番低いハードルだよね!誰かに具体的な利益を提供したの?開発と維持にかかる膨大なコストに見合う利益があったの?C/C++で新しいOSを始めるのは狂気だと思う。C/C++で書かれたOSはたくさんあるし、その結末はわかってるよね。努力をかけるなら、少なくとも新しい言語を試して、より良いセキュリティモデルを実現できるようにすべきだよ。

フクシアは今やほぼ死にかけの製品だね。スマホやノートパソコンのことを考えると、グーグルは今後はAndroidだけを使うみたい。

XROSは実際にはFuschiaのフォークだったよ。

メタがあなたの生の視線追跡データに直接アクセスすることを信頼できる宇宙は存在しないと思う。もっと侵入的なことを想像するなら、脳にインプラントを埋め込む必要があるんじゃないかな。

残念だけど、彼らはそれに取り組んでるみたい。

私の理解では、これはvisionOSのデザインの重要な要素で、アプリは視線データにアクセスできないんだ(フルスクリーンを取ってる場合を除いて?)。

俺は低レベルのソフトウェアやBSP、OSの大部分を書いてきたけど、今自分のOSを作らない主な理由はシリコンベンダーだよ。昔は、ドライバーを自分で書けるくらい詳細な仕様を提供してくれたんだけど、今は中程度の説明と質が疑わしいLinuxドライバーしかもらえない。これは怠惰な部分もあるけど、主に複雑さの問題だね。現代のハードウェアは本当に複雑で、完全に文書化するのに時間がかかるし、ドライバーを書くのはもっと時間がかかる。

そうだね、全てのドライバーをリバースエンジニアリングするのは大変な頭痛の種になるよ。

おそらく、メタならどんなOSでもドライバーを書いてもらうためにベンダーに十分な金を払えるんじゃない?

それな。最近、趣味のOSを改造して「ソフトリブート」ボタンを処理できるようにしようとしたんだけど、ほんとに難しくてどうサポートすればいいのか全然わからなかった。OS Dev Wikiの指示に従ったり、LinuxやFreeBSDがどうしてるかをそのまま読んでも進展がなかった。そう、WindowsやLinuxに「再起動して」って言ったときに起こることね。数日かけて頑張ったけど、結局諦めた。OSを開発する人たちは、普通の経済的プレッシャーとは違う世界の人たちだよね。

現代のハードウェアはほんとに複雑で、完全にドキュメント化するのに時間がかかるし、ドライバーを書くのはもっと時間がかかるって言われてるよね。でも、それはただの言い訳だと思う。大規模なコードベースを書いた後に「おっと、すみません、ドキュメント化するのを忘れてました」って言う人たちの言い訳と同じだよ。ハードウェアのドキュメント化がソフトウェアより難しいわけじゃない。システムが複雑なら、ドキュメント化の必要性も増すし、大きなコードベースと同じだよ。彼らは新しい社員を育てなきゃいけないし、テストの管理もしなきゃいけない。だから、シリコンベンダーがそんなに複雑なことを扱うための言い訳?私のバイオリンが彼らのために鳴ってるよ。

インテルはまだやってるね。私が見る限り、高速NICのためのオープンで詳細なドキュメントを提供してるのは彼らだけだよ。[0] データシートを使って、彼らの100Gbカード用のドライバーをゼロから書くこともできる。ほかのベンダーは、(1) 無視するか、(2) NDAにサインさせるか、(3) ひどいドキュメントのLinux/BSDドライバーに回すかのどれかだね。他のハードウェア、例えばNVMe SSDの状況はどうなんだろう。[0] e810 Ethernetコントローラーの2750ページのデータシート https://www.intel.com/content/www/us/en/content-details/6138...

Oculusの買収後にいたけど、XROS全体はコア技術チームにとって必要ない煩わしさでしかなかった。まず直さなきゃいけない複数の技術スタックに問題がたくさんあったからね。このXROSのアイデアは、OculusがFBに再編成された後に出てきたものだと思う。FBのチーム(または個人)がARVRの流れに乗りたがってた感じがした。カーマックは絶対に正しかったし、再編成の後、彼の影響力は徐々に悪化していった。

昔の内部投稿が原因で、XROSのマネージャーにHRに報告されちゃった。彼のチームメンバーを不快にさせたらしい。それがMETAが平凡な会社だっていう俺の感覚と合ってる。

そんなクソみたいなことがJCを追い出す手助けになったんだろうね。彼は何かが悪いアイデアだっていう(正確で関連性のある)理由を挙げるのに、実行責任者はその批判を取り上げたJCを文句言うだけで、批判自体には向き合わない。ほんと情けない、愚痴っぽいことだよ。

誰に懸念を伝えるかが大事だよね。「あなたのチームは存在すべきじゃない」みたいな根本的なことは、まずはチームリーダーやそのマネージャーに伝えるべき。影響を受ける全チームにそれを書くのは逆効果だし、不必要に不安を煽ってチームの生産性や集中力を下げちゃう。影響力のある人からのこういうコメントは、メンタルやフィジカルの健康に大きな影響を与えることがあるから。

最近のLinuxカーネルをうまく避ける仕組みはかなり良くなってるし、コアがたくさんあるCPUも普通になってきたよね。だから、いくつかのコアを隔離して、自分の好きなようにスレッドをピン留めして、カーネルバイパスを使ってハードウェアに直接アクセスすることができる。コア間でリングバッファを使って通信するのもいいね。これで、ハードウェアに最適化されたシステムと、管理やモニタリング、デバッグなどのためにフルLinuxカーネルを利用できるという、両方の良いところを得られる。

ハードウェアに直接アクセスするためのカーネルバイパスを使う 物理メモリにアクセスするには、いつでも /dev/mem を mmap すればいいよ。

メタで全く別のハードウェアプロジェクトに取り組んでたんだけど、カスタムOSは求めてなかったんだ。でも、既製のRTOSを使って、それを改造するつもりだったんだけど、めちゃくちゃなことになった。彼らはそれが必要な理由を百万通りも言ってたけど、実際にそれを正当化するパフォーマンステストやメトリクスは全くなかった。検証可能なパフォーマンス向上もなくて、開発のオーバーヘッドだけが膨れ上がった。彼らが書いたコードは、Linuxのカーネルモジュールとして書けたはずだし、社内外でLinuxに関するドキュメントや知識が豊富だから、もっと簡単だったはず。

2002年か2003年か2004年頃、Microsoftにいたときに、ビル・ゲイツのThink Weekのために何かをハッカソンしたOSの人たちの内部文書を読んだことがあるんだ(彼がサンフアンの島かどこかに行って、厳選された論文を読んで考える時間だったんだよね。そんな文書を渡すのはすごい名誉だった)。それは、GCとメモリ管理を持った、何か非常に.NETフレームワークっぽいものの上に書かれたOSだった(数年前にリリースされた)。いろんなハードウェアでブートして、いろんな面白いことをしてたよ。明確な設計原則の一つは、以前のWindowsとの互換性ゼロだった。だから、どこにも行かなかったんだろうね。エンジニアはほんの数人(たぶんOSの人たち)で、約1ヶ月間ハッキングしてた。読むのが楽しかった。

シンギュラリティだったっけ? https://en.wikipedia.org/wiki/Singularity_(operating_system) https://www.microsoft.com/en-us/research/project/singularity...

これは、100人以上の開発者が参加したMicrosoft Researchの数年にわたるプロジェクトだった。 https://www.zdnet.com/article/whatever-happened-to-microsoft...

彼は、XROSのマネージャーから、彼のチームメンバーを気分を悪くさせたとしてHRに報告されちゃった。ジョン・カーマックの公のやり取りしか見たことないけど、どれもプロフェッショナルで優しかった。誰かの感情が傷ついたからって、ジョン・カーマックみたいな人の客観的な議論でHRが関わるなんて考えるだけで憂鬱だよ。キャリアの中で、同僚が自分のアジェンダを押し通すためにHRを武器にしようとした時のことを思い出す。どんな努力も最終的にはHRに却下されたけど、会社内で誰かが自分の発言を気に入らなかったからって、仕事を危うくしようとしてるって気づくと、みんなに冷や汗が流れる。次の機会には、狙われた人たちは発言するのがずっとためらうようになる。

メタはしばらく変な場所だった。PSC(パフォーマンス評価のやつ)がすごく重要だったから… 公開の投稿がチームを完全に士気を失わせることもあった。カーマックみたいな伝説的人物が自分のプロジェクトをリソースの無駄だと思ったら、パフォーマンスレビューにどう影響するかって考えるとね。インパクトは「この会社にどれだけ役立つか」で、明確な評価軸になってる。

『Masters of Doom』では、カーマックが完全な独裁者のボスとして描かれてる。ジョン・ロメロの『Doom Guy』もそれを裏付けてるみたい。

へへへ。ジョン・カーマックとは何回か話したことあるけど、めっちゃ厳しいし、フィルターもないし、社交辞令も全然ないよ(アスペルガー的な感じ、彼がそうだとは言ってないけどね)。慣れてないと、どこから来てるのか理解できないと、かなりショックかも。少なくとも、何年も前はそうだった。今は変わったかもしれないけど。

これについては複雑な気持ちだな。一方では、JCはエンジニアリングの視点から見ると尊敬する人なんだけど、もう一方では、企業のサポートを受けて新しいデバイスのために新しいOSを作る一生に一度のチャンスを得た人の立場になってみると…絶対やりたいと思うよ。

ごめんだけど、彼の話を知ってたり、彼の素の姿を撮った動画を見たり、周りの人と話したことがあるなら、彼はリーナスレベルの「言いたいことを言う」タイプだよ。あの変な賛美はもうやめてほしい。カーマックは優しいことで知られてるわけじゃないし、ここで何が起こったのか全然わからないけど、彼が優しいおじいちゃんで、決して失礼なことや不適切なことをするわけがないっていう考えは本当におかしい。

ジョン・カーマックの公の場でのやり取りしか見たことないけど、どれもプロフェッショナルで優しかったよ。公人だからって、誰かの本当の行動を知ることはできないよ。

グーグルでも同じことを見たよ。ある優秀なエンジニアが、最初は優しくジュニアエンジニアに悪いアイデアをやめさせようとしたんだけど、彼らがしつこく続けたから、すごくストレートにやめろって言ったんだ。人事も関わってきたし、ほんとに悪いことを見過ごしてしまったこともあったよ。人に教え込むのに時間がかかりすぎるからね。

ジョンは、彼と接触したことがある人たちによると、実際にはかなりストレートで厳しいらしいよ。彼が何かを信じていないと、時には過剰に批判的になることもあって、その力の不均衡の中で反論するのが難しい。

新しいオペレーティングシステムを開発する意味があるかどうかを議論するのは、全然客観的な議論じゃないよ。

彼が辞める前に、彼の投稿を内部でフォローしてたよ。資源の無駄遣いには厳しかった。ハンドトラッキングは常に壊れてて、彼は投稿にメトリクスを持ち込んでた。彼の言いたいことは、Appleはハードウェアをしっかり固めていて、差別化要因は効率的なソフトウェアだってことだった。Metaの膨張は、帝国主義的な構築の結果だったね。