MentraOSでスマートグラスアプリの開発を試してみた

こんにちは
AIチームの戸田です

最近スマートグラスが注目を集めています。スマートグラスというと2013年頃にGoogleが発表したGoogle Glassが有名でしたが、当時はバッテリーの制約やソフトウェアの未熟さなどから一般利用には定着しませんでした。

しかし2025年現在、当時の課題を解決し得るハードウェアとソフトウェアの基盤が揃いつつあり、再び注目を集めています。たとえばMetaが発表した Ray-Ban Meta Smart Glasses は、従来の「カメラ付きサングラス」という位置づけから進化し、今後のアップデートで小型ディスプレイを搭載する計画が明らかになっています。これは通知や簡単な情報をレンズ上に表示できるようにするもので、まさに日常的に“見る”体験を拡張する方向にシフトしている点が特徴です。

こうした動きは他のプレイヤーにも広がっており、Even RealitiesのEven G1など日常的に使えるデバイスが増えてきています。さらに基盤技術としては、バッテリー効率を向上させるSPAESのような新技術の開発も進行中です。

ソフトウェアも進化が進んでいます。Googleが発表した Android XR は、スマートグラスやMRヘッドセット向けに最適化された新しいOSで、まだ開発段階のようですが、既存のAndroidエコシステムを活かしつつ、スマートグラス特有の機能をサポートできると言われています。

こうした動向の中で私が注目したのは MentraOS です。MentraOSは Even G1 や Mentra Mach 1Vuzix Z100 など複数のデバイスに対応するオープンソースOSで、ReactやTypeScriptといった一般的なフロントエンドの技術スタックでアプリを構築できるため、学習コストを最小限に抑えられます。

スマートグラスといっても、その形態はさまざまです。カメラやマイク、各種センサーを搭載し、現実世界を記録・解析することに特化したタイプもあれば、レンズに情報を重ねて表示するARグラスとしての性格が強いものもあります。今回は Vuzix Z100 というモデルを試したいと思います。

Vuzix Z100は見た目が通常のメガネに近い軽量デザインを持ちつつ、片側のレンズにシースルーディスプレイを備えており、通知や簡単な情報を視界にオーバーレイ表示できます、長時間装着しても負担が少ないのが特徴です。

そしてこのVuzix Z100も、MentraOSがサポートする複数のスマートグラスのひとつです。つまり開発者はVuzix Z100専用のSDKを学ぶ必要はなく、MentraOSの共通APIを使ってアプリを作れば、そのまま他の対応機種(Even G1やMentra Mach 1など)にも展開できます。

今回は簡単なテキスト表示アプリを実際に作って動かしてみた過程を紹介します。

MentraOSの仕組み

MentraOSの大きな特徴は、アプリがクラウド上に存在することです。開発者が作成したアプリはWebに展開し(下図YOUR APP)、MentraOS Cloudを介してスマートグラスとやりとりをします。専用デバイスに直接ネイティブアプリを書き込むのではなく、まるでWebアプリをホスティングするような感覚で開発できるのがポイントです。

MentraOS Cloudとスマートグラスを繋ぐのが、スマートフォン上で動作するMentraOS Appです。内部的にはこのアプリを通じてデバイスをクラウド上のアプリに接続しているのですが、最初のBluetooth接続さえ完了してしまえば、ユーザーにはスマートフォン上のアプリを意識することなく、グラスとアプリが自然に繋がっているように見える設計になっています。

この構成によりWebアプリと同じ感覚でスマートグラス向けのアプリを実装・デプロイできる点がMentraOSの最大の魅力です。

実装

環境設定

Node.js (v18以上)とBunをベースにTypeScriptで作成することを推奨されています。Macであれば以下のコマンドで構築できます。

brew install node@20  # Node.js
curl -fsSL https://bun.sh/install | bash  # Bun

また、アプリはインターネット経由で接続されるためngrok を使って仮想的にアプリを公開できるようにします。GCPやAWSなどで別に公開する手段がある場合はこちらの準備は必須ではありません。ngrokの設定は公式ドキュメントをご参照ください。

こちらの設定とは別に、スマートフォンにMentraOS Appをインストールしておく必要があります。こちらからiOS版とAndroid版を選んで自身のスマートフォンにインストールし、スマートグラスとBluetoothで接続しておきます。また、初回はアカウントを作る必要があるので画面の指示に従って作成しておきます。

