# はじめに

FIRERPA は Android 向けの**オールインワンデバイス制御プラットフォーム**です。サーバーはデバイス上で直接動作し、**追加のランタイム依存が不要**です。**複数の世代の Android システムに対応**し、**root の有無を問わず使用可能**です。PC 側は Python クライアントライブラリで統一的に制御され、UI オートメーション、リモート運用、トラフィックキャプチャ、Hook によるリバースエンジニアリング、ネットワークプロキシ、分散ネットワーキング、AI エージェント / **MCP** などの機能を同一のサービスと API に集約します。Appium、mitmproxy、frida-server、adb、uiautomator2 などの自作スクリプトや各種運用ツールを寄せ集めて使うのに比べ、FIRERPA の利点は次の点にあります。**機能が同一ソースから提供されること、設定の統一、連携の確立、多数のデバイスでの長期運用とエンジニアリング管理に適していること**。

```{hint}
このドキュメントでは FIRERPA のプラットフォーム上の位置づけとコア機能を紹介します。インストールと使い方の学習は[クイックスタート](./quick-start.md)の章を続けてお読みください。
```

## リモートデスクトップとリアルタイム画面ミラーリング

FIRERPA はブラウザベースのリモートデスクトップを提供し、PC に専用クライアントをインストールすることなく、リアルタイムでデバイス画面の表示と操作が可能です。LAN とインターネット越しのアクセスをサポートします。画面ミラーリングリンクは **MJPEG** と **H.264** の両コーデックに対応し、ソフトウェア / ハードウェアエンコードのデュアルバックエンドを提供。端末の処理能力とネットワーク状況に応じてフレームレート（最大 60fps）、解像度スケーリング、ビットレート、画質を調整でき、低帯域環境で大幅に帯域使用量を抑え、滑らかさを向上させます。さらに **WebRTC** 伝送をサポートし、STUN/TURN サーバーを設定可能で、NAT 越えとエンドツーエンドの遅延を改善。パブリッククラウド越えや遠隔地からのデバッグシーンに適しています。

リモートデスクトップは**複数ユーザーの同時接続**をサポートし、共同でのトラブルシューティング、デモ、トレーニングに役立ちます。**双方向クリップボード共有**と**リアルタイムオーディオ**転送（Android 10+）に対応し、同一 Web インターフェースにターミナル、ファイルドラッグアップロード、ディレクトリ閲覧 / ダウンロードなどの運用機能を統合。単一ポートで日常的な操作が完結します。**ビジュアルレイアウトインスペクター**を内蔵：要素のハイライト、Tab キーによる巡回、座標と RGB の表示、XML レイアウトツリーのエクスポートが可能で、リモートデスクトップ内で直接セレクターとオートメーションロジックを検証でき、「画面を見る → スクリプトを書く」のフィードバックループを大幅に短縮します。

<p align="center">
<img src="https://raw.githubusercontent.com/wiki/firerpa/lamda/images/demo.gif" alt="リモートデスクトップのデモ" width="100%">
</p>

リモートデスクトップと RPC インターフェースは **TLS 全経路暗号化**とサービス証明書アクセス制御をサポートし、WebUI ログインパスワードのカスタマイズが可能で、パブリックネットワーク露出のリスクを低減します。リモートデスクトップ機能は WebSocket 経由で自社 Web アプリに組み込み可能で（リアルタイム映像、タッチ、ターミナル、キーイベントなど）、`allow_origin` 設定によるクロスドメイン統合も可能。実機制御機能のプロダクト化に適しています。

## UI オートメーション

FIRERPA は完全なセレクターオートメーションシステムを提供し、text、resourceId、description、scrollable などの一般的なマッチング方式に対応。さらに **child / sibling** チェーンによるロケーション指定で、重複要素、階層が複雑な、あるいは特徴の乏しいコントロールにも対応します。要素レベルではスクリーンショット、出現 / 消失の待機、コーナー / 中心座標の取得、exists 判定などの細かな操作が可能。Unicode 入力、step スワイプ、fling による高速ページめくり、最下部へのスワイプなどのインタラクションもサポートします。Android 8.0 以上の**他のアクセシビリティサービスと共存可能**で、WebView ノード探索能力を強化し、ハイブリッドアプリのオートメーション成功率を向上させます。

**UI モニター（Watcher）**は UI の変化をリアルタイムに監視し、あらかじめ設定された条件を満たしたときに自動的にクリック、キー入力、カウントなどを実行。プロトコルダイアログ、更新通知、広告ページなどの妨害的なフローを自動的にスキップするのに適しています。複数の Selector 条件の組み合わせとイベントの個別起動 / 停止に対応し、一瞬だけ表示される画面の出現回数を統計できます。

