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以上の環境で動作する。

flowchart LR A["YAMLテストフロー
(人間が読める構文)"] --> 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形式 launchApptapOnassertVisible等の直感的な命令文
プラットフォーム マルチ対応 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: "次へ"
YAML命令文の全リストは公式ドキュメントで確認可能。ここに掲載した以外にも、copyTextFrom(テキストコピー)、setLocation(GPS位置偽装)、hideKeyboard(キーボード非表示)など多数の命令文がある。

Maestro Automation Engineの導入方法:4ステップで完了

Maestro Automation Engine 導入の全体像を以下のフローで示す。インストールからCI/CD統合まで、4ステップで完了する。

flowchart LR A["Step 1
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(maestro studioコマンド)はデフォルトでポート9999を使用する。他のプロセスとポートが競合する場合はmaestro studio --port 9998で変更可能。また、Studio起動中はテスト実行と同時に使用できないため、デバッグ時のみ起動すること。

テスト自動化ツールの技術的な選定にあたっては、AIエージェントフレームワーク比較も参考にしたい。テスト自動化の先にあるCI/CDパイプライン全体の設計では、Apache Airflowのようなワークフローエンジンとの組み合わせも検討に値する。

関連記事: AI自動化ツール完全ガイド2026|ノーコードからコードまで徹底比較

参照ソース