---
title: マルチインスタンスと設定管理
description: 複数インスタンスによる並行自動周回：ディレクトリ構造、リソース消費、タスクの分散実行、アカウントヴォールト、設定移行。
updated: 2026-10-20
---

# マルチインスタンスと設定管理

1つのインスタンス ＝ 1つの設定ファイル ＋ 1つのスケジューラープロセス ＋ 1台の被制御エミュレーターです。2つのアカウントを同時に自動周回させたい場合は、2つのインスタンスと2台のエミュレーターを起動する必要があります。

## <DocIcon name="folder" /> ディレクトリ構造と分離

```text
AzurPilot/
├── config/
│   ├── ap.json              # インスタンス ap の設定
│   ├── ap-2.json            # インスタンス ap-2 の設定
│   ├── deploy.yaml          # バックエンド全体設定（全インスタンスで共有）
│   └── remote-access.json   # リモートアクセス設定（共有）
├── AzurPilot_Data_Backup/   # 日次自動バックアップ
├── log/
│   ├── 2026-10-20_ap.txt
│   └── 2026-10-20_ap-2.txt
└── cache/
```

各インスタンスは同一のコード、画像認識アセット、WebUI バックエンドを共有しますが、以下の要素は完全に分離されています：

- <DocIcon name="circle-check" /> 独立した `config/<インスタンス名>.json` 設定ファイル
- <DocIcon name="circle-check" /> 独立した OS プロセス（worker プロセス）
- <DocIcon name="circle-check" /> 独立した日次ログファイル
- <DocIcon name="circle-check" /> SQLite データベース内でインスタンス名によりデータが分離管理

::: tip インスタンス名は主キーです
ファイルシステム上で `config/ap.json` を直接リネームしないでください。インスタンス名を変更する場合は、WebUI のエクスポート・インポート機能を利用するか、設定をコピーして旧インスタンスを削除してください。直接リネームすると統計データやスケジュールの整合性が取れなくなります。
:::

## <DocIcon name="circle-plus" /> 2つ目のインスタンスを追加する手順

<Steps>
<Step title="2台目のエミュレーターを用意">

エミュレーターの多重起動マネージャー等でインスタンスを複製し、各台に個別の ADB ポートが割り当てられていることを確認します。2台で同一の Serial を共有してはなりません。

</Step>
<Step title="WebUI で新規設定を作成">

WebUI → 已安装配置（インストール済み設定） → 新規作成 を開き、名前を `ap-2` とします。`.json` のコピーを選択すれば既存の設定スイッチをそのまま複製できます。

</Step>
<Step title="デバイス接続フィールドの変更">

`Emulator.Serial` を2台目のエミュレーターの ADB アドレスに変更します。サーバーが異なる場合は `PackageName` も変更します。

</Step>
<Step title="タスクの実行時間帯を分散">

時間のかかるタスクや出撃タスクの開始時刻（`NextRun`）をずらすか、「日次再起動のランダム遅延」を活用してログイン処理の重複を防ぎます。同一マシン上で同時に高負荷タスクを実行すると画像認識のレイテンシが増大します。

</Step>
<Step title="1台ずつ順次起動">

まず1台目を起動して安定稼働を確認し、その後に2台目を起動します。同時にコールドスタートさせると CPU およびディスク I/O の競合が顕著になります。

</Step>
</Steps>

## <DocIcon name="drive" /> リソース消費の目安

| リソース | 単一インスタンスのおおよその消費量 | 補足 |
| --- | --- | --- |
| メモリ | Python プロセス数百 MB ＋ エミュレーター 2〜4 GB | エミュレーター側が最大の消費源 |
| CPU | 画像認識時に1コアを断続的に使用 | テンプレートマッチング処理が主負荷 |
| ディスク | ログは日次数 MB、エラー現場記録は画像分増加 | `Error.SaveErrorRetentionDays` で保持期間を制御 |
| 通信帯域 | アップデート確認および統計同期のみ | ゲームの遅延には影響なし |

16 GB の RAM を搭載した一般的な PC であれば、2インスタンスの安定並行稼働が可能です。3台以上を同時稼働させる場合は、CPU のシングルスレッド性能および SSD の I/O 速度がボトルネックとなります。Android 実機上でのマルチインスタンス実行はメモリ制約上推奨されません。

## <DocIcon name="lock" /> アカウントヴォールト

「設定 → 账户」からアカウント認証情報の安全な管理が可能です：

| 機能 | 詳細 |
| --- | --- |
| 作成 | 暗号化されたアカウントプロファイルの新規登録 |
| ロック解除 / ロック | ヴォールト状態の手動切り替え |
| TPM へのバインド | ハードウェア TPM によるキー保護（利用可能な場合） |
| マシン固有キーへのバインド | OS レベルの暗号化（Windows DPAPI 等） |
| 適用 | 登録したプロファイルを対象インスタンスに割り当て |
| 削除 | 不要になったプロファイルの破棄 |

アカウントヴォールトはデバイスに強くバインドされます：マシンの移行や OS の再インストール後は古い暗号化キーを復号できなくなるため、再登録が必要です。

## <DocIcon name="file" /> 設定のインポートとエクスポート

| シナリオ | 推奨手順 |
| --- | --- |
| 単一インスタンスのバックアップ | タスク設定画面から JSON をエクスポート |
| 全インスタンスの別環境移行 | `config/*.json` ファイル群をコピー |
| 設定テンプレートの他者共有 | エクスポート後、Serial、秘密鍵、パス等の環境固有情報を削除 |
| 誤削除した設定の復元 | `AzurPilot_Data_Backup/<日付>/` から復旧 |

## <DocIcon name="circle-alert" /> 多重起動時によくあるトラブル

| 現象 | 主な原因 |
| --- | --- |
| 2つのインスタンスが同一画面を操作し合う | 2台のエミュレーターで同一の Serial が設定されている |
| 片方のインスタンスしかスクリーンショットが撮れない | 選択した方式（`nemu_ipc` 等）が特定エミュレーターインスタンスにしか対応していない |
| ADB が頻繁に切断される | 複数の adb サーバーがポート 5037 を奪い合っている |
| CPU 使用率が 100% に達しタイムアウト頻発 | マシンスペック不足。タスクの実行時間帯を分散してください |
| ログの出力が混ざる | 同一のインスタンス名で2つのプロセスを同時に起動した |

::: warning 1つのインスタンスにつきプロセスは1つのみ
`alas.py <インスタンス名>` には多重起動防止の排他ロックがありません。コマンドラインから同一インスタンス名を重複して起動すると、2つの worker プロセスが1台のエミュレーターを奪い合う状態になります。起動前に必ず WebUI で状態を確認してください。
:::
