]> git.ipfire.org Git - thirdparty/fastapi/fastapi.git/commitdiff
🌐 Update translations for ja (add-missing) (#15167)
authorSebastián Ramírez <tiangolo@gmail.com>
Thu, 19 Mar 2026 18:55:22 +0000 (19:55 +0100)
committerGitHub <noreply@github.com>
Thu, 19 Mar 2026 18:55:22 +0000 (18:55 +0000)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
docs/ja/docs/advanced/json-base64-bytes.md [new file with mode: 0644]
docs/ja/docs/advanced/stream-data.md [new file with mode: 0644]
docs/ja/docs/advanced/strict-content-type.md [new file with mode: 0644]
docs/ja/docs/editor-support.md [new file with mode: 0644]
docs/ja/docs/tutorial/server-sent-events.md [new file with mode: 0644]
docs/ja/docs/tutorial/stream-json-lines.md [new file with mode: 0644]

diff --git a/docs/ja/docs/advanced/json-base64-bytes.md b/docs/ja/docs/advanced/json-base64-bytes.md
new file mode 100644 (file)
index 0000000..c3c361a
--- /dev/null
@@ -0,0 +1,63 @@
+# Base64 ã«ã—たバむトを含む JSON { #json-with-bytes-as-base64 }
+
+アプリで JSON ãƒ‡ãƒŒã‚¿ã®å—信・送信が必芁だが、その䞭にバむナリデヌタを含める必芁がある堎合は、base64 ã«ã‚šãƒ³ã‚³ãƒŒãƒ‰ã§ããŸã™ã€‚
+
+## Base64 ãšãƒ•ァむル { #base64-vs-files }
+
+バむナリデヌタのアップロヌドにはたず、JSON ã«ã‚šãƒ³ã‚³ãƒŒãƒ‰ã™ã‚‹ä»£ã‚ã‚Šã« [Request Files](../tutorial/request-files.md) ã‚’、バむナリデヌタの送信には [カスタムレスポンス - FileResponse](./custom-response.md#fileresponse--fileresponse-) ã‚’䜿えるか怜蚎しおください。
+
+JSON ã¯ UTF-8 ã§ã‚šãƒ³ã‚³ãƒŒãƒ‰ã•れた文字列のみを含められるため、生のバむト列は含められたせん。
+
+Base64 ã¯ãƒã‚€ãƒŠãƒªãƒ‡ãƒŒã‚¿ã‚’文字列に゚ンコヌドできたすが、そのために元のバむナリより倚くの文字を䜿甚する必芁があり、通垞は通垞のファむルより非効率です。
+
+JSON ã«ãƒã‚€ãƒŠãƒªãƒ‡ãƒŒã‚¿ã‚’どうしおも含める必芁があり、ファむルを䜿えない堎合にのみ base64 ã‚’䜿甚しおください。
+
+## Pydantic `bytes` { #pydantic-bytes }
+
+Pydantic ãƒ¢ãƒ‡ãƒ«ã§ `bytes` åž‹ã®ãƒ•ィヌルドを宣蚀し、モデル蚭定で `val_json_bytes` ã‚’䜿うず、入力 JSON ãƒ‡ãƒŒã‚¿ã®æ€œèšŒæ™‚に base64 ã‚’甚いるよう指瀺できたす。この怜蚌の䞀環ずしお、base64 æ–‡å­—列はバむト列ぞデコヌドされたす。
+
+{* ../../docs_src/json_base64_bytes/tutorial001_py310.py ln[1:9,29:35] hl[9] *}
+
+「/docs」を確認するず、`data` ãƒ•ィヌルドが base64 ã§ã‚šãƒ³ã‚³ãƒŒãƒ‰ã•れたバむト列を期埅しおいるこずが衚瀺されたす。
+
+<div class="screenshot">
+<img src="/img/tutorial/json-base64-bytes/image01.png">
+</div>
+
+次のようなリク゚ストを送れたす:
+
+```json
+{
+    "description": "Some data",
+    "data": "aGVsbG8="
+}
+```
+
+/// tip | è±†çŸ¥è­˜
+
+`aGVsbG8=` ã¯ `hello` ã® base64 ã‚šãƒ³ã‚³ãƒŒãƒ‰ã§ã™ã€‚
+
+///
+
+その埌、Pydantic ã¯ base64 æ–‡å­—列をデコヌドし、モデルの `data` ãƒ•ィヌルドに元のバむト列を枡したす。
+
+次のようなレスポンスを受け取りたす:
+
+```json
+{
+  "description": "Some data",
+  "content": "hello"
+}
+```
+
+## å‡ºåŠ›ãƒ‡ãƒŒã‚¿å‘ã‘ã® Pydantic `bytes` { #pydantic-bytes-for-output-data }
+
+出力デヌタ甚にモデル蚭定で `ser_json_bytes` ãšãšã‚‚に `bytes` ãƒ•ィヌルドを䜿甚するこずもでき、Pydantic ã¯ JSON ãƒ¬ã‚¹ãƒãƒ³ã‚¹ã‚’生成するずきにバむト列を base64 ã§ã‚·ãƒªã‚¢ãƒ©ã‚€ã‚ºã—たす。
+
+{* ../../docs_src/json_base64_bytes/tutorial001_py310.py ln[1:2,12:16,29,38:41] hl[16] *}
+
+## å…¥åŠ›ãƒ»å‡ºåŠ›ãƒ‡ãƒŒã‚¿å‘ã‘ã® Pydantic `bytes` { #pydantic-bytes-for-input-and-output-data }
+
+もちろん、同じモデルを base64 ã‚’䜿うように蚭定しおおけば、JSON ãƒ‡ãƒŒã‚¿ã®å—信時は `val_json_bytes` ã§å…¥åŠ›ã‚’ã€Œæ€œèšŒã€ã—ã€é€ä¿¡æ™‚ã¯ `ser_json_bytes` ã§å‡ºåŠ›ã‚’ã€Œã‚·ãƒªã‚¢ãƒ©ã‚€ã‚ºã€ã™ã‚‹ã€ãšã„ã£ãŸå…·åˆã«ã€å…¥åŠ›ãšå‡ºåŠ›ã®äž¡æ–¹ã‚’æ‰±ãˆãŸã™ã€‚
+
+{* ../../docs_src/json_base64_bytes/tutorial001_py310.py ln[1:2,19:26,29,44:46] hl[23:26] *}
diff --git a/docs/ja/docs/advanced/stream-data.md b/docs/ja/docs/advanced/stream-data.md
new file mode 100644 (file)
index 0000000..52bbfd3
--- /dev/null
@@ -0,0 +1,117 @@
+# ãƒ‡ãƒŒã‚¿ã®ã‚¹ãƒˆãƒªãƒŒãƒŸãƒ³ã‚° { #stream-data }
+
+JSON ãšã—お構造化できるデヌタをストリヌムしたい堎合は、[JSON Lines ã‚’ストリヌムする](../tutorial/stream-json-lines.md) ã‚’参照しおください。
+
+しかし、玔粋なバむナリデヌタや文字列をストリヌムしたい堎合は、次のようにできたす。
+
+/// info | æƒ…å ±
+
+FastAPI 0.134.0 ã§è¿œåŠ ã•ã‚ŒãŸã—ãŸã€‚
+
+///
+
+## ãƒŠãƒŒã‚¹ã‚±ãƒŒã‚¹ { #use-cases }
+
+䟋えば、AI LLM ã‚µãƒŒãƒ“スの出力をそのたた、玔粋な文字列ずしおストリヌムしたい堎合に䜿えたす。
+
+メモリに䞀床に党お読み蟌むこずなく、読み蟌みながらチャンクごずに送るこずで、巚倧なバむナリファむルをストリヌムするこずにも䜿えたす。
+
+同様に、動画や音声をストリヌムするこずもできたす。凊理しながら生成し、そのたた送信するこずも可胜です。
+
+## `yield` ã‚’䜿った `StreamingResponse` { #a-streamingresponse-with-yield }
+
+path operation é–¢æ•°ã§ `response_class=StreamingResponse` ã‚’宣蚀するず、`yield` ã‚’䜿っおデヌタをチャンクごずに順次送信できたす。
+
+{* ../../docs_src/stream_data/tutorial001_py310.py ln[1:23] hl[20,23] *}
+
+FastAPI ã¯å„デヌタチャンクをそのたた `StreamingResponse` ã«æž¡ã—、JSON ãªã©ã«å€‰æ›ã—ようずはしたせん。
+
+### éž async ãª path operation é–¢æ•° { #non-async-path-operation-functions }
+
+`async` ãªã—の通垞の `def` é–¢æ•°ã§ã‚‚同様に `yield` ã‚’䜿えたす。
+
+{* ../../docs_src/stream_data/tutorial001_py310.py ln[26:29] hl[27] *}
+
+### ã‚¢ãƒŽãƒ†ãƒŒã‚·ãƒ§ãƒ³ãªã— { #no-annotation }
+
+バむナリデヌタをストリヌムする堎合、戻り倀の型アノテヌションを宣蚀する必芁は実際にはありたせん。
+
+この堎合、FastAPI ã¯ãƒ‡ãƒŒã‚¿ã‚’ Pydantic ã§ JSON åŒ–したり、䜕らかの方法でシリアラむズしようずしないため、型アノテヌションぱディタやツヌル向けの補助にすぎず、FastAPI è‡ªäœ“では䜿甚されたせん。
+
+{* ../../docs_src/stream_data/tutorial001_py310.py ln[32:35] hl[33] *}
+
+぀たり、`StreamingResponse` ã§ã¯åž‹ã‚¢ãƒŽãƒ†ãƒŒã‚·ãƒ§ãƒ³ã«äŸå­˜ã›ãšã€é€ä¿¡ã—たい圢匏に合わせおバむト列を生成・゚ンコヌドする「自由」ず「責任」があなたにありたす。 ðŸ€“
+
+### ãƒã‚€ãƒˆåˆ—をストリヌムする { #stream-bytes }
+
+䞻なナヌスケヌスの䞀぀は、文字列ではなく `bytes` ã‚’ストリヌムするこずです。もちろん可胜です。
+
+{* ../../docs_src/stream_data/tutorial001_py310.py ln[44:47] hl[47] *}
+
+## ã‚«ã‚¹ã‚¿ãƒ  `PNGStreamingResponse` { #a-custom-pngstreamingresponse }
+
+䞊蚘の䟋ではバむト列をストリヌムしたしたが、レスポンスに `Content-Type` ãƒ˜ãƒƒãƒ€ãŒãªã„ため、クラむアントは受け取るデヌタの皮類を認識できたせんでした。
+
+`StreamingResponse` ã‚’継承したカスタムクラスを䜜成し、ストリヌムするデヌタに応じお `Content-Type` ãƒ˜ãƒƒãƒ€ã‚’蚭定できたす。
+
+䟋えば、`media_type` å±žæ€§ã§ `Content-Type` ã‚’ `image/png` ã«èš­å®šã™ã‚‹ `PNGStreamingResponse` ã‚’䜜成できたす:
+
+{* ../../docs_src/stream_data/tutorial002_py310.py ln[6,19:20] hl[20] *}
+
+その埌、path operation é–¢æ•°ã§ `response_class=PNGStreamingResponse` ãšã—おこの新しいクラスを䜿甚できたす:
+
+{* ../../docs_src/stream_data/tutorial002_py310.py ln[23:27] hl[23] *}
+
+### ãƒ•ァむルを暡擬する { #simulate-a-file }
+
+この䟋では `io.BytesIO` ã§ãƒ•ァむルを暡擬しおいたす。これはメモリ䞊だけに存圚するファむルラむクオブゞェクトですが、通垞のファむルず同じむンタヌフェヌスを提䟛したす。
+
+䟋えば、ファむルず同様にむテレヌトしお内容を読み出せたす。
+
+{* ../../docs_src/stream_data/tutorial002_py310.py ln[1:27] hl[3,12:13,25] *}
+
+/// note | æŠ€è¡“詳çް
+
+他の2぀の倉数 `image_base64` ãš `binary_image` ã¯ã€ç”»åƒã‚’ Base64 ã§ã‚šãƒ³ã‚³ãƒŒãƒ‰ã—、それを `bytes` ã«å€‰æ›ã—おから `io.BytesIO` ã«æž¡ã—たものです。
+
+この䟋では1぀のファむル内に完結させ、コピヌしおそのたた実行できるようにするためだけのものです。 ðŸ¥š
+
+///
+
+`with` ãƒ–ロックを䜿うこずで、ゞェネレヌタ関数`yield` ã‚’持぀関数が終了した埌、぀たりレスポンス送信が完了した埌に、そのファむルラむクオブゞェクトが確実にクロヌズされたす。
+
+この䟋では `io.BytesIO` ã«ã‚ˆã‚‹ãƒ¡ãƒ¢ãƒªå†…の疑䌌ファむルなので重芁床は高くありたせんが、実ファむルの堎合は凊理埌に確実にクロヌズするこずが重芁です。
+
+### ãƒ•ァむルず非同期 { #files-and-async }
+
+倚くの堎合、ファむルラむクオブゞェクトはデフォルトでは async/await ãšäº’換性がありたせん。
+
+䟋えば、`await file.read()` ã‚„ `async for chunk in file` ã®ã‚ˆã†ãªæ“äœœã¯æäŸ›ã•れおいたせん。
+
+たた、倚くの堎合、ディスクやネットワヌクから読み出すため、読み取りはブロッキングむベントルヌプをブロックし埗る凊理になりたす。
+
+/// info | æƒ…å ±
+
+䞊蚘の䟋は䟋倖で、`io.BytesIO` ã¯æ—¢ã«ãƒ¡ãƒ¢ãƒªäžŠã«ã‚るため、読み取りが䜕かをブロックするこずはありたせん。
+
+しかし倚くの堎合、ファむルやファむルラむクオブゞェクトの読み取りはブロッキングになりたす。
+
+///
+
+むベントルヌプのブロッキングを避けるには、path operation é–¢æ•°ã‚’ `async def` ã§ã¯ãªãé€šåžžã® `def` ã§å®£èš€ã—おください。そうするず FastAPI ã¯ãã®é–¢æ•°ã‚’スレッドプヌルワヌカヌ䞊で実行し、メむンルヌプのブロッキングを避けたす。
+
+{* ../../docs_src/stream_data/tutorial002_py310.py ln[30:34] hl[31] *}
+
+/// tip | è±†çŸ¥è­˜
+
+async é–¢æ•°å†…からブロッキングなコヌドを呌び出す必芁がある堎合、あるいはブロッキングな関数内から async é–¢æ•°ã‚’呌び出す必芁がある堎合は、FastAPI ã®å…„匟ラむブラリである [Asyncer](https://asyncer.tiangolo.com) ã‚’利甚できたす。
+
+///
+
+### `yield from` { #yield-from }
+
+ファむルラむクオブゞェクトのようなものをむテレヌトしお各芁玠に察しお `yield` ã—おいる堎合、`for` ãƒ«ãƒŒãƒ—を省略しお、`yield from` ã§å„芁玠をそのたた送るこずもできたす。
+
+これは FastAPI å›ºæœ‰ã§ã¯ãªãå˜ãªã‚‹ Python ã®æ©Ÿèƒœã§ã™ãŒã€çŸ¥ã£ãŠãŠããšäŸ¿åˆ©ãªå°ãƒ¯ã‚¶ã§ã™ã€‚ ðŸ˜Ž
+
+{* ../../docs_src/stream_data/tutorial002_py310.py ln[37:40] hl[40] *}
diff --git a/docs/ja/docs/advanced/strict-content-type.md b/docs/ja/docs/advanced/strict-content-type.md
new file mode 100644 (file)
index 0000000..994cb86
--- /dev/null
@@ -0,0 +1,88 @@
+# Content-Type ã®åŽ³æ Œãƒã‚§ãƒƒã‚¯ { #strict-content-type-checking }
+
+既定では、FastAPI ã¯ JSON ãƒªã‚¯ã‚šã‚¹ãƒˆãƒœãƒ‡ã‚£ã«å¯Ÿã—お厳栌な `Content-Type` ãƒ˜ãƒƒãƒ€ãƒŒã®ãƒã‚§ãƒƒã‚¯ã‚’行いたす。぀たり、JSON ã®ãƒªã‚¯ã‚šã‚¹ãƒˆã‚’ JSON ãšã—お解析するには、有効な `Content-Type` ãƒ˜ãƒƒãƒ€ãƒŒïŒˆäŸ‹: `application/json`を必ず含める必芁がありたす。
+
+## CSRF ã®ãƒªã‚¹ã‚¯ { #csrf-risk }
+
+この既定の挙動は、ある特定の状況における Cross-Site Request ForgeryCSRF攻撃の䞀皮に察する保護を提䟛したす。
+
+これらの攻撃は、次の条件を満たすずきにブラりザが CORS ã®ãƒ—リフラむトチェックを行わずにスクリプトからリク゚ストを送信できる事実を悪甚したす。
+
+- `Content-Type` ãƒ˜ãƒƒãƒ€ãƒŒãŒãªã„䟋: `Blob` ã‚’ボディにしお `fetch()` ã‚’䜿う
+- ã‹ã€ã€ã„かなる認蚌情報も送信しない
+
+この皮の攻撃は䞻に次のような堎合に関係したす。
+
+- ã‚¢ãƒ—リケヌションがロヌカル䟋: `localhost`たたは瀟内ネットワヌクで動䜜しおいる
+- ã‹ã€ã€ã‚¢ãƒ—リに認蚌がなく、同䞀ネットワヌクからのリク゚ストは信頌できるず想定しおいる
+
+## æ”»æ’ƒäŸ‹ { #example-attack }
+
+ロヌカルで AI ã‚šãƒŒã‚žã‚§ãƒ³ãƒˆã‚’実行できる仕組みを構築したずしたす。
+
+それは次の API ã‚’提䟛したす。
+
+```
+http://localhost:8000/v1/agents/multivac
+```
+
+フロント゚ンドもありたす。
+
+```
+http://localhost:8000
+```
+
+/// tip | è±†çŸ¥è­˜
+
+䞡方ずも同じホストであるこずに泚意しおください。
+
+///
+
+そのフロント゚ンドを䜿っお、AI ã‚šãƒŒã‚žã‚§ãƒ³ãƒˆã«è‡ªåˆ†ã®ä»£ã‚ã‚Šã«äœœæ¥­ã‚’させられたす。
+
+それが「公開むンタヌネット」ではなくロヌカルで動䜜しおいるため、ロヌカルネットワヌクぞのアクセスを信頌し、認蚌を䞀切蚭定しないこずにしたずしたす。
+
+するず、ナヌザヌの䞀人がそれをむンストヌルしおロヌカルで実行できたす。
+
+その埌、䟋えば次のような悪意のあるサむトを開く可胜性がありたす。
+
+```
+https://evilhackers.example.com
+```
+
+そしおその悪意のあるサむトが、`Blob` ã‚’ボディにした `fetch()` ã‚’䜿っおロヌカルの API ã«ãƒªã‚¯ã‚šã‚¹ãƒˆã‚’送信したす。
+
+```
+http://localhost:8000/v1/agents/multivac
+```
+
+悪意のあるサむトずロヌカルアプリのホストは異なるにもかかわらず、ブラりザは次の理由で CORS ã®ãƒ—リフラむトリク゚ストを発行したせん。
+
+- èªèšŒãªã—で動䜜しおおり、認蚌情報を送る必芁がないため
+- ãƒ–ラりザは`Content-Type` ãƒ˜ãƒƒãƒ€ãƒŒãŒãªã„ためJSON ã‚’送っおいないず刀断するため
+
+その結果、悪意のあるサむトがロヌカルの AI ã‚šãƒŒã‚žã‚§ãƒ³ãƒˆã«ã€ãƒŠãƒŒã‚¶ãƒŒã®å…ƒäžŠåžã«æ€’りのメッセヌゞを送らせるこずができおしたいたす... ã‚るいは、もっず悪いこずも。 ðŸ˜…
+
+## å…¬é–‹ã‚€ãƒ³ã‚¿ãƒŒãƒãƒƒãƒˆ { #open-internet }
+
+アプリが公開むンタヌネット䞊にある堎合、「ネットワヌクを信頌」しお認蚌なしで誰にでも特暩的なリク゚ストを送らせるこずはしないはずです。
+
+攻撃者は単にスクリプトを実行しお API ã«ãƒªã‚¯ã‚šã‚¹ãƒˆã‚’送れたす。ブラりザを介する必芁がないため、すでに特暩゚ンドポむントは保護しおいるでしょう。
+
+その堎合、これはあなたには圓おはたらない攻撃リスクです。
+
+このリスクず攻撃が䞻に問題になるのは、アプリがロヌカルネットワヌクで動䜜し、それだけが前提の保護ずなっおいる堎合です。
+
+## Content-Type ãªã—のリク゚ストを蚱可する { #allowing-requests-without-content-type }
+
+`Content-Type` ãƒ˜ãƒƒãƒ€ãƒŒã‚’送らないクラむアントをサポヌトする必芁がある堎合は、`strict_content_type=False` ã‚’蚭定しお厳栌チェックを無効化できたす。
+
+{* ../../docs_src/strict_content_type/tutorial001_py310.py hl[4] *}
+
+この蚭定では、`Content-Type` ãƒ˜ãƒƒãƒ€ãƒŒãŒãªã„リク゚ストでもボディが JSON ãšã—お解析されたす。これは叀いバヌゞョンの FastAPI ãšåŒã˜æŒ™å‹•です。
+
+/// info | æƒ…å ±
+
+この挙動ず蚭定は FastAPI 0.132.0 ã§è¿œåŠ ã•ã‚ŒãŸã—ãŸã€‚
+
+///
diff --git a/docs/ja/docs/editor-support.md b/docs/ja/docs/editor-support.md
new file mode 100644 (file)
index 0000000..d82e970
--- /dev/null
@@ -0,0 +1,23 @@
+# ã‚šãƒ‡ã‚£ã‚¿å¯Ÿå¿œ { #editor-support }
+
+公匏の[FastAPI Extension](https://marketplace.visualstudio.com/items?itemName=FastAPILabs.fastapi-vscode)は、*path operation* ã®æ€œå‡ºãƒ»ãƒŠãƒ“ゲヌションに加え、FastAPI Cloud ãžã®ãƒ‡ãƒ—ロむやラむブログストリヌミングなど、FastAPI ã®é–‹ç™ºãƒ¯ãƒŒã‚¯ãƒ•ロヌを匷化したす。
+
+拡匵機胜の詳现は、[GitHub ãƒªãƒã‚žãƒˆãƒª](https://github.com/fastapi/fastapi-vscode)の README ã‚’参照しおください。
+
+## ã‚»ãƒƒãƒˆã‚¢ãƒƒãƒ—ずむンストヌル { #setup-and-installation }
+
+**FastAPI Extension** ã¯ [VS Code](https://code.visualstudio.com/) ãš [Cursor](https://www.cursor.com/) ã®äž¡æ–¹ã§åˆ©ç”šã§ããŸã™ã€‚各゚ディタの拡匵機胜パネルから「FastAPI」を怜玢し、**FastAPI Labs** ãŒå…¬é–‹ã—おいる拡匵機胜を遞択しお盎接むンストヌルできたす。 [vscode.dev](https://vscode.dev) ã‚„ [github.dev](https://github.dev) ãªã©ã®ãƒ–ラりザベヌスの゚ディタでも動䜜したす。
+
+### ã‚¢ãƒ—リケヌション怜出 { #application-discovery }
+
+既定では、ワヌクスペヌス内で `FastAPI()` ã‚’生成しおいるファむルを走査し、FastAPI ã‚¢ãƒ—リケヌションを自動怜出したす。プロゞェクト構成の郜合で自動怜出が機胜しない堎合は、`pyproject.toml` ã® `[tool.fastapi]`、たたは VS Code èš­å®šã® `fastapi.entryPoint` ã«ãƒ¢ã‚žãƒ¥ãƒŒãƒ«è𘿳•䟋: `myapp.main:app`で゚ントリポむントを指定できたす。
+
+## æ©Ÿèƒœ { #features }
+
+- **Path Operation ã‚šã‚¯ã‚¹ãƒ—ロヌラヌ** - ã‚¢ãƒ—リケヌション内のすべおの <dfn title="ルヌト、゚ンドポむント">*path operations*</dfn> ã‚’サむドバヌのツリヌビュヌで衚瀺したす。クリックしお任意のルヌトたたはルヌタヌ定矩ぞゞャンプできたす。
+- **ルヌト怜玢** - <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>E</kbd>macOS: <kbd>Cmd</kbd> + <kbd>Shift</kbd> + <kbd>E</kbd>で、パス・メ゜ッド・名前で怜玢できたす。
+- **CodeLens ãƒŠãƒ“ゲヌション** - ãƒ†ã‚¹ãƒˆã‚¯ãƒ©ã‚€ã‚¢ãƒ³ãƒˆå‘Œã³å‡ºã—䟋: `client.get('/items')`の䞊に衚瀺されるクリック可胜なリンクから、察応する *path operation* ã«ã‚žãƒ£ãƒ³ãƒ—し、テストず実装の行き来をすばやく行えたす。
+- **FastAPI Cloud ãžãƒ‡ãƒ—ロむ** - [FastAPI Cloud](https://fastapicloud.com/) ã«ãƒ¯ãƒ³ã‚¯ãƒªãƒƒã‚¯ã§ã‚¢ãƒ—リをデプロむできたす。
+- **アプリケヌションログのストリヌミング** - FastAPI Cloud ã«ãƒ‡ãƒ—ロむしたアプリから、レベルフィルタやテキスト怜玢付きでリアルタむムにログをストリヌミングできたす。
+
+拡匵機胜の機胜に慣れるには、コマンドパレット<kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd>、macOS: <kbd>Cmd</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd>を開き、"Welcome: Open walkthrough..." ã‚’遞択しおから、"Get started with FastAPI" ã®ã‚Šã‚©ãƒŒã‚¯ã‚¹ãƒ«ãƒŒã‚’遞んでください。
diff --git a/docs/ja/docs/tutorial/server-sent-events.md b/docs/ja/docs/tutorial/server-sent-events.md
new file mode 100644 (file)
index 0000000..d8168ce
--- /dev/null
@@ -0,0 +1,120 @@
+# Server-Sent Events (SSE) { #server-sent-events-sse }
+
+**Server-Sent Events** (SSE) ã‚’䜿うず、クラむアントぞデヌタをストリヌミングできたす。
+
+これは[JSON Lines ã®ã‚¹ãƒˆãƒªãƒŒãƒŸãƒ³ã‚°](stream-json-lines.md)に䌌おいたすが、`text/event-stream` ãƒ•ォヌマットを䜿甚したす。これはブラりザがネむティブに [`EventSource` API](https://developer.mozilla.org/en-US/docs/Web/API/EventSource) ã§ã‚µãƒãƒŒãƒˆã—おいたす。
+
+/// info | æƒ…å ±
+
+FastAPI 0.135.0 ã§è¿œåŠ ã•ã‚ŒãŸã—ãŸã€‚
+
+///
+
+## Server-Sent Events ãšã¯ { #what-are-server-sent-events }
+
+SSE ã¯ã€HTTP çµŒç”±ã§ã‚µãƒŒãƒãƒŒã‹ã‚‰ã‚¯ãƒ©ã‚€ã‚¢ãƒ³ãƒˆãžãƒ‡ãƒŒã‚¿ã‚’ストリヌミングするための暙準です。
+
+各むベントは、`data`、`event`、`id`、`retry` ãªã©ã®ã€Œãƒ•ィヌルド」を含む小さなテキストブロックで、空行で区切られたす。
+
+次のようになりたす:
+
+```
+data: {"name": "Portal Gun", "price": 999.99}
+
+data: {"name": "Plumbus", "price": 32.99}
+
+```
+
+SSE ã¯ã€AI ãƒãƒ£ãƒƒãƒˆã®ã‚¹ãƒˆãƒªãƒŒãƒŸãƒ³ã‚°ã€ãƒ©ã‚€ãƒ–通知、ログやオブザビリティなど、サヌバヌがクラむアントぞ曎新をプッシュする甚途で䞀般的に䜿われたす。
+
+/// tip | è±†çŸ¥è­˜
+
+バむナリデヌタ䟋: å‹•画や音声をストリヌミングしたい堎合は、䞊玚ガむド [デヌタのストリヌミング](../advanced/stream-data.md) ã‚’参照しおください。
+
+///
+
+## FastAPI ã§ SSE ã‚’ストリヌミング { #stream-sse-with-fastapi }
+
+FastAPI ã§ SSE ã‚’ストリヌミングするには、*path operation é–¢æ•°*で `yield` ã‚’䜿い、`response_class=EventSourceResponse` ã‚’蚭定したす。
+
+`EventSourceResponse` ã¯ `fastapi.sse` ã‹ã‚‰ã‚€ãƒ³ãƒãƒŒãƒˆã—たす:
+
+{* ../../docs_src/server_sent_events/tutorial001_py310.py ln[1:25] hl[4,22] *}
+
+yield ã•れた各アむテムは JSON ã«ã‚šãƒ³ã‚³ãƒŒãƒ‰ã•れ、SSE ã‚€ãƒ™ãƒ³ãƒˆã® `data:` ãƒ•ィヌルドで送信されたす。
+
+戻り倀の型を `AsyncIterable[Item]` ãšå®£èš€ã™ã‚‹ãšã€FastAPI ã¯ Pydantic ã‚’甚いおデヌタを**怜蚌**、**ドキュメント化**、**シリアラむズ**したす。
+
+{* ../../docs_src/server_sent_events/tutorial001_py310.py ln[1:25] hl[10:12,23] *}
+
+/// tip | è±†çŸ¥è­˜
+
+Pydantic ãŒ**Rust** åŽã§ã‚·ãƒªã‚¢ãƒ©ã‚€ã‚ºã‚’行うため、戻り倀の型を宣蚀しない堎合に比べお倧幅に**高性胜**になりたす。
+
+///
+
+### éž async ã® *path operation é–¢æ•°* { #non-async-path-operation-functions }
+
+通垞の `def` é–¢æ•°ïŒˆ`async` ãªã—も䜿甚でき、同様に `yield` ã‚’䜿えたす。
+
+むベントルヌプをブロックしないよう、FastAPI ãŒæ­£ã—く実行されるように調敎したす。
+
+この堎合は関数が async ã§ã¯ãªã„ため、適切な戻り倀の型は `Iterable[Item]` ã§ã™:
+
+{* ../../docs_src/server_sent_events/tutorial001_py310.py ln[28:31] hl[29] *}
+
+### æˆ»ã‚Šå€€ã®åž‹ãªã— { #no-return-type }
+
+戻り倀の型を省略するこずもできたす。FastAPI ã¯ [`jsonable_encoder`](./encoder.md) ã‚’䜿っおデヌタを倉換し、送信したす。
+
+{* ../../docs_src/server_sent_events/tutorial001_py310.py ln[34:37] hl[35] *}
+
+## `ServerSentEvent` { #serversentevent }
+
+`event`、`id`、`retry`、`comment` ãªã©ã® SSE ãƒ•ィヌルドを蚭定する必芁がある堎合は、生デヌタの代わりに `ServerSentEvent` ã‚ªãƒ–ゞェクトを `yield` ã§ããŸã™ã€‚
+
+`ServerSentEvent` ã¯ `fastapi.sse` ã‹ã‚‰ã‚€ãƒ³ãƒãƒŒãƒˆã—たす:
+
+{* ../../docs_src/server_sent_events/tutorial002_py310.py hl[4,26] *}
+
+`data` ãƒ•ィヌルドは垞に JSON ã«ã‚šãƒ³ã‚³ãƒŒãƒ‰ã•れたす。Pydantic ãƒ¢ãƒ‡ãƒ«ã‚’含む、JSON ã«ã‚·ãƒªã‚¢ãƒ©ã‚€ã‚ºå¯èƒœãªä»»æ„ã®å€€ã‚’枡せたす。
+
+## ç”Ÿãƒ‡ãƒŒã‚¿ { #raw-data }
+
+JSON ã‚šãƒ³ã‚³ãƒŒãƒ‰ã›ãšã«ãƒ‡ãƒŒã‚¿ã‚’送る必芁がある堎合は、`data` ã®ä»£ã‚ã‚Šã« `raw_data` ã‚’䜿甚したす。
+
+これは、敎圢枈みテキスト、ログ行、たたは `[DONE]` ã®ã‚ˆã†ãªç‰¹åˆ¥ãª <dfn title="特別な条件や状態を瀺すために甚いられる倀">"センチネル"</dfn> å€€ã‚’送るのに有甚です。
+
+{* ../../docs_src/server_sent_events/tutorial003_py310.py hl[17] *}
+
+/// note | å‚™è€ƒ
+
+`data` ãš `raw_data` ã¯ç›žäº’排他的です。各 `ServerSentEvent` ã§ã¯ã©ã¡ã‚‰ã‹äž€æ–¹ã—か蚭定できたせん。
+
+///
+
+## `Last-Event-ID` ã§ã®å†é–‹ { #resuming-with-last-event-id }
+
+接続が途切れた埌にブラりザが再接続するず、最埌に受信した `id` ã‚’ `Last-Event-ID` ãƒ˜ãƒƒãƒ€ãƒŒã§é€ä¿¡ã—たす。
+
+これをヘッダヌパラメヌタずしお受け取り、クラむアントが離脱した䜍眮からストリヌムを再開できたす:
+
+{* ../../docs_src/server_sent_events/tutorial004_py310.py hl[25,27,31] *}
+
+## POST ã§ã® SSE { #sse-with-post }
+
+SSE ã¯ `GET` ã ã‘でなく、**任意の HTTP ãƒ¡ã‚œãƒƒãƒ‰**で動䜜したす。
+
+これは、`POST` äžŠã§ SSE ã‚’ストリヌミングする [MCP](https://modelcontextprotocol.io) ã®ã‚ˆã†ãªãƒ—ロトコルで有甚です:
+
+{* ../../docs_src/server_sent_events/tutorial005_py310.py hl[14] *}
+
+## æŠ€è¡“詳çް { #technical-details }
+
+FastAPI ã¯ SSE ã®ã„く぀かのベストプラクティスを暙準で実装しおいたす。
+
+- ãƒ¡ãƒƒã‚»ãƒŒã‚žãŒãªã„堎合は 15 ç§’ごずに「キヌプアラむブ」甚の `ping` ã‚³ãƒ¡ãƒ³ãƒˆã‚’送信し、䞀郚のプロキシが接続を閉じるのを防ぎたす[HTML ä»•様: Server-Sent Events](https://html.spec.whatwg.org/multipage/server-sent-events.html#authoring-notes) ã®æŽšå¥šã«åŸ“いたす。
+- ã‚¹ãƒˆãƒªãƒŒãƒ ã®**キャッシュを防止**するため、`Cache-Control: no-cache` ãƒ˜ãƒƒãƒ€ãƒŒã‚’蚭定したす。
+- Nginx ãªã©äž€éƒšã®ãƒ—ロキシでの**バッファリングを防ぐ**ため、特別なヘッダヌ `X-Accel-Buffering: no` ã‚’蚭定したす。
+
+远加の蚭定は䞍芁で、そのたた動䜜したす。🀓
diff --git a/docs/ja/docs/tutorial/stream-json-lines.md b/docs/ja/docs/tutorial/stream-json-lines.md
new file mode 100644 (file)
index 0000000..a247234
--- /dev/null
@@ -0,0 +1,111 @@
+# JSON Lines ã‚’ストリヌムする { #stream-json-lines }
+
+デヌタのシヌケンスを**「ストリヌム」**で送りたい堎合、**JSON Lines** ã‚’䜿っお実珟できたす。
+
+/// info | æƒ…å ±
+
+FastAPI 0.134.0 ã§è¿œåŠ ã•ã‚ŒãŸã—ãŸã€‚
+
+///
+
+## ã‚¹ãƒˆãƒªãƒŒãƒ ãšã¯ { #what-is-a-stream }
+
+デヌタを**ストリヌミング**するずは、アむテムの党シヌケンスが甚意できるのを埅たずに、アプリがデヌタアむテムの送信をクラむアントに察しお開始するこずを意味したす。
+
+぀たり、最初のアむテムを送信し、クラむアントはそれを受け取っお凊理を始めたす。その間に、次のアむテムをただ生成しおいるかもしれたせん。
+
+```mermaid
+sequenceDiagram
+    participant App
+    participant Client
+
+    App->>App: Produce Item 1
+    App->>Client: Send Item 1
+    App->>App: Produce Item 2
+    Client->>Client: Process Item 1
+    App->>Client: Send Item 2
+    App->>App: Produce Item 3
+    Client->>Client: Process Item 2
+    App->>Client: Send Item 3
+    Client->>Client: Process Item 3
+    Note over App: Keeps producing...
+    Note over Client: Keeps consuming...
+```
+
+デヌタを送り続ける無限ストリヌムにするこずもできたす。
+
+## JSON Lines { #json-lines }
+
+このような堎合、1 è¡Œã« 1 ã€ã® JSON ã‚ªãƒ–ゞェクトを送る「**JSON Lines**」圢匏を䜿うのが䞀般的です。
+
+レスポンスの content type ã¯ `application/jsonl``application/json` ã®ä»£ã‚ã‚ŠïŒ‰ãšãªã‚Šã€ãƒœãƒ‡ã‚£ã¯æ¬¡ã®ã‚ˆã†ã«ãªã‚ŠãŸã™:
+
+```json
+{"name": "Plumbus", "description": "A multi-purpose household device."}
+{"name": "Portal Gun", "description": "A portal opening device."}
+{"name": "Meeseeks Box", "description": "A box that summons a Meeseeks."}
+```
+
+これは JSON é…åˆ—Python ã® list ã«ç›žåœ“にずおもよく䌌おいたすが、`[]` ã§å›²ãŸãšã€ã‚¢ã‚€ãƒ†ãƒ é–“の `,` ã‚‚ありたせん。その代わりに、**1 è¡Œã« 1 ã€ã® JSON ã‚ªãƒ–ゞェクト**で、改行文字で区切られたす。
+
+/// info | æƒ…å ±
+
+重芁な点は、クラむアントが前の行を消費しおいる間に、アプリ偎は次の行を順次生成しお送れるこずです。
+
+///
+
+/// note | æŠ€è¡“詳çް
+
+各 JSON ã‚ªãƒ–ゞェクトは改行で区切られるため、内容にリテラルな改行文字は含められたせん。ですが、゚スケヌプした改行`\n`は含められたす。これは JSON æš™æº–の䞀郚です。
+
+ずはいえ、通垞は気にする必芁はありたせん。自動で凊理されたすので、読み進めおください。🀓
+
+///
+
+## ãƒŠãƒŒã‚¹ã‚±ãƒŒã‚¹ { #use-cases }
+
+これは **AI LLM** ã‚µãƒŒãƒ“ス、**ログ**や**テレメトリ**、あるいは **JSON** ã‚¢ã‚€ãƒ†ãƒ ãšã—お構造化できる他の皮類のデヌタをストリヌムするのに䜿えたす。
+
+/// tip | è±†çŸ¥è­˜
+
+動画や音声などのバむナリデヌタをストリヌムしたい堎合は、䞊玚ガむドを参照しおください: [デヌタのストリヌム](../advanced/stream-data.md)。
+
+///
+
+## FastAPI ã§ JSON Lines ã‚’ストリヌムする { #stream-json-lines-with-fastapi }
+
+FastAPI ã§ JSON Lines ã‚’ストリヌムするには、*path operation é–¢æ•°*で `return` ã‚’䜿う代わりに、`yield` ã‚’䜿っお各アむテムを順に生成したす。
+
+{* ../../docs_src/stream_json_lines/tutorial001_py310.py ln[1:24] hl[24] *}
+
+送り返す各 JSON ã‚¢ã‚€ãƒ†ãƒ ãŒ `Item`Pydantic ãƒ¢ãƒ‡ãƒ«ïŒ‰åž‹ã§ã€é–¢æ•°ãŒ async ã®å Žåˆã€æˆ»ã‚Šå€€ã®åž‹ã‚’ `AsyncIterable[Item]` ãšå®£èš€ã§ããŸã™:
+
+{* ../../docs_src/stream_json_lines/tutorial001_py310.py ln[1:24] hl[9:11,22] *}
+
+戻り倀の型を宣蚀するず、FastAPI ã¯ãã‚Œã‚’䜿っおデヌタを**怜蚌**し、OpenAPI ã«**ドキュメント化**し、**フィルタヌ**し、Pydantic ã§**シリアラむズ**したす。
+
+/// tip | è±†çŸ¥è­˜
+
+Pydantic ã¯ **Rust** åŽã§ã‚·ãƒªã‚¢ãƒ©ã‚€ã‚ºã‚’行うため、戻り倀の型を宣蚀しない堎合に比べお倧幅に高い**パフォヌマンス**が埗られたす。
+
+///
+
+### éž async ã® *path operation é–¢æ•°* { #non-async-path-operation-functions }
+
+`async` ã‚’䜿わない通垞の `def` é–¢æ•°ã§ã‚‚同様に `yield` ã‚’䜿えたす。
+
+FastAPI ãŒé©åˆ‡ã«å®Ÿè¡Œã•れるように凊理するため、むベントルヌプをブロックしたせん。
+
+この堎合は関数が async ã§ã¯ãªã„ので、適切な戻り倀の型は `Iterable[Item]` ã§ã™:
+
+{* ../../docs_src/stream_json_lines/tutorial001_py310.py ln[27:30] hl[28] *}
+
+### æˆ»ã‚Šå€€ã®åž‹ãªã— { #no-return-type }
+
+戻り倀の型を省略するこずもできたす。FastAPI ã¯ãã®å Žåˆã€ãƒ‡ãƒŒã‚¿ã‚’ JSON ã«ã‚·ãƒªã‚¢ãƒ©ã‚€ã‚ºå¯èƒœãªåœ¢ã«å€‰æ›ã™ã‚‹ãŸã‚ã« [`jsonable_encoder`](./encoder.md) ã‚’䜿い、JSON Lines ãšã—お送信したす。
+
+{* ../../docs_src/stream_json_lines/tutorial001_py310.py ln[33:36] hl[34] *}
+
+## Server-Sent Events (SSE) { #server-sent-events-sse }
+
+FastAPI ã¯ Server-Sent Events (SSE) ã«ã‚‚ファヌストクラスで察応しおいたす。ずおも䌌おいたすが、いく぀か远加の詳现がありたす。次の章で孊べたす: [Server-Sent Events (SSE)](server-sent-events.md)。🀓