Mojo

Mojo
パラダイム
登場時期 2023年(3年前) (2023)
設計者 Chris Lattner
開発者 Modular
最新リリース 1.0/ 2026年8月11日(2か月前) (2026-08-11)
型付け
影響を受けた言語 Python, Cython[要出典], C, C++, Rust, Swift, Zig
プラットフォーム Linux、macOS
ライセンス コンポーネントにより異なる
ウェブサイト https://www.modular.com/mojo
拡張子 .mojo, .🔥
関連言語 Python
テンプレートを表示

MojoはModularが開発するプログラミング言語である。2023年に発表され、Pythonとの高い相互運用性を持ちながら、システムプログラミングやAI向けの高性能なコードを記述できることを特徴とする。

MojoはPythonの構文やエコシステムとの親和性を重視している一方、静的型付け、ジェネリックプログラミング、所有権や値の移動・コピーなど、低レベルのプログラミングに必要な機能を備えている。

また、MLIRを基盤とするコンパイラ技術との統合を特徴としており、CPU、GPUなどを対象とするコードの最適化に利用される。

概要

Mojoは、Pythonの記述性とエコシステムを維持しながら、C++やRustなどのシステムプログラミング言語に近い性能と低レベル制御を実現することを目的として開発された。

特にAIおよび機械学習分野を主要な用途としており、Pythonで構築された既存のAIソフトウェアと、Mojoで記述された高性能なカーネルやシステムコードを組み合わせることができる。

MojoはJupyterを利用した環境でも利用されているほか、Mojo SDKによってローカル環境でプログラムをコンパイルして実行できる。

特徴

MojoはPythonに近い構文を持ちながら、システムプログラミング向けの機能を追加している。

主な特徴として以下が挙げられる。

言語仕様

構文

Mojoの構文はPythonに強く影響を受けており、インデントによってブロックを表現する。

fn main():
    print("Hello, World!")

Pythonと同様に、波括弧などを使用せず簡潔にコードを記述できる。

一方で、Mojoではシステムプログラミングを目的として、Pythonにはない型システムやメモリ管理機構が追加されている。

関数

Mojoではfnやdefを使用して関数を定義できる。

fn add(a: Int, b: Int) -> Int:
    return a + b

戻り値や引数の型を明示することで、コンパイラによる型検査や最適化を利用できる。

構造体

Mojoではstructを使用して構造体を定義できる。

struct Point:
    var x: Int
    var y: Int

```
fn length(self) -> Int:
    return self.x * self.x + self.y * self.y
```

構造体にはフィールドだけでなく、メソッドや初期化処理などを定義できる。

Trait

Mojoはtraitによる抽象化機構を備えている。

Traitは、型が提供する操作や性質を定義するために利用され、ジェネリックプログラミングと組み合わせて使用できる。

標準ライブラリでも複数のtraitが利用されている。

ジェネリックプログラミング

Mojoは型パラメータを利用したジェネリックプログラミングをサポートしている。

fn identity[T: AnyType](value: T) -> T:
    return value

これにより、特定の具体的な型に依存しない関数やデータ構造を記述できる。

型推論

Mojoでは型を明示的に指定できるほか、コンパイラによる型推論を利用できる。

そのため、静的型付けによる型検査を利用しながら、型が明らかな場合には型注釈を省略できる。

メモリ管理

Mojoはシステムプログラミングを想定して設計されており、値の所有権、移動、コピーおよびライフタイムを扱う機構を備えている。

これにより、ガベージコレクションを前提とせずにリソースを管理するコードを記述できる。

また、構造体のライフサイクルに関連する処理を定義することができ、メモリやファイルなどのリソース管理に利用できる。

Pythonとの相互運用

Mojoの主要な特徴の一つがPythonとの相互運用性である。

MojoからPythonのモジュールやライブラリを利用できるため、既存のPythonエコシステムを活用できる。

また、Mojoで実装した関数をPythonから呼び出すこともできる。

この機能によって、既存のPythonプログラム全体を書き換えることなく、処理負荷の高い部分をMojoへ移行することができる。

公式リポジトリにはPythonコードからMojoの関数を呼び出す例を含むpython-interopサンプルが用意されている。

Cとの相互運用

MojoはFFIを利用してCなどの外部コードと連携できる。

