スケジュールタスク

ドキュメントバージョン:20260905

本ドキュメントが対応するアプリバージョン:

  • iOS:>= 3.16
  • Android:>= 1.8.0
  • macOS / Windows(PC 版):>= 1.0.21

スケジュールタスクは、リクエストリプレイ 1 件、または コンボリプレイ ルール一式を、Cron または固定間隔で自動実行します。フラッシュセールの負荷確認、発売瞬間の検証、定期的なヘルスチェックなど、「手元のタップでは間に合わない」場面向けです。

典型例: EC のセール枠は数秒しかなく、手で押してもほぼ間に合いません。キャプチャ履歴から注文リクエストを取り出す(またはコンボリプレイに組む)→ スケジュールタスクを作り、開始直前から 1 秒間隔で送り、本文が「購入成功/終了」になったら自動停止、という使い方です。

コンボリプレイの編成、依存性注入、式の書き方は コンボリプレイ使用ガイド を参照してください。


目次

  1. 機能概要
  2. クイックスタート
  3. 入り口とタスク管理
  4. 実行対象
  5. スケジュール設定
  6. 自動終了
  7. 実際に動くタイミング
  8. 実行履歴と統計
  9. 典型的な使い方
  10. よくある質問

1. 機能概要

機能説明
リクエストリプレイスナップショットに基づき、HTTP/HTTPS を 1 件リプレイ(Method / URL / Header / Body)
コンボリプレイスナップショットに基づき、コンボルール一式を実行(層、式、依存性注入も走る)
Cron秒を含む 6 フィールド:秒 分 時 日 月 曜
カスタム秒間隔で繰り返し。回数と継続時間で止められる(iOS / PC は開始時刻も指定可)
自動終了2 種類のみ。レスポンス Body の 正規表現、JSON の フィールド値が完全一致。ヒットしたらジョブは無効化される(一時停止ではない)
実行履歴専用の「実行履歴」。Avg / P95 / P99 と成功率

2. クイックスタート

  1. まずキャプチャし、タイマーで打ちたい HTTP/HTTPS を用意します。流れを組むなら、先にコンボリプレイを作って保存します。
  2. スケジュールタスク 一覧を開き、+ / スケジュールタスクを追加 をタップします。
  3. Job名 を入れ、対象を選びます。
    • リクエストリプレイ: 履歴から 1 件。クエリ、ヘッダー、Body はあとから直せます。
    • コンボリプレイ: 既存ルールから 1 件。各ノードのパラメータも直せます。
  4. Cronカスタム を選び、設定画面の次回実行プレビューが妥当か確認します。
  5. 必要なら 自動終了 をオンにし、正規表現または JSON フィールドで「成功/終了」を拾います。
  6. ジョブが 有効 であることを確認してから:
    • iOS / Android: キャプチャ(VPN)を開始。キャプチャ前は動きません。VPN が開いている間はリクエスト履歴にも残り、リライト/スクリプトも効きます。
    • デスクトップ: ApiCatcher のウィンドウを開いたままにします。VPN は不要です。ジョブが送る通信にリライト/スクリプトをかけたいときだけキャプチャを開始します。
  7. ジョブを開いて 実行履歴 を見ます。

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 を連打する

  1. 注文 API をキャプチャし、Body / Header を確認(動的な時刻が必要ならコンボノードに ${method.timestamp()})。
  2. そのリクエストまたはコンボルールでスケジュールタスクを作る。
  3. カスタム: 開始をセール数秒前(必ず未来)、間隔 1 秒。
  4. 自動終了:JSON の code200、または "購入成功" / "終了" の正規表現。
  5. iOS / Android はあらかじめキャプチャ開始。デスクトップはウィンドウを開いたまま。

例 2:毎分ヘルスチェック

3 端とも Cron で足ります。

0 * * * * ?

自動終了は付けません。手動で無効化するまで、またはモバイルならキャプチャ停止、デスクトップならアプリ終了まで、毎分動き続けます。

例 3:ログイン → 業務 API の定期回帰

  1. コンボリプレイでログイン → 業務 API、token の依存性注入まで組む。
  2. そのルールからスケジュールタスクを作る。

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 に当たっていれば、ジョブが送る内容も改変後です。レスポンスがおかしいときは、まずリライトとスクリプトを疑ってください。