---
title: 変数
---

import { Callout } from 'fumadocs-ui/components/callout'
import { Step, Steps } from 'fumadocs-ui/components/steps'
import { Image } from '@/components/ui/image'

変数ブロックは実行中にワークフロー変数を更新します。変数はまずワークフローの変数セクションで初期化する必要があり、その後このブロックを使用してワークフロー実行中に値を更新できます。

<div className="flex justify-center">
  <Image
    src="/static/blocks/variables.png"
    alt="変数ブロック"
    width={500}
    height={350}
    className="my-6"
  />
</div>

<Callout>
  ワークフロー内のどこからでも `<variable.variableName>` 構文を使用して変数にアクセスできます。
</Callout>

## 概要

変数ブロックでは以下のことが可能です：

<Steps>
  <Step>
    <strong>ワークフロー変数の更新</strong>：実行中に変数値を変更する
  </Step>
  <Step>
    <strong>動的データの保存</strong>：ブロック出力を変数に取り込む
  </Step>
  <Step>
    <strong>状態の維持</strong>：カウンター、フラグ、中間結果を追跡する
  </Step>
</Steps>

## 変数の使用方法

### 1. ワークフロー変数での初期化

まず、ワークフローの変数セクション（ワークフロー設定からアクセス可能）で変数を作成します：

```
customerEmail = ""
retryCount = 0
currentStatus = "pending"
```

### 2. 変数ブロックでの更新

変数ブロックを使用して実行中にこれらの値を更新します：

```
customerEmail = <api.email>
retryCount = <variable.retryCount> + 1
currentStatus = "processing"
```

### 3. どこからでもアクセス

任意のブロックで変数を参照します：

```
Agent prompt: "Send email to <variable.customerEmail>"
Condition: <variable.retryCount> < 5
API body: {"status": "<variable.currentStatus>"}
```

## 使用例

### ループカウンターと状態

<div className="mb-4 rounded-md border p-4">
  <h4 className="font-medium">シナリオ：ループ反復の進行状況を追跡する</h4>
  <ol className="list-decimal pl-5 text-sm">
    <li>ワークフローで初期化：`itemsProcessed = 0`、`lastResult = ""`</li>
    <li>ループがアイテムを反復処理</li>
    <li>ループ内：エージェントが現在のアイテムを処理</li>
    <li>ループ内：変数が `itemsProcessed = <variable.itemsProcessed> + 1` を更新</li>
    <li>ループ内：変数が `lastResult = <agent.content>` を更新</li>
    <li>次の反復：`<variable.lastResult>` にアクセスして現在の結果と比較</li>
  </ol>
</div>

### リトライロジック

<div className="mb-4 rounded-md border p-4">
  <h4 className="font-medium">シナリオ：APIリトライ試行を追跡する</h4>
  <ol className="list-decimal pl-5 text-sm">
    <li>ワークフローで初期化：`retryCount = 0`</li>
    <li>APIブロックがリクエストを試行</li>
    <li>失敗した場合、変数がインクリメント：---INLINE-CODE-PLACEHOLDER-e289a5ca49f66a6001d9263f3b890a8d---</li>
    <li>条件が `<variable.retryCount>` \< 3 をチェックしてリトライするか失敗するか</li>
  </ol>
</div>

### 動的設定

<div className="mb-4 rounded-md border p-4">
  <h4 className="font-medium">シナリオ：ワークフロー用のユーザーコンテキストを保存する</h4>
  <ol className="list-decimal pl-5 text-sm">
    <li>ワークフローで初期化：`userId = ""`, `userTier = ""`</li>
    <li>APIがユーザープロファイルを取得</li>
    <li>変数が保存：`userId = <api.id>`, `userTier = <api.tier>`</li>
    <li>エージェントが`<variable.userTier>`を使用してレスポンスをパーソナライズ</li>
    <li>APIがログ記録に`<variable.userId>`を使用</li>
  </ol>
</div>

## 出力

- **`<variables.assignments>`**：このブロックからのすべての変数割り当てを含むJSONオブジェクト

## ベストプラクティス

- **ワークフロー設定で初期化**：使用する前に必ずワークフローの変数セクションで変数を作成する
- **動的に更新**：ブロック出力や計算に基づいて値を更新するために変数ブロックを使用する
- **ループで使用**：反復処理間で状態を追跡するのに最適
- **わかりやすい名前を付ける**：`currentIndex`、`totalProcessed`、または`lastError`のような明確な名前を使用する
