次世代検証ツール選定案_問2_モバイルWeb_ローカル実機版

問い 2 (ローカル実機版) ── iOS / iPadOS / Android 全ブラウザ Web アプリ検証ツールの選定

本書の前提: 02_回帰テスト版 の前提に加え、クラウドファーム (BrowserStack / LambdaTest / Sauce Labs / AWS Device Farm) を全廃し、ローカル Mac と USB-C ケーブル接続の実機モバイル端末のみで完結させる 運用に最適化したベストプラクティス。

底本: 02_回帰テスト版/次世代検証ツール選定案_問2_モバイルWeb_回帰テスト版.md の結論を、オールローカル前提に書き直したもの。

調査日: 2026-06-08


結論 (ローカル実機版・最終推奨)

Mac mini 上で Playwright (Android Chrome / Samsung Internet 用) + Appium Safari Driver (iOS / iPadOS Safari 用) を起動し、USB-C 接続の実機モバイルブラウザに対して直接通信する完全ローカル構成。クラウド経由の実機 iOS Safari Playwright サービスは廃止し、自社 Apple Silicon Mac の Web Inspector / safaridriver と Appium Safari Driver で代替する。

項目 CI/CD 前提版 回帰テスト版 ローカル実機版
コアフレームワーク Playwright Playwright Playwright (Android 用) + Appium Safari Driver (iOS 用) のハイブリッド
iOS Safari 接続 BrowserStack 経由 BrowserStack Live USB-C 接続実機 + Appium Safari Driver via safaridriver
Android Chrome 接続 クラウド経由 クラウド経由 USB-C 接続実機 + ADB + Chrome DevTools Protocol
Samsung Internet BrowserStack BrowserStack USB-C 接続実機 Galaxy + Appium
視覚検証 Applitools (CI 版) / PixelMatch (回帰版) PixelMatch PixelMatch + 手動目視
端末ファーム BrowserStack 多重化 / Live BrowserStack Live 完全廃止、自社実機のみ
CI/CD GitHub Actions 並列度 5 廃止 廃止
データ流出 クラウドにスクリーンショット送信 同左 ゼロ (オンプレ完結)
マルチモーダル LLM 不採用 不採用 変更なし (ローカル LLM 補助のみ)

1. クラウドファーム全廃の判断とトレードオフ

1-1. 失うもの

1-2. 得るもの

1-3. iOS Safari の自動化構成 ── 本書の最大の技術ポイント

iOS Safari の自動化は実機 USB-C 接続が必須である。Apple のブラウザエンジン制約により:

Appium Safari Driver のメカニズム

┌───────────────────────────────┐
│  Mac mini M4 Pro              │
│  ├─ Appium 3.x server         │
│  ├─ Safari Driver (XCUITest)  │
│  └─ safaridriver (Apple 公式) │
└──────┬────────────────────────┘
       │ USB-C ケーブル
       ▼
┌───────────────────────────────┐
│  iPhone 15 Pro (実機)         │
│  ├─ Safari (iOS 18)           │
│  ├─ Web Inspector             │
│  └─ WebKit Remote Debugger    │
└───────────────────────────────┘
  1. Mac 側の Safari の 環境設定 → 詳細 → メニューバーに開発メニューを表示 を有効化
  2. iPhone 側の 設定 → Safari → 詳細 → Web インスペクタ ON
  3. iPhone を USB-C で Mac に接続
  4. Mac 側の Safari の 開発メニュー → [iPhone 名] → Safari → [タブ] で Web Inspector アクセス確認
  5. Appium で以下の capability を指定:
capabilities = {
    'platformName': 'iOS',
    'appium:automationName': 'XCUITest',
    'appium:deviceName': 'iPhone 15 Pro',
    'appium:udid': '00008130-001A4D2E0E8B001E',  # xcrun devicectl で取得
    'browserName': 'Safari',
    'appium:safariInitialUrl': 'https://example.com/',
    'appium:safariAllowPopups': True,
}

2. ハードウェア構成 (問1 と共通要素を含む)

2-1. ホスト Mac

機種 適合
Mac mini M4 / M4 Pro (推奨)
Mac Studio M4 Max ✅ (大規模並列向け)
MacBook Pro M4 系 ⚠️ (USB-C ポート数注意)
Intel Mac

2-2. 推奨実機 (USB-C 対応)

iOS / iPadOS (Mobile Safari 検証用)

機種 役割
iPhone 15 / 16 / 17 iOS Safari メイン検証
iPhone 15 Pro Max / 17 Pro Max 大画面 iOS 検証
iPad Air M2 / iPad Pro M4 iPadOS Safari / Stage Manager 検証
iPad mini A17 Pro 小画面 iPad 検証

Android (Chrome / Samsung Internet / Firefox 検証用)

機種 役割
Pixel 8 / 9 Android Chrome メイン検証
Galaxy S24 / S25 Samsung Internet 検証 (One UI 固有挙動)
Xiaomi / OPPO グローバル端末対応の場合

