Maestro Automation Engineは、モバイル(iOS・Android)とWebアプリケーションのE2Eテストを自動化するオープンソースフレームワークだ。GitHub Stars 13,500超、Apache 2.0ライセンスで公開されており、YAML形式でテストシナリオを記述するだけで、複雑なテストコードを一切書かずにクロスプラットフォームのテスト自動化を実現する。Appiumの複雑なセットアップに悩んでいるチームや、テスト自動化をこれから始める組織にとって、導入コストを大幅に下げる選択肢となる。
この記事ではDevOps・自動化に特化して解説します。AI自動化・DevOps全般は AI自動化ツール完全ガイド2026|ノーコードからコードまで徹底比較 をご覧ください。
Maestro Automation Engineとは:YAML駆動のE2Eテスト自動化エンジン
Maestro Automation Engineは、mobile-dev-inc社が開発したオープンソースのUI テスト自動化フレームワークだ。Appium、Espresso、XCTest、Selenium、Playwrightといった先行ツールの学習を踏まえ、「人間が読める構文」と「解釈型の実行エンジン」の組み合わせで設計されている。
コア思想は明確で、テストはYAMLで書き、コードは書かない。この設計により、QAエンジニアやプロダクトマネージャーなど、プログラミング経験が少ないメンバーでもテストの作成・保守が可能になる。実行エンジンはKotlin(コードベースの約76%)で構築されており、Java 17以上の環境で動作する。
(人間が読める構文)"] --> B["Maestro CLI
(解釈型エンジン)"] B --> C["iOS Driver
(XCTest経由)"] B --> D["Android Driver
(UIAutomator経由)"] B --> E["Web Driver
(Chrome DevTools経由)"] C --> F["テスト結果
スクリーンショット
ビデオ記録"] D --> F E --> F
Maestro Automation Engineの機能一覧:主要機能を徹底解説
Maestro Automation Engineの全機能を体系的に整理する。YAMLベースのテスト記述から、ビジュアルIDE、クラウド実行まで、テスト自動化に必要な機能が網羅されている。
コア機能
| カテゴリ | 機能 | 説明 |
|---|---|---|
| テスト記述 | YAML形式 | launchApp、tapOn、assertVisible等の直感的な命令文 |
| プラットフォーム | マルチ対応 | iOS・Android・Web(React Native・Flutter含む) |
| 安定性 | 自動待機 | ネットワーク遅延・非同期処理を自動待機、フレーキーテスト削減 |
| 開発支援 | Maestro Studio | ブラウザベースのビジュアルIDEでUI要素特定 |
| レポート | 自動生成 | スクリーンショット・ビデオ記録付きテスト結果 |
| ロジック | 条件分岐・ループ | YAML拡張構文+JavaScript埋め込み対応 |
| スケール | クラウド実行 | Maestro Cloudで並列テスト、最大90%時間短縮 |
YAML命令文の詳細リファレンス
Maestro Automation Engineで使用できる主要なYAML命令文を以下に整理する。
# アプリ操作
- launchApp # アプリ起動
- launchApp:
appId: "com.example.app" # 特定アプリ起動
clearState: true # 状態クリア付き起動
# タップ操作
- tapOn: "ボタンテキスト" # テキストでタップ
- tapOn:
id: "button_login" # IDでタップ
- tapOn:
point: "50%,80%" # 座標でタップ
# テキスト入力
- inputText: "入力テキスト" # テキスト入力
- clearText # テキストクリア
- eraseText: 5 # 5文字削除
# アサーション(検証)
- assertVisible: "期待テキスト" # 表示確認
- assertNotVisible: "非表示テキスト" # 非表示確認
# スクロール・スワイプ
- scrollUntilVisible:
element: "対象テキスト"
direction: DOWN # 下方向スクロール
# 待機
- waitForAnimationToEnd # アニメーション完了待ち
- extendedWaitUntil:
visible: "読み込み完了"
timeout: 10000 # 10秒タイムアウト
# スクリーンショット
- takeScreenshot: "screenshots/step1" # スクリーンショット保存
# 条件分岐
- runFlow:
when:
visible: "ログイン"
file: flows/login.yaml # 条件付きフロー実行
# 繰り返し(データ駆動テスト)
- repeat:
times: 3
commands:
- tapOn: "次へ"
copyTextFrom(テキストコピー)、setLocation(GPS位置偽装)、hideKeyboard(キーボード非表示)など多数の命令文がある。
Maestro Automation Engineの導入方法:4ステップで完了
Maestro Automation Engine 導入の全体像を以下のフローで示す。インストールからCI/CD統合まで、4ステップで完了する。
CLIインストール
(1コマンド)"] --> B["Step 2
YAMLテスト作成
(5分)"] B --> C["Step 3
テスト実行
(即座に結果)"] C --> D["Step 4
CI/CD統合
(GitHub Actions等)"] D --> E["本番運用
クラウド並列実行"]
ステップ1:インストール
Java 17以上が前提。macOS・Linuxでは以下の1コマンドでインストールが完了する:
# Maestro CLIのインストール
curl -fsSL "https://get.maestro.mobile.dev" | bash
# バージョン確認(CLI 2.4.0が最新)
maestro --version
ステップ2:テストフローの作成
テストファイルをYAML形式で記述する。以下はログインフローのテスト例:
# tests/login_test.yaml
appId: com.example.myapp
---
- launchApp
- tapOn: "ログイン"
- tapOn: "メールアドレス"
- inputText: "[email protected]"
- tapOn: "パスワード"
- inputText: "password123"
- tapOn: "送信"
- assertVisible: "ダッシュボード"
ステップ3:テストの実行
# 単一テストの実行
maestro test tests/login_test.yaml
# ディレクトリ内の全テストを実行
maestro test tests/
# 特定デバイスを指定
maestro test --device emulator-5554 tests/login_test.yaml
# Maestro Studioでビジュアルデバッグ
maestro studio
ステップ4:CI/CDへの統合
GitHub Actionsでの統合例。YAMLファイルを追加するだけで自動テスト環境が構築できる:
# .github/workflows/e2e-test.yml
name: Maestro E2E Tests
on: [push, pull_request]
jobs:
test:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
- name: Install Maestro
run: curl -fsSL "https://get.maestro.mobile.dev" | bash
- name: Boot iOS Simulator
run: xcrun simctl boot "iPhone 15"
- name: Run E2E Tests
run: |
export PATH="$PATH:$HOME/.maestro/bin"
maestro test tests/
テスト自動化をCI/CDに統合することで、AIを活用した開発ワークフロー全体の効率化にもつながる。
Maestro Automation Engineのメリット
Maestro Automation Engineを導入する具体的なメリットを整理する。
1. セットアップが1コマンドで完了する。Appiumではサーバーの起動、WebDriverの設定、言語バインディングのインストールなど複数のステップが必要だが、Maestroはcurlコマンド1つで即座に使い始められる。初回テスト実行まで約10分。
2. プログラミング不要でテストを記述できる。YAML構文は自然言語に近く、tapOn: "送信"のような命令文で操作を定義する。テストコードの保守にプログラミングスキルが不要なため、QAエンジニアや非開発者が直接テストを作成・修正できる。
3. 3プラットフォームを1つのツールで統一できる。iOS・Android・Webで別々のテストフレームワークを管理する必要がない。テスト記述のフォーマットが統一されるため、プラットフォーム間でテスト資産を共有しやすい。
4. フレーキーテストが大幅に減る。Maestroの実行エンジンは自動待機機能を内蔵しており、UIの描画完了やネットワークレスポンスを自動で待つ。手動でsleepやwaitを挿入する必要がなく、テストの安定性が向上する。
5. ビジュアルIDE(Maestro Studio)が無料で使える。ブラウザ上でUI要素をクリックしてテスト命令を生成できるため、要素のID特定やセレクタ調査の手間が省ける。
Appium・Detox・Playwrightとの比較:Maestro Automation Engineの立ち位置
テスト自動化ツールの選定で比較されることの多い4つのフレームワークを、主要な観点で整理する。
| 項目 | Maestro | Appium | Detox | Playwright |
|---|---|---|---|---|
| 対応プラットフォーム | iOS・Android・Web | iOS・Android・Web | iOS・Android(React Native限定) | Webのみ |
| テスト記述言語 | YAML(コード不要) | Java / Python / JS等 | JavaScript | JS / TS / Python / C# |
| 初期セットアップ | 1コマンド(約1分) | サーバー+ドライバ設定(数時間) | npm install(React Native限定) | npm install(数分) |
| テスト方式 | ブラックボックス | ブラックボックス | グレーボックス | ブラックボックス |
| 自動待機 | 組み込み | 手動設定が必要 | 組み込み | 組み込み |
| 学習コスト | 低(YAMLのみ) | 高(プログラミング必須) | 中(JS必須) | 中(プログラミング必須) |
| クラウド実行 | Maestro Cloud | BrowserStack / Sauce Labs | なし(自前構築) | Playwright Cloud |
| GitHub Stars | 13.5k | 19k | 11k | 72k |
| ライセンス | Apache 2.0 | Apache 2.0 | MIT | Apache 2.0 |
Appiumは最も成熟したツールだが、セットアップの複雑さと保守コストが課題。DetoxはReact Nativeに特化しグレーボックステストで高速だが、他フレームワークには非対応。PlaywrightはWebテストのエコシステムが最も充実しているが、モバイルテストには対応していない。
Maestro Automation Engineは「モバイル + Webを1つのツールで、コード不要で」という要件に最も適した選択肢だ。
Maestro Automation Engineのコスト・料金プラン
無料で使える範囲
Maestro Automation Engineはオープンソース(Apache 2.0)のため、以下は完全無料で利用できる:
- CLIによるローカルテスト実行(回数制限なし)
- Maestro Studio(ビジュアルIDE)
- YAML形式のテスト作成・管理
- CI/CDパイプラインへの組み込み
ローカル環境でのテスト実行のみであれば、コストはゼロだ。
Maestro Cloud(有料プラン)
クラウドでのテスト並列実行が必要な場合は、Maestro Cloudの有料プランを利用する。
| プラン | 月額 | 並列実行 | 主な機能 |
|---|---|---|---|
| Free Trial | 無料(7日間) | 制限あり | クラウド実行の試用 |
| Starter | $125〜 | 基本 | 並列実行、デバッグツール、通知 |
| Enterprise | 要問合せ | カスタム | SLA、専用サポート、SSO |
コスト比較の考え方
Appiumをクラウドで実行する場合、BrowserStackやSauce Labsの月額料金(数百ドル〜)に加え、テストコードの開発・保守コスト(エンジニア工数)が発生する。Maestroは、テスト記述がYAMLのため開発工数が大幅に少なく、ローカル実行なら追加費用なし。クラウド並列実行が不要な小〜中規模チームでは、総コストでMaestroが最も有利になるケースが多い。
Claude Codeのようなコーディング支援ツールと組み合わせてテストYAMLの生成を自動化すれば、さらに工数を削減できる。
Maestro Automation Engineの導入を検討する際のポイント
導入が適しているケース
- テスト専任エンジニアがいないスタートアップやスモールチーム
- iOS・Android両対応のクロスプラットフォームアプリを開発している
- Appiumのセットアップ・保守コストに課題を感じている
- QAメンバーがプログラミングスキルを持たないチーム
- テスト自動化をこれから始める組織
慎重に検討すべきケース
- React Nativeのみ使用している場合(Detoxのほうがグレーボックステストで高速な可能性)
- Web専用アプリの場合(Playwrightのほうがエコシステムが充実)
- 複雑なロジック判定が多いテスト(YAMLの拡張+JavaScript埋め込みは可能だが限界あり)
- 大量の既存Appiumテストがある場合(自動変換ツールはなく、手動移行が必要)
段階的な導入戦略
既存のテスト環境がある場合、いきなり全面移行するのではなく、新規テストをMaestroで作成し、既存テストは並行運用するアプローチが現実的だ。Maestroのセットアップが簡単なため、並行運用のコストは低い。まずは重要なスモークテストやログインフローなど、頻度の高いテストから移行することで、効果を早期に実感できる。
Maestro Automation Engineを業務に組み込む3つの判断軸
「Appiumを置き換えるべきか、Playwrightで十分なのか」は導入前に必ず迷うポイントだ。Maestroは「モバイルファースト × YAML × ローカル無料」の組み合わせで強みが出るため、業務要件で迷うチームに向けて以下の判断軸を整理した。
| 判断軸 | Maestroが向くケース | 別ツールが向くケース |
|---|---|---|
| プラットフォーム比率 | iOS/Android中心、Web従 | Web中心 → Playwright |
| 担当者のスキル | QAエンジニア・PdM中心(コード書かない) | 開発エンジニアがメイン → Appium |
| シナリオの規模 | 1〜200ケース/月実行 | 数千ケース並列実行 → Maestro Cloud or Appium Cloud |
| Flaky耐性 | 公式の自動retryで吸収したい | リトライ戦略を細かく制御 → Detox |
| CI/CD連携 | GitHub Actions単純連携 | 複雑なクラウドファーム → Sauce Labs / BrowserStack |
ローカル実行は完全無料、Maestro Cloudは月額125ドルからの並列実行課金。Maestro Cloudを使う前に、まずローカル+GitHub Actionsの無料枠で月100テストまで運用してから判断するのが定石だ。
# Maestroの最小構成YAML(appId と flowName のみで動く)
appId: com.example.myapp
---
- launchApp
- tapOn: "ログイン"
- inputText: "[email protected]"
- tapOn: "パスワード"
- inputText: "secret"
- tapOn: "送信"
- assertVisible: "ようこそ"
「maestro automation eingine」で検索される表記ゆれもあるが、正しいスペルは Maestro Automation Engine(mobile-dev-inc/Maestro)。GitHub上での公式リポジトリ名と一致させると、CIでツール導入時の混乱を避けられる。
Maestro Automation Engine導入時のトラブルシューティング
Maestro Automation Engine導入でよくある問題と解決策をまとめる。
テストがフレーキー(不安定)になる場合
# 問題: 要素がまだ描画されていないのにタップしようとする
# 解決: extendedWaitUntilで明示的に待機
- extendedWaitUntil:
visible: "対象要素"
timeout: 5000
- tapOn: "対象要素"
iOS Simulatorでテストが動かない場合
# Simulatorが起動しているか確認
xcrun simctl list devices | grep Booted
# Simulatorが起動していない場合
xcrun simctl boot "iPhone 15"
# Maestro CLIがSimulatorを認識しているか確認
maestro hierarchy
Android Emulatorでの接続エラー
# ADB接続の確認
adb devices
# デバイスが表示されない場合
adb kill-server && adb start-server
# Maestroのデバイス指定
maestro test --device emulator-5554 tests/
テスト実行が遅い場合の最適化
| 最適化手法 | 効果 | 実装方法 |
|---|---|---|
clearState: false |
アプリ再インストール省略 | launchApp設定で指定 |
| テスト分割 | 並列実行可能に | ディレクトリ分割+Maestro Cloud |
| 不要な待機削除 | 実行時間短縮 | waitForAnimationToEndの必要性を再検討 |
| スクリーンショット削減 | I/O負荷軽減 | 検証ポイントのみで取得 |
Maestro Studio(
maestro studioコマンド)はデフォルトでポート9999を使用する。他のプロセスとポートが競合する場合はmaestro studio --port 9998で変更可能。また、Studio起動中はテスト実行と同時に使用できないため、デバッグ時のみ起動すること。
テスト自動化ツールの技術的な選定にあたっては、AIエージェントフレームワーク比較も参考にしたい。テスト自動化の先にあるCI/CDパイプライン全体の設計では、Apache Airflowのようなワークフローエンジンとの組み合わせも検討に値する。
関連記事: AI自動化ツール完全ガイド2026|ノーコードからコードまで徹底比較