```mdx
---
title: "ループ"
description: "進行的改善を伴う反復的なワークフローの実行"
icon: "infinity"
---

ループノードは、各サイクルが前の結果に基づいて構築される反復的なワークフローを実行します。配列要素を独立して処理するイテレーションとは異なり、ループは各反復で進化する進行的なワークフローを作成します。

## ループ vs イテレーション

各反復パターンを使用するタイミングの理解:

<Tabs>
  <Tab title="ループ">
    **順次処理** - 各サイクルは前の結果に依存します
    
    **進行的な改善** - 出力はイテレーションごとに改善または進化します
    
    **状態管理** - 変数はサイクルを通じて持続し、蓄積されます
    
    **ユースケース** - コンテンツの改善、問題解決、品質保証
  </Tab>
  
  <Tab title="イテレーション">
    **独立した処理** - 各アイテムは個別に処理されます
    
    **並列実行** - アイテムは同時に処理されることができます
    
    **バッチ操作** - 同じ操作が複数のデータポイントに適用されます
    
    **ユースケース** - データ変換、大量処理、並列分析
  </Tab>
</Tabs>

## 設定

### ループ変数

ループイテレーションを通じて持続し、ループ完了後もアクセス可能な変数を定義します。これらの変数は状態を維持し、進行的なワークフローを可能にします。

### 終了条件

ループの実行を停止するタイミングを設定:

**ループ終了条件** - 退出を決定する式（例: `quality_score > 0.9`）

**最大ループ回数** - 無限ループを防ぐための安全制限

**ループ終了ノード** - このノードに達したときに即時終了

<Info>
  ループは終了条件が満たされた場合、最大カウントに達した場合、またはループ終了ノードが実行された場合に終了します。条件が指定されていない場合、最大カウントまでループは続きます。
</Info>

## 基本的なループ例

50未満のランダムな数が見つかるまで生成:

<Frame caption="ランダム数生成のための基本的なループワークフロー">
  <img src="https://assets-docs.dify.ai/2025/04/282013c48b46d3cc4ebf99323da10a31.png" alt="基本的なループワークフロー" />
</Frame>

**ワークフローステップ:**
1. **コードノード** は1から100のランダムな整数を生成
2. **If-Elseノード** は数が50未満かどうかをチェック
3. **テンプレートノード** は数が50未満の場合「完了」を返し、ループ終了をトリガー
4. 終了条件が満たされるまでループは続行

<Frame caption="ループ実行ステップと結果">
  <img src="https://assets-docs.dify.ai/2025/04/9d9fb4db7093521000ac735a26f86962.png" alt="ループ実行ステップ" />
</Frame>

## 高度なループ例

反復改善を通じて詩を作成し、各バージョンが前のものに基づいて構築されます:

<video controls src="https://assets-docs.dify.ai/2025/04/7ecfc04458aa38e721baaa5f6355486c.mp4" width="100%" />

**ループ変数:**
- `num` - 各イテレーションでインクリメントされるカウンター（初期値0）
- `verse` - 現在の詩のバージョンを保持するテキスト変数

**ワークフローロジック:**
1. **If-Elseノード** は `num > 3` をチェックして終了時を決定
2. **LLMノード** は前のバージョンに基づいた改良された詩を生成
3. **変数アサイナー** はカウンターと詩の内容の両方を更新
4. **ループ終了ノード** は4サイクルの改善後に終了

LLMプロンプトは現在の詩とイテレーションのコンテキストの両方を参照します:

```text
あなたはヨーロッパの文学者として詩的な詩を作成しています。

現在の詩: {{verse}}

以前の作品に基づいてこの詩を改良してください。
```

## 一般的なユースケース

**コンテンツの改善** - 複数のLLMレビューを通じてテキスト、コード、デザインを段階的に改善し、品質基準を満たすまで。

**問題解決** - 複雑な問題を反復的なステップに分解し、各サイクルが前の進捗に基づいて次の論理的な部分を解決。

**研究ワークフロー** - 各検索サイクルからの発見に基づいて研究クエリを反復的に検索、分析、改善。

**品質保証** - 出力を繰り返しテストおよび検証し、すべての基準を満たすまで改善。

## ベストプラクティス

**明確な終了条件を定義** - 無限実行を防ぐために、ループに具体的で測定可能な終了条件を持たせる。

**適切な制限を設定** - 予想される複雑さと処理要件に基づいて適切な最大イテレーション数を使用。

**状態を効果的に管理** - ループ変数を使用してイテレーション間で必要な情報を維持し、不必要なデータの蓄積を避ける。

**進捗を監視** - 特に長時間実行されるプロセスの場合、ループ実行を追跡するためのログまたは進捗インジケーターを含める。
```