---
title: ワークフロー変数
---

import { Callout } from 'fumadocs-ui/components/callout'
import { Step, Steps } from 'fumadocs-ui/components/steps'
import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
import { Video } from '@/components/ui/video'

Simの変数は、ワークフロー内のどのブロックからもアクセスおよび変更できるデータのグローバルストアとして機能し、グローバル変数を使用してワークフロー全体でデータを保存および共有することができます。変数は、ワークフローの異なる部分間で情報を共有し、状態を維持し、よりダイナミックなアプリケーションを作成するための強力な方法を提供します。

<div className="mx-auto w-full overflow-hidden rounded-lg">
  <Video src="variables.mp4" />
</div>

<Callout type="info">
  変数を使用すると、ワークフロー全体でデータを保存および共有できるため、状態を維持し、複雑な相互接続システムを簡単に作成できます。
</Callout>

## 概要

変数機能はワークフローの中央データストアとして機能し、以下のことが可能になります：

<Steps>
  <Step>
    <strong>グローバルデータの保存</strong>：ワークフロー実行全体で持続する変数を作成
  </Step>
  <Step>
    <strong>ブロック間での情報共有</strong>：ワークフロー内のどのブロックからも同じデータにアクセス
  </Step>
  <Step>
    <strong>ワークフロー状態の維持</strong>：ワークフローの実行中に重要な値を追跡
  </Step>
  <Step>
    <strong>動的ワークフローの作成</strong>：保存された値に基づいて適応できるより柔軟なシステムを構築
  </Step>
</Steps>

## 変数の作成

サイドバーの変数パネルから変数を作成および管理できます。各変数には以下があります：

- **名前**：変数を参照するための一意の識別子
- **値**：変数に保存されるデータ（様々なデータ型をサポート）
- **説明**（任意）：変数の目的を説明するメモ

## 変数へのアクセス

変数は変数ドロップダウンを使用してワークフロー内のどのブロックからもアクセスできます。単に：

1. ブロック内のテキストフィールドに `<` と入力します
2. ドロップダウンメニューを開いて、利用可能な変数を参照します
3. 使用したい変数を選択します

<div className="mx-auto w-full overflow-hidden rounded-lg">
  <Video src="variables-dropdown.mp4" />
</div>

<Callout>
  接続タグをフィールドにドラッグすることでも、変数ドロップダウンを開いて利用可能な変数にアクセスできます。
</Callout>

## 変数の種類

Simの変数はさまざまな種類のデータを格納できます：

<Tabs items={['Text', 'Numbers', 'Boolean', 'Objects', 'Arrays']}>
  <Tab>

    ```
    "Hello, World!"
    ```

    <p className="mt-2">テキスト変数は文字列を格納します。メッセージ、名前、その他のテキストデータを保存するのに便利です。</p>
  </Tab>
  <Tab>

    ```
    42
    ```

    <p className="mt-2">数値変数は計算や比較に使用できる数値を格納します。</p>
  </Tab>
  <Tab>

    ```
    true
    ```

    <p className="mt-2">ブール変数はtrue/false値を格納し、フラグや条件チェックに最適です。</p>
  </Tab>
  <Tab>

    ```json
    {
      "name": "John",
      "age": 30,
      "city": "New York"
    }
    ```

    <p className="mt-2">オブジェクト変数はプロパティと値を持つ構造化されたデータを格納します。</p>
  </Tab>
  <Tab>

    ```json
    [1, 2, 3, "four", "five"]
    ```

    <p className="mt-2">配列変数は項目の順序付きコレクションを格納します。</p>
  </Tab>
</Tabs>

## ブロックでの変数の使用

ブロックから変数にアクセスする際、以下のことができます：

- **値の読み取り**：ブロックのロジックで変数の現在の値を使用する
- **変更**：ブロックの処理に基づいて変数の値を更新する
- **式での使用**：式や計算に変数を含める

## 変数のスコープ

Simの変数はグローバルスコープを持ち、以下のことを意味します：

- ワークフロー内のどのブロックからもアクセス可能
- 変数への変更はワークフロー実行全体で持続する
- 明示的にリセットされない限り、変数は実行間で値を維持する

## ベストプラクティス

- **わかりやすい名前を使用する**：変数が表すものを明確に示す変数名を選びましょう。例えば、`up` ではなく `userPreferences` を使用します。
- **変数を文書化する**：変数に説明を追加して、他のチームメンバーがその目的と使用方法を理解できるようにしましょう。
- **変数のスコープを考慮する**：変数はグローバルであり、どのブロックからも変更できることを忘れないでください。予期しない動作を防ぐために、このことを念頭にワークフローを設計しましょう。
- **変数を早期に初期化する**：必要なときに確実に利用できるよう、ワークフローの最初に変数をセットアップして初期化しましょう。
- **存在しない変数に対応する**：変数がまだ存在しない、または予期しない値を持つ可能性を常に考慮しましょう。ブロックに適切な検証を追加してください。
- **変数の数を制限する**：変数の数を管理しやすい範囲に保ちましょう。変数が多すぎると、ワークフローの理解と保守が難しくなります。
