Mac版リリースの「Mojo」とは?概要から使い方まで解説
thumb_mojomac_01
Mac版リリースの「Mojo」とは?概要から使い方まで解説
アンドエンジニア編集部
2024.01.08
この記事でわかること
Mojoは、Python互換プログラミング言語で、Pythonのスーパーセットとして設計されました
Pythonと比較して、高いパフォーマンスを発揮します
現時点では、Pythonとの完全互換性は確保されておらず、さらなる互換性確保を予定しています

Mac版リリースの「Mojo」とは?

img_mojomac_01

Mojoとは、2023年9月にプレビュー版を公開したばかりのPython互換プログラミング言語を指します。Pythonの構文やソフトウェア開発エコシステムに、システム・プログラミングとメタプログラミングの機能を組み合わせたプログラミング言語です。

人工知能(AI)領域において、統一されたソフトウェア開発を提供するために開発されました。

2023年9月にLinux版をダウンロード提供し、時間を空けずに10月19日にはMac版の提供を開始しました。必要なモジュール提供やコミュニティ活動はGitHubを通じて行われています。

【参考】:Modular Blog: Mojo is now available on Mac 【参考】:Modular Blog: Mojo - It’s finally here! 【参考】:GitHub Moji: Welcome to Mojo

今さら聞けない人工知能(AI)の基礎知識|AI開発の基本を解説!

Mojoの概要

Mojoは、Pythonの構文を用いたプログラミング言語です。Pythonのスーパーセットとして設計されており、システム・プログラミングとメタプログラミングの機能が拡張されています。

分かりやすく言うと、「C言語」には「C++」の拡張言語があるように、「Python」の拡張言語として「Mojo」があるようなイメージです。Modular社はMojoを「Python++」と表しています。Mojoの扱いは、現時点ではオープンソースではありませんが、将来的にオープンソース化を目指しています。

【参考】:Mojo

Pythonでできることは?初心者が作れるものや実用例を紹介

Mojoの特徴とメリット

Mojoの特徴は、Pythonのスーパーセットとして、任意のPythonコードとのシームレスな統合をサポートしていることです。AIで活用するGPUなどのアクセラレータを含む、プログラミングに対応します。

Mojoは動的言語と静的言語の長所を兼ね備えており、現在のPythonの最大68,000倍のパフォーマンスを達成できるとModular社は発表しています。メリットとして、開発者は関数を定義するキーワード(fnとdef)を選択することで、より高いパフォーマンスを発揮する静的型付けを任意に選ぶことができます。

今回リリースしたMac版では、Pythonと比較して約90,000倍のパフォーマンスが得られたと公表されています。

【参考】:Modular Blog: Mojo is now available on Mac 【参考】:Modular Blog: Mojo - It’s finally here!

Mojoのデメリット

Mojoは、2023年時点ではPython 3の構文のサブセットを提供しているだけですので、Python 3と完全互換性を保証している訳ではありません。同様に、Mojoで加わった機能はPythonで動作するとは限らないので、汎用Pythonコードの開発としては万全とまでは言えないでしょう。

将来的にはさらに互換性を高める予定がありますので、現時点ですぐにデメリットとは言えませんが、頭の片隅にとどめておくのが良いでしょう。

【参考】:Mojo FAQ

Modularの概要

Modular社は、Google社出身者が設立した会社です。AIの複雑性を解消し、分断されたインフラ構造を統一することで、生産性と品質をより高める目的を持ちます。さらにAIを社会により役立てられるよう、AIインフラを再発明するミッションを掲げています。

【参考】:Modular

Modularのソリューション

Modular社は、AIインフラの統一の目標に向けて2つのソリューションを提供しています。1つは、今回の記事で解説の中心となる「Mojo」です。Mojoをウェブベースでも開発できるように、「Mojo Playground」を提供しています。これは、MojoがサポートするJupyterノートブックのホスト環境です。

もう1つは、統合AI推論エンジンである、「Modular Engine」です。モデルの書き換えや変換を行うことなく、低レイテンシーでTensorFlowとPyTorchのすべてのモデルを実行することを特徴としています。任意のクラウドにモデルをそのまま持ち込むなど、サーバとエッジのどこにでも、簡単に高いパフォーマンスメリットを享受できます。

【参考】:Modular Engine

Mojoのプログラミング環境

img_mojomac_02

Mojoは、2023年5月に登場したばかりのプログラミング言語です。そのため、ここではプログラミング環境をもう一段詳しく解説していきます。実際に使用する前に、事前準備として理解しておきましょう。

【参考】:Mojo

Mojoの動作環境

Mojoは、Pythonのソフトウェア開発で用いられるエコシステムを利用しています。そのため、Jupyterノートブックを介したブラウザアクセスを皮切りに、Linux版のローカル開発、そしてMac版のリリースと続きました。合わせてVisual Studio Code拡張も利用可能です。

ローカル開発者ツールでは、Mojoアプリケーションのビルド作業を容易にするコンパイラとIDEツールをフルセットで提供します。サポートされているオペレーティングシステムは、20203年11月時点で、Ubuntu Linux 20.04/22.04 (64-bit x86)とmacOS (Apple silicon)となります。

