コンテンツにスキップ

ノードのグループ化 (Node Groups)

グループ (Group) は、他のノードを内部に保持するコンテナノードです。すべてのグループは内部のノードを視覚的に整理しますが、一部のグループタイプはさらに進んで、それらのノードの実行方法を制御(一括実行や反復実行)します。このページでは、グループの作成、設定、および実行方法について解説します。通常のノード操作については ノード操作ガイド を参照してください。


グループの作成

グループ化したいノードを選択(または空のグループを作成して後からノードをドロップしたい場合は何も選択しない)した状態で、以下のいずれかを実行します:

  • Cmd/Ctrl+G を押すと、デフォルトとして設定されているグループタイプを使用して即座にグループが作成されます。
  • Shift+Cmd/Ctrl+G を押すか、右クリックして Create Group を選択すると、まずグループタイプピッカー (group type picker) が開きます。

グループタイプピッカーには、インストールされているライブラリから利用可能なすべてのグループタイプが一覧表示され、Add Node メニューと同様に検索できます。タイプを選択する前に下部の Make default for Cmd/Ctrl+G(Cmd/Ctrl+G のデフォルトにする)にチェックを入れると、次回以降はこのピッカーをスキップできます。デフォルトを設定するまでは、Cmd/Ctrl+G を押してもピッカーが開きます。

新しく作成されたグループは、作成時に選択されていたノードを少しの余白(パディング)を持たせて囲むサイズに自動調整されます。既存のグループの本体部分にノードをドロップするとそのグループに追加され、子ノードを外にドラッグするとグループから除外されます。


グループタイプ (Group Types)

標準ライブラリに同梱されているグループタイプは、大きく 2 つの系統に分かれます:

タイプ 実行可能? 役割
Group いいえ (No) 純粋な視覚的整理用。説明フィールド付きでノードを視覚的にまとめますが、1 つの単位として実行したり実行順序に影響を与えたりすることはありません。
Subflow Node Group はい (Yes) 内部のすべてのノードを 1 つの単位として、並列でまとめて実行します。
ForEach Group はい (Yes) 入力されたリストまたは辞書のアイテムごとに、内部ノードを 1 回ずつ反復実行します。
For Loop Group はい (Yes) 数値範囲(開始/終了/ステップ)の値ごとに、内部ノードを 1 回ずつ反復実行します。
Retry Group はい (Yes) 処理が失敗した際に、設定された試行回数まで内部コンテンツを再実行します。

プレーンな Group には Run Group ボタンは絶対に表示されません。実行可能ではないため、内部のノードが個別に動作する以外にエンジンが実行する処理が存在しないからです。表内のその他のタイプはすべてサブフローグループ (subflow group) です。子ノードを保持するための専用サブフローを作成し、グループノード自体が外側のフローのグラフにおいて単一の実行可能単位となります。

Subflow Node Group

最も基本的な実行可能グループです。グループが実行されると、内部のすべてのノードが独自のサブフロー内でまとめて実行され、それらの出力がグループ自身の出力パラメータに集約されます。複数のノードのまとまりを大規模なフロー内の 1 つのステップとして扱いたい場合(可読性の向上や、ノードを個別に実行する代わりに単一の Run Group ボタンで実行したい場合など)に使用します。

ForEach Group

リストまたは辞書に対して反復処理を行います。リスト(または辞書)を items 入力に接続すると、グループはアイテムごとに子ノードを 1 回ずつ実行し、子ノードが利用できるように current_item に現在のアイテムを、index にその位置を公開します。反対側の new_item_to_add 入力は、各反復処理から値を収集し、グループの results 出力リストにまとめます。

Execution Mode(グループの設定内)では、反復処理を one at a time(1 つずつ順次実行)するか all at once(すべて同時に並列実行)するかを選択できます。順次実行モードのみが Skip to Next Iteration(次のイテレーションへスキップ)および Break Out of Loop(ループを中断)の制御入力をサポートします。すべてのイテレーションがすでに並行して動作している状態ではスキップすべき「次のイテレーション」が存在しないため、並列実行に切り替えるとこれらの制御入力は自動的に非表示になります。設定内の Testing Mode(テストモード)トグルを使用すると、ループ本体を配線している最中に、リスト全体ではなく指定した 1 つのインデックスだけを実行して動作確認できます。

For Loop Group

ForEach と同様の構造ですが、リストの代わりに数値範囲に対して反復処理を行います。start、end、step、および終了値を含めるかどうかを制御する Include end value トグルを備えています。ForEach と同じ Execution Mode、results、skip、break の仕組みを共有します。

Retry Group

内部の処理が失敗した際に再実行します。子ノードからの成功経路をグループの Succeeded 制御入力に接続し、失敗経路を Failed に接続します。Failed がトリガーされ、試行回数(Max Iterations、デフォルトは 3 回)が残っている場合、グループ全体が再実行されます。Succeeded がトリガーされるか試行回数を使い果たすと下流へと処理が継続し、どちらが起きたかが was_successful で出力されます。Raise on failure トグルを有効にすると、リトライ上限に達した際に was_successful を false にして処理を継続するのではなく、エラーを発生させてワークフローを停止します。


グループ境界をまたぐ接続の配線

サブフローグループの外部から内部のノードへ(または内部から外部へ)横断するすべての接続線は、ウォールパラメータ (Wall Parameter) を経由してルーティングされます。ウォールパラメータはグループノード自体の左端(流入するもの)または右端(流出するもの)に表示されるパラメータです。これらを手動で作成する必要はありません。内部ノードのハンドルから外部ノード(またはその逆)へと線をドラッグするだけで、ウォールパラメータが自動的に生成され、直通で配線されます。