2-3. 最小構成 (4 端末 + 1 Mac)

BrowserStack 年額 $468 ≈ ¥73,000 と比較し、10 年で回収。ただし他の問1 と共有する場合は実質初期投資ゼロ。


3. ソフトウェア環境構築

3-1. Mac 側 (共通)

brew install node
brew install --cask android-platform-tools  # ADB
brew install libimobiledevice ios-deploy    # iOS USB 接続
brew install --cask android-studio          # SDK Manager で必要バージョン install

# Xcode 16 (Mac App Store)
xcode-select --install

# Appium 3.x + Safari Driver + UiAutomator2 Driver
npm install -g appium@^3.5.0
appium driver install safari       # iOS Safari 用
appium driver install xcuitest     # iOS ネイティブ用 (補完)
appium driver install uiautomator2 # Android 用

# Playwright (Android 用)
npm install -g playwright@^1.50
npx playwright install              # Chromium / WebKit / Firefox の bundled をローカルに

# Python テストランナー
pip install playwright pytest-playwright opencv-python scikit-image pixelmatch

3-2. iOS Safari の自動化準備

# 1. Mac 側 Safari の開発メニュー有効化 (GUI で実施)
#    Safari → 環境設定 → 詳細 → "メニューバーに開発メニューを表示"

# 2. iPhone 側 Web Inspector ON (GUI で実施)
#    設定 → Safari → 詳細 → Web インスペクタ ON

# 3. USB-C 接続後、safaridriver の有効化
sudo safaridriver --enable   # macOS の Safari WebDriver を有効化

# 4. 実機 UDID 確認
xcrun devicectl list devices

3-3. Android Chrome / Samsung Internet の自動化準備

# 開発者オプション ON、USB デバッグ ON は問1 と同様
adb devices

# Chrome DevTools Protocol (CDP) で接続するための remote debugging
adb forward tcp:9222 localabstract:chrome_devtools_remote

# Playwright で Android Chrome に接続 (例)
# Playwright の Android サポートは公式 stable は限定的、CDP 直接接続が主

3-4. Playwright の Android Chrome 接続 (CDP 経由)

Playwright は公式に Android Chrome をある程度サポートしている (_android API、experimental):

// playwright/android (experimental) を使うパターン
const { _android } = require('playwright');

(async () => {
  const [device] = await _android.devices();
  await device.shell('am force-stop com.android.chrome');
  const context = await device.launchBrowser();
  const page = await context.newPage();
  await page.goto('https://example.com/');
  await page.screenshot({ path: 'android_chrome.png' });
  await context.close();
  await device.close();
})();

実機が ADB で認識されていれば、Playwright がそのまま Chrome を制御可能。Samsung Internet は CDP 互換のためほぼ同手順。


4. ローカル実機自動化の構成パターン

4-1. 1 Mac + 4 実機 + 補完 Simulator

┌─────────────────────────────────────────────┐
│  Mac mini M4 Pro                            │
│  ├─ Appium 3.x server                       │
│  │   ├─ Safari Driver (iOS 用)              │
│  │   └─ UiAutomator2 Driver (Android 用)    │
│  ├─ Playwright (Android Chrome / CDP 経由)  │
│  ├─ iOS Simulator (補完)                    │
│  ├─ Android Emulator (補完)                 │
│  └─ Test Runner (pytest / Mocha)            │
└──────┬──────────────────────────────────────┘
       │ Thunderbolt 4 / USB-C
       ▼ CalDigit TS4
       │
       ├─ USB-C → iPhone 15 (実機 Safari)
       ├─ USB-C → iPad Air M2 (実機 Safari)
       ├─ USB-C → Pixel 8 (実機 Chrome)
       └─ USB-C → Galaxy S24 (実機 Samsung Internet)

4-2. 並列実行の現実値

4-3. シミュレータ / エミュレータの補完位置

検証対象 実機優先 / 補完で十分
DOM 構造・JS 挙動の確認 Simulator / Emulator で十分
タッチ・スワイプ・ピンチ 実機推奨 (Simulator は摩擦感ゼロ)
PWA インストールフロー 実機必須 (Simulator では「ホーム画面に追加」フロー不可)
DRM 動画再生 (EME / FairPlay) 実機必須
Visual Diff (DPI 差吸収) 実機推奨 (Simulator は完全ベクター描画で実機と微差あり)
OS 古バージョン (iOS 17 等) Simulator で OS 網羅
Push Notification 実機必須

5. 視覚救済 (オールローカル維持)

領域 実装
通常 UI (Playwright auto-wait 対応) Playwright + 直接 DOM 検証
Canvas 領域 スクリーンショット取得後 PixelMatch / OpenCV SSIM
DRM 領域 <video> プロパティ監視 + 実機画面を Mac でキャプチャ → 手動目視
PWA バナー検出 Playwright page.evaluate()beforeinstallprompt リスナー登録 (Android Chrome のみ)

スクリーンショット取得は USB-C 直結で 1-2 秒、クラウド経由 (5-10 秒) より圧倒的に速い。


