{
  "format": "agent-article-v0",
  "article_id": "EA-233",
  "canonical_url": "/tools/ea-233-edge-workers-ai",
  "page_type": "reference",
  "claim_ids": [],
  "evidence_ids": [
    "EVD-EA-233-URL-D3DA4AE0C28E",
    "EVD-EA-233-URL-B59DDFD96927",
    "EVD-EA-233-URL-965457FC7BEC",
    "EVD-EA-233-URL-F7177CB67258",
    "EVD-EA-233-URL-FE17A048B32D",
    "EA-233-CURRENT-APPROVAL",
    "EA-233-CURRENT-BODY-READBACK"
  ],
  "unknown_ids": [
    "EA-233-UNKNOWN-01"
  ],
  "operational_object_ids": [],
  "provider": [],
  "models": [],
  "plans": [],
  "surfaces": [],
  "regions": [],
  "current_status": "CURRENT",
  "observation_status": "SPEC_ONLY",
  "freshness": "CURRENT",
  "last_verified": "2026-10-20",
  "supersedes": [],
  "superseded_by": [],
  "provenance": [
    "MANUAL-EA233-DRAIN-20261020-C1",
    "SRC-EA-233-URL-D3DA4AE0C28E",
    "SRC-EA-233-URL-B59DDFD96927",
    "SRC-EA-233-URL-965457FC7BEC",
    "SRC-EA-233-URL-F7177CB67258",
    "SRC-EA-233-URL-FE17A048B32D",
    "BODY-SHA256:15876d3562d7db07c60b22789511c8462e020b39686aac0f80d9cd2ae2975b52"
  ],
  "article_sources": [
    {
      "id": "EVD-EA-233-URL-D3DA4AE0C28E",
      "evidence_class": "RESEARCH",
      "title": "[S1] Cloudflare Workers Context / waitUntil.",
      "href": "https://developers.cloudflare.com/workers/runtime-apis/context/",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-233-URL-D3DA4AE0C28E"
      ],
      "supporting_locators": [
        "SOURCES_AND_PROVENANCE",
        "S1",
        "- [S1] Cloudflare Workers Context / waitUntil. https://developers.cloudflare.com/workers/runtime-apis/context/"
      ],
      "scope": "SOURCES_AND_PROVENANCE",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EVD-EA-233-URL-B59DDFD96927",
      "evidence_class": "RESEARCH",
      "title": "[S2] Cloudflare Queues Delivery guarantees.",
      "href": "https://developers.cloudflare.com/queues/reference/delivery-guarantees/",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-233-URL-B59DDFD96927"
      ],
      "supporting_locators": [
        "SOURCES_AND_PROVENANCE",
        "S2",
        "- [S2] Cloudflare Queues Delivery guarantees. https://developers.cloudflare.com/queues/reference/delivery-guarantees/"
      ],
      "scope": "SOURCES_AND_PROVENANCE",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EVD-EA-233-URL-965457FC7BEC",
      "evidence_class": "RESEARCH",
      "title": "[S3] Workers KV, How KV works / Consistency.",
      "href": "https://developers.cloudflare.com/kv/concepts/how-kv-works/",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-233-URL-965457FC7BEC"
      ],
      "supporting_locators": [
        "SOURCES_AND_PROVENANCE",
        "S3",
        "- [S3] Workers KV, How KV works / Consistency. https://developers.cloudflare.com/kv/concepts/how-kv-works/"
      ],
      "scope": "SOURCES_AND_PROVENANCE",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EVD-EA-233-URL-F7177CB67258",
      "evidence_class": "RESEARCH",
      "title": "[S4] Workers Limits.",
      "href": "https://developers.cloudflare.com/workers/platform/limits/",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-233-URL-F7177CB67258"
      ],
      "supporting_locators": [
        "SOURCES_AND_PROVENANCE",
        "S4",
        "- [S4] Workers Limits. https://developers.cloudflare.com/workers/platform/limits/"
      ],
      "scope": "SOURCES_AND_PROVENANCE",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EVD-EA-233-URL-FE17A048B32D",
      "evidence_class": "RESEARCH",
      "title": "[S5] Cloudflare service outage June 12, 2025.",
      "href": "https://blog.cloudflare.com/cloudflare-service-outage-june-12-2025/",
      "supports": [],
      "limit": "元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。",
      "origin_class": "SOURCE_PACKET_REFERENCE",
      "source_or_experiment_ids": [
        "SRC-EA-233-URL-FE17A048B32D"
      ],
      "supporting_locators": [
        "SOURCES_AND_PROVENANCE",
        "S5",
        "- [S5] Cloudflare service outage June 12, 2025. https://blog.cloudflare.com/cloudflare-service-outage-june-12-2025/"
      ],
      "scope": "SOURCES_AND_PROVENANCE",
      "provenance_status": "SOURCE_PACKET_REFERENCE_PROJECTED"
    },
    {
      "id": "EA-233-CURRENT-APPROVAL",
      "evidence_class": "RESEARCH",
      "title": "現行本文の監査・revision対応",
      "supports": [
        "現行台帳のAUDIT_PASSと候補・revision・本文ハッシュの対応を確認しています。"
      ],
      "limit": "監査状態と来歴の記録です。外部根拠の最新性や本文の全主張を追加保証しません。",
      "origin_class": "AUDITED_CANONICAL_RESEARCH_PACKET",
      "source_or_experiment_ids": [
        "MANUAL-EA233-DRAIN-20261020-C1"
      ],
      "supporting_locators": [
        "1KqhJtiSb2S84rWmeYVwKcT_76dBwZ_B0ZZuAWQqH0rQ/EA_REVISION_LEDGER#ea_id=EA-233&revision_id=EA-233-RESEARCH-20261020-R1&candidate_id=MANUAL-EA233-DRAIN-20261020-C1",
        "EA-233-RESEARCH-20261020-R1"
      ],
      "provenance_status": "CURRENT_CANONICAL_APPROVAL_READBACK"
    },
    {
      "id": "EA-233-CURRENT-BODY-READBACK",
      "evidence_class": "IMPL",
      "title": "現行本文の収録照合",
      "supports": [
        "公開生成入力の本文SHA-256が、監査済み候補に結び付いたハッシュと一致しています。"
      ],
      "limit": "本文の同一性の検査です。外部システムの挙動や全主張の真偽を実証したものではありません。",
      "checked_at": "2026-10-21",
      "origin_class": "IMPLEMENTATION_READBACK",
      "source_or_experiment_ids": [
        "BODY-SHA256:15876d3562d7db07c60b22789511c8462e020b39686aac0f80d9cd2ae2975b52"
      ],
      "supporting_locators": [
        "content/staging/EA-233.md",
        "15876d3562d7db07c60b22789511c8462e020b39686aac0f80d9cd2ae2975b52",
        "EA-233-RESEARCH-20261020-R1"
      ],
      "provenance_status": "CURRENT_APPROVED_BODY_HASH_MATCH"
    }
  ],
  "research_sections": [
    {
      "heading": "PUBLIC_CLAIM",
      "text": "Edge Workerは、AIへの依頼を受け付け、認証、入力検査、接続先の選択、webhook、応答の転送を行う薄い接着層として利用できます。利用者に近い場所で動いても、モデルや原本データが遠ければ、全体の応答が速くなるとは限りません。長時間処理や業務状態の保存を一回のHTTP処理へ押し込まず、実行時間、永続化、認可、依存障害の境界を明示します。"
    },
    {
      "heading": "ESTABLISHED",
      "text": "Cloudflare Workersの`ctx.waitUntil()`は、応答後にも処理を続けるためにPromiseを登録するAPIです。HTTP起動のWorkerでは、応答送信またはクライアント切断後、最大30秒の延長であり、同一依頼の複数呼出しがこの猶予を共有します。未完のPromiseは打ち切られます[S1: waitUntil]。30秒を全HTTP処理の総実行時間と混同せず、永続的なジョブ管理としても扱いません。\n\nCloudflare Queuesは少なくとも一回の配送を保証する設計で、重複を考慮する必要があります[S2]。またWorkers KVは結果整合性を持ち、書込み直後の読取りや別拠点への即時反映を前提にできません。文書は、原子的操作や単一トランザクションが必要な用途にKVは向かないと説明します[S3: Consistency]。\n\nこれらはCloudflareの具体例です。「Edge」「serverless」という名称だけで、別のFunctions製品へ同じ時間制限、保存方式、配置、SDK挙動を一般化しません。採用先ではruntime、plan、compatibility date、実行種別を特定します。"
    },
    {
      "heading": "RESPONSIBILITY_SPLIT",
      "text": "以下は辞典の設計提案です。外部からの依頼を受ける入口と、時間を要する仕事の実行主体を分けます。\n\n| 接着層に置く仕事 | 条件・注意 |\n| --- | --- |\n| 認証と認可の入口 | token検証と対象資源の権限確認を分ける |\n| 入力と添付の検査 | サイズ・型・参照先を制限し、機密本文の複製を抑える |\n| provider routing | 許可された送信先・地域・モデルの範囲で選ぶ |\n| streaming転送 | 切断・timeout・部分応答を完了と混同しない |\n| webhook受付 | 署名、重複、再送、対象jobの一致を検証する |\n| 永続キューへの引渡し | 引渡し成立を確認してから受付完了を返す |\n\n大容量PDFの全展開、重い解析、長いtool loop等は、実行制約に適したworker・job・workflow等へ委ねます。Workerで実行できる処理を一律に禁止するという意味ではなく、CPU、メモリ、wall time、同時接続、依存先の制約を計測して境界を決めます。製品の上限値は変更され得るため、調査時のlimitsページと実構成を記録します[S4]。"
    },
    {
      "heading": "SECURITY_AND_ROUTING",
      "text": "providerのAPI keyはサーバー側の管理されたsecretとして扱い、ブラウザやログへ返しません。tenantや送信先をリクエスト本文の自己申告だけで決めず、認証済み主体と許可表に照合します。fallbackで別providerへ送る場合も、元の契約、データ所在、モデル能力、tool権限を満たす必要があります。応答が速いという理由だけで送信範囲を拡大しません。\n\nwebhookの署名検証には、提供元が指定する元のbody表現を保持します。JSONをparse・再整形した後に署名照合すると、正当なイベントを拒否したり、検証対象を取り違えたりする恐れがあります。検証済みでも同じイベントは再送され得るため、署名の正当性と業務operationの重複制御を分けます。処理済みの記録を全tenant共通の短いkeyだけで管理しないようにします。"
    },
    {
      "heading": "VERIFICATION_AND_OPEN_UNKNOWN",
      "text": "受入検査には、切断直後、キュー送信直後の応答消失、重複webhook、認証失効、KVの古い値、provider timeout、部分stream、依存先停止を含めます。利用者から見た完了時間と、地域別の接続先・実行先・保存先を測ります。受付率だけで成功率を説明しません。\n\n本記事では実Workerのdeploy、負荷試験、実secretや本番データの操作は実施していません。実構成の実行上限、CPU・メモリ余力、依存先遅延、認証設定、保存とキューの整合、fallbackの契約適合はUNKNOWNです。AI運用の接着層をどの製品へ配置すべきかという比較ランキングは示しません。"
    },
    {
      "heading": "SAFE_WORDING",
      "text": "「対象runtimeで入口・永続引渡し・依存障害・結果readbackを検証した」と記します。「edgeなので常に低遅延」「waitUntilでジョブは完走する」「受付200なので業務完了」とは記しません。"
    },
    {
      "heading": "SOURCES_AND_PROVENANCE",
      "text": "- [S1] Cloudflare Workers Context / waitUntil. https://developers.cloudflare.com/workers/runtime-apis/context/ （2026-10-20確認）\n- [S2] Cloudflare Queues Delivery guarantees. https://developers.cloudflare.com/queues/reference/delivery-guarantees/ （同日確認）\n- [S3] Workers KV, How KV works / Consistency. https://developers.cloudflare.com/kv/concepts/how-kv-works/ （同日確認）\n- [S4] Workers Limits. https://developers.cloudflare.com/workers/platform/limits/ （同日確認。plan・実行種別を伴わない一般化をしない）\n- [S5] Cloudflare service outage June 12, 2025. https://blog.cloudflare.com/cloudflare-service-outage-june-12-2025/ （当事者の障害報告、同日確認）\n- 旧来歴: R1R-004-EA0233、退避Doc 1Vd0BP7G2UyPDRQs_-8dPvTgQ78Tk6kcVGuMJjqNdr84 tab t.0:7030–7507は所在未特定の記録。旧candidate 1IQuUdXZuwLBaVuvAjMoYKpSpp-SPt8XSは2026-10-20取得でmanifestなし・空payload。EA-1010へ付け替えられた別主題のcache成果は、本記事の代替にしていません。"
    }
  ],
  "human_url": "/tools/ea-233-edge-workers-ai",
  "markdown_url": "/agent/article.md?path=%2Ftools%2Fea-233-edge-workers-ai",
  "json_url": "/agent/article.json?path=%2Ftools%2Fea-233-edge-workers-ai"
}