内部では、各ウォールパラメータはプロキシ(中継役)として機能します。エンジンは直接の接続線を削除し、グループ上に一致するパラメータを追加して、1 ホップではなく 2 ホップの接続として再配線します。ウォール接続を持つノードがグループの外へドラッグされた場合、それらの接続は単一の直接接続に戻り、使われなくなったウォールパラメータは消去されます。また、グループ内の 2 つのノードがそれぞれ同じ外部の供給元を参照する必要がある場合、個別にウォールパラメータを作るのではなく、1 つのウォールパラメータを共有します。

プレーンな Group はこのような処理を一切行いません。隔離すべきサブフローを持たないため、接続線は単にグループの枠線をそのまま通過します。


グループのネスト(入れ子構造)

グループの中に別のグループを、任意の深さまで入れ子(ネスト)にすることができます。あるグループを別のグループの本体上にドロップするか、グループを他のノードと一緒に選択して Cmd/Ctrl+G を押すと、内側のグループは外側のグループの子ノードとなり、すでに内包していたすべての要素も一緒に移動します。

ネストは、巨大なフローを可読性の高い階層構造に分割するための手段です。例えば、本体が Subflow Node Group になっている ForEach Group を作成すれば、各反復処理が散らかったノードの群れではなく、名前の付いたまとまりのある処理単位として実行されます。

単一のグループが持つすべての機能は、各階層においてそのまま適用されます。外側のグループを実行すると、内側のグループもその一部として実行されるため、個別に実行する必要はありません。折りたたみ、ロールアップ、Fit to nodes(ノードにフィット)の操作は、実行した対象のグループにのみ作用し、ネストされた内側の状態には影響を与えません。

接続線のネストも同様に動作します。外側グループの外部から 2 階層深い場所にあるノードへの接続は、通過する各グループのウォールパラメータを経由するため、境界を 1 つずつ順に辿っていくことができます。グループの内部だけで完結する接続には、そのグループがどれほど深くネストされていてもウォールパラメータは生成されません。境界をまたぐ場合にのみ生成されます。

Ungroup(グループ解除)は、1 回につき 1 つのレイヤー(外枠)のみを解除します。外側のグループを解除しても内側のグループはそのまま保持され、子ノードを内包した状態でキャンバス上に配置されます。グループを削除した場合も同様です。

エディタが唯一許可しない配置は、グループが自分自身の内部に入ってしまう循環構造です。グループを自分自身の子孫グループの中にドロップすることは拒否されます。実行すべき最上位のグループが存在しなくなってしまうためです。


折りたたみとロールアップ

グループヘッダーの山形アイコン(シェブロン)をクリックすると、グループを折りたたむ (collapse) ことができます。折りたたまれたグループは子ノードを非表示にし、ウォールパラメータのみのサイズ(ウォールパラメータがない場合は「Group collapsed」と書かれた 1 行)まで縮小します。これは、再配線機能を失うことなく、大きなグループを入力と出力だけのコンパクトな表示にする最も素早い方法です。

ロールアップ (Roll up) — 設定で Node Roll-Up が有効になっている場合、グループヘッダーをダブルクリックするか、折りたたみボタンの隣にあるロールアップボタンを使用します。これはレイアウトを崩さずに同様の圧縮を行います。現在の横幅と内部の子ノードの位置関係を完全に維持したまま、グループがヘッダーの高さまで縮小されるため、再度展開したときに以前の状態へ瞬時に戻すことができます。


ノードにフィット (Fit to nodes)

Fit to nodes(単一グループを選択して Shift+F、またはグループの右クリックメニュー / ツールバー)を実行すると、現在内部にあるノードを四方に一定の余白を持たせてぴったり包み込むように、グループ枠のサイズが自動調整されます。手動で子ノードを追加・削除した結果、グループ枠のサイズが実際の中身と合わなくなった場合に使用します。


グループ解除 (Ungrouping)

グループの右クリックメニューまたはツールバーから Ungroup を選択すると、外側のグループラッパーが削除され、内部の子ノードはグループ相対座標からキャンバス絶対座標に変換されてその場に残ります。サブフローグループの場合、専用サブフローも破棄され、すべてのウォール接続が元のノード同士の直接接続として復元されます。配線構造が失われることはなく、グループ枠のみが除去されます。

グループノードを(グループ解除ではなく)完全に削除した場合も、内部の子ノードに対しては同様の動作になります。子ノードはグループと一緒に削除されるのではなく、グループから切り離されてキャンバス上に残ります。


グループの実行 (Running a group)

実行可能なグループタイプには、ツールバー(グループ選択時に表示)に Run Group ボタンが表示されます(すべてのグループが持つ折りたたみや複製の操作も並んで表示されます)。グループを実行すると、単一のノードを実行するのと同様に、そのグループ(および上流の依存ノードすべて)が解決・実行されます。

サブフローグループには Execution Environment(実行環境)設定(グループ設定ポップオーバー内)も用意されており、内部のノードを実際にどこで実行するかを選択できます。デフォルトは Local Execution(キャンバス上の他の要素と同様にエンジンプロセス内部で実行)ですが、ワークフローをリモートで公開・実行する手段を提供するライブラリがインストールされている場合は、追加の選択肢が表示されます。

グループが実行されている間、ヘッダーには通常のノードと同じ Running / Resolved / Unresolved の状態インジケーター(ピル)が表示されます。プレーンな Group は 1 つの単位として実行されることがないため、このインジケーターが表示されることはありません。