スケジュールタスク
ドキュメントバージョン:20260905
本ドキュメントが対応するアプリバージョン:
- iOS:>= 3.16
- Android:>= 1.8.0
- macOS / Windows(PC 版):>= 1.0.21
スケジュールタスクは、リクエストリプレイ 1 件、または コンボリプレイ ルール一式を、Cron または固定間隔で自動実行します。フラッシュセールの負荷確認、発売瞬間の検証、定期的なヘルスチェックなど、「手元のタップでは間に合わない」場面向けです。
典型例: EC のセール枠は数秒しかなく、手で押してもほぼ間に合いません。キャプチャ履歴から注文リクエストを取り出す(またはコンボリプレイに組む)→ スケジュールタスクを作り、開始直前から 1 秒間隔で送り、本文が「購入成功/終了」になったら自動停止、という使い方です。
コンボリプレイの編成、依存性注入、式の書き方は コンボリプレイ使用ガイド を参照してください。
目次
1. 機能概要
| 機能 | 説明 |
|---|---|
| リクエストリプレイ | スナップショットに基づき、HTTP/HTTPS を 1 件リプレイ(Method / URL / Header / Body) |
| コンボリプレイ | スナップショットに基づき、コンボルール一式を実行(層、式、依存性注入も走る) |
| Cron | 秒を含む 6 フィールド:秒 分 時 日 月 曜 |
| カスタム | 秒間隔で繰り返し。回数と継続時間で止められる(iOS / PC は開始時刻も指定可) |
| 自動終了 | 2 種類のみ。レスポンス Body の 正規表現、JSON の フィールド値が完全一致。ヒットしたらジョブは無効化される(一時停止ではない) |
| 実行履歴 | 専用の「実行履歴」。Avg / P95 / P99 と成功率 |
2. クイックスタート
- まずキャプチャし、タイマーで打ちたい HTTP/HTTPS を用意します。流れを組むなら、先にコンボリプレイを作って保存します。
- スケジュールタスク 一覧を開き、+ / スケジュールタスクを追加 をタップします。
- Job名 を入れ、対象を選びます。
- リクエストリプレイ: 履歴から 1 件。クエリ、ヘッダー、Body はあとから直せます。
- コンボリプレイ: 既存ルールから 1 件。各ノードのパラメータも直せます。
- Cron か カスタム を選び、設定画面の次回実行プレビューが妥当か確認します。
- 必要なら 自動終了 をオンにし、正規表現または JSON フィールドで「成功/終了」を拾います。
- ジョブが 有効 であることを確認してから:
- iOS / Android: キャプチャ(VPN)を開始。キャプチャ前は動きません。VPN が開いている間はリクエスト履歴にも残り、リライト/スクリプトも効きます。
- デスクトップ: ApiCatcher のウィンドウを開いたままにします。VPN は不要です。ジョブが送る通信にリライト/スクリプトをかけたいときだけキャプチャを開始します。
- ジョブを開いて 実行履歴 を見ます。
3. 入り口とタスク管理
3.1 「スケジュールタスク」を開く
- キャプチャホーム右上の + → スケジュールタスク
- リクエストリプレイ または コンボリプレイ実行画面 の右上にあるアラームをタップすると、今のリクエスト/ルールから作れます
3.2 作成 / 編集 / 削除 / 有効化
| 操作 | 方法 |
|---|---|
| 作成 | 一覧右上の +、または空状態の「スケジュールタスクを追加」 |
| 履歴 | 行を タップ |
| 編集 | 左スワイプ → 編集 |
| 削除 | 左スワイプ → 削除(そのジョブの実行履歴も消えます) |
| 有効 / 無効 | 編集画面の「有効」トグル |
新規はデフォルトで有効です。
既存ジョブを編集するとき、対象の種類の変更や、別リクエスト/ルールへの付け替えはできません。名前、有効スイッチ、スナップショット内のパラメータ/ノード、スケジュール、自動終了は変更できます。
4. 実行対象
対象は 2 種類だけです。
| Job の対象 | 実行内容 |
|---|---|
| リクエストリプレイ | HTTP 1 件。式注入に対応 |
| コンボリプレイ | 複数 HTTP。コンボルールの順。依存性注入と式注入に対応 |
コンボリプレイ側を直したあと、ジョブにも反映したい場合は 新しい Job を作り直す 必要があります。
5. スケジュール設定
種類は Cron / カスタム の 2 つです。
設定画面では次回以降の実行時刻を最大 5 件プレビューします。
5.1 Cron
式は 6 段、順は次のとおりです。
秒 分 時 日 月 曜
7 段目(年)は書いても無視されます。6 段未満だと次回が計算できず、スケジュールされません。
Linux crontab の 5 フィールドではありません。*/5 * * * *(5 分ごと)はここでは無効です。
使える書き方:
*:そのフィールドは任意?:日または曜で「指定しない」- 単独の数字:秒
0、時9など - 秒フィールドのステップ
/:0/30は 30 秒ごと
デフォルト/プレースホルダ:
0 * * * * ?
毎分 0 秒、という意味です。
よく使う例:
| 式 | 意味 |
|---|---|
0 * * * * ? | 毎分 0 秒 |
0 0 * * * ? | 毎時 0 分 0 秒 |
0 0 9 * * ? | 毎日 09:00:00 |
0/30 * * * * ? | 30 秒ごと |
「N 分ごと」にしたいときは カスタム で間隔を N × 60 秒にしてください。
式の横の AI で、自然文から Cron を生成できます。生成後は下のプレビューを確認してください。
式が空、または次回が出せない場合、その回はスケジュールされません。その理由だけでは自動無効化されません。
5.2 カスタム
終了時刻の専用フィールドはありません。固定間隔で繰り返し、回数 か 継続時間 のどちらかに達したら止まります(毎回実行前に判定)。
| 項目 | 単位 | 説明 |
|---|---|---|
| 間隔 | 秒 | 実行間隔。最小 1 |
| 最大実行回数 | 回 | この回数で停止 |
| 継続時間 | 分 | 初回実行からこの分数で停止 |
回数と時間のカウンタはエンジンのメモリ上にあります。プロセス再起動でゼロに戻ります。すでに無効化されたジョブは自動では戻りません。「有効」を入れ直すと回数は 0 からになります。
回数または時間に達すると、ジョブは 無効 として保存されます。
6. 自動終了
画面上の名前は 自動終了 です。条件に当たったら、Cron の残りやカスタムの残回数に関係なく止まります。
条件は 2 種類だけです。HTTP ステータスでの終了はありません。
| 種類 | 対象 | ルール |
|---|---|---|
| 正規表現 | レスポンス Body のテキスト | どこかにヒットすればよい(全文一致は不要) |
| フィールド選択 | レスポンス JSON | パスで取り出した値と「一致値」が 文字列として完全一致 |
補足:
- 複数条件は OR。どれか 1 つで停止します。
- コンボリプレイでは 監視ノード を指定でき、そのノードの結果だけを見ます。
- JSON は文字列比較です。数値
200なら一致値も200。真偽はtrue/false。
ヒット後はジョブを 無効化 します。ジョブも履歴も残ります。削除はしません。
7. 実際に動くタイミング
OS の制約があるため、実装は端末ごとに違います。
iOS
VPN プロセス内で動きます。キャプチャ開始後に有効になります。
| 状況 | 動き続けるか |
|---|---|
| キャプチャ中、本体アプリがバックグラウンド | する |
| キャプチャ中、本体をスワイプで閉じても VPN が残っている | する |
| キャプチャ停止 | すべての timer をキャンセルして停止 |
| メモリ回収で VPN プロセスが消える | 停止。キャプチャを再開すると有効なジョブを読み直す |
| キャプチャしていない | 動かない。保存は DB のみ。次回キャプチャ開始時にスケジュール |
リクエストのタイムアウトは 15 秒。VPN オン時はローカル MITM(127.0.0.1:8888)を通るため、リライトルールとスクリプト が効き、キャプチャ履歴にも同じ通信が出ることがあります。
Android
VPN サービス内で動きます。キャプチャ開始後に有効になります。
| 状況 | 動き続けるか |
|---|---|
| キャプチャ中、バックグラウンドへ(フォアグラウンド通知が残っている) | 多くの場合する |
| キャプチャ停止 | stop()。コルーチン解除。メモリ上の回数/初回時刻をクリア |
| アプリを強制停止 | VPN ごとプロセスが消え、ジョブも止まる |
| 省電力でプロセスが殺される | 停止。フォアグラウンドサービスが起き直して start() が走れば、まだ有効なジョブを再スケジュール |
接続/読み取りタイムアウトは各 30 秒。同様にローカル MITM を通るため、キャプチャ履歴に出ることがあります。
デスクトップ
アプリプロセス内で動きます。プロセスがある限り動き、終了すると止まります。
| 状況 | 動き続けるか |
|---|---|
| ウィンドウ表示中(最小化可) | する |
| キャプチャしていない | する |
| アプリを終了 | 停止 |
単一リクエストは 30 秒、コンボの各ノードは 5 秒 でタイムアウトします。通信はシステムプロキシ経由です。ローカルキャプチャがオンなら リライト/スクリプト が効き、履歴にも残ることがあります。
コンボリプレイの実行(3 端とも同じ)
- 依存関係で層に分け、同一層は並列、次の層は前の層の完了待ち。
- ノードが 2xx 以外(または送信失敗)なら、以降の層は スキップ(リクエストしない)。
- スナップショット内の式、依存性注入、グローバル変数はすべて実行されます。
8. 実行履歴と統計
ジョブをタップして 実行履歴 を開きます(編集画面ではありません)。
上部の統計は このジョブの全実行 を集計します(タイマー 1 回が 1 件。HTTP 1 本ではありません)。
- Avg / P95 / P99: 各実行の所要時間(そのレコードの終了 − 開始)を集め、平均と 95 / 99 パーセンタイル。表示はミリ秒
- Success Rate / Success / Failure: その回の リクエストがすべて成功 して初めて成功。コンボで 1 ノード失敗ならその回は失敗。それを全件で数える
行をタップすると、その回に送ったリクエストの詳細が見られます。コンボの場合は先にノード一覧、そこから各ノードです。
右上から、そのジョブの履歴をすべて消せます。ジョブ自体を消すと履歴も消えます。
データは専用テーブルです。メインの「履歴/リクエスト履歴」ではありません。ただし前節のとおり、キャプチャ中はメイン履歴にも同じ通信が入りがちです。
メイン履歴側に スケジュールタスクという印は付かない ので、普通のキャプチャに見えます。
9. 典型的な使い方
例 1:セール開始直前に注文 API を連打する
- 注文 API をキャプチャし、Body / Header を確認(動的な時刻が必要ならコンボノードに
${method.timestamp()})。 - そのリクエストまたはコンボルールでスケジュールタスクを作る。
- カスタム: 開始をセール数秒前(必ず未来)、間隔 1 秒。
- 自動終了:JSON の
codeが200、または"購入成功"/"終了"の正規表現。 - iOS / Android はあらかじめキャプチャ開始。デスクトップはウィンドウを開いたまま。
例 2:毎分ヘルスチェック
3 端とも Cron で足ります。
0 * * * * ?
自動終了は付けません。手動で無効化するまで、またはモバイルならキャプチャ停止、デスクトップならアプリ終了まで、毎分動き続けます。
例 3:ログイン → 業務 API の定期回帰
- コンボリプレイでログイン → 業務 API、token の依存性注入まで組む。
- そのルールからスケジュールタスクを作る。
10. よくある質問
Q:保存したのに動かない。
A:iOS / Android は先に キャプチャを開始 してください。デスクトップはアプリを開いたままにします。ジョブが「有効」か、Cron が 6 段か、プレビューで次回が出るかも確認してください。
Q:カスタムを保存した瞬間に無効になる。
A:開始時刻が過去だと、エンジンは 1 回も走らせずに無効化します。未来の時刻にして、有効化して保存し直してください。
Q:コンボリプレイを直してもジョブが変わらない。
A:仕様です。ジョブは作成時のスナップショットを使います。削除して作り直してください。
Q:メイン履歴にも同じリクエストが出る。
A:モバイルで VPN オンのとき、スケジュールのリプレイはローカル MITM を通り、通常キャプチャと同じ経路で保存されます。専用の数字はジョブの 実行履歴 を見てください。メイン履歴にスケジュールの印はありません。
Q:自動終了にステータス 200 を入れても効かない。
A:「HTTP ステータスで止める」機能はありません。JSON フィールド(例:code == 200)か、Body の正規表現を使ってください。
Q:コンボの一部ノードが送られない。
A:手動実行と同じです。前の層が 2xx 以外なら以降はスキップされます。スキップされた監視ノードには Body がないので、自動終了も当たりません。
Q:アンインストールやデータ削除のあと、ジョブは残る?
A:ジョブも履歴も端末内です。アンインストールやデータ削除で消えます。
Q:リライトルールを出しっぱなしにする必要がある?
A:モバイルのスケジュール通信は MITM を通ります。Mock / 破棄 / 改変が URL に当たっていれば、ジョブが送る内容も改変後です。レスポンスがおかしいときは、まずリライトとスクリプトを疑ってください。