MentraOS Cloudにアプリを作成

以下の手順でMentraOS Cloudにアプリを作成します。最小構成なので、例えばマイクを使ったアプリを作るなどする場合はドキュメントを参考に適宜権限を追加してください。

  1. console.mentra.glassに移動します
  2. 「Sign in」をクリックし、MentraOS Appで使用しているのと同じアカウントでログインします。
  3. 「Create」をクリックして、アプリ作成画面に行き、必須項目を埋めていきます
    • Package Name: 一意のパッケージ名を設定します(com.yourname.myfirstappなど)
    • Display Name: 任意のアプリ名を入力します。
    • Description: アプリの概要を入力します。
    • Server URL: アプリのエンドポイントを入力します。今回はngrokの静的URLを入力します。
    • logo URL: アプリのロゴを入力します。URLとありますが、Localから任意の画像をアップロードできます
  4. アプリが作成されると、APIキーが提供されます。このキーをコピーしてください。

私の環境では以下のような設定になりました。

余談ですがLogoは現在話題のNano Bananaに作ってもらいました。シンプルで気に入っています。

新規プロジェクト作成

以下のコマンドで新規プロジェクトを作り、必要なライブラリをインストールします。

mkdir my-first-mentraos-app
cd my-first-mentraos-app
bun init -y
bun add @mentra/sdk
bun add -d typescript tsx @types/node

続けて以下の.envを作成します。

PORT=3000
PACKAGE_NAME=com.example.myfirstmentraosapp
MENTRAOS_API_KEY=your_api_key_from_console

PORTは任意のもので構いません。PACKAGE_NAMEはMentraOS Cloudに登録したものに合わせてください。MENTRAOS_API_KEYはMentraOS Cloudにアプリを作成したときに発行されたものにしてください。

アプリ部分

index.tsにアプリのメイン処理部分を実装します。ドキュメントのBuild From Scratchのサンプルコードを参考にしていたのですが、動作確認のしやすさなどから若干の変更を加えました。コード全体はこちらにアップロードしています。

表示時間の変更

showTextWallというメソッドでスマートグラスの画面にテキスト表示をしているのですが、これにdurationMsというパラメータを追加しています。こちらはテキストを表示する時間をミリ秒単位で指定するパラメータで、デフォルトは5秒なのですが、きちんと表示されたかを確認するのに5秒は体感かなり短かったので、倍の10秒に設定しました。

外部APIから操作できるように

サンプルは"Hello, World!"と表示するのみですが、POST /push エンドポイントを設定し、curlなどで叩くと任意のテキストを表示できるようにしました。

curl -X POST http://localhost:3000/push \
  -H "Content-Type: application/json" \
  -d '{"text":"テストメッセージです"}'

環境変数の読み込み

主機能とは関係ないのですが、.env をロードし、必須値が未設定なら起動時に明示的にエラーを出すようにしました。自分が環境変数を設定し忘れてハマってしまったのでその対策です。

起動

アプリ側は以下のコマンドで起動します。

bun run tsx index.ts

# (必要であれば) ngrok を使用してアプリをインターネットに公開
ngrok http --url=<NGROK_URL> 3000

起動後、スマートフォンでMentraOS Appを開くと先ほど作成したMy Test Appがあると思うので、横のトグルスイッチで有効化します。

これで準備は完了です。Localで起動しているアプリに対して以下のようにPOSTでメッセージを送ります。

curl -X POST http://localhost:3000/push \
  -H 'Content-Type: application/json' \
  -d '{"text":"テストですほげほげ"}'

すると以下のようにスマートグラスにPOSTしたメッセージが表示されます。

おわりに

本記事ではMentraOSを使ったスマートグラスアプリの開発を試してみました。Webアプリ開発の延長線上でスマートグラスのアプリを開発できるのは非常に体験が良かったです。

記事では伝えにくいのですが、実際にcurl一発で現実の視界に文字が浮かぶ体験はかなりインパクトがあり、未来のインターフェースを一足先に触っている感覚がありました。まだUI/UX設計や情報の見せ方には課題が残っていますが、それも含めて開発者にとっては新しい挑戦領域なのではないかな、と思います。

最後までお読みいただき、ありがとうございました!

PICK UP

TAG