--- title: "主要な概念" url: https://docs.catalyst.zoho.com/ja/serverless/help/circuits/key-concepts/ description: "Catalyst Circuitsは、ワークフローとロジックのオーケストレーションと自動化を支援し、簡単なドラッグ&ドロップでスキーマティクスを設計できます。" last_updated: 2026-08-17T12:16:04Z service: Serverless type: general --- # 主要な概念 Catalyst Circuitsの実装について学ぶ前に、いくつかの基本的な概念を詳しく理解することが重要です。 ### Circuitのコンポーネント Catalyst Circuitのワークフロー設計には、ロジックとデータフローのオーケストレーションを支援するさまざまなコンポーネントが含まれています。 #### Circuitステート ステートとは、特定の時点においてCircuitが置かれている特定の状態です。Circuitのそのステージで実行される特定のタスクまたはプロセスを定義します。 Circuitステートは大きく2つのカテゴリーに分類できます。 * **フローコントロール:** フローコントロールステートは、Circuit内のロジックとデータのフローをオーケストレーションします。Catalyst Circuitsでは以下のフローコントロールステートが利用可能です。 * Pass * Branch * Parallel * Wait * Batch * Success * Failure * **ファンクショナル:** ファンクショナルステートは、Circuit内で実行される実際の操作を定義します。Catalyst Circuitsでは以下のファンクショナルコントロールステートが利用可能です。 * Function * Circuit 各ステートの詳細については、[次のセクション](https://docs.catalyst.zoho.com/ja/serverless/help/circuits/key-concepts/#circuit-states-1)で説明します。 Circuitは実行中にステップバイステップで1つのステートから次のステートに遷移します。Circuit内の各ステート間でロジックとデータフローが発生します。各ステートの設定には以下のプロパティが存在します。 * **Previous state:** 現在のステートの前に遷移したステート * **Next state:** 現在のステートの後に遷移するステート Circuitの開始は**Start**というキーで示され、Circuitの終了は**End**というキーで、[Circuitのスキーマティクスフロー図](https://docs.catalyst.zoho.com/ja/serverless/help/circuits/key-concepts/#circuit-states-1)に示されます。 CircuitのJSONコードでは、ステートが`next`キーを記述していない場合、それは最後のステートであり、ステートが他のいずれのステートでも`next`として参照されていない場合、それはCircuitの最初のステートです。サンプルJSONコードスニペットについては[このセクション](https://docs.catalyst.zoho.com/ja/serverless/help/circuits/key-concepts/#json-code)を参照してください。 #### 入力、出力、および結果 Catalyst Circuitは一般的に、開始時に入力を受け取り、実行後に出力を提供します。これらはCircuit入力とCircuit出力と呼ばれます。 * **Circuit入力:** [Circuitの実行](https://docs.catalyst.zoho.com/ja/serverless/help/circuits/implementation/#execute-a-circuit)を開始する際、JSON形式のキーバリューペアとしてCircuitに入力を提供する必要があります。Circuitの機能要素であるBasic I/O FunctionsはJSON形式の入力を処理するため、Circuit入力も同じ形式をサポートしています。開始時に提供された入力は、Circuit内の最初のステートに渡されます。 * **Circuit出力:** 入力JSONは、ワークフロー設計とアーキテクチャに基づいて、Circuit内のステートを通じて処理・遷移されます。最後のステートが遷移された後、Catalystは実行完了後にCircuitの最終出力を生成します。 コンソールから各実行の詳細な実行ログと履歴を確認できます。 入力JSONを操作して各ステートの処理にカスタム入力を提供したり、必要に応じて各ステートの処理出力の一部を選択して次のステートに渡したりできます。処理されたステートの結果を入力JSONに動的に含めて渡すこともできます。 これらは、Circuitステートの以下のプロパティによって実行されます。 * **Input path:** 入力パスは、ステートの入力の一部を選択し、処理のためにステートのタスクに渡します。例えば、ステートの入力JSONが以下の場合: ```json { name: Amelia Burrows gender: F age: 33 } ``` `name`と`gender`変数のみをステート(例:ファンクション)の入力として送信したい場合、ファンクションの入力パスを`$.name,gender`と設定できます。これはJSONオブジェクト`name`と`gender`を入力パスとして参照します。 Catalystは外部の`JsonPath`ライブラリをインポートして、Circuit内のステートの入力パス、出力パス、結果パスを定義します。そのため、パス定義では`JsonPath`でサポートされているすべての式を使用できます。`JsonPath`構文については、[GitHubドキュメント](https://github.com/json-path/JsonPath)を参照してください。 * **Output path:** 出力パスは、ステートの出力の一部を選択し、処理のために次のステートに渡します。例えば、ステートの出力JSONが以下の場合: ```json [ 26, "John Kemper", { "streetAddress": "Sunshine Avenue", "city": "Austin", "postalCode": "630-0231" } ] ``` 出力から`age`と`name`オブジェクトの値(26、John Kemper)のみを選択して次のステートに渡すには、ステートの出力パスを`$.age,name`と設定します。 * **Result path:** 結果パスは、ステートの入力の一部とステートの実行結果を組み合わせて、ステートの出力とします。つまり、ステートの結果をステートに提供された入力JSONに追加し、JSONを変更できます。この変更されたJSONをステートの出力として次のステートの処理に渡すことができます。 例えば、Circuit内のファンクションが`presentDays`と`totalWorkingDays`という2つのオブジェクトを含む入力JSONを処理するとします。ファンクションの処理出力は、出力内の`attendancePercentage`という変数に割り当てられる新しい値を生成します。 `attendancePercentage`で得られた値を元のJSONに含めたい場合、結果パスを`$.attendancePercentage`と指定できます。JSONは以下のように変更されます。 ```json [ 180, 200, 90 ] ``` ここで、`presentDays`の値は180、`totalWorkingDays`は200、`attendancePercentage`は90です。 この出力を次のステートの処理に渡すことができます。 > **Note:** すべてのステートがこれら3つのプロパティすべてをサポートしているわけではありません。次のセクションでは、各ステートで利用可能な具体的なプロパティと設定について説明します。 ### Circuitステート 前述の通り、Circuitステートはフローコントロールステートまたはファンクショナルステートにグループ化できます。各ステートの詳細と、利用可能な設定について学びましょう。 これはCircuitの_Builder View_です。このセクションでは、参考のために各ステートで利用可能な設定の画像を表示します。Circuitの作成とステートの追加手順については、[実装セクション](https://docs.catalyst.zoho.com/ja/serverless/help/circuits/implementation/)を参照してください。  #### Function ファンクションステートは、Basic I/O Functionを表すファンクショナル要素です。ファンクションステートはCircuitのコア要素であり、ロジックの大部分がここで処理されます。他のすべてのフローコントロールステートは、Circuit内のファンクション処理を操作・カスタマイズするのに役立ちます。 コンソールで[Circuitを設定](https://docs.catalyst.zoho.com/ja/serverless/help/circuits/implementation/#configure-a-circuit)する際に、Circuit内のすべてのステートの名前を入力し、タイプを選択し、次のステートを選択できます。設定ウィンドウの下にある**Delete State**をクリックして、特定のステートを削除できます。 ファンクションステートを選択すると、ドロップダウンリストからCatalystプロジェクトに設定されているBasic I/O Functionとリンクできます。  **エラー処理:** ファンクションステートは、ファンクション実行中に頻繁に発生するエラーを処理するためのエラー処理をサポートしています。**On TimeOut**、**On Authorization Failure**、または**On Execution Failure**エラー時に実行されるアクションを設定できます。 エラーのチェックボックスをクリックして有効にします。3つのエラーハンドラーはすべて、RetryとFallbackの2つのデフォルトアクションをサポートしています。**Retry**または**Fallback**をクリックして有効にします。  リトライオプションは、特定のエラーが発生した場合にファンクション実行を再試行します。リトライでは以下のプロパティを設定できます。 * **Delay:** 最初のリトライを試みる前の待機時間を定義します * **Attempt:** リトライ試行回数を定義します * **Step Delay:** 各試行間の待機時間を定義します フォールバックオプションは、すべてのリトライが失敗した場合に実行するアクションを設定するために使用されます。リトライが失敗した場合に、Circuit内の別のステートにフォールバックすることを選択できます。 ドロップダウンリストからフォールバック先のステートを選択します。_Result_にエラートレースのパスを[`JsonPath`構文](https://github.com/json-path/JsonPath)で入力します。リトライ試行が失敗した場合、Circuitはここで設定されたステートに設定され、エラートレースが生成されます。**Save**をクリックしてハンドラーを保存します。 3つのデフォルトエラー(On TimeOut、On Authorization Failure、On Execution Failure)のエラーハンドラーは、すべて同じアクションと設定を持ちます。 これらのデフォルトエラーハンドラーに加えて、カスタムエラーを定義し、そのエラーを受信した際に発生するアクションを処理できます。特定のエラーが発生した場合のカスタムエラーハンドラーを処理するようにファンクションをコーディングできます。 ステートの設定内の_Error Handling_の下にある**Add Custom Error**をクリックします。 ポップアップウィンドウのヘッダーにカスタムエラーの名前を入力します。例外タイプとして**Error Code**または**Error Message**を選択できます。いずれの場合も例外値を指定します。これはエラー発生時に表示されるエラーメッセージまたはコードです。  デフォルトのエラーハンドラーと同様に、カスタムエラーに対してもRetryとFallbackの両方を有効にして設定できます。設定後に**Save**をクリックします。 **削除アイコン**をクリックしてカスタムエラーを削除できます。  CatalystはBasic I/O Functionの200番台(200-299)のすべてのHTTPステータスコードを実行成功とみなします。ファンクションがレスポンスで200番台以外のステータスコード(例:502)を返した場合、Circuitsはファンクションのエラー処理設定でカスタムエラーハンドラーの一致を確認します。一致が見つかった場合、設定されたロジックが実行されます。エラーコードが処理されていない場合、Circuit実行は失敗とみなされます。 エラーメッセージを設定した場合、ファンクションのロジック内で必要に応じて処理できます。 **入力/出力:** [このセクション](https://docs.catalyst.zoho.com/ja/serverless/help/circuits/key-concepts/#components-of-a-circuit)で説明した通り、ファンクションステートの入力パス、出力パス、結果パスを設定できます。このセクションからファンクションに渡す個別のパラメータも設定できます。 入力パスを使用して、ファンクションに渡すJSON Circuit入力から特定のパラメータセットを選択できます。 例えば、Circuitに渡される入力JSONが以下の場合: ```json "personalDetails":{ "name":"Patricia Boyle", "age" : 26, "address":"13, Orchid Lane, NY" }, "company":"Zylker Corporation", "empDetails":{ "department":"Sales", "designation":"Sales Manager" } ``` Circuit内に設定されたファンクションにその[ペイロード](https://docs.catalyst.zoho.com/ja/serverless/help/circuits/implementation/#execution-history-of-a-circuit)として入力全体を渡す必要がある場合、Circuitの開始時にデフォルトの方法で[Circuitに渡す](https://docs.catalyst.zoho.com/ja/serverless/help/circuits/implementation/#configure-a-circuit)ことができます。この入力のキーバリューペアは、ファンクションのパラメータとして自動的に渡されます。 特定のパラメータセットのみをファンクションに渡す必要がある場合、入力パスにパラメータセットのキーを設定できます。例えば、`company`と`empDetails`パラメータのみを渡すには、[`JsonPath`構文](https://github.com/json-path/JsonPath)を使用してファンクションへの入力パスを$.company,empDetailsと指定します。  _Parameters_オプションを使用して、ファンクションに渡す個別のパラメータを選択することもできます。このオプションでは、JSON Circuit入力に存在しない追加の値をファンクションに渡すこともできます。**Add Parameters**をクリックしてパラメータと値を追加します。  例えば、nameとdesignationのみをパラメータとしてファンクションに渡すことを選択できます。`name`と`designation`をパラメータキーとして設定し、[`JsonPath`構文](https://github.com/json-path/JsonPath)でパラメータ値としてパスを入力します。**Remove**をクリックしてパラメータを削除できます。 [Catalyst Basic I/O Functionのレスポンス](https://docs.catalyst.zoho.com/ja/serverless/help/functions/basic-io/)は、キー`output`を使用してファンクションの出力を配信します。Circuit内でファンクションを設定する際、ファンクションの出力パスや結果パスに`output`キーを明示的に指定する必要はありません。 Catalystはデフォルトで処理し、出力値を自動的に配信します。ファンクションの出力を後続のステートに渡すようにCircuitが設定されている場合、Catalystは追加の設定なしに自動的に出力をペイロードとして渡します。 例えば、ファンクションの以下のJSON出力は、 ```json [ 180, 90 ] ``` Circuit実行中にペイロードとして、Circuit内の次のステートへのJSON入力として渡されます。 Circuitの[実行ログ](https://docs.catalyst.zoho.com/ja/serverless/help/circuits/implementation/#execution-history-of-a-circuit)は、ファンクションステートについて、実行されたファンクションと、その特定のファンクションのログを含む[Catalyst Logs](https://docs.catalyst.zoho.com/ja/devops/help/logs/introduction/)へのリンクを提供します。 #### Circuit Circuitステートは、ネストされたCircuitを表します。親Circuit内で別のCircuitを処理できます。Circuitステートがトリガーされると、Catalyst Circuitsで設定された通りに子Circuitが実行されます。 子Circuit内にさらにネストされたCircuitを持つこともできます。これにより、複雑なワークフローパターンに対して1つの複雑なCircuitを設定するのではなく、異なる目的のためのシンプルで独立したCircuitを設定し、相互にネストすることが可能です。 Circuitステート内の_Circuit Name_ドロップダウンボックスから、[参照名](https://docs.catalyst.zoho.com/ja/serverless/help/circuits/implementation/#create-a-circuit)を使用して子Circuitを選択できます。Circuitステートに対して親Circuit自体を選択することもできます。これにより、ロジックを設定可能なループで同じCircuitが実行されます。  Circuitステートも、ファンクションステートと同様にデフォルトエラーハンドラーとカスタムエラーハンドラーをサポートしています。ただし、ファンクションステートとは異なり、CircuitステートのデフォルトまたはカスタムエラーハンドラーにはRetryという1つのアクションのみがあります。リトライとカスタムエラーハンドラーの情報については、[Functionセクション](https://docs.catalyst.zoho.com/ja/serverless/help/circuits/key-concepts/#function)を参照してください。  すべてのリトライ操作が失敗した場合に実行するアクションのロジックを独自に記述できます。例えば、Circuitを再実行するか、終了して問題に関する通知を送信するようにコーディングできます。 [前のセクション](https://docs.catalyst.zoho.com/ja/serverless/help/circuits/key-concepts/#components-of-a-circuit)および[Functionステート](https://docs.catalyst.zoho.com/ja/serverless/help/circuits/key-concepts/#function)で説明した通り、入力パス、出力パス、結果パスを設定してCircuitステートを通過するJSONデータを操作できます。  Circuitの[実行ログ](https://docs.catalyst.zoho.com/ja/serverless/help/circuits/implementation/#execution-history-of-a-circuit)は、簡単に参照できるように、ネストされたCircuitのログへのリンクも提供します。 #### Pass Passステートは、Circuit内のあるステートから別のステートにデータを渡すフローコントロールステートです。デフォルトでは、前のステートからのJSON入力データをそのまま次のステートに渡します。  [前のセクション](https://docs.catalyst.zoho.com/ja/serverless/help/circuits/key-concepts/#components-of-a-circuit)で説明した通り、入力パス、出力パス、結果パスを設定して、Passステートを通過するJSONデータを操作できます。例えば、入力パスを設定して、JSONデータの一部のみを次のステートに渡すことができます。 Passステートには、入力パス、出力パス、結果パスに加えて、**result**という新しいプロパティもあります。これは他のステートでは利用できません。  resultプロパティにより、JSONに新しいオブジェクトを追加し、変更されたJSONを次のステートに渡すことができます。 例えば、`name`、`age`、`gender`オブジェクトを含む入力JSONに、Passステートの結果パスとして`$.location`という新しいパラメータを追加できます。resultボックスにlocationの値を入力できます。変更されたJSONには、`name`、`age`、`gender`、`location`オブジェクトが含まれます。 #### Branch Branchステートは、Circuitのワークフローに条件を設定し、それらの条件に基づいてタスクを実行することを可能にします。入力データが特定の基準セットを満たす場合、Circuitのフローに分岐を作成し、各分岐で異なるステートを実行できます。 例えば、Circuit内のBranchの前のステートの出力がJSONオブジェクト`status`の値を`complete`または`incomplete`として生成すると仮定します。`status`が`complete`の場合、Circuitが[Successステート](https://docs.catalyst.zoho.com/ja/serverless/help/circuits/key-concepts/#success)に遷移する必要があります。`status`が`incomplete`の場合、Circuitが[Failureステート](https://docs.catalyst.zoho.com/ja/serverless/help/circuits/key-concepts/#failure)に遷移する必要があります。 この結果を達成するには、条件を`$.status == 'complete'`として追加し、「Go To」をSuccessステートに設定します。同様に、別の条件を`$.status=='incomplete'`として追加し、Failureステートに設定します。  **Add Condition**をクリックして条件を追加し、条件を入力してその分岐の次のステートを選択できます。必要なタイプとしてそのステートを設定します。**Remove**をクリックして条件を削除できます。 Catalystでは、Branchステートの条件文に以下の演算子がサポートされています。
| 演算子 | 説明 |
|---|---|
| == | 左辺が右辺と等しい(1と'1'は等しくないことに注意) |
| != | 左辺が右辺と等しくない |
| < | 左辺が右辺より小さい |
| <= | 左辺が右辺以下 |
| > | 左辺が右辺より大きい |
| >= | 左辺が右辺以上 |
| =~ | 左辺が正規表現に一致する [?(@.name =~ /foo.*?/i)] |
| in | 左辺が右辺に存在する [?(@.size in ['S', 'M']) |
| nin | 左辺が右辺に存在しない |
| size | 左辺(配列または文字列)のサイズが右辺と一致する必要がある |
| empty | 左辺(配列または文字列)が空である必要がある |
| 関数 | 説明 | 出力 |
|---|---|---|
| min() | 数値配列の最小値を返します | Double |
| max() | 数値配列の最大値を返します | Double |
| avg() | 数値配列の平均値を返します | Double |
| stddev() | 数値配列の標準偏差値を返します | Double |
| length() | 配列の長さを返します | Integer |
| sum() | 数値配列の合計値を返します | Double |
https://project_domain_name.environment_type.zohocatalyst.com/baas/v1/project/_project_ID_/circuit/circuit_ID/execute
このURLはHTTP `POST`メソッドで呼び出す必要があります。 `project\_domain\_name`はプロジェクトの[ドメイン名](https://docs.catalyst.zoho.com/ja/getting-started/set-up-a-catalyst-project/environment-settings/)です。`environment\_type`は、[開発環境](https://docs.catalyst.zoho.com/ja/deployment-and-billing/environments/introduction/)で作業している場合は`development`です。それ以外の場合、`environment\_type`はURLに含まれません。