ループ処理内でアクションを合流させるのはよくない話

公開日:

更新日:

注意

本記事は情報提供を目的としており、本記事の内容は無保証、サポートの対象外です。
サポート窓口、問合せ窓口にご質問をいただいても対応いたしかねますのでご了承ください。

こんにちは、システム開発グループのわたなべです。

今回はgusuku Customine ※でのカスタマイズにおける、ループ処理について記事にしたいと思います。

※ gusuku Customine(以下、カスタマイン)は、kintoneをさらに便利にするカスタマイズをノーコードで、ご自身で作成いただけるサービスです。

2025年2月時点で導入社数2000社を超え、さまざまな業務・業種のお客様にご利用いただいております。

https://customine.gusuku.io

本題に前にタイトルにある、「ループ処理」と「アクションの合流」について触れておきましょう。

ループ処理

「ループ処理」とは、同じ処理を何度も繰り返すための仕組みを指す、プログラミングの基本的な考え方です。

カスタマインでもループ処理を実現できます。サポートサイトにも例が記載されています。

「リストから要素を取り出す」の活用方法

フィールドもリロードも必要なし!どの画面でも使えるループ処理

アクションの合流

「アクションの合流」は上記画像のような、複数に分岐した処理のすべてが終わってから後続処理につながるようなものです。

上記画像でいうと、1番が最初に動いて、2番と3番が両方終わったら4番が動きます。

ループ処理とアクションの合流を組み合わせるとどうなるか

ここで本題である「ループ処理」と「アクションの合流」を組み合わせるとどうなるかを見ていきましょう。

アクショングラフで見ると、上記画像のようになります。

赤枠で囲っている部分が「ループ処理」、緑枠で囲っている部分が「アクションの合流」となります。

このアクショングラフだとどのように動くでしょうか。

  • 動作の予想

まず、3番、4番と順に動いていきます。その後5番と6番8番が並列で動きます。5番と8番が両方終わったときに7番が動き、3番に戻る、という動きが想像されます。

  • 実際の動作

この処理はループ処理ですので、1周目と2周目以降で処理が異なります。

1周目は予想通り3番→4番→(5番)(6番→8番)→7番→3番という順で動きます。

2周目は3番、4番と順に動いていき、5番と6番8番が並列で動くところまでは同じなのですが、5番が終わったとき、8番の完了を待たずに7番の実行が開始されてしまいます。加えて、8番が終わったときも7番が実行されます。

つまり、アクションの合流をした後の処理がループ1周に対して2回動いてしまいます。

この動作の原因

ループ処理の2周目で上記の動作をしてしまう原因ですが、条件の「他のアクションの実行が完了した時」の仕様にあります。

ドキュメントにも以下のように記載がありますが、

複数のアクションの完了を待つ場合、それらのアクションが始まったタイミングは異なっていても構いません。A,B 2つのアクションの完了を待つ場合、A,B がいつ始まったかは関係なく「Aがすでに完了している状態でBが完了した」または「Bがすでに完了している状態でAが完了した」時に条件が発動します。

「アクションがすでに完了している」という状態がクリアされるのは以下の場合です。

  • 同じアクションが再度開始した場合、そのアクションは完了していない状態に戻る。
  • 画面が遷移した場合、全てのアクションは完了していない状態にリセットされる。

「他のアクションの実行が完了した時」が発生しても「完了している」状態は維持される点に注意してください。「ボタンを押した時」で始まるアクションのように、同じ画面内で何度も繰り返し実行できるアクションを待つ場合は特に注意が必要になります。

ループ処理の過程では画面が遷移されないため、アクションが完了していない状態にリセットされず、分岐処理が片方だけ終わった状態でも、全体が完了しているとみなされてしまっています。

問題の回避法

ループ処理内で分岐をすると問題が発生しているので、やはり処理を直列につなぐのがよいです。

しかし、ループ処理内で条件分岐をさせたい場合もあると思います。例えば値によって処理内容が変わるような処理を1つのループで行う場合などが考えられます。

その場合は処理を分岐させて、いずれかのアクションの実行が完了した時で合流させればよいです

上記画像の青枠内のように処理を実行させたい場合、させたくない場合で処理を分岐し、どちらかが終われば次の動作に進むようなカスタマイズをすることで実現できます。

いかがでしょうか。

カスタマインでループ処理を作成する際はご参考いただけますと幸いです。

キミノマホロ for kintone

アールスリーでは業務改善・システム開発を行うサービスを「キミノマホロ for kintone」として提供しています。

キミノマホロ for kintone」は業務改善のプロセスをイロハで3つのフェーズに分け、フェーズごとに作業をメニュー化しています。

  【イ】業務改善の始まり:業務改善の方向性を決める

  【ロ】業務改善に必要なkintoneアプリ作成:業務改善を実現するための仕組み(kintoneアプリ)を作る

  【ハ】業務改善の実行サポート:業務改善を進める
システム開発グループではkintoneに関するお悩み相談をお受けする「kintone駆け込み相談室」を随時開催しています。kintoneのシステム開発でお悩みの方がいらっしゃいましたらぜひお申し込みください!

投稿者プロフィール

わたなべ
わたなべ
システム開発グループ所属