Skip to content
industry insights

Mojo 1.0: C言語より高速、しかし未完成?

Mojoは「Pythonの簡潔さとC++の生の速度」という不可能を約束します。しかし、1.0のオープンソースリリースには、開発者が知っておくべき安定性の危機と疑問の残るベンチマークが隠されています。

Cassidy Wolfe
Mojo 1.0: C言語より高速、しかし未完成?

Pythonの速度問題は解決されたのか?

Pythonは迅速な開発において圧倒的な地位を占めていますが、そのアキレス腱は依然としてパフォーマンスです。データサイエンティストやMLエンジニアは日常的にPythonでプロジェクトを開始しますが、生の速度が最優先される段階で壁に突き当たります。その結果、重要なコンポーネントをC++やCUDAで書き直すという脆い「2言語システム」を強いられ、コードベースが乖離していくことでメンテナンスの悩みの種となっています。

Mojoはこの根本的なジレンマの解決を約束します。その核となるビジョンは、CPUとGPUの両方で高いパフォーマンスを発揮するようにコンパイルされる、単一の「Pythonライクな言語」です。これにより、実行ターゲットごとにパラダイムや言語を切り替える必要がなくなり、開発ワークフロー全体が統一されます。これは、C言語レベルの速度とPythonの定評ある開発者体験を両立させるという大胆な主張です。

最も説得力のある証明はすぐに現れます。標準的なMacBookにおいて、Mojoの能力を実証するために、驚くほどシンプルで読みやすいコードでGPUカーネルをコンパイルします。これは理論上の話ではありません。この言語は、MetalやSwift、CUDAに頼ることなく、数値のペアを加算するGPU加速関数を実行します。これは、真に統一された高性能なPythonスーパーセットという約束を裏付ける、具体的な「魔法の瞬間」です。

68,000倍の速度という神話の解体

バイラルマーケティングの誇大広告は忘れてください。Mojoの当初の主張である35,000倍や68,000倍の高速化は、良く言えば誤解を招くものであり、悪く言えば不誠実です。これらの天文学的な数字は、完全にベクトル化・並列化されたMojoコードと、あまりに稚拙なPythonの三重ループを比較した結果です。パフォーマンスが重要なタスクにおいて、プロの開発者がこれほど最適化されていないPython実装を書くことはあり得ず、この比較は無意味です。

M4 Proで実施されたより現実的なベンチマークは、より明確な姿を映し出しています。Mojoは純粋なPythonと比較して約26.5倍高速であることを示しています。重要なのは、Pythonの科学計算スタックの基盤であるNumPyよりも約2倍高速であるという点です。この違いは極めて重要です。26.5倍という数字は印象的ですが、当初宣伝されていた神話的な数字ではありません。

NumPyを上回ったことこそが、Mojoの真の目玉です。NumPy自体、その核となる操作には高度に最適化されたコンパイル済みのCコードに依存しています。Mojoは単にPythonを凌駕しているだけでなく、長年鍛え上げられたC言語のコードをも上回るコンパイルを実現しています。これは、Mojoが優れたメモリ管理と洗練されたコンパイラ最適化を通じて、高度に調整されたレガシーコードさえも凌駕するエッジを獲得していることを示唆しています。

Qualcomm、オープンソース、そして疑わしいタイミング

非常に異例かつ圧縮されたスケジュールが、Mojoの最近のマイルストーンに影を落としており、早急な精査が必要です。Qualcommは7月29日にModularの買収を完了しました。そのわずか2週間後の8月11日にMojo 1.0がリリースされましたが、その核となるコンパイラはクローズドソースのままでした。そして、そのわずか7日後の8月18日、コンパイラが突如としてオープンソース化されるという驚くべき逆転劇が起きました。買収後のこの急速な一連の出来事は、通常とはかけ離れています。

