(相互運用の実例・導入判断・まとめ)= # 相互運用の実例・導入判断・まとめ ## この章で学ぶこと - Mojo から NumPy などを呼ぶ例 - Mojo が向いている場面 - 次に取るとよい一歩 この章は、ここまでのまとめです。 ここまで読んだうえで、 - 実際にどう使い始めるか - どんな場面に向いているか - どこは慎重に見るべきか を整理します。 ## Mojo から Python を呼ぶ まずは、Mojo から Python を呼ぶ簡単な例です。 ```mojo from std.python import Python def main() raises: np = Python.import_module("numpy") array = np.array(Python.list(1, 2, 3)) print(array) ``` 出力: ```text [1 2 3] ``` この例でわかるのは次の点です。 - Mojo から Python モジュールを使える - NumPy のような既存資産をそのまま活かせる - いきなり全部を書き直さなくてよい ここで大事なのは、**Mojo を導入するときに Python 資産を捨てなくてよい** ことです。 ただし、Python を呼んだ部分は CPython の世界に戻ります。 そのため、そこが自動で高速化されるわけではありません。 つまり、**どこまでを Mojo で持ち、どこで Python を呼ぶか** が設計のポイントになります。 出典: [Python interop](https://docs.modular.com/mojo/manual/python/) / [Calling Python from Mojo](https://docs.modular.com/mojo/manual/python/python-from-mojo/) > **補足:** 段階導入しやすいのは、現時点の Mojo の大きな強みです。 ## 導入判断 | 向く | 向かない | まず試す場所 | |------|---------|-------------| | Python で性能限界が見えている処理 | 一般アプリ全体の全面置換 | NumPy interop を試す | | 数値計算・低水準な処理 | Python の動的な感覚をそのまま期待 | hot path を 1 本だけ Mojo 化 | | カーネル寄りのコード | すぐに強い安定性が必要な場合 | Quickstart を動かす | | CPU / GPU / AI accelerator を見据える処理 | | `uv` や `pixi` で環境を作る | | Python 資産を残したまま部分高速化 | | | **性能が課題になっている場所を部分的に置き換えたいとき**が相性のよい場面です。 「何でもすぐ Mojo に置き換える」より、用途をしぼって試すほうが現実的です。 出典: [FAQ](https://docs.modular.com/mojo/faq/) / [Roadmap](https://docs.modular.com/mojo/roadmap/) / [Path to Mojo 1.0](https://www.modular.com/blog/the-path-to-mojo-1-0) > **補足:** Python の弱点がそのまま Mojo の検討ポイントになる、と捉えるとよいでしょう。 ## まとめ - Mojo は Python に似た入口を持つが、本質は ownership / value semantics / compile-time specialization にある - traits / generics は型安全だけでなく性能にも関わる - Python interop が強いので段階導入しやすい - 向いているのは性能が課題のある処理。一般用途の全面置換は慎重に - 最初の一歩は PoC や限定導入から始めるのが現実的 出典: [Install](https://docs.modular.com/mojo/manual/install/) / [Manual](https://docs.modular.com/mojo/manual/) / [Python interop](https://docs.modular.com/mojo/manual/python/) **Mojo は Python の書きやすさを入口にしつつ、性能・安全性・ハードウェア制御の世界へ段階的に進むための言語です。**