6. 採用基準と Anti-pattern (ローカル実機版)

採用基準

観点 必須要件
ホスト Apple Silicon Mac M2 以降、メモリ 32 GB 推奨
iOS Safari 接続 USB-C 直結 + Mac Safari の開発メニュー有効化 + iPhone の Web インスペクタ ON + safaridriver --enable
Android Chrome 接続 ADB 接続 + USB デバッグ ON
コアフレームワーク Playwright (Android) + Appium Safari Driver (iOS) のハイブリッド
視覚比較 PixelMatch / OpenCV SSIM、商用 Visual AI 不要
データ流出ゼロ スクリーンショット・ログを外部送信しない

Anti-pattern (ローカル実機前提)


7. 運用パターン (月次回帰の SOP 例)

7-1. 月次回帰のチェックリスト

番号 作業 担当 想定時間
1 Mac mini 起動、Xcode / Appium / Playwright バージョン確認 QA 10 分
2 実機 4 台を USB-C 接続、xcrun devicectl list / adb devices で認識確認 QA 5 分
3 Mac Safari 開発メニュー / iPhone Web インスペクタの ON 確認 QA 5 分
4 テストスクリプト / シナリオの最新化 QA + Dev 30-60 分
5 Appium server 起動、iOS Safari 主要シナリオ実行 (iPhone + iPad) QA 1-2 時間
6 Playwright (Android CDP) で Chrome / Samsung Internet 実行 QA 1-2 時間
7 iOS Simulator / Android Emulator で OS バージョン網羅 QA 1 時間
8 PixelMatch / SSIM 差分検出された画面の目視確認 QA 1-2 時間
9 DRM 領域シナリオの手動目視レビュー (実機画面を直接観察) QA 30 分
10 PWA インストールフローの実機手動確認 QA 30 分
11 レポート作成、Issue 起票 QA 1 時間
合計 約 1 営業日

7-2. テスト戦略の優先順位

  1. クリティカルパス優先: 課金 / ログイン / 主要動線を iOS Safari + Android Chrome の 2 ブラウザで 100% カバー
  2. Samsung Internet はサブセット: 主要動線のみ Galaxy S24 実機で確認
  3. PWA / DRM は実機目視必須: シミュレータでは動かない or 挙動が異なる
  4. OS 網羅は Simulator / Emulator で補完: 実機で取れない OS バージョンは仮想環境
  5. マルチモーダル LLM は不採用: 本番判定オラクルとして使わない、ローカル LLM の補助のみ可

8. 対立点と裁定 (ローカル実機前提で再評価)

対立項目 CI/CD 前提版 / 回帰テスト版 ローカル実機版
端末ファーム BrowserStack 多重化 / Live 完全廃止、自社実機のみ
iOS Safari 接続経路 クラウド経由 Playwright USB-C + Appium Safari Driver
Android Chrome 接続 クラウド経由 Playwright ADB + Playwright _android (CDP)
視覚 AI Applitools / PixelMatch PixelMatch のみ
WebDriver BiDi 不採用 変更なし
マルチモーダル LLM 不採用 変更なし、ローカル LLM 補助のみ
OS バージョン網羅 クラウド 30,000+ デバイス Simulator/Emulator + 実機 5-10 台

9. 残課題

  1. Playwright _android の安定性: 公式 experimental 扱い、stable 化までは Appium Safari Driver と組み合わせるか、Selenium WebDriver も検討
  2. iOS Safari の Web Inspector セッション切断: 長時間テストで Web Inspector がドロップする事象あり、再接続ロジックの整備が必要
  3. safaridriver の認証期限: Apple Developer Program 加入端末の Provisioning Profile 失効サイクル管理
  4. Samsung Internet の自動化制約: Samsung が CDP を完全準拠していない領域あり、特定機能 (ダークモード切替、Bixby 連携 UI 等) は手動補完
  5. PWA インストールの完全自動化は不可: beforeinstallprompt 検出までで、実際のインストール操作は手動 UAT
  6. テストデータ匿名化: 自社内とはいえ、社員端末で本番アカウントを使う運用上の注意

10. クラウドファーム復活への分岐条件


11. ハードウェア初期投資の試算

品目 金額 (税込)
Mac mini M4 Pro 32 GB / 512 GB ¥250,000
iPhone 15 (USB-C モデル) ¥120,000
iPad Air M2 11“ ¥100,000
Pixel 8 ¥80,000
Galaxy S24 ¥120,000
CalDigit TS4 ¥45,000
USB-C ケーブル + 周辺 ¥10,000
Apple Developer Program (年契) ¥12,800
初期投資合計 約 ¥737,800

問1 と Mac / 周辺を共用すれば実質端末費 ¥420,000 程度の追加投資で完結可能。


12. 参考文献

底本 02_回帰テスト版/次世代検証ツール選定案_問2_モバイルWeb_回帰テスト版.md の参考文献をすべて引き継ぐ。ローカル実機版固有の追加情報: