> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dify.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# コード

> データ処理のためのカスタム Python または JavaScript の実行

> このドキュメントは AI によって自動翻訳されています。不正確な部分がある場合は、[英語版](/en/cloud/use-dify/nodes/code) を参照してください。

コードノードは、カスタム Python または JavaScript を実行して、ワークフロー内で複雑なデータ変換、計算、ロジックを処理します。事前設定されたノードが特定の処理ニーズに十分でない場合に使用してください。

<Frame caption="コードノード設定インターフェース">
  ![コードノード設定インターフェース](https://assets-docs.dify.ai/dify-enterprise-mintlify/en/guides/workflow/node/9969aa1bc1912aebe366f5d8f5dde296.png)
</Frame>

## 設定

**入力変数** を定義してワークフロー内の他のノードからデータにアクセスし、これらの変数をコード内で参照します。関数は、宣言した**出力変数** を含む辞書を返す必要があります。

```python theme={null}
def main(input_variable: str) -> dict:
    # 入力を処理
    result = input_variable.upper()
    return {
        'output_variable': result
    }
```

## 言語サポート

ニーズと習熟度に基づいて、**Python** と **JavaScript** から選択できます。どちらの言語も、データ処理用の一般的なライブラリにアクセス可能な安全なサンドボックス内で実行されます。

<Tabs>
  <Tab title="Python">
    Python には`json`、`math`、`datetime`、`re`などの標準ライブラリが含まれています。データ分析、数学的演算、テキスト処理に最適です。

    ```python theme={null}
    def main(data: list) -> dict:
        import json
        import math
        
        average = sum(data) / len(data)
        return {'result': math.ceil(average)}
    ```
  </Tab>

  <Tab title="JavaScript">
    JavaScript は標準の組み込みオブジェクトとメソッドを提供します。JSON 操作と文字列演算に適しています。

    ```javascript theme={null}
    function main(data) {
        const processed = data.map(item => item.toUpperCase());
        return { result: processed };
    }
    ```
  </Tab>
</Tabs>

## エラーハンドリングと再試行

失敗したコード実行に対する自動再試行動作を設定し、コードがエラーに遭遇した場合のフォールバック戦略を定義します。

<Frame caption="エラーハンドリング設定オプション">
  ![エラーハンドリング設定オプション](https://assets-docs.dify.ai/2024/12/58f392734ce44b22cd8c160faf28cd14.png)
</Frame>

**再試行設定** では、設定可能な間隔（最大 5000ms）で最大 10 回の自動再試行が可能です。一時的な処理問題の対処にこれを有効にしてください。

**エラーハンドリング** では、コード実行が失敗した場合のフォールバックパスを定義でき、コードが問題に遭遇してもワークフローの実行を継続できます。

<Frame caption="再試行設定インターフェース">
  ![再試行設定インターフェース](https://assets-docs.dify.ai/2024/12/9fdd5525a91dc925b79b89272893becf.png)
</Frame>

## 出力制限

出力が次のノードに渡される前に、Dify は出力が大きすぎないかを確認します。

* **文字列**：最大 400,000 文字。
* **数値**：整数は最大 19 桁、小数は最大 20 桁。
* **オブジェクトと配列**：ネストは最大 5 レベル。

制限を超えた出力は確認を通過しないため、返す前に大きな結果を削減または分割してください。

## セキュリティ上の考慮事項

コードは、ファイルシステムへのアクセス、外部へのネットワークリクエスト、システムコマンドをブロックする隔離されたサンドボックス内で実行されます。サンドボックスは、カスタムコードを記述する柔軟性を保ちながら、実行を基盤インフラから分離します。

この分離により、サンドボックスの外部にアクセスしようとする操作は自動的にブロックされます。システムファイルの読み取り、ネットワーク接続の確立、シェルコマンドの実行は避け、サンドボックス内で利用できる入力変数とライブラリを使ってロジックを組み立て直してください。

## 依存関係サポート

コードノードは、Python と JavaScript 両方の外部依存関係をサポートします：

```python theme={null}
# Python: numpy、pandas、requests などをインポート
import numpy as np
import pandas as pd

def main(data: list) -> dict:
    df = pd.DataFrame(data)
    return {'mean': float(np.mean(df['values']))}
```

```javascript theme={null}
// JavaScript: lodash、moment などをインポート
const _ = require('lodash');

function main(data) {
    return { unique: _.uniq(data) };
}
```

サンドボックス環境には標準的なパッケージ一式が事前インストールされています。その範囲外のインポートは実行時に失敗します。