**仮想画面（Virtual Display）**は FIRERPA の差別化機能の一つです。デバイス上に独立したバックグラウンドディスプレイを作成し、その中でアプリとオートメーションスクリプトを実行。**メイン画面の通常利用に影響を与えません**——例えば仮想画面上でバックグラウンド自動処理を行い、メイン画面では動画を見たり手動操作を続けられます。仮想画面 API はメインデバイス API と高い互換性があり、既存の `d.xxx` スクリプトを `vd.xxx` にスムーズに切り替え可能。Watcher も仮想画面内に限定できます。WebUI は**マルチスクリーン表示と切り替え**をサポートし、リモートデスクトップ上で異なる Display を選択して操作や表示が可能。バックグラウンド維持、並列タスク、「手動操作 + バックグラウンドマシン」のハイブリッドシーンに適しています。

標準の View ツリーが存在しないシーン（ゲームや独自描画 UI）向けに、FIRERPA は **OCR** と**画像マッチング**機能を提供します。OCR は paddleocr、easyocr、カスタム HTTP バックエンドに対応。クラスター環境では認識計算をサーバー側に集中させ、PC ごとにモデルを重複ロードする必要がありません。GPU アクセラレーションと複数のテキストマッチングモードをサポートします。画像マッチングは**デバイス側**でテンプレートマッチングまたは SIFT を実行し、PC リソースを消費しません。SIFT は回転、スケール、照明変化に対してよりロバストです。また、**マルチタッチ**機能を提供し、軌跡の記録、再生、コード構築、バイナリ永続化に対応。複雑なジェスチャーや筆圧値も表現できます。

アーキテクチャ上の位置づけとしては、FIRERPA は C/S モードを採用し、AutoJS のような「デバイス自身でスクリプト実行」方式に比べて**中央集権的なスケジューリング、バージョン管理、クラスター管理**に優れます。Appium より軽量で、uiautomator2 に比べて複数デバイス環境での**安定性が高い**です。FIRERPA は既存の Android オートメーションソリューションの**機能スーパーセット**と位置づけられ、オートメーションとパケットキャプチャ、Hook、運用が同一プラットフォーム上でコードを用いて連携可能で、複数ツール間の切り替えが不要です。

## パケットキャプチャと MITM

FIRERPA は**ワンクリック MITM パケットキャプチャ**機能を提供します。システムレベルのルート証明書の自動インストール、プロキシ設定、Android バージョン差分の処理を行い、終了時には自動的にデバイスのネットワーク状態を元に戻します。手動での証明書インストールやプロキシ切り替えは不要です。グローバルキャプチャ、パッケージ名指定キャプチャ、リアルタイム改ざん、mitmweb 画面の共有に対応。さらに上流 HTTP プロキシを用いた**国際トラフィック**の指定経路キャプチャも可能です。**QUIC ダウングレード**処理を内蔵し、QUIC によるキャプチャへの影響を低減します。PC とデバイスが単一の FIRERPA ポートでしか通信できない場合（ADB connect、frp 転送など）でもキャプチャを実施でき、厳しいネットワークトポロジーに適応します。

ワンクリックスクリプトに加え、MITM 関連機能はすべて API 化可能です。システムレベルのルート証明書インストール / アンインストールは mitmproxy、Fiddler、Charles などの形式に対応。キャプチャフローをオートメーションパイプラインに組み込み、UI 操作や Frida Hook を同一タスク内で完結できます。Windows 向けに Python 不要の `startmitm.exe` を提供し、環境構築のハードルを下げます。

## ネットワーク、プロキシ、ネットワーキング

FIRERPA はデバイス側で完全なプロキシ機能を提供し、**HTTP / HTTPS / SOCKS5 / Shadowsocks**（複数暗号化アルゴリズム）に対応。アプリ（マルチプロファイル user を含む）単位のプロキシ、DNS プロキシ、UDP プロキシ、LAN バイパス、OpenVPN との共存をサポート。サービス起動時に**自動接続**するよう設定可能です。プロキシ機能は **IPv6 と UDP** をサポートし、より複雑なネットワーク環境に適応します。

**デバイス HTTP ブリッジプロキシ（tunnel2）**はリバースプロキシ機能を提供します。PC やブラウザの HTTP プロキシをスマートフォンに向けた場合、トラフィックは携帯電話のネットワーク出口を経由して転送され、対外向け IP はスマートフォンと一致します。Wi‑Fi または 4G（rmnet）をアウトバウンドインターフェースとして選択可能で、多国間テスト、国際化サービス、マルチデバイス IP プールなどのシーンに適します。