この疑わしいタイミングから、2つの全く異なる物語が浮かび上がります。これはQualcommがMojoの急速な普及を強力に推進し、開発者にとっての最大の参入障壁(プロプライエタリな性質)を戦略的に取り除こうとしているのでしょうか?それとも、もっと不吉なことに、これはより大規模な企業吸収の初期段階であり、Modularの革新的な技術が間もなく飲み込まれ、その長期的な軌道や独立した未来が巨大企業の下で深く不透明になっていることを示唆しているのでしょうか?

Apache 2.0ライセンスへの移行は、透明性の観点から間違いなく大きな勝利であり、開発者コミュニティからも歓迎されていますが、重要な注意点が残っています。Modularは、コンパイラへの外部からのコントリビューションをまだ受け入れていないことを明言しています。この重要な制限により、ソースコードは公開されているものの、プロジェクトは実質的に真のコミュニティ主導型ではなくソース利用可能(source-available)な状態にとどまっており、Mojoが成長するために必要な共同開発を妨げています。言語に関する詳細はMojoで確認できます。

この記事が気に入ったら、毎朝同じようなものをメールで受け取れます。

1日1通 · 2クリックで解除 · サードパーティのトラッキングなし

Mojoの「安定版」リリースに潜む41の欠陥

Mojoの1.0リリースは安定性のマイルストーンと宣言されましたが、そこには明白な矛盾がありました。この「安定」しているはずの基盤には、intprintlenといった基本的な組み込み関数にフラグを立てる41個の不安定なAPI警告が含まれていました。メジャーバージョンリリースにおいて言語の核となるコンポーネントを不安定とマークすることは、単なる見落としではなく、安定性という約束そのものを根本から損なうものです。

さらに信頼を損なうことに、中心的なfnキーワードが完全に削除されました。数十ものパッケージに影響を与えるこの破壊的変更は、MojoがAPIの安定性を誓ったその日に行われ、しかも適切な非推奨プロセスも経ていませんでした。既存の開発者エコシステムに対するこのような無頓着な軽視は、幅広い本番環境での採用を目指す言語にとって、非常に警戒すべき兆候です。

GPUカーネル開発者にとって、Mojoは非常に魅力的な提案であり、数日間試してみる価値は十分にあります。CPUとGPUを横断する統合言語というビジョンはユニークかつ強力です。しかし、より広範な開発者コミュニティにとっては、Mojoの明白な安定性の問題と、最近のQualcommによる買収を取り巻く不透明なガバナンスの問題が、リスクの高い賭けにしています。この言語が本番環境で信頼できる選択肢と見なされるまでには、かなりの成熟が必要です。

よくある質問

Mojoプログラミング言語とは何ですか?

MojoはModularによって作成されたプログラミング言語です。Pythonの使いやすさと、C++やCUDAのようなシステム言語の高性能を組み合わせたPythonのスーパーセットとして設計されており、主にAIやハイパフォーマンスコンピューティングを対象としています。

MojoはPythonよりどれくらい速いのですか?

初期のマーケティングでは35,000倍以上の高速化が謳われていましたが、これらは不公平な比較に基づいたものでした。実際のテストでは、特定のタスクにおいて、Mojoは純粋なPythonより約26.5倍、高度に最適化されたNumPyコードより約2倍高速であることが示されています。

Mojoは本当にオープンソースですか?

はい。2024年8月現在、Mojoのコンパイラ、標準ライブラリ、およびコアコンポーネントはApache 2.0ライセンスの下でオープンソース化されています。ただし、プロジェクトは現時点ではコンパイラ本体への外部からのコントリビューションを受け入れていません。

Mojo 1.0は本番環境で使えるほど安定していますか?

「1.0」というバージョン番号にもかかわらず、Mojoには現在、重大な安定性の懸念があります。最初のリリースにはコア機能に対する数十もの不安定なAPI警告が含まれており、破壊的変更も導入されているため、現時点ではほとんどの本番環境にとってリスクの高い選択肢となっています。

Found this useful? Share it.

For builders

Want Stork to write one of these about your product?

Send us a URL. We use the product, form a view, and publish what we actually think — in 8 languages, labeled Sponsored, with no copy approval on your side. That last part is what makes it worth quoting.

See how it works$500 · AI tools & software only