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 を見据える処理 |
|
|
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 の書きやすさを入口にしつつ、性能・安全性・ハードウェア制御の世界へ段階的に進むための言語です。