**OpenVPN クライアント**を内蔵。証明書、ユーザー名 / パスワード、混在認証などのログインモードに対応し、システムプロキシと共存可能です。**OpenVPN Docker イメージ**と設定生成スクリプトを提供し、デバイス側の接続コードと自動起動設定を自動生成。手書き OpenVPN 設定のミスを減らします。**frp クライアント**を内蔵。`fwd.*` 設定でデバイスサービスをパブリックサーバーに転送可能。暗号化と TLS をサポートします。

**mDNS サービスディスカバリー**を提供。有効にすると `{device_id}.local` ドメイン名でリモートデスクトップなどのサービスにアクセスでき、TXT メタデータ（モデル、ABI、デバイス ID など）を添付可能。LAN 内での一括デバイス発見と管理に便利です。

## Frida とリバースエンジニアリング

FIRERPA **は最新版 Frida を内蔵**しており、frida-server を個別にデプロイする必要はありません。リモートデスクトップ内のターミナルで直接 Frida 関連コマンドを使用でき、`-U`、`-H` などの面倒なパラメーターは不要です。Frida に統合されたオープンソースの隠蔽パッチと独自の隠蔽機能を内蔵し、対策を継続的に改善。接続はトークン認証を採用し、FIRERPA ポート経由で安全に接続します。objection パッチと Frida 17.x java-bridge ラッパーツールを提供し、公式変更による移行コストを軽減します。

**Frida スクリプトの永続化**をサポート：アプリがクラッシュしたり終了した後も自動的に再注入。YAML によるオフライン永続化、ディレクトリ監視とホットリロードに対応。Frida RPC を**Python メソッドとしてマッピング**でき、**HTTP + JSON-RPC 2.0** リモート呼び出しをサポート。JVM スレッド、UI メインスレッド、純粋な JS コンテキストで実行可能です。スクリプト内の `emit` データは **HTTP / Redis / RabbitMQ(MQTT)** に報告でき、デバイスとアプリのメタデータが付与されます。zlib 圧縮、HTTP リトライ、MQTT TLS に対応します。

## ADB、SSH、内蔵ターミナル

FIRERPA は**システム ADB から独立した内蔵 ADB サービス**を提供し、**システムの開発者モードをオンにしなくても**高権限 ADB にワイヤレス接続できます。「開発者向けオプション」系の検知を回避するのに有利です。Magisk モジュールでは `adb_keys` を事前設定してデフォルト認証を実現できます。**SSH サービス**と `ssh.sh` / `scp.sh` ツールスクリプトを内蔵し、リモートシェルとファイル転送を容易にします。

**内蔵ターミナル**には strace、ltrace、tcpdump、scapy、fsmon、frida-tools、MemDumper などのよく使われる解析ツールがプリインストールされ、Crypto、cv2、unicorn、capstone、keystone、redis、grpc などの Python エコシステムを統合。sqlite3 は **wxsqlite / sqlcipher / sqlcrypto** をサポートし、WeChat、企業 WeChat、Alibaba 系などの暗号化データベースを読み取るための手段を提供します。内蔵ターミナルはリモートデスクトップ、SSH、ADB と統合されており、デバイス上で直接解析と自動制御を完結でき、PC ↔ デバイスの行き来を削減します。

## 分散・マルチデバイス管理

FIRERPA **スターリンクプラットフォーム（Hub + hub-bridge）**は中央集約型マルチデバイス接続ソリューションを提供し、ローカルデバイスとリモートデバイスの統合管理、**P2P** アクセスをサポートします。「デバイスは自宅にあり、人は外出中」や複数マシンでの協業シーンに適しています。Hub v3 は **SAPI** を使用してリクエストを統一し、ローカルデバイスとリモートデバイスに同時接続可能です。Hub 以外にも、**frp 転送**と **OpenVPN ネットワーキング**の 2 つの自前構築スキームをサポートし、ドキュメントと Docker 一式が完備されています。

9.0 より **P2P Bridge による端末間相互接続**と**内蔵分散タスクシステム**をサポート。7.50 よりネットワーキングサブスクリプションサービスを提供し、自前の frp/OpenVPN が不要になりました。全体として、クラウドフォンプール、実機ファーム、エミュレータークラスターなど、**多数のデバイスが長期間オンラインで無人稼働する**シーン向けに設計されています。

## AI / MCP / エージェント

FIRERPA **内蔵 MCP サーバー**（API パス `/mcp/`）は **streamable-http** プロトコルを採用し、ツール呼び出し、リソース読み取り、プロンプト、進捗通知とログに対応。**Claude、Cursor** などの MCP クライアントと連携可能です。公式 MCP 拡張モジュールを提供し、`~/modules/extension` でカスタムプラグインを実装できます。

