Maestro について
Maestro は Android、iOS、Web アプリの UI とエンドツーエンドテスト向けのオープンソースフレームワークです。YAML フローを使い、CLI 内蔵の MCP サーバーを通じてエージェントが実機を操作できます。
主な機能
- 01YAML による読みやすいテストフロー
- 02Android、iOS、Web に対応
- 03エミュレーターやデバイスで実行
- 04動的な画面への自動待機
- 05CLI に MCP サーバーを内蔵
活用シーン
- 01モバイルアプリの E2E テスト作成
- 02Web ブラウザーでの UI フロー検証
- 03コーディングエージェントによる端末操作と確認
- 04YAML テストフローの CI 利用
MCP 対応
Maestro MCP は Maestro CLI に同梱され、MCP クライアントにライブデバイスの画面確認、タップ、スクロール、アサーション機能を公開します。エージェントは YAML の E2E テストフローも作成・実行できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
ヒント
テスター同士がつながることで、素晴らしいことが生まれます — Maestro コミュニティに参加する
Maestro は、Android、iOS、ウェブアプリの UI テストとエンドツーエンドテストを簡単かつ高速にするオープンソースのフレームワークです。
CLI で最初の YAML フローを手書きして 5 分以内に実行することも、Maestro Studio でフローを視覚的に作成することも、Maestro MCP をコーディングエージェントに追加してエージェント型 UI テストを行うこともできます。
フローは、あらゆるエミュレーター、シミュレーター、ブラウザー、Android 実機で実行できます。iOS 実機にはまだ対応していません。
目次
- Maestro を選ぶ理由
- はじめに
- Maestro MCP – エージェント型 UI テスト
- Maestro Studio – テスト IDE
- Maestro Cloud – 並列実行とスケーラビリティ
- リソースとコミュニティ
- 貢献
Maestro を選ぶ理由
Maestro は、前身となるツール(Appium、Espresso、UIAutomator、XCTest、Selenium、Playwright)から得た知見に基づいて構築されています。さらに、早い段階で 3 つの方針を決めました。プラットフォームのアクセシビリティレイヤーを通じてアプリを操作すること、ドライバーや SDK を必要とせず単一のバイナリとしてインストールできること、そしてすべてのテストを YAML コマンドのフラットなリストにすることです。
- 人が読みやすい YAML フロー –
launchApp、tapOn、assertVisibleなどのコマンドで操作を記述します。 - コーディングエージェント向けに設計 – Maestro MCP サーバーは Maestro CLI に同梱されています(
maestro mcp。ほかにインストールするものはありません)。Claude Code、Cursor、Codex、Grok Build、または任意の MCP クライアントから、実機でアプリを操作できます。画面の確認、タップ、スクロール、アサーションを行い、作業中に自分の成果も検証できます。繰り返し実行可能なテストが必要なときは、フローの作成を依頼してください。これがエージェント型 UI テストです。 - フレームワークに依存しない – React Native、Flutter、ネイティブの iOS と Android、Ionic、ハイブリッドアプリのいずれでも、同じコマンドを使用できます。Meta は Maestro を使って React Native 自体をテストしており、Expo は Maestro を推奨 E2E テストプラットフォームとしてサポートしています。
- クロスプラットフォーム対応 – Android、iOS、ウェブ向けの共通フロー構文を、エミュレーター、シミュレーター、ブラウザー、Android 実機で使用できます。
- 堅牢性とスマートな待機 – フレークへの耐性と自動待機機能を備えており、手動で
sleep()を呼び出さなくても動的な UI に対応します。 - 高速な反復と簡単なインストール – インストールコマンドは 1 行で、ドライバー、SDK、依存関係は不要です。フローは解釈実行されるため、コンパイルの手順もありません。5 分で最初のテストを実行できます。
シンプルな例:
# flow_contacts_android.yaml
appId: com.android.contacts
---
- launchApp
- tapOn: "Create new contact"
- tapOn: "First Name"
- inputText: "John"
- tapOn: "Last Name"
- inputText: "Snow"
- tapOn: "Save"
はじめに
Maestro を使用するには、システムに Java 17 以降をインストールする必要があります。次のコマンドを実行して Java のバージョンを確認できます。
java -version
CLI のインストール:
次のコマンドを実行して、macOS、Linux、または Windows(WSL)に Maestro をインストールします。
curl -fsSL "https://get.maestro.mobile.dev" | bash
以下のリンクから、次の手順を確認できます。
- Maestro のインストール(通常の Windows インストール方法も含みます)
- コーディングエージェントに Maestro MCP を追加する
- Maestro CLI で最初のテストを実行する(または、エージェントに実行を依頼するだけでも構いません)
Maestro MCP – エージェントによる UI テスト
Maestro MCP は Maestro CLI に組み込まれており、Claude Code、Cursor、Codex、Gemini CLI、Copilot、Grok Build、または任意の MCP クライアントで動作します。エージェントにライブデバイス(エミュレーター、シミュレーター、または物理 Android デバイス)を提供し、Maestro Viewer がそのデバイスをコーディングエージェント内に埋め込み、実行中のすべての MCP コマンドを表示します。
Maestro MCP を使うと、エージェントはアプリを直接操作できます。画面を確認し、タップやスクロールを行い、アサーションを実行できます。機能の構築や変更を行う間、デバイス上で自分の作業を確認します。
エージェントにテストを書かせることもできます。エンドツーエンドのフローを依頼すると、プレーンな YAML を作成し、パスするまで実行します。フローは決定論的な CI テストとしてリポジトリに残ります。
各コーディングエージェントのセットアップ方法は、Maestro MCP ドキュメントをご覧ください。
Maestro Studio – テスト IDE
Maestro Studio Desktop は、ターミナルを使わずにテストを視覚的に設計、実行できる軽量 IDE です。Studio はオープンソースプロジェクトではありませんが、無料で利用できます。そのため、Maestro Studio のコードはここにはありません。
- 簡単なセットアップ – macOS、Windows、Linux 用のネイティブアプリをダウンロードするだけです。
- ビジュアルなフロービルダーとインスペクター – 操作を記録し、要素を確認して、フローを視覚的に作成できます。
Maestro Cloud – 並列実行とスケーラビリティ
テストスイートが大きくなったら、専用インフラストラクチャ上で数百件のテストを並列実行し、実行時間を最大 90%短縮できます。通知機能、決定論的な環境、包括的なデバッグツールも組み込まれています。
Maestro Cloud の料金体系は完全に明確で、料金ページで確認できます。
リソースとコミュニティ
- 💬 Slack コミュニティに参加
- 📘 ドキュメント
- 📰 ブログ
- 🐦 X でフォロー
- ⏯️ YouTube チャンネルを見る
貢献
Maestro は Apache 2.0 ライセンスのオープンソースです。ぜひご貢献ください!
- 初めての方におすすめの Issueを確認する
- 貢献ガイドを読む
- バグを見つけた場合や機能を提案したい場合は、適切な Issue の作成方法をご覧ください
- フォークしてブランチを作成し、プルリクエストを送信してください。
Maestro が役に立った場合は、⭐ リポジトリにスターを付けてプロジェクトを応援してください。
Built with ❤️ by Maestro.dev
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。