なお、Windowsユーザは「Windows Subsystem for Linux version 2」((WSL 2)上でサポートされるLinuxディストリビューションを用いることで、Mojoを使用することができます。今後、Windowsでのネイティブサポートも計画されています。

【参考】:Mojo

VSCodeとは?定番のコードエディタを他のエディタと比較して解説

Mojoの実行形式

Mojoは、MLIR(Multi-Level Intermediate Representation)コンパイラフレームワークによる、高度なコンパイル機能を持ちます。MLIRは、MLIRは、GPUやTPU、FPGA・量子コンピューティングなど、AIプラットフォームに最適なコンパイラ環境であり、AIプログラミング言語として採用したフレームワークです。

Pythonに欠けている、システムプログラミング機能を備えるとともに、JuliaやSwift、Rust・C++などから多くを学び、メモリ所有権と管理を改良し、AIとMLIRの原則に適合させています。コンパイラは、ジャストインタイム(JIT)とアドバンスオブタイム(AOT)の両モードに対応します。

Mojoは、Pythonや他のプログラミング言語から簡単に移行できるように開発されており、Pythonと多くの互換性を持たせています。そのため、必要に応じて既存のPythonモジュールをMojoモジュールにインポートすることができます。

【参考】:Mojo

Mojoが採用するMLIRとは

MLIRは、コンパイラを構築するための柔軟なインフラストラクチャ・フレームワークを提供します。MLIRは、中間表現(IR)のレイヤーをベースにしており、どのようなハードウェアに対しても、どのようなコードでも使用することができ、柔軟で強力なコンパイラを作成することができます。

Mojoは、MLIR設計原則に基づいてゼロから構築され、MLIR中間表現の直接的なプログラミング・サポートを提供しています。MojoはAIアルゴリズムの開発に用いられるほか、汎用プログラミング言語としてPythonが提供する多くの環境に適用することができます。

【参考】:Mojo FAQ

MojoのSDK ツールボックス

Mojoでは、SDKとして次のような開発ツールをセットで提供しています。

mojoドライバ シェルを提供し、Mojoプログラムのビルドと実行、モジュールのパッケージ化、ドキュメントの生成、コードのフォーマットが可能です。

Visual Studio Code用の拡張機能 VS Code上で、シンタックスハイライトやコード補完など、生産性向上機能をサポートします。

Jupyterカーネル Pythonコードを含むノートブックの構築と実行をサポートします。

上記の他、近日中にデバッグ機能をサポートするとしています。

【参考】:Modular Blog: Mojo - It’s finally here!

Mojoを使うには

img_mojomac_03

Mojoを使うには、Modular社のアカウント登録が必要です。アカウント登録完了により、モジュールインストールの認証コードを取得し、ダウンロードページの指示に従っていきます。Mac版の場合は、Homebrewを事前にインストールしておきましょう。

Modular CLIのインストールコマンドが完了したら、”modular install mojo”でMojoのインストールを実行します。

【参考】:Modular Docs: Get started with Mojo 【参考】:Modular: Create a Modular account to get started

Homebrewのインストール方法は?よくあるエラーも解説!

Mojoの起動

Mojoは、Pythonと同じように、シェルで”mojo”コマンドを起動し、対話型で実行することができます。REPL(Read–eval–print loop)と呼ばれる、対話型による処理手順に従います。

$ mojo
Welcome to Mojo!
Expressions are delimited by a blank line.
Type `:mojo help` for further assistance.

 

ここで例えば次のように、コードを記述していきます。「Enter」を2回押すことでコードが解釈されます。

1> print("Hello World")
  2.
Hello World
  2>

 

【参考】:Modular Docs: Hello, world!

Mojoのアプリケーション実行

Mojoのアプリケーションは、次のようにMojoの引数として実行することができます。ファイル拡張子は、”.mojo” または「絵文字」です。ソースファイルには、”fn main():”を関数定義しておきます。

$ cat app.mojo
fn main():
   print("Hello World")
$

 

実行結果は、以下の通りです。

$ mojo app.mojo
Hello World
$

 

【参考】:Modular Docs: Hello, world!

Mojoのアプリケーションのビルドと実行

Mojoのアプリケーションは、事前にビルドし実行ファイルを生成しておくことができます。ビルドには、”mojo build”コマンドを使用します。一般的なコンパイラと同じ手順に従って、バイナリを生成します。

$ mojo build app.mojo
$ ./app
Hello World
$

 

【参考】:Modular Docs: Hello, world!

Mojoはパフォーマンス向上に期待できる

img_mojomac_04

Pythonは汎用プログラミング言語としても、AIを始めとするサイエンス用途としても、非常に利用者が増加しています。簡単にデータ分析ができますが、性能向上には限界もあります。

Mojoは他のプログラミング言語の長所をPythonに適合させるために、Mojoを開発しました。すでにベンチマーク結果では、桁違いの性能向上を果たしています。今後はパフォーマンス向上を図るとともに、互換性を高めて真のPython++としての実装を期待したいところです。

気になる人のXをフォローしよう!
アンドエンジニア公式LINEでは
新着記事やエンジニアに役立つ情報をお届け!
日々のキャッチアップをお手伝いします!
マイナビITエージェント

編集部オススメコンテンツ

Sponsored
【年収±診断】6つの質問に答えて、真の市場価値をチェック!
マイナビITエージェント
Sponsored

アンドエンジニアへの取材依頼、情報提供などはこちらから

お問い合わせ・情報提供
はじめて転職される方へ
SE・システムエンジニア(IT/通信/インターネット) 求人一覧

編集部おすすめコンテンツ

Sponsored
【年収±診断】6つの質問に答えて、真の市場価値をチェック!
マイナビITエージェント
Sponsored

アンドエンジニアへの取材依頼、情報提供などはこちらから

Powered by マイナビ AGENT