**`agent` コマンド**を内蔵。OpenAI 互換 API + ツール呼び出しと接続し、**自然言語**でデバイス操作を指示可能。**Vision ビジョンモード**をサポート。**OpenAI 意味的タスク実行器**を提供します。**crontab** と組み合わせて定時 AI タスクを実現し、大規模言語モデルの能力を実機オートメーションパイプラインに組み込めます。

<p align="center">
<img src="https://raw.githubusercontent.com/wiki/firerpa/lamda/images/mcp.gif" alt="MCP デモ" width="100%">
</p>

## システムレベルの制御と拡張

FIRERPA は **160 以上の Python API** を提供し、アプリ操作、ファイル I/O、コマンド実行、デバイス状態、WiFi、プロキシ、OpenVPN、シャットダウン・再起動、サービスログなどをカバーします。`setprop` は **`ro.*`** 読み取り専用システムプロパティへの書き込みが可能。Settings API は輝度、開発者モードなどのシステム設定を読み書きできます。**SELinux** はドメイン作成、permissive 切り替え、細粒度の allow/disallow ルールをサポートします。マルチプロファイルアプリの全 API 操作、サイレント権限付与 / 取り消し、非公開 Activity の起動、リソース節約のためのアプリ無効化が可能です。

**バイナリパッチ**機能（16 進ワイルドカード、glob パス、dryrun）に加え、ディスク、バッテリー、CPU、メモリ、ネットワーク I/O などの**ランタイムメトリクス**収集機能を提供。WAV オーディオ再生、内部ストレージ API に対応。デバイス側で **tflite-runtime** を統合し、ハードウェア計算の利用をサポート。エッジ推論が可能です。

**仮想 Debian 環境**によりデバイス内で完全な Debian と apt を実行可能。BPF のコンパイル、OpenSSH のデプロイ、任意の Python 依存関係の実行ができ、内蔵ターミナルでは pip/apt が使えない制限を突破します。

## デプロイ、セキュリティ、ガバナンス

FIRERPA は **アプリによるワンクリックデプロイ**（root または Shizuku）、**Magisk モジュールの自動起動**、手動解凍、**ROM 組み込み**など多様な展開方式をサポートし、**7×24 時間**の常時稼働を前提に設計されています。アプリ内で**サービス証明書を自動生成**可能。Magisk zip には properties 設定、lamda.pem 証明書、adb_keys をプリセット可能です。すべての動作は **ini 形式のサービス設定**により集中管理されます：ポート、WebUI パラメータ、証明書、OpenVPN、gproxy、frp、tunnel2、cron、sshd、adb、mdns など。WebUI 上でビジュアル編集、Raw テキストモード、Reload Service によるホットリロードが可能で、リモートファイルサーバーからの設定読み込みもサポートします。

root と shell の両方の ID での動作をサポート。arm64、armeabi-v7a、x86、x86_64 などのアーキテクチャに対応。実機、Thunderbird / Nox などのエミュレーター、Redroid、WSA、AVD、クラウドフォンなどの環境と互換性があります。アンインストール手順は規定化されており、システム内にゴミファイルを残しません。**API 排他ロック**により複数クライアントによる同一デバイスの取り合いを防止します。プライバシーポリシーは連絡先、SMS、位置情報などの個人情報を収集しないことを明示し、**オフライン認証**をサポートします。

## 長期の進化

FIRERPA は **6 年以上**にわたって継続的に進化しており、Android 14〜16 の互換性修正、リモートデスクトップのマルチユーザー対応、標準化されたタッチ API、MCP プロトコル、Frida のバージョンと隠蔽性、プロキシ IPv6/UDP、P2P Bridge、分散タスクなどの分野でアップデートを続けています。

FIRERPA の核となる強みは特定の単一機能にではなく、**リモートデスクトップ（WebRTC/H.264/マルチユーザー）、UI オートメーション（仮想画面 / Watcher / OCR / 画像マッチング / マルチタッチ）、ワンクリックパケットキャプチャ、内蔵 Frida、フルスタックプロキシと VPN/frp/P2P ネットワーキング、ADB/SSH/内蔵ターミナル、AI MCP/エージェント、システムレベル制御、仮想 Debian、永続 KV、スクリプト暗号化**といった機能を同一の Android デバイス上、同一のサービス、同一の Python クライアントに統合し、セキュリティテスト、コンプライアンス分析、プロトコル復元、バルク管理、オートメーション業務を**一つのパイプライン**の中で完結できる点にあります。複数のツールの間で継ぎ接ぎするのではなく。