RKシリーズ「繰り返し(無限ループ)」の完全ガイド|条件で抜ける繰り返しの活用法
ノウハウ

RKシリーズ「繰り返し(無限ループ)」の完全ガイド|条件で抜ける繰り返しの活用法

2026.05.2610分で読めます
#繰り返し処理#RKシリーズ#無限ループ#シナリオ作成#RPA

無限ループとは

RKシリーズの繰り返し処理の一つである「繰り返し(無限ループ)」は、その名の通り、明示的に繰り返しを抜ける処理が実行されるまで、同じ処理ブロックを永遠に繰り返し続けるアクティビティです。

通常の繰り返し処理(回数指定や要素数に基づくもの)は、事前に決まった回数やデータ件数で自動的に終了しますが、無限ループは「いつ終わるかが事前にわからない」場面でその真価を発揮します。

しかし「無限」という言葉が示す通り、抜ける条件を設定しないまま実行すると、シナリオが永遠に終了しない重大な事態になります。そのため、無限ループを使用する際には、必ず「抜ける条件」を同時に設計することが鉄則です。

無限ループが向いている3つの使用シーン

無限ループは、以下のような場面で特に効果的です。

シーン1:特定の時間を待機するとき

指定した時刻になるまで、または特定の条件(「00分ちょうど」など)が満たされるまで、繰り返しで時刻を取得し続ける場面です。待機時間が事前に決まっていない場合や、システムの状態変化を監視する場合に有効です。

具体例:

  • チケット発売開始時刻(10:00ちょうど)まで待機し、発売と同時に購入処理を実行
  • バッチ処理の完了時刻が不定なため、完了ステータスが「終了」になるまで監視
  • ファイルがフォルダに格納されるまで待機し、格納されたら次の処理へ進む

シーン2:回数不明の繰り返しのとき

繰り返しが必要な回数が事前に数値化できない、または実行中に動的に変化する場面です。外部システムの応答やデータ件数が都度異なる場合に適しています。

具体例:

  • Webページの「次へ」ボタンが存在する限り、ページをめくってデータを収集
  • ポップアップが表示される限り、それを閉じてメイン処理を続行
  • エラーが解消されるまで、同じ処理をリトライ

シーン3:同じ処理を永遠と行いたいとき

常時監視や定期実行が必要な業務で、手動で停止するまで処理を続行したい場面です。サーバーや自動化マシン上で継続的に動作させるケースに該当します。

具体例:

  • 受信フォルダを常時監視し、新規ファイルが到着したら自動処理を実行
  • 在庫状況を定期的に監視し、閾値以下になったら発注処理を実行
  • メール受信箱を監視し、特定条件のメールが届いたら自動対応

実践例:早い者勝ちのチケット購入

無限ループの典型的な使用例として、「発売開始時刻ピッタリにチケットを購入する」シナリオを挙げて説明します。

シナリオの状況

人気アーティストのコンサートチケットが、本日10:00に発売開始されます。1秒でも遅れると売り切れる可能性があり、人間の手作業では間に合わない状況です。そこで、RKシリーズの無限ループを使って、10:00ちょうどに自動で購入ボタンを押すシナリオを構築します。

シナリオの流れ

  1. 購入サイトを事前に開き、ログインまで完了しておく
  2. 「繰り返し(無限ループ)」アクティビティを配置する
  3. 繰り返し内部で「時刻を取得」アクティビティを実行し、現在時刻(分)を変数「現在の分」に格納する
  4. 「もし〜ならば(If)」で「現在の分 = 00」を判定する
  5. 条件が真(10:00ちょうど)なら、購入ボタンをクリックし、「繰り返しを抜ける」アクティビティを実行する
  6. 条件が偽なら、短時間(0.5秒など)待機してから再び時刻を取得する

なぜ無限ループが適しているか

このケースでは、10:00になるまでの待機時間が事前に何秒かわからないため、固定の「待機」アクティビティでは対応が困難です。9:59:30から実行開始した場合と9:58:00から開始した場合では、必要な待機時間が大きく異なります。

無限ループを使えば、時刻を繰り返し取得しながら、条件が満たされる瞬間に即座に購入処理に移行できます。00分になるまでの繰り返し回数は不明ですが、無限ループならその点を気にする必要がありません。

無限ループで必ずセットで使うアクティビティ

