```mdx
---
title: "開始"
description: "ワークフローとチャットフローアプリケーションのエントリーポイント"
icon: "play"
---

開始ノードは、すべてのワークフローとチャットフローアプリケーションのエントリーポイントです。エンドユーザーから受け入れる入力を定義し、ワークフロー全体で参照可能なシステム変数を提供します。

## 入力変数

開始ノードでカスタム入力フィールドを設定して、ユーザーから情報を収集できます。各入力フィールドはワークフローを通じて流れる変数になります。たとえば、`user_name`という入力フィールドを作成すると、ワークフローのどこでも`{{user_name}}`として参照できます。

### 入力タイプ

開始ノードは、さまざまな種類のユーザーデータを処理するために6つの入力タイプをサポートしています：

<Tabs>
  <Tab title="テキスト入力">
    **テキスト** は256文字までの短い応答を受け入れます。名前、メールアドレス、タイトル、または1行に収まる簡単なテキスト入力に使用します。

    **段落** は文字制限なしで長文のテキストを受け入れます。ユーザーに詳細な応答、説明、またはより多くのスペースが必要なコンテンツのための複数行のテキストエリアを提供します。
  </Tab>
  
  <Tab title="構造化入力">
    **選択** は、ユーザーに事前に定義されたオプションのドロップダウンメニューを提示します。ユーザーは指定したオプションからのみ選択でき、データの一貫性を確保し、予期しない入力を防ぎます。
    
    **数値** は数値のみの入力を制限します。これは数量、評価、ID、またはワークフローで数学的に処理する必要があるデータに不可欠です。
  </Tab>
  
  <Tab title="ファイル入力">
    **単一ファイル** は、ユーザーが任意のサポートされるタイプのファイルを1つアップロードできるようにします。ユーザーはデバイスからアップロードするか、ファイルのURLを提供できます。ファイルはワークフロー内でファイル変数として利用可能になります。
    
    **ファイルリスト** は、単一ファイルと同様に機能しますが、複数のファイルを一度にアップロードすることをサポートします。これは、ドキュメント、画像、またはその他のファイルを一緒に処理する際に便利です。
  </Tab>
</Tabs>

<Info>
  ユーザーがファイルをアップロードすると、DifyのドキュメントエクストラクタがPDF、Wordドキュメント、およびほとんどのテキスト形式を自動的に処理できます。画像、音声、またはビデオファイルの場合、ワークフローに適切な処理ノードを接続する必要があります。
</Info>

## システム変数

カスタム入力に加えて、開始ノードはワークフローのメタデータとコンテキストにアクセスできるシステム変数を提供します。これらの変数は自動的に利用可能で、変更することはできません。

<Frame caption="ワークフローとチャットフローアプリケーションで利用可能なシステム変数">
  <img src="/images/2bc13695bb7c41fe54b7362d4b7237a480524aa7c05b42c80649fd1e1209f091.png" alt="システム変数の比較" />
</Frame>

利用可能なシステム変数は、アプリケーションの種類によって異なります。ワークフローアプリケーションは`sys.app_id`や`sys.workflow_id`のような基本的なメタデータを提供し、チャットフローアプリケーションは`sys.conversation_id`や`sys.dialogue_count`のような会話特有の追加変数を含みます。

システム変数は、実行コンテキストの追跡、ユーザー固有のロジックの実装、またはチャットフローアプリケーションで会話の状態を維持するのに特に便利です。

## 変数の参照

開始ノードからの変数は、下流の任意のノードで参照できます。ノードの入力フィールドを設定する際、ドロップダウンメニューから変数を選択するか、テキストフィールドに`/`を入力して変数の値を挿入できます。

<Frame caption="スラッシュコマンドを使用してテキスト入力に変数を挿入する">
  <img src="/images/image.png" alt="変数挿入インターフェイス" />
</Frame>

変数はワークフロー全体でそのタイプを維持します。数値入力は数値のまま、ファイルアップロードはファイルオブジェクトのまま、テキスト入力は文字列のままです。このタイプの一貫性は、下流のノードがデータを正しく処理できるようにします。

## ファイル処理

開始ノードを通じてアップロードされたファイルは、ワークフロー内で適切に処理する必要があります。開始ノード自体はファイルを収集し、変数として利用可能にするだけです。コンテンツを抽出および処理するために特定のノードを接続する必要があります：

ドキュメントファイルは、テキストコンテンツを抽出するためにドキュメントエクストラクタノードにルーティングする必要があります。画像は、視覚能力を持つLLMノードや特殊な画像処理ツールに送信できます。CSVやJSONのような構造化データファイルは、データを解析および変換するためにコードノードで処理できます。

<Note>
  ファイル変数には、アップロードされたファイルの名前、サイズ、タイプなどのメタデータが含まれています。実際のファイルコンテンツは、下流のノードで抽出または処理する必要があります。
</Note>

## 非表示変数

任意の入力変数を「非表示」に設定して、ユーザーインターフェースから除外しつつ、ワークフローで利用可能にすることができます。

## 設定のベストプラクティス

開始ノードの入力を設計する際、ワークフローの初めに必要な情報と、後で導出または収集できる情報を考慮してください。最初に多くの入力を必要とすると、ユーザーに摩擦を生じさせ、少なすぎるとワークフローの能力を制限する可能性があります。

変数が含むデータを明確に示す記述的な変数名を選択してください。変数名は一貫してアンダースコアまたはキャメルケースを使用し、解析問題を引き起こす可能性のある特殊文字を避けてください。変数名は大文字と小文字を区別するため、`userName`と`username`は異なる変数です。

ファイルアップロードの場合、適切なファイルタイプの制限やサイズ制限を設定することを検討してください。これにより、下流での処理エラーを防ぎ、ワークフローが期待される入力形式を受け取ることができます。

## 次のステップ

開始ノードを設定した後、通常は収集された入力を処理するノードに接続します。一般的なパターンには、ユーザー入力を処理するためにLLMノードに送信すること、入力に基づいて関連情報を見つけるために知識検索を使用すること、または入力値に基づいて条件付きロジックを使用して異なるワークフローブランチにルーティングすることが含まれます。
```