標準ライブラリにはstd.ffiが存在し、C互換の型や外部関数呼び出しなどの機能が提供されている。

これにより、既存のCライブラリなどをMojoから利用することが可能となっている。

コンパイラ

Mojoのコンパイラは、MLIRを中心としたコンパイラ技術を利用している。

MLIRは複数の抽象レベルの中間表現を扱えるコンパイラ基盤であり、異なるハードウェア向けのコード生成や最適化に利用される。

MojoはMLIRを利用することで、通常のアプリケーションコードだけでなく、AI処理やGPUカーネルなどの低レベルなコードも同一の言語環境から扱えるよう設計されている。

SIMD

MojoはSIMDを利用したベクトル化処理を記述できる。

SIMDでは、一つの命令で複数のデータを同時に処理することで、数値計算や画像処理などの処理を高速化できる。

MojoではSIMDを利用した低レベルな最適化を言語機能や標準ライブラリから利用できる。

コンパイル時プログラミング

Mojoはコンパイル時に型や値などの情報を利用するメタプログラミング機能を備える。

コンパイル時に決定可能な情報を利用してコードを特殊化することで、汎用的なコードを保ちながら実行時のオーバーヘッドを削減できる。

この機能はジェネリックプログラミングやハードウェア最適化と組み合わせて利用される。

AI・機械学習

MojoはAIおよび機械学習を主要な用途の一つとしている。

AI分野ではPythonが広く利用されている一方、ニューラルネットワークのカーネルやテンソル演算などの低レベル処理では、高い性能とハードウェアへのアクセスが必要になる。

MojoはPythonとの相互運用性とシステムプログラミング機能を組み合わせることで、これらの処理を同じ言語環境から実装できるようにしている。

ModularのAI向けプラットフォームであるMAXとも関連しており、Mojoを使用してCPUやGPUなどを対象としたカーネルを記述できる。

現在の公式ドキュメントでは、Mojoを使用してNVIDIA、AMD、AppleのGPU向けのカスタムカーネルを記述できるとされている。

標準ライブラリ

Mojoには標準ライブラリが用意されている。

標準ライブラリには、基本型、コレクション、文字列、入出力、ファイル、メモリ、FFIなどの機能が含まれている。

標準ライブラリのソースコードはModularのGitHubリポジトリで公開されている。

入出力

std.ioでは入出力関連の機能が提供される。

標準入力、標準出力、標準エラー出力などを扱う機能が存在する。

ファイル操作

標準ライブラリにはファイルを読み書きするためのAPIが存在する。

例えば、openを使用してファイルを開き、読み書きを行うことができる。また、with文を使用してファイルを自動的に閉じることもできる。

開発環境

Mojo SDKを利用することで、Mojoソースファイルをコマンドラインからコンパイルして実行できる。

また、Visual Studio Code向けのMojo拡張機能が提供されており、Mojoによる開発を支援する。

公式リポジトリには多数のサンプルプログラムが用意されている。サンプルには、ライフゲーム、Python相互運用、演算子、単体テストなどが含まれている。

パッケージ管理

公式のMojoサンプルではPixiを利用した開発環境の構築が推奨されている。

Pixiはパッケージ管理と仮想環境管理を行うツールで、Mojoのサンプルプロジェクトにおける依存関係の管理などに利用されている。

テスト

Mojoには単体テストを記述・実行するためのテスト機構が存在する。

公式のサンプルにはtestingプロジェクトが用意されており、Mojoのテスト機能を確認できる。

コードフォーマット

Mojoにはソースコードを自動整形するためのフォーマット機能が用意されている。

標準ライブラリの開発でもMojoのフォーマッタが利用されている。

対応プラットフォーム

2026年現在、公式リポジトリでは以下のプラットフォームがサポート対象として記載されている。

Windowsは現在公式サポート対象外である。

リポジトリ

Mojo関連の公式リポジトリでは、標準ライブラリ、サンプル、テスト、ベンチマーク、ドキュメントなどが管理されている。

標準ライブラリには、概ね以下のようなディレクトリが存在する。

ライセンス

Mojo関連ソフトウェアでは、コンポーネントによってライセンスが異なる。

公開されているMojo標準ライブラリおよび公式サンプルの一部は、Apache License 2.0 with LLVM Exceptionsで公開されている。