無限ループは「無限に繰り返す」ため、抜ける処理を必ず同時に実装する必要があります。RKシリーズでは、以下のどちらか(または両方)のアクティビティを組み合わせて使用します。

セットアクティビティ1:条件分岐(もし〜ならば)

「もし〜ならば(If)」アクティビティを無限ループの内部に配置し、特定の条件が満たされたときに「繰り返しを抜ける」アクティビティを実行する方法です。

動作の仕組み

  1. 無限ループ内部で、毎回条件を判定する
  2. 条件が偽の間は、繰り返し内部の残りの処理を実行し、次の周へ進む
  3. 条件が真になったら、「繰り返しを抜ける」を実行し、ループを終了する

典型的な使用パターン

目的条件式の例
特定時刻まで待機現在時刻 = 10:00
特定要素の出現を待つ要素が存在する = True
ファイルの到着を待つファイル件数 > 0
回数制限付きリトライリトライ回数 > 最大回数

セットアクティビティ2:Try-Catch

「Try-Catch」アクティビティを無限ループの内部に配置し、エラーが発生したとき(またはエラーが発生しなかったとき)に繰り返しを抜ける方法です。

動作の仕組み

  1. 「Try」ブロック内で処理を実行する
  2. 処理が成功したら、Tryブロック末尾で「繰り返しを抜ける」を実行する
  3. 処理が失敗(エラー)したら、「Catch」ブロックに遷移し、エラーハンドリングを実行する。その後、次の周へ進むか、ループを抜けるかを設計する

典型的な使用パターン

目的TryブロックCatchブロック
成功するまでリトライ処理を実行 → 成功したら抜けるエラーログを記録 → 待機 → 次の周へ
エラー検出で監視終了監視処理を実行エラー検出したら抜ける
タイムアウト制御時刻チェック → タイムアウト超過なら抜けるエラー種別を判定して対応

両方を組み合わせるケース

実際のシナリオでは、条件分岐とTry-Catchの両方を組み合わせるケースも多々あります。以下は、その典型的な構造です。

  1. 無限ループ内部にTry-Catchを配置
  2. Tryブロック内で、まず条件分岐で「終了条件」を判定
  3. 終了条件が満たされていれば「繰り返しを抜ける」を実行
  4. 終了条件が満たされていなければ、メイン処理を実行
  5. メイン処理でエラーが発生した場合、Catchブロックでエラーハンドリングし、一定回数以上のエラーならループを抜ける

「繰り返しを抜ける」アクティビティの活用法

無限ループを抜けるためには、RKシリーズの「繰り返しを抜ける」アクティビティを使用します。このアクティビティが実行されると、その時点で繰り返しブロックを即座に終了し、後続の処理へ移行します。

重要なポイント:「繰り返しを抜ける」の位置

「繰り返しを抜ける」は、無限ループの内部に配置する必要があります。ループの外側に配置しても機能しません。また、ネストした繰り返し(ループの中にループがある構造)の場合は、最も内側のループだけを抜ける動作になります。外側のループも同時に抜けたい場合は、別途「繰り返しを抜ける」を配置する必要があります。

複数条件で抜ける場合

「A条件が満たされたら抜ける、またはB条件が満たされたら抜ける」といった複数条件で抜けたい場合は、「もし〜ならば」アクティビティを複数配置するか、条件式を「A または B」のように組み合わせて一つの「もし〜ならば」で判定する方法があります。

よくある落とし穴と回避方法

無限ループは便利な反面、設計ミスによるトラブルが発生しやすい機能でもあります。事前に知っておくことで、重大な事故を防げます。

落とし穴1:抜ける条件を設定し忘れる

これが最も重大なミスです。無限ループの内部に「繰り返しを抜ける」を一切配置せずに実行すると、シナリオが永遠に終了しません。手動で強制停止するか、システムを再起動するまで停止しません。

回避方法:無限ループを配置したら、必ず同時に「繰り返しを抜ける」を配置する習慣をつけましょう。抜ける条件が確定するまでの間は、仮の条件(「リトライ回数 > 100」などの安全装置)を設定しておくことも有効です。

落とし穴2:抜ける条件が永遠に満たされない

「繰り返しを抜ける」は配置しているものの、条件式に誤りがあり、実際にはその条件が永遠に真にならないケースです。例えば、変数のスペルミスや比較対象の値の誤りなどが原因です。

