15. 相互運用の実例・導入判断・まとめ

15.1. この章で学ぶこと

  • Mojo から NumPy などを呼ぶ例

  • Mojo が向いている場面

  • 次に取るとよい一歩

この章は、ここまでのまとめです。

ここまで読んだうえで、

  • 実際にどう使い始めるか

  • どんな場面に向いているか

  • どこは慎重に見るべきか

を整理します。

15.2. Mojo から Python を呼ぶ

まずは、Mojo から Python を呼ぶ簡単な例です。

from std.python import Python

def main() raises:
    np = Python.import_module("numpy")
    array = np.array(Python.list(1, 2, 3))
    print(array)

出力:

[1 2 3]

この例でわかるのは次の点です。

  • Mojo から Python モジュールを使える

  • NumPy のような既存資産をそのまま活かせる

  • いきなり全部を書き直さなくてよい

ここで大事なのは、Mojo を導入するときに Python 資産を捨てなくてよい ことです。

ただし、Python を呼んだ部分は CPython の世界に戻ります。 そのため、そこが自動で高速化されるわけではありません。

つまり、どこまでを Mojo で持ち、どこで Python を呼ぶか が設計のポイントになります。

出典: Python interop / Calling Python from Mojo

補足: 段階導入しやすいのは、現時点の Mojo の大きな強みです。

15.3. 導入判断

向く

向かない

まず試す場所

Python で性能限界が見えている処理

一般アプリ全体の全面置換

NumPy interop を試す

数値計算・低水準な処理

Python の動的な感覚をそのまま期待

hot path を 1 本だけ Mojo 化

カーネル寄りのコード

すぐに強い安定性が必要な場合

Quickstart を動かす

CPU / GPU / AI accelerator を見据える処理

uvpixi で環境を作る

Python 資産を残したまま部分高速化

性能が課題になっている場所を部分的に置き換えたいときが相性のよい場面です。 「何でもすぐ Mojo に置き換える」より、用途をしぼって試すほうが現実的です。

出典: FAQ / Roadmap / Path to Mojo 1.0

補足: Python の弱点がそのまま Mojo の検討ポイントになる、と捉えるとよいでしょう。

15.4. まとめ

  • Mojo は Python に似た入口を持つが、本質は ownership / value semantics / compile-time specialization にある

  • traits / generics は型安全だけでなく性能にも関わる

  • Python interop が強いので段階導入しやすい

  • 向いているのは性能が課題のある処理。一般用途の全面置換は慎重に

  • 最初の一歩は PoC や限定導入から始めるのが現実的

出典: Install / Manual / Python interop

Mojo は Python の書きやすさを入口にしつつ、性能・安全性・ハードウェア制御の世界へ段階的に進むための言語です。