# コンポーネントとサブワークフロー

> 複数のノードを、再利用できる 1 つのノードにまとめます。その場で編集できるサブワークフローと、独自の入力、設定、料金を持つ公開コンポーネントの 2 種類があります。

Source: https://nodaro.ai/ja/docs/concepts/components-and-sub-workflows

**サブワークフロー**は、別のワークフローの中に 1 つのノードとして置いたワークフローです。**コンポーネント**は、バージョン管理された公開ワークフローで、誰でも同じように自分のワークフローに組み込めます。どちらも、複数のノードを、名前付きの入力と出力を持つ 1 つのノードにまとめます。「背景を削除してからアップスケール」のような実績のある処理の流れを再利用したり、大きなワークフローを見やすく保ったりするのに使います。

## サブワークフローとコンポーネントの違い
| | サブワークフロー | コンポーネント |
| --- | --- | --- |
| **ノード** | [**サブワークフロー**（Sub-Workflow）](https://nodaro.ai/docs/nodes/automate/sub-workflow) | [**コンポーネント**（Component）](https://nodaro.ai/docs/nodes/automate/component) |
| **中身** | 自分のワークフローの 1 つ | 誰かがコンポーネントとして公開したワークフロー、または自分が公開したもの |
| **中身を見て編集できるか** | はい。ノードからその場で開けます。 | いいえ。作成者が公開した入力と設定だけを指定できます。 |
| **入力と出力** | [**サブワークフロー入力**（Sub-Workflow Input）](https://nodaro.ai/docs/nodes/automate/sub-workflow-input)ノードと[**サブワークフロー出力**（Sub-Workflow Output）](https://nodaro.ai/docs/nodes/automate/sub-workflow-output)ノードで宣言したコネクタ | 作成者が公開時に選んだ入力と出力 |
| **変更の反映** | 参照先のワークフローに従います。コネクタを変更したら**更新**をクリックします。 | 更新するまで、追加したときのバージョンを使い続けます |
| **料金** | 中のノードが通常の料金を請求します | 見積もり料金。作成者の上乗せ料金が含まれる場合があります |
| **向いている用途** | 自分の大きなワークフローを整理する | 完成した処理をほかの人と共有する |

## サブワークフローを作る
### サブワークフローノードを追加する
まずワークフローを保存します。次にノードピッカーを開き、**自動化 › ワークフロー › サブワークフロー**を選びます。

### 内側のワークフローを作成するか選ぶ
設定パネルで**空のサブワークフローを作成**をクリックします。Nodaro が、入力ノードと出力ノードを 1 つずつ持つ新しい内側のワークフローを作成し、編集できる状態で開きます。既存のワークフローを再利用する場合は、代わりに**ワークフロー**の一覧から選びます。ほかのプロジェクトのワークフローを表示するには、**すべてのプロジェクト**をオンにします。

### 入力と出力を宣言する
内側のワークフローでは、**サブワークフロー入力**ノードに、親ワークフローから値を受け取るコネクタが並びます。各コネクタには、名前とメディアの種類（テキスト、画像、動画、オーディオ、指定なし）があります。**サブワークフロー出力**ノードには、結果を返すコネクタが並びます。出力ノードの**表示する出力**で、親ワークフローがノードのプレビューとして表示するコネクタの結果を選びます。

### 親ワークフローで接続する
エディター上部のパンくずリストで、親ワークフローに戻ります。サブワークフローノードには、コネクタごとに入力と出力が 1 つずつできています。ほかのノードと同じように接続し、親ワークフローを実行します。

Workflow: 2 ステップのクリーンアップ処理を 1 つのサブワークフローノードにまとめているので、親のキャンバスは短いままです。

- 画像アップロード → サブワークフロー (画像)
- サブワークフロー → 画像生成 (リファレンス)
- 画像生成 → 動画生成 (開始フレーム)

### 開く・表示する・移動する
- ノードの**展開**をクリックすると、内側のワークフローが編集できる状態で開きます。エディター上部のパンくずリストに、「自分のワークフロー › サブワークフロー › さらに入れ子のワークフロー」のようなパスが表示されます。パスのどの部分をクリックしても、その場所に移動できます。
- **ワークフローを表示**をクリックすると、親ワークフローから離れずに、内側のワークフローを読み取り専用のウィンドウで開けます。
- 未保存の変更がある状態でノードを展開すると、先に変更を保存するか破棄するかを確認されます。

**空のサブワークフローを作成**で作ったサブワークフローは、親ワークフローに属します。プロジェクトのワークフロー一覧には表示されず、そのノードからしか開けません。**ワークフロー**の一覧から選んだワークフローは通常のワークフローのままで、ほかの親ワークフローからも使えます。

## ルート：1 つのワークフローに複数の入口
**ルート**は、サブワークフロー入力ノード 1 つとサブワークフロー出力ノード 1 つの組み合わせです。1 つのワークフローに複数のルートを持たせることができ、各ルートはワークフロー内の別々の経路になります。サブワークフローノードの**ルート**で、使うルートを選びます。**インターフェース**に、そのルートの入力と出力が表示されます。

実行されるのは、選んだルートがたどり着くノードだけです。内側のワークフローのそれ以外の部分は実行されません。

## ルールと制限
- **最大 5 階層**。サブワークフローの中にはサブワークフローを入れられますが、5 階層までです。深い入れ子はデバッグが難しくなるので、階層は浅く保ってください。
- **ループは禁止**。ワークフローは、直接にも別のワークフローを通じても、自分自身を呼び出せません。ただし、同じワークフローを 2 つの異なるルートで 2 回使うことはできます。
- **すべてのルートが完全である必要があります**。保存時に、Nodaro は次の 3 点を確認します。各入力ノードに、対応する出力ノードがあること。各出力ノードに、コネクタが 1 つ以上あること。2 つの入力ノード、または 2 つの出力ノードが、同じルートを共有していないこと。
- **変更後は更新します**。ほかのワークフローから使われているワークフローのコネクタを変更したら、それを使う各サブワークフローノードで**更新**をクリックします。

## コンポーネントを使う
### コンポーネントノードを追加する
ノードピッカーを開き、**自動化 › ワークフロー › コンポーネント**を選びます。空のノードの代わりに、コンポーネントブラウザーが開きます。タブは**閲覧**、**マイコンポーネント**、**お気に入り**の 3 つです。名前で検索したり、**人気順**、**新着順**、**お気に入り数順**で並べ替えたりできます。

### コンポーネントを選ぶ
コンポーネントのカードをクリックします。コンポーネントの入力と出力が設定済みの状態で、ノードがキャンバスに配置されます。

### 入力と設定を指定する
設定パネルは 3 つの部分に分かれています。

- **入力**：接続済みの入力には、上流のノードから値が来ることが表示されます。未接続のテキスト入力は、その場で入力できます。画像、動画、オーディオの入力には接続が必要です。
- **設定**：品質やアスペクト比など、作成者が調整できるようにしたオプションです。
- **出力**：各出力の名前と種類です。次のノードを接続するときの目安になります。

### 料金を確認して実行する
設定パネルには見積もりのクレジット料金が表示され、設定を変えると更新されます。いつもどおり、ノードまたはワークフロー全体を実行します。

コンポーネントノードは追加したときのバージョンを使い続けるので、作成者が新しいバージョンを出しても、ワークフローが知らないうちに変わることはありません。設定パネルの更新アイコンをクリックすると、最新のバージョンと、その新しい見積もり料金に切り替わります。

## 自分のコンポーネントを公開する
コンポーネントは、通常のワークフローとして作り始めます。エディターの**プレゼン**タブから公開します。

1. 「プレゼン」タブで、コンポーネントの入力と出力にするノードを追加します。
2. **公開**をクリックし、**コンポーネント**を選びます。**コンポーネント名**と説明を入力します。
3. **コンポーネントのコネクタ**で、各入力と出力に名前を付けます。必須の入力に印を付け、ノードがキャンバスに表示する**プレビュー**として出力を 1 つ選びます。
4. コンポーネントブラウザーに掲載するかどうかを選び、公開します。

Nodaro Cloud では、ほかの人があなたのコンポーネントを使うときに上乗せ料金を請求できます。料金は、クレジット単位の固定料金、割合、またはその両方で設定します。設定画面には、基本料金とユーザーが支払う金額が表示されます。自分のコンポーネントは**マイコンポーネント**に表示され、そこで編集、掲載、掲載の停止、アーカイブができます。

1 つのワークフローを、コンポーネントと[ミニアプリ](https://nodaro.ai/docs/concepts/apps)の両方として公開できます。ミニアプリは入力するフォームを、コンポーネントは接続するノードを利用者に提供します。

## Frequently asked questions

### サブワークフローとコンポーネントの違いは何ですか？

サブワークフローは、自分のワークフローの 1 つをノードとして別のワークフローに入れたもので、その場で開いて編集できます。コンポーネントは、コンポーネントブラウザーから使う、バージョン管理された公開ワークフローです。中身は見えず、作成者が選んだ入力、設定、出力を持つノードとして使います。

### サブワークフローは何階層まで入れ子にできますか？

最大 5 階層です。また、ワークフローが直接または別のワークフローを通じて自分自身を呼び出すようなループは、Nodaro が受け付けません。

### サブワークフローノードやコンポーネントノードにクレジットはかかりますか？

ノード自体は無料です。中にあるノードが、実行時に通常の料金を請求します。コンポーネントの設定パネルには見積もり料金が表示され、作成者が設定した上乗せ料金が含まれる場合があります。

### 作成者が新しいバージョンを公開すると、コンポーネントは更新されますか？

いいえ。コンポーネントノードは、追加したときのバージョンを使い続けます。最新のバージョンにしたいときは、設定パネルの更新アイコンをクリックしてください。
