メインコンテンツへスキップ
実行モデルを理解することで、信頼性の高いワークフローを設計し、問題を効果的にデバッグできます。

ビルドタイムとランタイム

ワークフローには2つの異なるフェーズがあります:

ビルドタイム

エディタでワークフローを設計する段階。ステップの定義、ツールの設定、依存関係の構成を行います。

ランタイム

ランナーがマニフェストを解釈し実行する段階。ステップが依存関係順に実行され、データが流れます。

実行タイムライン

ワークフローが実行されると、以下のタイムラインに従います:
1

トリガー

API呼び出し、スケジュール、MCP、または手動実行で開始
2

検証

入力パラメータを検証、マニフェストを読み込み
3

実行

依存グラフに従ってステップを実行
4

処理

エラーをキャッチ、設定されていればリトライを試行
5

返却

最終結果を呼び出し元に返す

ステップ実行パターン

直列

依存関係のあるステップが順番に実行

並列

独立したステップが同時に実行

条件分岐

when条件がtrueの場合のみ実行

ループ

forEachで各アイテムに対して繰り返し実行

直列実行

needsを持つステップは依存関係を待ちます:
steps:
  - id: step_a
    tool: TOOL_A

  - id: step_b
    tool: TOOL_B
    needs: [step_a]  # step_aを待つ

  - id: step_c
    tool: TOOL_C
    needs: [step_b]  # step_bを待つ
実行順序: step_astep_bstep_c

並列実行

共有の依存関係がないステップは並列に実行されます:
steps:
  - id: input
    tool: INPUT_TEXT

  - id: branch_a
    tool: TOOL_A
    needs: [input]

  - id: branch_b
    tool: TOOL_B
    needs: [input]  # branch_aと並列に実行

  - id: merge
    tool: TOOL_C
    needs: [branch_a, branch_b]  # 両方を待つ
実行順序: input → (branch_abranch_b) → merge

条件分岐実行

条件ロジックにはwhenを使用:
steps:
  - id: classify
    tool: GEMINI_CHAT
    input:
      - name: prompt
        value: "「緊急」または「通常」に分類: {{inputs.message}}"

  - id: urgent_handler
    tool: SLACK_POST_MESSAGE
    needs: [classify]
    when: "'{{steps.classify.result.content}}' == '緊急'"
    input:
      - name: message
        value: "緊急: {{inputs.message}}"

  - id: normal_handler
    tool: GMAIL_SEND
    needs: [classify]
    when: "'{{steps.classify.result.content}}' == '通常'"
    input:
      - name: body
        value: "{{inputs.message}}"
分類結果に基づいて1つのハンドラーのみが実行されます。

ループ実行(forEach)

forEachでコレクションを処理:
steps:
  - id: get_items
    tool: INPUT_JSON
    input:
      - name: value
        value: '[{"name": "Alice"}, {"name": "Bob"}, {"name": "Carol"}]'

  - id: greet_each
    tool: GEMINI_CHAT
    forEach: "{{steps.get_items.result}}"
    needs: [get_items]
    input:
      - name: prompt
        value: "{{item.name}}への挨拶を書いて"
ステップはコレクション内の各アイテムに対して1回実行されます。

障害モード

障害タイプ原因処理
検証エラー無効な入力パラメータまたはマニフェスト実行が即座に停止
ツールエラー外部サービスの障害またはタイムアウトステップが失敗としてマーク
タイムアウトエラーステップが設定された時間制限を超過ステップが終了
依存関係エラー必要なステップが失敗依存ステップがスキップ
条件エラー無効なwhen警告付きでステップがスキップ

ステップ状態

各ステップは以下の状態を遷移します:
状態説明
Pending依存関係の完了を待機中
Running現在実行中
Success正常に完了
Failedエラーで実行失敗
Skipped条件が満たされないか依存関係が失敗

変数解決

変数は実行時に解決されます:
パターン解決先
{{inputs.name}}入力パラメータの値
{{steps.step_id.result}}完了したステップの完全な結果
{{steps.step_id.result.field}}ステップ結果の特定フィールド
{{secrets.KEY_NAME}}ワークスペースシークレットからのクレデンシャル
{{item}}forEachループの現在のアイテム
{{item.field}}現在のループアイテムのフィールド

エラー処理のベストプラクティス

  1. 早期検証:INPUT_*ツールを使用して開始時にデータを検証
  2. 出力チェック:重要な操作の後に検証ステップを追加
  3. 条件の使用when句で異なる結果を処理
  4. 障害への設計:外部サービスが失敗した場合を考慮
  5. 履歴のレビュー:実行履歴を使用して障害を分析

デバッグのヒント

問題解決策
ステップが実行されないneeds依存関係が満たされているか確認
間違ったデータ変数参照構文を確認
条件が動作しない実際の値でwhen式をテスト
ループが反復しないforEachターゲットが配列であることを確認
タイムアウトステップのタイムアウトを増やすかロジックを最適化

次のステップ