# リストとバッチ処理

> 1 つのワークフローで、多数のプロンプト、画像、行をまとめて処理します。ノードはリストの項目ごとに 1 回ずつ実行され、収集、セレクター、ベストを選択で多数の結果を 1 つに戻せます。

Source: https://nodaro.ai/ja/docs/concepts/lists-and-batching

**リスト**は、ワークフローがまとめて処理する項目の集まりです。項目には、プロンプト、画像、動画、オーディオファイル、表の行があります。**ファンアウト**は、項目ごとにノードを 1 回ずつ実行します。そのため、10 個のプロンプトから 10 枚の画像ができます。**ファンイン**は、多数の結果を 1 つに戻します。たとえば、複数のクリップを 1 本の動画につないだり、AI の審査員に最も良い画像を選ばせたりします。

## 仕組み
Workflow: 5 個のプロンプトが 5 枚の画像にファンアウトします。ベストを選択が 5 枚の画像を審査して勝者だけを渡すので、動画は 1 回だけ実行されます。

- リスト → 画像生成 (プロンプト)
- 画像生成 → ベストを選択 (候補)
- ベストを選択 → 動画生成 (開始フレーム)

リストを項目ごとに処理するか、まとめて処理するかは、**接続モード**で決まります。**個別**モードの接続は、項目ごとに次のノードを 1 回ずつ実行します。**一括**モードの接続は、1 回の実行でリスト全体を渡します。すべてのモードについては、[ノードと接続](https://nodaro.ai/docs/concepts/nodes-and-connections#connection-modes)で説明しています。

## リストの作成元
| 作成元 | 得られるもの |
| --- | --- |
| [**リスト**（List）](https://nodaro.ai/docs/nodes/automate/list) | 入力、貼り付け、アップロードした項目（1 行に 1 つ）。リストは、種類を指定した複数の列を持つ表に拡張できます。無料です。 |
| [**テキストを分割**（Split Text）](https://nodaro.ai/docs/nodes/automate/split-text) | 1 つのテキストを、改行ごと、カンマごと、または指定した区切り文字ごとに分けた項目。無料です。 |
| [**プロンプト**（Prompt）](https://nodaro.ai/docs/nodes/automate/prompt) | **項目**出力は、モデルの回答を `===NEXT===` の位置で分割します。そのため、1 つの回答から多数のプロンプトを作れます。 |
| 複数の結果を持つノード | **繰り返し**などで複数回実行したノードには複数のバージョンがあり、接続でそれらをリストとして渡せます。 |
| [**収集**（Collect）](https://nodaro.ai/docs/nodes/automate/collect) | 別々の複数のノードの結果を、メディアの種類ごとに 1 つのリストにまとめたもの。無料です。 |

## ファンアウト：項目ごとに 1 回実行
**個別**モードの接続でリストがノードに渡されると、ノードは項目ごとに 1 回ずつ実行され、すべての結果を保持します。リストとテキストを分割からの接続は、デフォルトで**個別**になります。

- **項目は入力済みのプロンプトを置き換えます**。各項目が、その実行のプロンプトになります。ノードに入力したプロンプトに追加されるのではなく、置き換わります。プロンプトが空の行では、ノードに入力したプロンプトが使われます。
- **項目は 1 つずつ順に実行されます**。ノードは、最初の行から最後の行まで、項目を順番に処理します。項目が多いほど、実行に時間がかかります。
- **つながったノードも対応を保ちます**。次のノードも**個別**の接続で結果を受け取る場合、そのノードは結果ごとに、同じ順番で 1 回ずつ実行されます。5 個のプロンプトからは 5 枚の画像、続いて 5 本の動画ができます。25 本にはなりません。
- **繰り返しは回数を掛け合わせます**。ノードの**繰り返し**を 2 に設定すると、すべての項目が 2 回ずつ実行されます。
- **クレジットも掛け算になります**。ノードの費用は、料金 × 項目の数 × **繰り返し**の回数です。4 クレジットのノードに 5 つの項目が届くと、そのノードの費用は 20 クレジットです。実行前に、**実行**ボタンに合計が表示されます。

**バッジでバッチの状況がわかります**。実行前は、ファンアウトするノードのヘッダーに、`x5` のように実行回数が表示されます。実行中は `3/5` のように進行状況が表示され、「**リストを処理中…**」バーは最後に「**完了**」に変わります。

**失敗は、その項目だけにとどまります**。1 つの項目が失敗しても、成功した項目の結果は残り、失敗した項目のクレジットは返還されます。

## 表：1 回の実行に複数の値
[リスト](https://nodaro.ai/docs/nodes/automate/list)は、最初はテキストの 1 列だけです。プロンプトとリファレンス画像のように、1 回の実行に複数の値が必要な場合は、リストを表にします。

1. リストの左下にある **+** 入力にノードを接続します。新しい列が追加されます。
2. 各列の種類（テキスト、画像、動画、オーディオ、JSON）を設定します。各列には、専用の入力と出力があります。
3. 各列の出力を、その値が必要なノードの入力に接続します。たとえば、プロンプトの列は**プロンプト**に、画像の列は**リファレンス**に接続します。

行は次のように対応します。

- **3 行目は 3 行目のままです**。1 回の実行のすべての入力は、同じ行から値を受け取ります。空のセルがあると、その実行ではその入力に何も渡されず、下の行が繰り上がることもありません。
- **値が 1 つでもある行は実行されます**。すべての列が空の行は無視されるので、末尾の空行で実行が増えることはありません。
- **接続の順番は関係ありません**。どの接続を先に作ったかに関係なく、プロンプト入力に接続した列がプロンプトになります。**ネガティブ**に接続した列が、プロンプトとして使われることはありません。
- **長さの違うリストは繰り返されます**。行数の異なる 2 つのリストを 1 つのノードに渡すと、長いほうのリストが実行回数を決めます。短いほうのリストは、最後まで使い切ると最初の行から繰り返します。
- **ファンアウトするのは個別だけです**。**一括**モードで接続した列は、1 回の実行でリスト全体を渡します。

キャンバス上のリストには、「4 行 × 2 列」のようなコンパクトな概要か、表やギャラリーの全体が表示されます。ノードの下にある小さなボタンで、2 つの表示を切り替えます。画像、動画、オーディオを含む表は、デフォルトでギャラリー表示で開きます。

## ファンイン：多数の結果を 1 つに
| やりたいこと | 使うもの |
| --- | --- |
| クリップを 1 本の動画にするなど、1 回の実行ですべての項目を組み合わせる | [**動画を結合**（Combine Videos）](https://nodaro.ai/docs/nodes/video/combine-videos)、[**オーディオをミックス**（Mix Audio）](https://nodaro.ai/docs/nodes/audio/mix-audio)、[**オーディオを結合**（Combine Audio）](https://nodaro.ai/docs/nodes/audio/combine-audio)など、組み合わせるノードへの**一括**接続 |
| 最初や最後など、1 つの項目だけを残す | **項目**接続、または[**セレクター**（Selector）](https://nodaro.ai/docs/nodes/automate/selector)ノード |
| AI の審査員に最も良い結果を選ばせる | **AI が最適なものを選択**を選んだ[**ベストを選択**（Choose Best）](https://nodaro.ai/docs/nodes/automate/choose-best) |
| テキストを結合する、結果を数える、最も多い回答を残す | 無料のオプションを選んだ[ベストを選択](https://nodaro.ai/docs/nodes/automate/choose-best) |
| 複数の異なるノードの結果を集める | [収集](https://nodaro.ai/docs/nodes/automate/collect) |

### ベストを選択
[ベストを選択](https://nodaro.ai/docs/nodes/automate/choose-best)ノードは、候補のリストを 1 つの結果にします。**候補の処理方法**で、動作を選びます。

| オプション | 返すもの | クレジット |
| --- | --- | --- |
| **AI が最適なものを選択** | 指定した基準で AI の審査員が最も良いと判断した候補と、1 文の理由 | 審査員のティアに応じて 3、10、25 |
| **1 つのテキストに結合** | 指定した区切り文字で、すべての候補を 1 つのテキストにまとめたもの | 無料 |
| **内容のある最初の候補** | 空でない最初の候補 | 無料 |
| **数を数える** | 届いた候補の数 | 無料 |
| **最も多い回答** | 最も多く現れる候補。同数の場合は最初のもの。 | 無料 |
| **JSON オブジェクトをマージ** | **ディープ**または**シャロー**でマージした 1 つの JSON オブジェクト | 無料 |

**AI が最適なものを選択**では、次の 3 つを設定します。

- **AI モデル**：審査員です。**エコノミー**のモデルは 3 クレジット、**スタンダード**のモデルは 10 クレジット、**プレミアム**のモデルは 25 クレジットです。デフォルトはスタンダードです。
- **判断基準**：勝者の条件です。たとえば、「ダークなエディトリアル系フィードで最も目を引くカバー。サムネイルでも読めること」のように書きます。
- **候補の種類**：**テキスト**または**画像**です。候補が画像の場合は**画像**を選んでください。**テキスト**のままだと、審査員は画像のリンクしか比較しません。

ノードには、選ばれた結果、候補の中での位置、審査員の理由が表示されます。設定パネルの**候補**タブには、すべての候補が一覧表示され、選ばれた候補に印が付きます。5 枚の画像をスタンダードのモデルで審査する場合の費用は、5 枚の画像の料金に 10 クレジットを足した額です。

**空の候補は無視されます**。失敗した項目は空の候補になり、ベストを選択は最初に空の候補を取り除きます。そのため、**数を数える**は成功した項目だけを数えます。すべての候補が空の場合、**1 つのテキストに結合**は空のテキストを返し、**数を数える**は `0` を返します。それ以外のオプションは失敗し、ベストを選択より後のノードは実行されません。

### 収集
[収集](https://nodaro.ai/docs/nodes/automate/collect)ノードは、任意の数のノードの結果を、テキスト、画像、動画、オーディオの種類ごとに 4 つのリストにまとめます。4 つの出力は常にあるので、まだ何も実行していなくても、次のノードを接続できます。設定パネルで行をドラッグすると、項目の順番を変えられます。収集は無料です。

異なるノードから来た結果を比べるには、収集を[ベストを選択](https://nodaro.ai/docs/nodes/automate/choose-best)ノードに接続します。たとえば、3 つの異なるモデルで作った 3 枚のカバーを比べられます。

### セレクター
[セレクター](https://nodaro.ai/docs/nodes/automate/selector)ノードは、リストから項目を選び出します。出力は 2 つあり、**選択済み**には選んだ項目が、**残り**にはそれ以外のすべての項目が入ります。複数のノードで同じ選択が必要な場合や、接続にはないモードが必要な場合は、**項目**接続や範囲指定の接続の代わりにセレクターを使います。

| モード | 選ぶもの |
| --- | --- |
| **項目（単一のインデックス）** | `3`、`last`、`last-1` などの 1 つの項目 |
| **範囲（開始／終了／ステップ）** | 項目 2〜4 のような、項目の範囲 |
| **リスト（カンマ区切りの式）** | `1, 3, 5..last` のような式が示す項目 |
| **ランダム（シード指定）** | ランダムに選んだ項目。同じシードなら、常に同じ項目が選ばれます。 |
| **剰余（インデックスで循環）** | リストを循環する位置にある項目 |
| **条件（フィルター）** | スコアが 15 を超えるなど、フィールドが条件に一致する項目 |
| **名前付きキー（検索）** | フィールドが指定した値を持つ項目。たとえば、「hero」という名前の項目 |

セレクターが、設定が原因でワークフローを止めることはありません。範囲外のインデックスや読み取れない式は、妥当な選択に置き換えられます。セレクターは無料です。

## そのほかのリストツール
ノードピッカーの**リストとバッチ処理**グループには、ほかにも次のノードがあります。条件に一致する項目を残す[**リストをフィルター**（Filter List）](https://nodaro.ai/docs/nodes/automate/filter-list)、[**リストを並べ替え**（Sort List）](https://nodaro.ai/docs/nodes/automate/sort-list)、[**重複を削除**（Remove Duplicates）](https://nodaro.ai/docs/nodes/automate/remove-duplicates)、そして 2 つのリストを末尾につなげるか項目ごとに組み合わせる[**リストを結合**（Merge Lists）](https://nodaro.ai/docs/nodes/automate/merge-lists)です。4 つとも無料です。

## ヒント
- **1 つの項目に 1 つのアイデア**。各項目は、それだけで完結したプロンプトや値にします。
- **短いリストで試します**。まず 2〜3 個の項目のリストで実行して結果を確認し、それから残りを追加します。
- **大きなバッチは分けます**。非常に大きなリストは、1 回の長い実行になります。小さなリストに分けたほうが、確認しやすくなります。
- **ファンアウトは必ず閉じます**。バッチを 1 つの結果で終えたい場合は、ベストを選択、**一括**接続、**項目**接続のいずれかで締めくくります。
- **項目で変数を使います**。項目には `{Style}` のような[プロンプト変数](https://nodaro.ai/docs/concepts/prompt-variables)を含められるので、すべての実行で同じ文言を共有できます。

## Frequently asked questions

### 10 個のプロンプトから 10 枚の画像を作るには、どうすればよいですか？

「リスト」ノードに 10 個のプロンプトを 1 行に 1 つずつ入れ、そのリストを「画像生成」の「プロンプト」入力に接続します。この接続は「個別」モードになるので、画像生成が 10 回実行され、10 件の結果が保持されます。

### バッチには何クレジットかかりますか？

ノードの料金に項目の数を掛けた額です。「繰り返し」を設定した場合は、さらにその回数を掛けます。4 クレジットのノードに 5 つの項目を渡すと、20 クレジットかかります。実行前に、「実行」ボタンに合計が表示されます。

### バッチの項目の 1 つが失敗すると、どうなりますか？

ほかの項目の結果はそのまま残り、失敗した項目のクレジットは返還されます。「ベストを選択」は失敗した項目の空の結果を無視するので、「数を数える」では成功した項目だけが数えられます。

### バッチの結果から、最も良いものだけを残すにはどうすればよいですか？

バッチを「ベストを選択」ノードに接続し、「AI が最適なものを選択」を選びます。「判断基準」に勝者の条件を書き、候補が画像の場合は「画像」を選びます。

### 「収集」と「ベストを選択」の違いは何ですか？

「収集」は、複数のノードの結果を、メディアの種類ごとに 1 つのリストにまとめます。「ベストを選択」は、候補のリストを 1 つの結果にします。方法は、AI の判断、数のカウント、結合、多数決から選べます。