一方、標準ライブラリには現時点でオープンソースとして公開されていないモジュールも存在する。公式FAQでは、一部のモジュールについて、変更が活発であること、MAXとの統合が強いこと、プロプライエタリな要素を含むことなどが理由として挙げられている。

関連プロジェクト

MAX

MAXはModularが開発するAI向けの実行・最適化プラットフォームである。

MojoはMAXと組み合わせて使用でき、CPU、GPU、AIアクセラレータなどを対象とした低レベルの処理を実装するために利用される。

MLIR

MLIRはMojoのコンパイラ技術において重要な役割を持つ。

MLIRは複数の抽象レベルの中間表現を扱うことができ、異なるハードウェア向けのコード生成や最適化に利用される。

コード例

Hello World

fn main():
    print("Hello, World!")

関数

fn add(a: Int, b: Int) -> Int:
    return a + b

fn main():
print(add(10, 20))

構造体

struct Point:
    var x: Int
    var y: Int


fn init(inout self, x: Int, y: Int):
    self.x = x
    self.y = y


fn main():
var p = Point(10, 20)
print(p.x)
print(p.y)

ジェネリック

fn identity[T: AnyType](value: T) -> T:
    return value

fn main():
print(identity(42))

Pythonとの相互運用

MojoではPythonのコードやライブラリとの相互運用が可能である。

公式リポジトリには、MojoからPythonを利用する例やPythonからMojoの関数を呼び出す例が収録されている。

歴史

Mojoは2023年にModularによって発表された。

発表当初から、Pythonの使いやすさと既存エコシステムを維持しながら、C++やRustなどに近い性能を実現することが主要な目標として掲げられていた。

その後、Mojo SDK、Python相互運用機能、システムプログラミング機能、GPUおよびAI向けの機能などが継続的に開発された。

2026年にはMojo 1.0が公開され、Modularの公式ドキュメントでもMojo 1.0が案内されている。

評価

Mojoは、Pythonの高い記述性とエコシステムを維持しながら、システムプログラミングやハードウェア最適化まで扱える言語を目指している。

特にAI・機械学習分野では、Pythonによる高レベルな処理と、Mojoによる低レベルなカーネル実装を組み合わせられることが特徴である。

一方で、Mojoは比較的新しい言語であり、仕様や標準ライブラリ、関連ツールは継続的に発展している。また、2026年現在はWindowsが公式サポート対象外である。

脚注

  1. 1 2 “Mojo Programming Manual”. Modular Documentation. Modular. 2026年9月5日閲覧。
  2. 1 2 “Why Mojo”. Modular Documentation. Modular. 2026年9月5日閲覧。
  3. ↑ “Python interoperability example”. GitHub. Modular. 2026年9月5日閲覧。
  4. ↑ “Mojo FFI”. GitHub. Modular. 2026年9月5日閲覧。
  5. ↑ “Modular Documentation”. Modular. Modular. 2026年9月5日閲覧。
  6. ↑ “Modular Documentation”. Modular. Modular. 2026年9月5日閲覧。
  7. ↑ “Mojo standard library”. GitHub. Modular. 2026年9月5日閲覧。
  8. ↑ “Mojo IO module”. GitHub. Modular. 2026年9月5日閲覧。
  9. ↑ “Mojo file IO”. GitHub. Modular. 2026年9月5日閲覧。
  10. ↑ “Mojo code examples”. GitHub. Modular. 2026年9月5日閲覧。
  11. ↑ “Mojo code examples”. GitHub. Modular. 2026年9月5日閲覧。
  12. ↑ “Mojo testing example”. GitHub. Modular. 2026年9月5日閲覧。
  13. ↑ “Modular development documentation”. GitHub. Modular. 2026年9月5日閲覧。
  14. ↑ “Mojo standard library FAQ”. GitHub. Modular. 2026年9月5日閲覧。
  15. ↑ “Mojo standard library”. GitHub. Modular. 2026年9月5日閲覧。
  16. ↑ “Mojo examples”. GitHub. Modular. 2026年9月5日閲覧。
  17. ↑ “Mojo standard library FAQ”. GitHub. Modular. 2026年9月5日閲覧。
  18. ↑ “Mojo Python interoperability example”. GitHub. Modular. 2026年9月5日閲覧。
  19. ↑ “Modular Documentation”. Modular. Modular. 2026年9月5日閲覧。

外部リンク