繰り返し処理の5つの種類を知ろう
RKシリーズには、同じ処理を何度も実行したい場面で使える「繰り返し処理」が備わっています。業務自動化の現場では、複数のデータに対して同じ操作を繰り返し行うケースが極めて多く、繰り返し処理はシナリオ作成において欠かせない機能の一つです。
RKシリーズの繰り返し処理には、以下の5つの種類が存在します。
- すべての要素:list型変数や表型変数に格納されたデータを、上から順に1件ずつ処理する
- 表:表型変数の各行を順に処理する(表専用の繰り返し処理)
- 回数:指定した回数だけ同じ処理を繰り返す
- 無限ループ:特定の条件が満たされるまで処理を繰り返し続ける
- 条件:指定した条件が成り立つ間、処理を繰り返す
これらの繰り返し処理は、それぞれ異なる特性と最適な用途を持っています。正しく使い分けることで、シナリオの可読性と安定性が大幅に向上します。
今回は、この5つのうち最も汎用的で使い勝手の良い「すべての要素」について、詳しく解説していきます。
「すべての要素」の基本特性
「すべての要素」は、変数に格納されたデータを先頭から順に走査し、データの件数だけ繰り返し処理を実行するアクティビティです。その特性を正しく理解しておくことで、意図しない動作を防ぎ、効率的なシナリオを作成できます。
主な動作特性
「すべての要素」の繰り返しは、以下のような動作特性を持っています。
- 変数に格納されたデータを上から順に1件ずつ処理する
- 最終行(最後の要素)の処理が終われば、自動的に繰り返しを抜ける
- 繰り返し回数を事前に指定する必要がなく、変数内のデータ件数に自動で合わせて処理する
- 処理途中で特定の条件を満たした場合に繰り返しを中断することも可能(ブレーク処理)
この「最終行で自動的に抜ける」特性は、人間が手作業で行う際のミス(処理の取りこぼしや余分な繰り返し)を防ぐ上で非常に重要です。データ件数が変動する業務でも、シナリオの修正なしに対応できる柔軟性を持っています。
list型変数と表型変数の使い分け
「すべての要素」は、主に「list型変数」を対象として使用されることが多いですが、実は「表型変数」も使用することが可能です。どちらを選ぶべきかは、データの構造と処理の目的によって変わります。
list型変数の特性と向いている場面
list型変数は、1次元のデータ配列として扱われます。各要素は単一の値(文字列や数値など)として格納されます。
list型変数が向いている場面:
- 単純な文字列リストや数値リストを順に処理したい場合
- ファイルパスの一覧、メールアドレスの一覧など、1項目ずつ処理する場合
- 条件に合致した結果を一時的に蓄積し、後続で一括処理する場合
- 処理対象の件数が動的に変化する場合
表型変数の特性と向いている場面
表型変数は、2次元のデータ構造(行と列)を持ち、Excelのような表形式でデータを管理できます。各行に複数の列データが紐づいている状態です。
表型変数が向いている場面:
- 顧客情報(氏名、住所、電話番号など)のように、1つの対象に複数の属性がある場合
- ExcelファイルやCSVファイルから読み込んだデータをそのまま処理する場合
- 列単位でのデータ参照や更新が必要な場合
- 処理結果を表形式で出力・保存したい場合
表型変数を使うなら「繰り返し(表)」も検討しよう
表型変数を繰り返し処理する場合、「すべての要素」でも動作しますが、RKシリーズには「繰り返し(表)」という専用のアクティビティも用意されています。
「繰り返し(表)」は、表型変数に特化した設計になっており、各行の各列にアクセスする際の記述がより直感的になります。また、表専用のプロパティやメソッドが使えるため、表データを扱う場面ではこちらの方が設定しやすいケースが多いです。
ただし、「すべての要素」を使った場合でも十分に機能します。どちらを選ぶかは、個人の好みやシナリオ全体の統一性に応じて決めると良いでしょう。
「要素名1」変数の仕組みと活用法
「繰り返し(すべての要素)」アクティビティを配置すると、自動的に「要素名1」という変数が生成されます。この変数は、アクティビティの右側に表示されているのを確認できるかと思います。
この「要素名1」は、繰り返し処理において最も重要な変数の一つです。正しく理解して活用することで、シナリオの作成効率と品質が大きく向上します。
「要素名1」は繰り返しごとに値が変化する
「要素名1」の最大の特徴は、繰り返しのたびに値が自動的に変化する点です。これにより、1つのアクティビティを書くだけで、複数のデータを個別に処理できます。
具体的には、以下のように値が入ります。
| 繰り返し回数 | 「要素名1」に入る値 |
|---|---|
| 1回目 | 変数の1行目(1番目の要素) |
| 2回目 | 変数の2行目(2番目の要素) |
| 3回目 | 変数の3行目(3番目の要素) |
| ... | ... |
| N回目(最終行) | 変数のN行目(最後の要素) |
例えば、list型変数「顧客リスト」に「株式会社A」「株式会社B」「株式会社C」が格納されている場合、1回目の繰り返しで「要素名1」は「株式会社A」、2回目では「株式会社B」、3回目では「株式会社C」となります。
「要素名1」をどこに使うか
「要素名1」を活用する典型的なパターンは、「繰り返しごとに値を変えたい箇所」にこの変数を使用することです。
具体的な使用例:
- 検索ボックスに顧客名を1件ずつ入力して検索する場合 → 検索ボックスの入力値に「要素名1」を設定
- ファイル名を動的に指定して保存する場合 → ファイル名に「要素名1」を含める
- メールの宛先を1件ずつ変更して送信する場合 → 宛先アドレスに「要素名1」を設定
- ログメッセージに処理中のデータ名を出力する場合 → メッセージ内に「要素名1」を埋め込む
実践シナリオ例:顧客リストから一括メール送信
「繰り返し(すべての要素)」の実際の活用シナリオを一つ紹介します。以下は、list型変数に格納された顧客メールアドレス宛に、定型メールを一括送信するフローです。
シナリオの流れ
- 事前準備:list型変数「メールアドレス一覧」に送信先を格納しておく
- 「繰り返し(すべての要素)」アクティビティを配置し、「メールアドレス一覧」を指定する
- 繰り返し内部で「メールを送信」アクティビティを配置する
- 宛先に「要素名1」を設定する(これにより、1回目は1番目のアドレス、2回目は2番目のアドレス宛に送信される)
- 件名と本文は定型文を設定する(全件共通)
- 「繰り返し(すべての要素)」が最終行まで処理すると、自動的に繰り返しを抜ける
このシナリオのメリット
上記のシナリオを「繰り返し(すべての要素)」を使わずに作成しようとすると、メールアドレスの件数だけ「メールを送信」アクティビティを並べる必要があり、非常に非効率です。また、送信先が増減するたびにシナリオを修正しなければなりません。
「繰り返し(すべての要素)」を使えば、アクティビティは1つで済み、送信先が10件でも100件でも同じシナリオで対応できます。これはRPAの本質的な価値である「定型的な繰り返し業務の自動化」を体現する典型例です。
よくある落とし穴と回避方法
「繰り返し(すべての要素)」は非常に便利な機能ですが、初心者の方が陥りやすいいくつかの落とし穴があります。事前に知っておくことで、トラブルの発生を防げます。
落とし穴1:変数が空の状態で実行する
list型変数や表型変数が空(データが0件)の状態で「繰り返し(すべての要素)」を実行すると、繰り返し内部の処理が一度も実行されません。これ自体はエラーになりませんが、意図した処理が行われていないことに気づかない場合があります。
回避方法:繰り返しの前に「もし〜ならば(If)」で変数の件数をチェックし、0件の場合は警告ログを出力する処理を追加しましょう。
落とし穴2:繰り返し内部で変数の内容を書き換える
繰り返し処理の途中で、対象のlist型変数や表型変数の内容を追加・削除すると、意図しない動作が発生する可能性があります。繰り返し中に参照元の変数を変更することは、原則として避けるべきです。
回避方法:処理結果は別の変数(「処理結果一覧」など)に格納し、元の変数は読み取り専用として扱いましょう。
落とし穴3:「要素名1」のスコープを誤解する
「要素名1」は「繰り返し(すべての要素)」の内部でのみ有効な変数です。繰り返しの外側で「要素名1」を参照しようとしても、最後に処理された値しか取得できません(またはエラーになる場合もあります)。
回避方法:繰り返しの外側で個別の値を使いたい場合は、繰り返し内部で別の変数に値を退避させておくか、処理結果をlistや表に蓄積して後続で一括利用する設計にしましょう。
他の繰り返し処理との使い分け
「すべての要素」を覚えたら、他の4つの繰り返し処理とも使い分けられるようになると、シナリオ作成の幅が大きく広がります。簡単に他の繰り返し処理の特徴も振り返っておきましょう。
「繰り返し(回数)」
「10回繰り返す」「100回繰り返す」など、回数を事前に決めて処理を行いたい場合に使用します。ページネーションの「次へ」ボタンを最大10回までクリックする、といった場面で有効です。
「繰り返し(無限ループ)」
「繰り返しを抜ける」アクティビティが実行されるまで、永遠に繰り返し続ける処理です。ページ上の特定の要素が出現するまで待ち続ける、ファイルが格納されるフォルダを監視し続ける、といった場面で使用します。ただし、抜け忘れがあるとシナリオが永遠に終わらないため、使用には注意が必要です。
「繰り返し(条件)」
「ページに次へボタンが存在する間」や「処理結果が空でない間」など、特定の条件が成り立っている間だけ繰り返す処理です。条件が変化するまで自然に繰り返しが続き、条件が変わると自動的に抜けます。
「繰り返し(表)」
先述の通り、表型変数に特化した繰り返し処理です。各行の列データにアクセスする際に、列名を直接指定できるなど、表データの処理に便利な機能が備わっています。
まとめ
「繰り返し(すべての要素)」は、RKシリーズの繰り返し処理の中で最も汎用性が高く、多くの業務シナリオで活躍する重要なアクティビティです。今回解説したポイントを整理すると、以下の通りです。
- 基本特性:変数のデータを上から順に処理し、最終行で自動的に抜ける
- list型変数:1次元のデータ配列に最適。単純なリスト処理に向く
- 表型変数:2次元の表データにも対応。表専用の「繰り返し(表)」との使い分けも検討
- 「要素名1」:繰り返しごとに値が自動変化する変数。繰り返し内で動的に値を変えたい箇所に使用
- 注意点:変数が空の場合の対処、繰り返し中の変数書き換えの回避、スコープの理解
「すべての要素」を正しく理解し、他の繰り返し処理と組み合わせることで、より柔軟で堅牢なシナリオを作成できます。繰り返し処理はRPAシナリオの基本中の基本です。しっかりと習得して、業務自動化のスキルを高めていきましょう。
繰り返し処理の設計でお悩みの場合や、より複雑なループ処理の実装を検討されている場合は、ぜひRKパートナーズまでご相談ください。貴社の業務特性に最適なシナリオ設計を支援させていただきます。