回避方法:無限ループの条件式は、シナリオ実行前に必ず手動で検算しましょう。また、セーフティ機構として「最大繰り返し回数」を別途カウントし、一定回数を超えたら強制的に抜ける処理を追加すると安全です。

落とし穴3:繰り返し間隔が短すぎてシステム負荷が上がる

無限ループで短い間隔(0.1秒など)で繰り返すと、CPUやメモリの負荷が急上昇し、対象システムやRKシリーズ自体の動作が重くなる可能性があります。特にWebページの要素を高頻度で監視するケースでは、サーバー側からアクセス制限を受けるリスクもあります。

回避方法:ループ内部に適切な待機時間を設けましょう。時刻監視であれば1秒程度、ファイル監視であれば5〜10秒程度の間隔が現実的です。必要に応じて、監視対象の性質に合わせた間隔を設定してください。

落とし穴4:無限ループ内で変数が意図せず蓄積される

無限ループの内部でlist型変数や表型変数にデータを追加し続けると、メモリを圧迫し、最終的にシステムが不安定になる可能性があります。

回避方法:ループ内部で変数にデータを追加する場合は、不要になった古いデータを削除する処理を組み込むか、変数のサイズ上限を設けましょう。監視ログなどは、ファイル出力に切り替えるのが安全です。

他の繰り返し処理との使い分け

無限ループは強力な機能ですが、すべての場面で無限ループを使うべきというわけではありません。他の繰り返し処理と使い分けることで、より安全で効率的なシナリオが作成できます。

「繰り返し(回数)」との使い分け

「繰り返し(回数)」は、処理を事前に決めた回数だけ実行したい場面で使用します。例えば「次へボタンを最大10回だけクリックする」「最大3回までリトライする」などです。

回数が事前に決まっている、または上限回数を設けたい場合は「回数」を使いましょう。回数指定なら、万が一抜ける条件が満たされなくても、上限回数で自動的に終了するため安全性が高いです。

「繰り返し(条件)」との使い分け

「繰り返し(条件)」は、指定した条件が成り立っている間だけ繰り返す処理です。「次へボタンが存在する間」「エラーが発生していない間」など、ループの先頭で条件を判定し、条件が変化すると自動的に抜けます。

無限ループと異なり、条件の判定がループの構造自体に組み込まれているため、「繰り返しを抜ける」を明示的に書く必要がありません。条件ベースで自然に終了する場面では、こちらの方が記述がシンプルになります。

「繰り返し(すべての要素・表)」との使い分け

これらは、変数に格納されたデータ件数や表の行数に基づいて自動的に繰り返し・終了する処理です。データ駆動型の業務(顧客リストの一括処理、受注データの登録など)には向いていますが、データがない場合は処理がスキップされます。

データの件数に基づく処理はこれらを使い、条件やタイミングに基づく処理は無限ループや「条件」を使う—と使い分けるのが基本です。

まとめ

「繰り返し(無限ループ)」は、RKシリーズの繰り返し処理の中で最も自由度が高く、同時に最も注意が必要なアクティビティです。今回解説したポイントを整理すると、以下の通りです。

  • 基本特性:明示的に抜けるまで同じ処理を繰り返し続ける。事前の回数指定が不要
  • 向いている場面:特定時刻までの待機、回数不明の処理、常時監視・定期実行
  • 必須セット:「もし〜ならば(条件分岐)」または「Try-Catch」と必ず組み合わせる
  • 抜ける方法:「繰り返しを抜ける」アクティビティを条件付きで実行する
  • 注意点:抜け忘れ防止、条件の検算、繰り返し間隔の最適化、メモリ管理

無限ループを正しく理解し、他の繰り返し処理と組み合わせることで、タイミングに敏感な業務や不定形の監視業務も自動化できます。ただし、「無限」という特性を常に意識し、必ず安全装置を同時に設計することが、安定したシナリオ作成の鍵となります。

無限ループの設計でお悩みの場合や、複雑な条件分岐・Try-Catchとの組み合わせで悩んでいる場合は、ぜひRKパートナーズまでご相談ください。貴社の業務特性に最適な繰り返し設計を支援させていただきます。

この記事をシェア

この記事の内容を業務に活かしたい?

RKパートナーズの専門エンジニアが、貴社の業務に最適なシナリオ作成を支援します