Oh My Android について
Oh My Android は、エミュレーターや端末上の Android アプリをテストする macOS ネイティブの補助アプリです。常時表示の操作パネル、dp 単位のレイアウト検査、任意で使える MCP サーバーにより、手動テストとエージェント操作に対応します。
主な機能
- 01端末と表示設定のワンクリック操作
- 02レイアウト測定と TalkBack 監査
- 03アプリデータと SQLite の検査
- 04スクリーンショット、録画、スナップショット
- 05UI と端末操作のための 18 個の MCP ツール
活用シーン
- 01ダークモード、大きなフォント、RTL でのレイアウトテスト
- 02Compose と Views の画面をデザインと照合
- 03アプリの設定値や SQLite データの確認
- 04コーディングエージェントによるエミュレーター操作とログ確認
MCP 対応
MCP サーバーを内蔵し、AI エージェントにスクリーンショット、UI ツリー、タップ、入力、端末設定、アプリ、ログ、データ用のツールを提供します。アクセス権はオフ、読み取り専用、フルコントロールから選べます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Oh My Android
ダークモード、大きなフォント、RTL、TalkBack で Android アプリをテストできます。それぞれワンクリックで切り替えられ、adb コマンドは不要です。
Mac 用の無料のネイティブ ADB GUI です。Android Emulator の隣にドッキングできます。実機でも使用できます。
ダークモード、フォントサイズ、アラビア語の RTL、SMS と着信。それぞれワンクリックで操作できます。
brew install --cask ateymoori/tap/oh-my-android
または、署名・公証済みの zip をリリースからダウンロードできます · macOS 26 Tahoe 以降 · Apple シリコン · すでにお使いの Android SDK を使用します(詳細) · ⭐ Android 開発者にもっと見つけてもらえるよう、スターをお願いします
- 🎛️ 約 50 種類のテスト操作をいつでも表示。 ダークモード、フォントと表示サイズ、RTL や疑似ロケールを含む言語とロケール、TalkBack、太字、レイアウト境界、タップ表示、アニメーションのオフ、ネットワーク速度、GPS、着信と SMS。各アイコンには、デバイスの実際の状態が表示されます。
- 📐 あらゆるアプリで使える、dp 単位の Layout Inspector。 ビューにカーソルを合わせると、Compose と Views のどちらでも、そのサイズと周囲の間隔を dp 単位で確認できます。Figma のエクスポートを重ねて、デザインと実装を比較できます。⇧⌘A を押すと、TalkBack の停止位置に番号を付け、ラベルの欠落や 48 dp 未満のタッチターゲットを検出します。
- 🗄️ adb を使わずにデバッグビルドを操作。 SharedPreferences と SQLite の読み取り、データの消去、ディープリンクの起動、APK のドラッグ&ドロップによるインストール、権限のリセットができます。
- 🪶 ネイティブで軽量。 SwiftUI、イベント駆動型、Electron なし、テレメトリーなし。無料のオープンソース(MIT)です。
Android Studio だけではだめですか? Studio のデバイス UI ショートカットでも、ダークモード、フォントサイズ、 アプリの言語、TalkBack(API 33 以降)をワンクリックで切り替えられます。Studio を開いているときは、そちらをお使いください。Oh My Android では、Studio を閉じた状態でもエミュレーターとスマートフォンの両方で使える、常時表示のパネルを追加します。 Studio のショートカットにはない切り替え機能(太字、疑似ロケール、レイアウト境界、タップ表示、アニメーション)や、Studio の Layout Inspector ではデバッグ可能なアプリが必要な、あらゆるアプリでの dp 測定が利用できます。Studio、scrcpy、mobile-mcp との比較:docs/COMPARISON.md。
🤖 Claude Code、Codex、または Cursor をお使いですか? アプリには MCP サーバー(18 個のツール)が付属しており、エージェントから エミュレーターの画面を dp 単位でキャプチャしたり、タップしたり、ダークモードや RTL を切り替えたりできます。セットアップ →
![]() | ![]() |
| コントロールパネル | Layout Inspector + TalkBack 監査 |
機能 · adb チートシート · Layout Inspector · AI エージェント(MCP) · トラブルシューティング · FAQ · コントリビュート · ウェブサイト
## 機能| 利用できる機能 | |
|---|---|
| 🎨 外観 | ダークモード · フォントサイズ(0.85× → 2×) · 表示サイズ · 言語とロケール(RTL と疑似ロケールを含む) · 回転 |
| 📦 アプリ(画面に表示中のアプリ) | 再起動 · データを消去 · ディープリンクを開く · APK をインストール(パネルにドラッグすることもできます) · アプリ情報 · 権限をリセット · 強制停止 · アンインストール |
| 📸 キャプチャ | スクリーンショットを保存してクリップボードにコピー · 音声付き画面録画 · 品質プリセット |
| 🌐 ネットワーク | LTE、HSDPA、3G、EDGE、GPRS、GSM の速度とレイテンシをエミュレート · 機内モード · Wi‑Fi · モバイルデータ |
| 📐 レイアウトとパフォーマンス | レイアウトインスペクター · レイアウト境界を表示 · GPU オーバードロー · GPU プロファイルバー · タップを表示 · ポインター位置 · アニメーションをオフ(Espresso / Maestro 用) · 開発者向けオプション |
| ♿ アクセシビリティ | TalkBack のオン/オフ · 太字テキスト · 色を反転 · TalkBack の読み上げ順序を監査 |
| 🧭 ナビゲーションと入力 | 戻る · ホーム · 最近使用したアプリ · フォーカス中のフィールドにテキストを入力 · キーボードを非表示 |
| 🛰️ シミュレーション(エミュレーター) | GPS 位置情報:都市のプリセットまたは緯度/経度 · バッテリー残量 · 充電中 · 指紋 · 着信 · 受信 SMS |
| 💾 スナップショット(エミュレーター) | クリーンな状態を保存し、数秒で復元 |
破壊的な操作(データの消去、アンインストール、権限のリセット)を実行する前に確認が求められます。
アップデートと要件
Homebrew のほか、最新リリースから zip をダウンロードし、 解凍して、Oh My Android.app を「アプリケーション」に移動できます。アプリは Apple によって署名および公証されています。
アップデート: 新しいバージョンが公開されると、メニューバーアイコンにドットが表示されます。メニューの
Update to … をクリックして、新機能を確認し、ワンクリックでインストールします。確認なしにアプリがアップデートされることはありません。確認は 1 日に 1 回行われます。無効にするには、Settings → Updates を選択してください。brew upgrade --cask oh-my-android も使用できます。
要件: macOS 26 Tahoe 以降、Apple シリコン、および
Android Studio の Android SDK(または brew install --cask android-commandlinetools)。
アプリは SDK を自動的に検出します。SDK が標準とは異なるフォルダーにある場合は、Settings → Android SDK で選択してください。
adb コマンドはもう不要
各アイコンから、これまで入力したり検索したりしていたコマンドを実行できます。
| タスク | adb での方法 | Oh My Android |
|---|---|---|
| エミュレーターでダークモードをオンにする | adb shell cmd uimode night yes | 🌙 ワンクリック |
| フォントサイズを大きくする | adb shell settings put system font_scale 1.3 | Aa − / + |
| デバイスの言語を変更する | adb shell cmd locale set-device-locale sv-SE | 🌐 メニューから選択 |
| RTL レイアウトをテストする | adb shell cmd locale set-device-locale ar-EG | 🌐 「العربية (RTL)」 |
| ネットワークを低速化する(3G / EDGE) | adb emu network speed edge + adb emu network delay edge | プロファイルを選択 |
| GPS 位置情報を偽装する | adb emu geo fix 18.0686 59.3293 | 都市を選択 |
| UI テスト用にアニメーションをオフにする | 3 × adb shell settings put global …_scale 0 | ワンクリック |
| レイアウト境界を表示する | adb shell setprop debug.layout true + システム更新呼び出し | ワンクリック |
| アプリデータを消去する | パッケージを調べてから、adb shell pm clear <package> | 🗑 ワンクリック |
| スクリーンショットを撮る | adb exec-out screencap -p > shot.png | 📷 保存してコピー |
| TalkBack をオンにする | adb shell settings put secure enabled_accessibility_services … | ワンクリック |
| ディープリンクを開く | adb shell am start -a android.intent.action.VIEW -d "myapp://…" | 貼り付けて開く |
レイアウトインスペクター
画面を固定して、Figma のように寸法を測定できます。Jetpack Compose と従来の Views に対応しています。
- 任意の要素にカーソルを合わせると、dp 単位のサイズを確認できます。要素をクリックしてから別の要素にカーソルを合わせると、その間の距離(兄弟要素間の隙間、親要素内のパディング)を確認できます。
- 8 dp グリッド、カラーピッカー(16 進数、⇧⌘C でコピー)、推定テキストサイズ(sp)に対応しています。
- デザインオーバーレイ:Figma の PNG エクスポートをウィンドウにドロップし、1×/2×/3×または幅に合わせるを選択して、不透明度を設定するか差分ブレンドを使用し、矢印キーで位置を微調整できます。デザインと実装をピクセル単位で比較できます。
アクセシビリティ監査
レイアウトインスペクターで ⇧⌘A を押します。スクリーンリーダーの各読み上げ位置に、おおよその TalkBack の読み上げ順を示す番号と、TalkBack が読み上げる内容、問題の一覧が表示されます。問題には、ラベルのないボタン、コンテンツ説明のない画像、48 × 48 dp 未満のタッチターゲットが含まれます。
データインスペクター
検索機能を使って、デバッグ可能な任意のアプリの SharedPreferences(キー、型、値)と SQLite データベース(テーブル、先頭 500 行)を参照できます。Android Studio と同じアクセス方法である adb shell run-as を使用するため、リリースビルドのデータは保護されます。読み取り専用なので、デバイス上のデータは変更されません。
AI エージェント(MCP)
Oh My Android には MCP サーバーが含まれているため、AI コーディングエージェントがエミュレーターを確認して操作できます。スクリーンショットの撮影、dp 単位の UI ツリーの読み取り、タップやテキストの入力、ダークモードや RTL への切り替え、logcat やアプリのデータベースの読み取りが可能です。エージェントは画面を構築して実行し、結果を確認して、自分で修正できます。
ボタンでは Homebrew のパス /opt/homebrew/bin/ohmyandroid-mcp を使用します。zip でインストールした場合は、以下のメニューバーから設定してください。
ワンステップで設定: メニューバーのアイコン → AI Agents → Set Up… からエージェントを選び、Copy をクリックします (または Add to Cursor / Add to VS Code)。手動で設定する場合:
claude mcp add --scope user oh-my-android -- ohmyandroid-mcp # Claude Code
codex mcp add oh-my-android -- ohmyandroid-mcp # Codex CLI
gemini mcp add --scope user oh-my-android ohmyandroid-mcp # Gemini CLI
{ "mcpServers": { "oh-my-android": { "command": "/Applications/Oh My Android.app/Contents/MacOS/ohmyandroid-mcp" } } }
この JSON は Cursor、Claude Desktop、Windsurf、Gemini CLI、その他のエージェントで使用できます(VS Code では "servers" を使用します)。
Homebrew を使うと ohmyandroid-mcp が PATH に追加されます。zip でインストールした場合は、上記のフルパスを使用してください。
ほかの追加方法:
- Claude Code プラグイン:
/plugin marketplace add ateymoori/oh-my-androidを実行し、続けて/plugin install oh-my-android@oh-my-androidを実行します - Claude Desktop 拡張機能: 最新リリースから
oh-my-android-<version>.mcpbを開きます - MCP Registry:
io.github.ateymoori/oh-my-androidとして登録されています
操作権限はいつでも管理できます: メニューバーのアイコン → AI Agents → Off、Read only、または Full control を選択します。サーバーは呼び出しのたびに設定を確認するため、変更はすぐに反映されます。データを失う可能性のあるツールには破壊的操作のマークが付いているため、エージェントは実行前に確認を求めます。
| グループ | ツール |
|---|---|
| 👀 確認 | screenshot(1 px = 1 dp にスケーリング) · get_ui(ref 付きのコンパクトな UI ツリー) · accessibility_audit |
| 👆 操作 | tap(ref、テキスト、または x,y を指定) · swipe · type_text · press_key |
| 📱 デバイス | list_devices · get_device_state · set_device_settings:ダークモード、フォントスケール、表示サイズ、ロケール/RTL、画面の向き、TalkBack、アニメーション、Wi-Fi、機内モード、ネットワーク速度、GPS、バッテリー |
| 📦 アプリ | list_apps · open_app(パッケージまたはディープリンクを指定し、コールドスタート時間を報告) · manage_app · install_apk · logcat |
| 🗄️ データ | read_preferences · query_database(コピー上で読み取り専用 SQL を実行) |
| 🧪 エミュレーター | emulator_action:指紋認証、着信、SMS、スナップショットの保存/読み込み |
すぐに使えるプロンプト:accessibility_review、ui_matrix(ダークモード、大きなフォント、RTL、疑似ロケール)、debug_crash。
エージェントに試しに頼んでみましょう:
- 「エミュレーターのスクリーンショットを撮って、この画面をダークモードで確認してください。」
- 「アプリを開いて設定に移動し、ダークモード、フォントスケール 2、アラビア語で確認してください。問題があれば修正してください。」
- 「保存をタップするとアプリがクラッシュします。再現して、クラッシュの内容を読み取り、修正してください。」
- 「ログイン画面の TalkBack 対応状況を監査し、コードの問題を修正してください。」
モデル向けに設計されています: すべての位置は、レイアウトコードと同じ dp 単位です。出力はコンパクトなテキストで、UI ツリーは生の uiautomator XML の約 10 分の 1 のサイズです。また、18 個すべてのツール定義を合わせても約 3k トークンです。サーバーは stdio 経由で MCP 2026-07-28 とそれ以前のバージョン(2024-11-05 から 2025-11-25)をサポートし、依存関係がなく、ネットワーク接続も不要です。
プライバシーとセキュリティ
- 🔒 アナリティクスなし、テレメトリーなし、アカウント不要です。 独自に行う唯一のネットワークリクエストはアップデート確認です。1 日に 1 回、このリポジトリの GitHub リリースから小さなフィードを読み込みます。あなたやデバイスに関する情報は一切送信しません。Settings → Updates で無効にできます。
- アップデート(Sparkle)は、ユーザーが選択した場合にのみインストールされます。また、このプロジェクトの EdDSA キーおよび同じ Developer ID で署名されている場合に限ります。
- 接続先は、ユーザー自身の Android SDK にある
adbのみです。入力したテキストは、デバイスに送信される前にシェル用にエスケープされます。 - Data Inspector から作成したデータベースのコピーは、再読み込み時とアプリ終了時に削除されます。
- MCP サーバーは AI エージェントが起動した場合にのみ実行され、許可したアクセス範囲内でのみ動作します。読み取った情報(画面、UI、ログ、アプリデータ)はエージェントに送られ、そこからエージェントのモデルプロバイダーに送信されます。
- Developer ID で署名され、ハードニングされたランタイムを使用し、Apple の公証を受けています。
脆弱性を発見しましたか?SECURITY.md をご覧ください。
トラブルシューティング
- adb が見つからない場合: Settings → Android SDK で SDK を選択するか、
ANDROID_HOMEを設定してください。 - エージェントにデバイスがないと言われる場合: エミュレーターを起動するか、スマートフォンを接続してから、エージェントに
list_devicesの実行を依頼してください。 - エージェントが
ohmyandroid-mcpを起動できない場合(zip インストール):PATHに追加されるのは Homebrew のみです。フルパス/Applications/Oh My Android.app/Contents/MacOS/ohmyandroid-mcpを使用してください。 - Homebrew から tap が信頼されていないと言われる場合: Homebrew 6 以降では、サードパーティの tap を信頼するよう求められます。完全なコマンド
brew install --cask ateymoori/tap/oh-my-androidを実行すると、この cask のみが信頼されます。短い名前を使う場合は、先にbrew trust --cask ateymoori/tap/oh-my-androidを実行してください。 - エージェントに「Access is Off」と表示される場合: メニューバーのアイコン → AI Agents → Read only または Full control を選択してください。
よくある質問
Oh My Android は無料ですか?
はい。MIT ライセンスのもとで、無料のオープンソースソフトウェアとして提供されています。
Android Emulator や Android Studio の代わりになりますか?
いいえ。これらを補助するアプリです。すでにお使いの Android SDK を通じて、Google のエミュレーターやお使いのスマートフォンを操作します。エミュレーターも SDK も同梱していません。
実機の Android スマートフォンでも使えますか?
はい。USB または Wi‑Fi 経由の adb で使えます。エミュレーター専用の機能(GPS、バッテリー、通話、SMS、スナップショット、ネットワーク速度、画面録画)のみ、エミュレーターが必要です。
Jetpack Compose に対応していますか?
はい。レイアウトインスペクターとアクセシビリティ監査では、Views と同様に uiautomator を通じて Compose のセマンティクスツリーを読み取ります。
どの AI エージェントに対応していますか?
stdio 経由の MCP に対応するエージェントであれば、どれでも使えます。Claude Code、Claude Desktop、Codex CLI、Cursor、VS Code (GitHub Copilot)、Windsurf、Gemini CLI、JetBrains AI、Zed などに対応しています。アプリを開いておく必要はありません。エージェントは必要なときにサーバーを起動します。
Android Emulator でダークモードを有効にするにはどうすればよいですか?
パネルの 🌙 アイコンをクリックしてください。adb を使う場合は adb shell cmd uimode night yes を実行します(無効にする場合は no を指定します)。
Android Emulator で RTL レイアウトをテストするにはどうすればよいですか?
🌐 メニューから「العربية (RTL)」などの RTL 言語、またはハードコードされた文字列やミラーリングの不具合を見つけるための擬似ロケール(ar-XB、en-XA)を選択してください。adb を使う場合は adb shell cmd locale set-device-locale ar-EG を実行します。
Android Emulator で低速なネットワークをシミュレートするにはどうすればよいですか?
ネットワークメニューからプロファイル(LTE、HSDPA、3G、EDGE、GPRS、GSM)を選択してください。パネルでは速度とレイテンシの両方を設定します。adb emu network speed edge と adb emu network delay edge を実行した場合と同じです。
Claude Code、Codex、Cursor 向けの Android MCP サーバーはありますか?
はい。ohmyandroid-mcp はアプリに同梱されています。エージェントは dp 単位でスクリーンショットを撮影し、UI ツリーを読み取り、タップや入力を行い、ダークモード、フォントサイズ、RTL を切り替え、logcat を読み取れます。AI エージェント(MCP)をご覧ください。
npx または uvx のパッケージはありますか?
いいえ。サーバーはランタイム不要のネイティブバイナリです。Homebrew を使うと、ohmyandroid-mcp が PATH に追加されます。
Windows や Linux に対応していますか?
現時点では対応していません。SwiftUI で構築されたネイティブの macOS アプリです。
Mac App Store で配布されていないのはなぜですか?
Mac App Store のアプリは App Sandbox 内で実行する必要があり、サンドボックス化されたアプリは adb を起動できません。
代わりに、Homebrew と GitHub のリリースは Apple による署名と公証を受けています。
macOS 26 以降が必要なのはなぜですか?
パネルでは、macOS 26 Tahoe で新たに導入された Liquid Glass などの API を使用しています。
brew install xcodegen
git clone https://github.com/ateymoori/oh-my-android.git && cd oh-my-android
xcodegen generate
open OhMyAndroid.xcodeproj
Xcode 26 が必要です。ローカルビルドはアドホック署名されるため、Apple Developer アカウントは必要ありません。
アーキテクチャ
Sources/
App/ entry point, AppDelegate (host actions), Settings, assets
Core/ no UI, no feature knowledge
Shell/ ShellRunning: non-blocking Process runner, stopped on timeout or cancellation
Android/ AndroidSDK, ADBClient, DeviceTracker (adb track-devices), UI hierarchy, app data
SQLite/, Imaging/
Features/ one small type per capability, registered in FeatureCatalog (Foundation only)
MCP/ ohmyandroid-mcp: stdio MCP server built on Core and Features, shipped inside the app
State/ AppModel (composition root), DeviceStore, FeatureStore, inspector stores
Windows/ FloatingPanel, emulator window docking, tool windows
UI/ SwiftUI; FeatureCell renders any feature from its protocol
依存関係の方向は一方向です:UI → State → Features → Core。各機能はADBClientプロトコルを介してデバイスとやり取りし、HostActions(ファイルピッカー、クリップボード、Finder)を介してMacとやり取りするため、それぞれ小さな値型です。Swift 6言語モード、厳格な並行処理、警告ゼロです。
| プロトコル | 操作 | 例 |
|---|---|---|
ToggleFeature | オン/オフのアイコン | ダークモード、TalkBack、Wi‑Fi |
BatchReadable (アドオン) | 共有のadb shell呼び出し1回で状態を読み取り | すべてのsettings/getprop機能 |
StepperFeature | −/+付きポップオーバー | フォントサイズ、ディスプレイサイズ |
ChoiceFeature | メニュー | 言語、ネットワーク速度、バッテリー |
ActionFeature | ワンタップ | スクリーンショット、回転、強制停止 |
TextActionFeature | テキストフィールド付きポップオーバー | ディープリンク、テキスト入力、SMS |
**消費電力:**ポーリングは行いません。デバイスの変更はadbのtrack-devicesストリームから取得します。デバイスを選択したとき、アクションの実行後、ポインターがパネルに戻ったときに、機能の値を1回のバッチadb shell呼び出しで読み取ります。エミュレーターの実行中かつパネルが表示されている間のみ、ドッキングで1 Hzのタイマーを使用します。
アプリとメニューバーのアイコンはコードで描画されます:Scripts/make-icon.swift。
ロードマップ
- 比較モード:2台のデバイスを横並びに表示し、入力をミラーリングして、ピクセル差分を表示
- パネルウィンドウ内にエミュレーター画面を埋め込み
- Data InspectorでのDataStore(
.preferences_pb)サポート - MCP:エミュレーターの起動と停止、画面の録画
アイデアをお持ちですか?機能リクエストを送信してください。 機能の追加は小さなSwift構造体1つでできます。CONTRIBUTING.mdをご覧ください。
⭐ Oh My Androidが時間の節約に役立ったら、このリポジトリにスターを付けてください。
スターを付けると、ほかのAndroid開発者がこのツールを見つけやすくなり、新機能の開発を後押しできます。
新しいバージョンごとに通知を受け取るには、Watch → Custom → Releasesをクリックしてください。
ライセンス
AndroidはGoogle LLCの商標です。Oh My AndroidはGoogleと提携しておらず、Googleから承認も受けていません。 Androidロボットは、Googleが作成して共有した作品を複製または改変したものであり、Creative Commons 3.0 Attribution Licenseに記載された条件に従って使用しています。
🇸🇪 Royan ABがスウェーデンで制作
Oh My Androidのウェブサイト · royan.se
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。

