test-with-simulator について
Even Hubアプリ開発者向けに、evenhub-simulatorを使ったテスト方法を説明します。キーボードやマウスでジェスチャーを入力し、画面や音声を確認できますが、実機テストの代わりにはなりません。
主な機能
- 01キーボードとマウスをジェスチャーに割り当て
- 02表示効果と音声入力の設定
- 03ディスプレイのスクリーンショット出力
- 04Webインスペクターでのデバッグ
活用シーン
- 01アプリのレイアウトと操作ロジックの反復開発
- 02音声入力処理のテスト
- 03実機検証が必要な機能の特定
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ even-realities/ everything-evenhub --skill test-with-simulatorインストール後、Claude Code で/test-with-simulatorを入力して読み込まれたか確認します。
詳細
シミュレーターはハードウェアテストを補完するものであり、置き換えるものではありません。
インストール
npm install -g @evenrealities/evenhub-simulator
バージョン:v0.7.1。クロスプラットフォーム対応:macOS、Linux、Windows。
基本的な使い方
evenhub-simulator http://localhost:5173
evenhub-simulator -g http://localhost:5173 # with glow effect
evenhub-simulator -b spring http://localhost:5173 # with spring bounce
evenhub-simulator -c ./my-config.toml http://localhost:5173 # custom config
CLI リファレンス
| オプション | 説明 |
|---|---|
-c, --config <path> | 設定ファイルのパス |
-g, --glow | メガネのディスプレイでグロー効果を有効にします |
--no-glow | グロー効果を無効にします(設定を上書きします) |
-b, --bounce <type> | バウンスアニメーション:default または spring |
--list-audio-input-devices | 利用可能な音声入力デバイスを一覧表示します |
--aid <device> | 特定の音声入力デバイスを選択します |
--no-aid | デフォルトの音声デバイスを使用します(設定を上書きします) |
--print-config-path | デフォルトの設定ファイルのパスを表示して終了します |
--automation-port <port> | このポートで自動化 HTTP サーバーを起動します(例:9898) |
--completions <shell> | シェル補完を生成します:bash、elvish、fish、powershell、zsh |
-V, --version | バージョンを表示します |
-h, --help | ヘルプを表示します |
設定ファイルのパス
| プラットフォーム | 場所 |
|---|---|
| macOS | ~/Library/Application Support/ |
| Linux | $XDG_CONFIG_HOME または ~/.config/ |
| Windows | {FOLDERID_RoamingAppData} |
evenhub-simulator --print-config-path を使うと、正確なパスを確認できます。
シミュレーターの入力
キーボードとマウスの入力は、メガネのジェスチャーに対応付けられています。
| 入力 | メガネでの操作 |
|---|---|
| 上 | 上にスワイプ/上にスクロール |
| 下 | 下にスワイプ/下にスクロール |
| クリック | シングルタップ |
| ダブルクリック | ダブルタップ |
音声テスト
- サンプルレート:16000 Hz
- 形式:符号付き 16 ビットリトルエンディアン PCM
- イベントごとのデータ:100ms(3200 バイト/1600 サンプル)
- デバイスの一覧表示:
--list-audio-input-devices - デバイスの選択:
--aid <device-id> - 音声データは
event.audioEvent.audioPcm(Uint8Array)経由で届きます
スクリーンショット
シミュレーターのディスプレイをクリックすると、作業ディレクトリに RGBA PNG がエクスポートされます。ファイル名にはタイムスタンプが使われます。ファイルパスは標準出力とメガネの Web インスペクターのコンソールに表示されます。
デバッグのヒント
- 生ペイロードのエラー:
RUST_LOG=debug evenhub-simulator <url>— 生ペイロードの解析エラーをログに記録します - Web インスペクター:シミュレーターは WebView をホストします。コンソール、ネットワーク、DOM の検査にはブラウザーの開発者ツールを使用してください
- eventSource:シミュレーターでは
1(TOUCH_EVENT_FROM_GLASSES_R)に固定されています - onDeviceStatusChanged:出力されません — シミュレーターではプロファイルが固定されています
シミュレーターとハードウェアの違い
| 機能 | シミュレーター | 実際のメガネ |
|---|---|---|
onDeviceStatusChanged | 出力されません(固定) | ステータスがリアルタイムで更新されます |
eventSource | 1 に固定されています | 実際の入力ソース(左腕/右腕、リング) |
imuData | 常に null | 有効な場合は実際の IMU x/y/z データ |
| フォントのレンダリング | 近似表示 | ファームウェアの LVGL フォント |
| リストのスクロール | ハードウェアと異なる場合があります | ネイティブのファームウェアによるスクロール |
| 画像メモリ | 制限は適用されません | ハードウェアのメモリ制限が適用されます |
| エラー処理 | エッジケースでは異なる場合があります | ハードウェアの動作 |
開発への影響
- レイアウトとロジック — シミュレーターでの反復作業に適しています
- リストスクロールの UX — リリース前にハードウェアで確認してください
- 画像メモリの制限 — コードでサイズ制限を適用してください。シミュレーターでは違反を検出できません
- デバイスステータスのフロー — ハードウェアでのみテストしてください。シミュレーターでは
onDeviceStatusChangedは発生しません - IMU 機能 — シミュレーターではテストできません。
imuDataは常にnullです - 複数の入力ソース — シミュレーターが出力するのは右腕のタッチのみです(
eventSource= 1)
一般的なワークフロー
npm run dev # Start dev server
evenhub-simulator -g http://localhost:5173 # Launch simulator
# Interact via keyboard/mouse
# Click display to take screenshots
# Iterate on code — auto-reloads
# Validate on real hardware before deploy
シェル補完
evenhub-simulator --completions zsh > ~/.zsh/completions/_evenhub-simulator
evenhub-simulator --completions bash > /etc/bash_completion.d/evenhub-simulator
evenhub-simulator --completions fish > ~/.config/fish/completions/evenhub-simulator.fish
タスク
$ARGUMENTS
コメント
Markdown 対応