(Mojo とは何か・位置づけ)= # Mojo とは何か・位置づけ ## この章で学ぶこと - Mojo が公式にはどんな言語として説明されているか - どんな用途に向いていて、どんな用途では慎重に見るべきか - Part 2 に入る前に押さえておきたい結論 Mojo には「Python に似た書きやすさ」と「ハードウェアを意識した高性能」という、一見矛盾する目標があります。 この章では、まず **Mojo が何を得意とし、何にはまだ向かないか** を整理してから、具体的な文法へ進みます。 ## Mojo の一行定義 [Mojo Manual](https://docs.modular.com/mojo/manual/) と [Vision](https://docs.modular.com/mojo/vision) に沿って言うと、Mojo は次のような言語です。 - **高性能な AI インフラ**のためのシステムプログラミング言語 - **Python に近い書きやすさ**を持ちながら、静的型やメモリ安全を重視する言語 - **CPU、GPU、そのほかのアクセラレータ**を意識して使える言語 - **Python のライブラリ資産と相互運用**しやすい言語 つまり、Mojo は **Python の方言** というより、**Python に似た入り口を持ちながら、性能やハードウェア制御まで見据えた言語** と考えるのが自然です。 ## 向いている用途 Mojo は、特に次のような場面で力を発揮しやすいと考えられます。 - 数値計算・テンソル処理・カーネルのような、性能が大事な処理 - メモリ配置やデータの持ち方が重要な処理、CPU と GPU の両方を意識したコード - Python のコードを残しつつ、**性能ボトルネックになっている部分だけを高速化したい場面** ## 慎重に見たほうがよい用途 一方で、現時点では **どんなアプリでも全部 Mojo で書けばよい** という段階ではありません。 たとえば、一般的な Web アプリや業務アプリを最初から最後まで全部 Mojo で置き換えるという考え方は、公式の FAQ や Roadmap を見ても慎重に考えるべきだとわかります。 そのため、初学者はまず、Mojo を **「Python の完全な代わり」** ではなく、 **「Python を補うための高性能な選択肢」** と捉えるとよいでしょう。 ## 先に結論だけ この本の読み始めの時点では、次のポイントを押さえておけば十分です。 - Mojo は **Python に似た文法**を持つ高性能言語です。 - 目的は、**書きやすさ**だけでなく、**性能・安全性・ハードウェア制御**にもあります。 - 大きな特徴は、**ownership(所有権)**、**value semantics(値セマンティクス)**、**compile-time(コンパイル時)の特化**です。 - 正確な文法や API は、いつでも **[Mojo Manual](https://docs.modular.com/mojo/manual/)** と **[API reference](https://docs.modular.com/mojo/lib)** を確認するのが基本です。 **Mojo は Python を丸ごと置き換えるためではなく、性能ボトルネックのある部分から段階的に導入するのが現実的なアプローチです。** ## 最小サンプル ```{literalinclude} ../../../src/part1/ch01/hello_mojo_minimal.mojo :language: mojo ```

リスト-1: hello_mojo_minimal.mojo

このコードは見た目がかなり Python に近いです。 ただし、読み進めるとわかるように、Mojo では **型**、**所有権**、**コンパイル** などが前に出てきます。 そのため、見た目が似ていても、中身の考え方は Python とかなり違います。 出典: [Quickstart](https://docs.modular.com/mojo/manual/quickstart/) ## 出典 - [Mojo Manual](https://docs.modular.com/mojo/manual/) - [Mojo Vision](https://docs.modular.com/mojo/vision) - [Mojo FAQ](https://docs.modular.com/mojo/faq/) - [Mojo Roadmap](https://docs.modular.com/mojo/roadmap/) - [Path to Mojo 1.0](https://www.modular.com/blog/the-path-to-mojo-1-0) > **補足:** ここで Mojo の位置づけをつかんでおくと、あとで出てくる文法や型の話が理解しやすくなります。