Browse Source

🌐 Update translations for ja (update-outdated)

pull/15895/head
github-actions[bot] 3 weeks ago
parent
commit
950c2d3f19
  1. 2
      docs/ja/docs/advanced/additional-status-codes.md
  2. 6
      docs/ja/docs/advanced/advanced-dependencies.md
  3. 4
      docs/ja/docs/advanced/dataclasses.md
  4. 6
      docs/ja/docs/advanced/events.md
  5. 14
      docs/ja/docs/advanced/generate-clients.md
  6. 2
      docs/ja/docs/advanced/json-base64-bytes.md
  7. 8
      docs/ja/docs/advanced/openapi-callbacks.md
  8. 2
      docs/ja/docs/advanced/settings.md
  9. 22
      docs/ja/docs/advanced/stream-data.md
  10. 4
      docs/ja/docs/deployment/cloud.md
  11. 43
      docs/ja/docs/deployment/concepts.md
  12. 10
      docs/ja/docs/deployment/docker.md
  13. 14
      docs/ja/docs/deployment/https.md
  14. 2
      docs/ja/docs/deployment/manually.md
  15. 2
      docs/ja/docs/how-to/configure-swagger-ui.md
  16. 2
      docs/ja/docs/how-to/custom-request-and-route.md
  17. 18
      docs/ja/docs/how-to/migrate-from-pydantic-v1-to-pydantic-v2.md
  18. 4
      docs/ja/docs/how-to/separate-openapi-schemas.md
  19. 20
      docs/ja/docs/tutorial/bigger-applications.md
  20. 2
      docs/ja/docs/tutorial/debugging.md
  21. 1
      docs/ja/docs/tutorial/dependencies/dependencies-with-yield.md
  22. 2
      docs/ja/docs/tutorial/extra-models.md
  23. 5
      docs/ja/docs/tutorial/first-steps.md
  24. 6
      docs/ja/docs/tutorial/metadata.md
  25. 4
      docs/ja/docs/tutorial/query-params-str-validations.md
  26. 2
      docs/ja/docs/tutorial/request-forms.md
  27. 4
      docs/ja/docs/tutorial/security/first-steps.md
  28. 2
      docs/ja/docs/tutorial/security/get-current-user.md
  29. 8
      docs/ja/docs/tutorial/security/oauth2-jwt.md
  30. 16
      docs/ja/docs/tutorial/security/simple-oauth2.md
  31. 8
      docs/ja/docs/tutorial/static-files.md
  32. 8
      docs/ja/docs/tutorial/testing.md

2
docs/ja/docs/advanced/additional-status-codes.md

@ -16,7 +16,7 @@
{* ../../docs_src/additional_status_codes/tutorial001_an_py310.py hl[4,25] *}
/// warning
/// warning | 注意
上の例のように `Response` を直接返すと、それはそのまま返されます。

6
docs/ja/docs/advanced/advanced-dependencies.md

@ -10,9 +10,9 @@
ただし、その固定の内容はパラメータ化できるようにしたいです。
## "callable" なインスタンス { #a-callable-instance }
## 「callable」なインスタンス { #a-callable-instance }
Python には、クラスのインスタンスを "callable" にする方法があります。
Python には、クラスのインスタンスを「callable」にする方法があります。
クラス自体(これはすでに callable です)ではなく、そのクラスのインスタンスです。
@ -146,7 +146,7 @@ FastAPI 0.110.0 より前では、`yield` を持つ依存関係を使い、そ
FastAPI 0.106.0 より前では、`yield` の後で例外を送出することはできませんでした。`yield` を持つ依存関係の終了コードはレスポンス送信「後」に実行されるため、[例外ハンドラ](../tutorial/handling-errors.md#install-custom-exception-handlers)はすでに実行済みでした。
これは主に、依存関係が "yield" した同じオブジェクトをバックグラウンドタスク内で利用できるようにするための設計でした。終了コードはバックグラウンドタスク完了後に実行されるからです。
これは主に、依存関係が「yield」した同じオブジェクトをバックグラウンドタスク内で利用できるようにするための設計でした。終了コードはバックグラウンドタスク完了後に実行されるからです。
これは、レスポンスがネットワーク上を移動するのを待っている間にリソースを保持しないようにする意図で、FastAPI 0.106.0 で変更されました。

4
docs/ja/docs/advanced/dataclasses.md

@ -74,7 +74,7 @@ dataclass は自動的に Pydantic の dataclass に変換されます。
いつもどおり、FastAPI では必要に応じて `def``async def` を組み合わせられます。
どちらをいつ使うかの復習が必要な場合は、[`async` と `await`](../async.md#in-a-hurry) に関するドキュメントの _"In a hurry?"_ セクションを参照してください。
どちらをいつ使うかの復習が必要な場合は、[`async` と `await`](../async.md#in-a-hurry) に関するドキュメントの _「急いでいますか?」_ セクションを参照してください。
9. この *path operation 関数* は(可能ではありますが)dataclass 自体は返さず、内部データを持つ辞書のリストを返しています。
@ -82,7 +82,7 @@ dataclass は自動的に Pydantic の dataclass に変換されます。
`dataclasses` は他の型注釈と多様な組み合わせが可能で、複雑なデータ構造を構成できます。
上記のコード内コメントのヒントを参照して、より具体的な詳細を確認してください。
上記のコード内の注釈のヒントを参照して、より具体的な詳細を確認してください。
## さらに学ぶ { #learn-more }

6
docs/ja/docs/advanced/events.md

@ -120,7 +120,7 @@ async with lifespan(app):
ここでは、`shutdown` のイベントハンドラ関数が、テキスト行 `"Application shutdown"` をファイル `log.txt` に書き込みます。
/// note | 情報
/// note | 備考
`open()` 関数の `mode="a"` は「追加」(append)を意味します。つまり、そのファイルに既にある内容を上書きせず、行が後ろに追記されます。
@ -140,7 +140,7 @@ async with lifespan(app):
### `startup``shutdown` をまとめて { #startup-and-shutdown-together }
起動時とシャットダウン時のロジックは関連していることが多いです。何かを開始してから終了したい、リソースを獲得してから解放したい、などです.
起動時とシャットダウン時のロジックは関連していることが多いです。何かを開始してから終了したい、リソースを獲得してから解放したい、などです
共有するロジックや変数のない別々の関数でそれを行うのは難しく、グローバル変数などに値を保存する必要が出てきます。
@ -152,7 +152,7 @@ async with lifespan(app):
内部的には、ASGI の技術仕様において、これは [Lifespan プロトコル](https://asgi.readthedocs.io/en/latest/specs/lifespan.html) の一部であり、`startup` と `shutdown` というイベントが定義されています。
/// note | 情報
/// note | 備考
Starlette の `lifespan` ハンドラについては、[Starlette の Lifespan ドキュメント](https://www.starlette.dev/lifespan/)で詳しく読むことができます。

14
docs/ja/docs/advanced/generate-clients.md

@ -20,20 +20,6 @@ FastAPI は自動的に **OpenAPI 3.1** の仕様を生成します。したが
///
## FastAPI スポンサーによる SDK ジェネレータ { #sdk-generators-from-fastapi-sponsors }
このセクションでは、FastAPI をスポンサーしている企業による、**ベンチャー支援**および**企業支援**のソリューションを紹介します。これらの製品は、高品質な生成 SDK に加えて、**追加機能**や**統合**を提供します。
✨ [**FastAPI をスポンサーする**](../help-fastapi.md#sponsor-the-author) ✨ ことで、これらの企業はフレームワークとその**エコシステム**の健全性と**持続可能性**を支援しています。
この支援は、FastAPI の**コミュニティ**(皆さん)への強いコミットメントの表明でもあり、**優れたサービス**の提供だけでなく、堅牢で発展するフレームワーク FastAPI を支える姿勢を示しています。🙇
例えば、次のようなものがあります:
* [Stainless](https://www.stainless.com/?utm_source=fastapi&utm_medium=referral)
これらのソリューションの中にはオープンソースや無料枠を提供するものもあり、金銭的コミットメントなしで試すことができます。他の商用 SDK ジェネレータも存在し、オンラインで見つけられます。🤓
## TypeScript SDK を作成する { #create-a-typescript-sdk }
まずは簡単な FastAPI アプリから始めます:

2
docs/ja/docs/advanced/json-base64-bytes.md

@ -4,7 +4,7 @@
## Base64 とファイル { #base64-vs-files }
バイナリデータのアップロードにはまず、JSON にエンコードする代わりに [Request Files](../tutorial/request-files.md) を、バイナリデータの送信には [カスタムレスポンス - FileResponse](./custom-response.md#fileresponse--fileresponse-) を使えるか検討してください。
バイナリデータのアップロードにはまず、JSON にエンコードする代わりに [リクエストファイル](../tutorial/request-files.md) を、バイナリデータの送信には [カスタムレスポンス - FileResponse](./custom-response.md#fileresponse) を使えるか検討してください。
JSON は UTF-8 でエンコードされた文字列のみを含められるため、生のバイト列は含められません。

8
docs/ja/docs/advanced/openapi-callbacks.md

@ -23,7 +23,7 @@
* API 利用者(外部開発者)に通知を送り返します。
* これは(あなたの API から)外部開発者が提供する *外部 API* に POST リクエストを送ることで行われます(これが「コールバック」です)。
## 通常の FastAPI アプリ { #the-normal-fastapi-app }
## 通常の **FastAPI** アプリ { #the-normal-fastapi-app }
まず、コールバックを追加する前の通常の API アプリがどうなるか見てみましょう。
@ -76,7 +76,7 @@ httpx.post(callback_url, json={"description": "Invoice paid", "paid": True})
しかし、あなたはすでに **FastAPI** で API の自動ドキュメントを簡単に作る方法を知っています。
その知識を使って、*外部 API* がどうあるべきかをドキュメント化します……つまり、外部 API が実装すべき *path operation(s)*(あなたの API が呼び出すもの)を作成します。
その知識を使って、*外部 API* がどうあるべきかをドキュメント化します... つまり、外部 API が実装すべき *path operation(s)*(あなたの API が呼び出すもの)を作成します。
/// tip | 豆知識
@ -86,13 +86,13 @@ httpx.post(callback_url, json={"description": "Invoice paid", "paid": True})
///
### コールバック用 APIRouter を作成 { #create-a-callback-apirouter }
### コールバック用 `APIRouter` を作成 { #create-a-callback-apirouter }
まず、1 つ以上のコールバックを含む新しい `APIRouter` を作成します。
{* ../../docs_src/openapi_callbacks/tutorial001_py310.py hl[1,23] *}
### コールバックの path operation を作成 { #create-the-callback-path-operation }
### コールバックの *path operation* を作成 { #create-the-callback-path-operation }
上で作成したのと同じ `APIRouter` を使って、コールバックの *path operation* を作成します。

2
docs/ja/docs/advanced/settings.md

@ -52,7 +52,7 @@ Pydantic から `BaseSettings` をインポートして、そのサブクラス
Pydantic モデルと同様に、型アノテーションと(必要なら)デフォルト値を持つクラス属性を宣言します。
`Field()` による追加バリデーションなど、Pydantic モデルで使えるのと同じバリデーション機能をすべて利用できます。
異なるデータ型や `Field()` による追加バリデーションなど、Pydantic モデルで使えるのと同じバリデーション機能とツールをすべて利用できます。
{* ../../docs_src/settings/tutorial001_py310.py hl[2,5:8,11] *}

22
docs/ja/docs/advanced/stream-data.md

@ -2,9 +2,9 @@
JSON として構造化できるデータをストリームしたい場合は、[JSON Lines をストリームする](../tutorial/stream-json-lines.md) を参照してください。
しかし、純粋なバイナリデータや文字列をストリームしたい場合は、次のようにできます。
しかし、**純粋なバイナリデータ**や文字列をストリームしたい場合は、次のようにできます。
/// note | 情報
/// note | 備考
FastAPI 0.134.0 で追加されました。
@ -12,21 +12,21 @@ FastAPI 0.134.0 で追加されました。
## ユースケース { #use-cases }
例えば、AI LLM サービスの出力をそのまま、純粋な文字列としてストリームしたい場合に使えます。
例えば、**AI LLM** サービスの出力をそのまま、純粋な文字列としてストリームしたい場合に使えます。
メモリに一度に全て読み込むことなく、読み込みながらチャンクごとに送ることで、巨大なバイナリファイルをストリームすることにも使えます。
メモリに一度に全て読み込むことなく、読み込みながらチャンクごとに送ることで、**巨大なバイナリファイル**をストリームすることにも使えます。
同様に、動画や音声をストリームすることもできます。処理しながら生成し、そのまま送信することも可能です。
同様に、**動画****音声**をストリームすることもできます。処理しながら生成し、そのまま送信することも可能です。
## `yield` を使った `StreamingResponse` { #a-streamingresponse-with-yield }
path operation 関数で `response_class=StreamingResponse` を宣言すると、`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 な *path operation 関数* { #non-async-path-operation-functions }
`async` なしの通常の `def` 関数でも同様に `yield` を使えます。
@ -40,7 +40,7 @@ FastAPI は各データチャンクをそのまま `StreamingResponse` に渡し
{* ../../docs_src/stream_data/tutorial001_py310.py ln[32:35] hl[33] *}
つまり、`StreamingResponse` では型アノテーションに依存せず、送信したい形式に合わせてバイト列を生成・エンコードする「自由」と「責任」があなたにあります。 🤓
つまり、`StreamingResponse` では型アノテーションに依存せず、送信したい形式に合わせてバイト列を生成・エンコードする**自由**と**責任**があなたにあります。 🤓
### バイト列をストリームする { #stream-bytes }
@ -58,7 +58,7 @@ FastAPI は各データチャンクをそのまま `StreamingResponse` に渡し
{* ../../docs_src/stream_data/tutorial002_py310.py ln[6,19:20] hl[20] *}
その後、path operation 関数で `response_class=PNGStreamingResponse` としてこの新しいクラスを使用できます:
その後、*path operation 関数*`response_class=PNGStreamingResponse` としてこの新しいクラスを使用できます:
{* ../../docs_src/stream_data/tutorial002_py310.py ln[23:27] hl[23] *}
@ -90,7 +90,7 @@ FastAPI は各データチャンクをそのまま `StreamingResponse` に渡し
また、多くの場合、ディスクやネットワークから読み出すため、読み取りはブロッキング(イベントループをブロックし得る)処理になります。
/// note | 情報
/// note | 備考
上記の例は例外で、`io.BytesIO` は既にメモリ上にあるため、読み取りが何かをブロックすることはありません。
@ -98,7 +98,7 @@ FastAPI は各データチャンクをそのまま `StreamingResponse` に渡し
///
イベントループのブロッキングを避けるには、path operation 関数を `async def` ではなく通常の `def` で宣言してください。そうすると FastAPI はその関数をスレッドプールワーカー上で実行し、メインループのブロッキングを避けます。
イベントループのブロッキングを避けるには、*path operation 関数*`async def` ではなく通常の `def` で宣言してください。そうすると FastAPI はその関数をスレッドプールワーカー上で実行し、メインループのブロッキングを避けます。
{* ../../docs_src/stream_data/tutorial002_py310.py ln[30:34] hl[31] *}

4
docs/ja/docs/deployment/cloud.md

@ -6,7 +6,7 @@ FastAPI アプリケーションは、実質的にどのようなクラウドプ
## FastAPI Cloud { #fastapi-cloud }
**[FastAPI Cloud](https://fastapicloud.com)** は、**FastAPI** の作者同じチームによって作られています。
**[FastAPI Cloud](https://fastapicloud.com)** は、**FastAPI** の作者および同じチームによって作られています。
API の**構築**、**デプロイ**、**アクセス**までのプロセスを、最小限の手間で効率化します。
@ -16,7 +16,7 @@ FastAPI Cloud は、*FastAPI and friends* オープンソースプロジェク
## クラウドプロバイダ - スポンサー { #cloud-providers-sponsors }
他にもいくつかのクラウドプロバイダが ✨ [**FastAPI をスポンサーしています**](../help-fastapi.md#sponsor-the-author) ✨。🙇
他にもいくつかのクラウドプロバイダが ✨ [**FastAPI をスポンサーしています**](https://github.com/sponsors/tiangolo) ✨。🙇
それらのガイドを参考にし、サービスを試してみるのもよいでしょう:

43
docs/ja/docs/deployment/concepts.md

@ -1,8 +1,6 @@
# デプロイメントのコンセプト { #deployments-concepts }
**FastAPI**を用いたアプリケーションをデプロイするとき、もしくはどのようなタイプのWeb APIであっても、おそらく気になるコンセプトがいくつかあります。
それらを活用することでアプリケーションを**デプロイするための最適な方法**を見つけることができます。
**FastAPI**を用いたアプリケーションをデプロイするとき、もしくはどのようなタイプのWeb APIであっても、おそらく気になるコンセプトがいくつかあり、それらを活用することでアプリケーションを**デプロイするための最適な方法**を見つけることができます。
重要なコンセプトのいくつかを紹介します:
@ -17,9 +15,7 @@
最終的な目的は、**安全な方法で**APIクライアントに**サービスを提供**し、**中断を回避**するだけでなく、**計算リソース**(例えばリモートサーバー/仮想マシン)を可能な限り効率的に使用することです。 🚀
この章では前述した**コンセプト**についてそれぞれ説明します。
この説明を通して、普段とは非常に異なる環境や存在しないであろう**将来の**環境に対し、デプロイの方法を決める上で必要な**直感**を与えてくれることを願っています。
ここではこれらの**コンセプト**についてもう少し説明します。それによって、普段とは非常に異なる環境や存在しないであろう**将来の**環境に対し、APIのデプロイ方法を決める上で必要な**直感**を与えてくれることを願っています。
これらのコンセプトを意識することにより、**あなた自身のAPI**をデプロイするための最適な方法を**評価**し、**設計**することができるようになるでしょう。
@ -31,11 +27,12 @@
[前チャプターのHTTPSについて](https.md)では、HTTPSがどのようにAPIを暗号化するのかについて学びました。
通常、アプリケーションサーバにとって**外部の**コンポーネントである**TLS Termination Proxy**によって提供されることが一般的です。このプロキシは通信の暗号化を担当します
また、HTTPSは通常、アプリケーションサーバにとって**外部の**コンポーネントである**TLS Termination Proxy**によって提供されることも確認しました
さらに、HTTPS証明書の更新を担当するものが必要で、同じコンポーネントが担当することもあれば、別のコンポーネントが担当することもあります。
さらに、**HTTPS証明書の更新**を担当するものが必要で、同じコンポーネントが担当することもあれば、別のコンポーネントが担当することもあります。
### HTTPS 用ツールの例 { #example-tools-for-https }
TLS Termination Proxyとして使用できるツールには以下のようなものがあります:
* Traefik
@ -148,17 +145,17 @@ FastAPIでWeb APIを構築する際に、コードにエラーがある場合、
しかしながら、**アプリケーション全体をクラッシュさせるようなコードを書いて**UvicornとPythonをクラッシュさせるようなケースもあるかもしれません。💥
それでも、ある箇所でエラーが発生したからといって、アプリケーションを停止させたままにしたくないでしょう。 少なくとも壊れていない*path operation*については、**実行し続けたい**はずです。
それでも、ある箇所でエラーが発生したからといって、アプリケーションを停止させたままにしたくないでしょう。 少なくとも壊れていない*path operations*については、**実行し続けたい**はずです。
### クラッシュ後の再起動 { #restart-after-crash }
しかし、実行中の**プロセス**をクラッシュさせるような本当にひどいエラーの場合、少なくとも2〜3回ほどプロセスを**再起動**させる外部コンポーネントが必要でしょう
しかし、実行中の**プロセス**をクラッシュさせるような本当にひどいエラーの場合、少なくとも2〜3回ほどプロセスを**再起動**させる外部コンポーネントが必要でしょう...
/// tip | 豆知識
...とはいえ、アプリケーション全体が**すぐにクラッシュする**のであれば、いつまでも再起動し続けるのは意味がないでしょう。しかし、その場合はおそらく開発中か少なくともデプロイ直後に気づくと思われます。
そこで、**将来**クラッシュする可能性があり、それでも再スタートさせることに意味があるような、主なケースに焦点を当ててみます。
そこで、**将来**特定のケースで完全にクラッシュする可能性があり、それでも再スタートさせることに意味があるような、主なケースに焦点を当ててみます。
///
@ -207,9 +204,7 @@ FastAPI アプリケーションでは、Uvicorn を実行する `fastapi` コ
### サーバーメモリ { #server-memory }
例えば、あなたのコードが **1GBのサイズの機械学習モデル**をロードする場合、APIで1つのプロセスを実行すると、少なくとも1GBのRAMを消費します。
また、**4つのプロセス**(4つのワーカー)を起動すると、それぞれが1GBのRAMを消費します。つまり、合計でAPIは**4GBのRAM**を消費することになります。
例えば、あなたのコードが **1GBのサイズの機械学習モデル**をロードする場合、APIで1つのプロセスを実行すると、少なくとも1GBのRAMを消費します。また、**4つのプロセス**(4つのワーカー)を起動すると、それぞれが1GBのRAMを消費します。つまり、合計でAPIは**4GBのRAM**を消費することになります。
リモートサーバーや仮想マシンのRAMが3GBしかない場合、4GB以上のRAMをロードしようとすると問題が発生します。🚨
@ -233,9 +228,7 @@ FastAPI アプリケーションでは、Uvicorn を実行する `fastapi` コ
これを実現するにはいくつかのアプローチがありますが、具体的な戦略については次の章(Dockerやコンテナの章など)で詳しく説明します。
考慮すべき主な制約は、**パブリックIP**の**ポート**を処理する**単一の**コンポーネントが存在しなければならないということです。
そして、レプリケートされた**プロセス/ワーカー**に通信を**送信**する方法を持つ必要があります。
考慮すべき主な制約は、**パブリックIP**の**ポート**を処理する**単一の**コンポーネントが存在しなければならないということです。そして、レプリケートされた**プロセス/ワーカー**に通信を**送信**する方法を持つ必要があります。
考えられる組み合わせと戦略をいくつか紹介します:
@ -243,7 +236,7 @@ FastAPI アプリケーションでは、Uvicorn を実行する `fastapi` コ
* 1つのUvicornの**プロセスマネージャー**が**IP**と**ポート**をリッスンし、**複数のUvicornワーカー・プロセス**を起動する。
* **Kubernetes**やその他の分散**コンテナ・システム**
* **Kubernetes**レイヤーの何かが**IP**と**ポート**をリッスンする。レプリケーションは、**複数のコンテナ**にそれぞれ**1つのUvicornプロセス**を実行させることで行われる。
* **クラウド・サービス**によるレプリケーション
* これを代わりに処理する**クラウド・サービス**
* クラウド・サービスはおそらく**あなたのためにレプリケーションを処理**します。**実行するプロセス**や使用する**コンテナイメージ**を定義できるかもしれませんが、いずれにせよ、それはおそらく**単一のUvicornプロセス**であり、クラウドサービスはそのレプリケーションを担当するでしょう。
/// tip | 豆知識
@ -264,9 +257,7 @@ FastAPI アプリケーションでは、Uvicorn を実行する `fastapi` コ
そのため、アプリケーションを開始する前の**事前のステップ**を実行する**単一のプロセス**を用意したいと思われます。
そして、それらの事前のステップを実行しているのが単一のプロセスであることを確認する必要があります。このことはその後アプリケーション自体のために**複数のプロセス**(複数のワーカー)を起動した場合も同様です。
これらのステップが**複数のプロセス**によって実行された場合、**並列**に実行されることによって作業が**重複**することになります。そして、もしそのステップがデータベースのマイグレーションのような繊細なものであった場合、互いに競合を引き起こす可能性があります。
そして、それらの事前のステップを実行しているのが単一のプロセスであることを確認する必要があります。これはその後アプリケーション自体のために**複数のプロセス**(複数のワーカー)を起動した場合も同様です。これらのステップが**複数のプロセス**によって実行された場合、**並列**に実行されることによって作業が**重複**することになります。そして、もしそのステップがデータベースのマイグレーションのような繊細なものであった場合、互いに競合を引き起こす可能性があります。
もちろん、事前のステップを何度も実行しても問題がない場合もあり、その際は対処がかなり楽になります。
@ -284,7 +275,7 @@ FastAPI アプリケーションでは、Uvicorn を実行する `fastapi` コ
考えられるアイデアをいくつか挙げてみます:
* アプリコンテナの前に実行されるKubernetesのInitコンテナ
* アプリコンテナの前に実行されるKubernetesの「Init Container」
* 事前のステップを実行し、アプリケーションを起動するbashスクリプト
* 利用するbashスクリプトを起動/再起動したり、エラーを検出したりする方法は以前として必要になるでしょう。
@ -296,7 +287,7 @@ FastAPI アプリケーションでは、Uvicorn を実行する `fastapi` コ
## リソースの利用 { #resource-utilization }
あなたのサーバーは**リソース**であり、プログラムを実行しCPUの計算時間や利用可能なRAMメモリを消費または**利用**することができます。
あなたのサーバーは(複数の場合も)**リソース**であり、プログラムを実行しCPUの計算時間や利用可能なRAMメモリを消費または**利用**することができます。
システムリソースをどれくらい消費/利用したいですか? 「少ない方が良い」と考えるのは簡単かもしれないですが、実際には、**クラッシュせずに可能な限り**最大限に活用したいでしょう。
@ -309,11 +300,9 @@ FastAPI アプリケーションでは、Uvicorn を実行する `fastapi` コ
この場合、**1つ余分なサーバー**を用意し、その上でいくつかのプロセスを実行し、すべてのサーバーが**十分なRAMとCPU時間を持つようにする**のがよいでしょう。
また、何らかの理由でAPIの利用が急増する可能性もあります。もしかしたらそれが流行ったのかもしれないし、他のサービスやボットが使い始めたのかもしれないです。そのような場合に備えて、余分なリソースを用意しておくと安心でしょう。
例えば、リソース使用率の**50%から90%の範囲**で**任意の数字**をターゲットとすることができます。
また、何らかの理由でAPIの利用が**急増**する可能性もあります。もしかしたらそれが流行ったのかもしれないし、他のサービスやボットが使い始めたのかもしれないです。そのような場合に備えて、余分なリソースを用意しておくと安心でしょう。
重要なのは、デプロイメントを微調整するためにターゲットを設定し測定することが、おそらく使用したい主要な要素であることです。
例えば、リソース使用率の**50%から90%の範囲**で**任意の数字**をターゲットとすることができます。重要なのは、デプロイメントを微調整するために測定して使用したい主要な要素は、おそらくそれらであるということです。
`htop`のような単純なツールを使って、サーバーで使用されているCPUやRAM、あるいは各プロセスで使用されている量を見ることができます。あるいは、より複雑な監視ツールを使って、サーバに分散して使用することもできます。

10
docs/ja/docs/deployment/docker.md

@ -11,7 +11,7 @@ Linuxコンテナの使用には、**セキュリティ**、**反復可能性(
///
<details>
<summary>Dockerfile Preview 👀</summary>
<summary>Dockerfile プレビュー 👀</summary>
```Dockerfile
FROM python:3.14
@ -26,7 +26,7 @@ COPY ./app /code/app
CMD ["fastapi", "run", "app/main.py", "--port", "80"]
# If running behind a proxy like Nginx or Traefik add --proxy-headers
# Nginx や Traefik のようなプロキシの背後で実行する場合は --proxy-headers を追加します
# CMD ["fastapi", "run", "app/main.py", "--port", "80", "--proxy-headers"]
```
@ -243,14 +243,14 @@ Docker命令 [`CMD`](https://docs.docker.com/reference/dockerfile/#cmd) は2つ
**Exec** 形式:
```Dockerfile
# ✅ Do this
# ✅ こうしてください
CMD ["fastapi", "run", "app/main.py", "--port", "80"]
```
⛔️ **Shell** 形式:
```Dockerfile
# ⛔️ Don't do this
# ⛔️ こうしないでください
CMD fastapi run app/main.py --port 80
```
@ -340,7 +340,7 @@ $ docker build -t myimage .
///
### Dockerコンテナ起動する { #start-the-docker-container }
### Dockerコンテナ起動する { #start-the-docker-container }
* イメージに基づいてコンテナを実行します:

14
docs/ja/docs/deployment/https.md

@ -43,7 +43,6 @@ TLS Termination Proxyとして使えるオプションには、以下のよう
* Nginx
* HAProxy
## Let's Encrypt { #lets-encrypt }
Let's Encrypt以前は、これらの**HTTPS証明書**は信頼できる第三者によって販売されていました。
@ -100,11 +99,9 @@ TLS接続を確立するためのクライアントとサーバー間のこの
### SNI拡張機能付きのTLS { #tls-with-sni-extension }
サーバー内の**1つのプロセス**だけが、特定の**IPアドレス**の特定の**ポート**で待ち受けることができます。
同じIPアドレスの他のポートで他のプロセスがリッスンしている可能性もありますが、IPアドレスとポートの組み合わせごとに1つだけです。
サーバー内の**1つのプロセス**だけが、特定の**IPアドレス**の特定の**ポート**で待ち受けることができます。同じIPアドレスの他のポートで他のプロセスがリッスンしている可能性もありますが、IPアドレスとポートの組み合わせごとに1つだけです。
TLS(HTTPS)はデフォルトで`443`という特定のポートを使用す。つまり、これが必要なポートです。
TLS(HTTPS)はデフォルトで`443`という特定のポートを使用します。つまり、これが必要なポートです。
このポートをリクエストできるのは1つのプロセスだけなので、これを実行するプロセスは**TLS Termination Proxy**となります。
@ -120,9 +117,9 @@ TLS Termination Proxyは、1つ以上の**TLS証明書**(HTTPS証明書)に
次に証明書を使用して、クライアントとTLS Termination Proxy は、 **TCP通信**の残りを**どのように暗号化するかを決定**します。これで**TLSハンドシェイク**の部分が完了します。
この後、クライアントとサーバーは**暗号化されたTCP接続**を持ちます。そして、その接続を使って実際の**HTTP通信**を開始することができます。
この後、クライアントとサーバーは**暗号化されたTCP接続**を持ちます。これがTLSの提供するものです。そして、その接続を使って実際の**HTTP通信**を開始することができます。
これが**HTTPS**であり、純粋な(暗号化されていない)TCP接続ではなく、**セキュアなTLS接続**の中に**HTTP**があるだけです。
これが**HTTPS**であり、純粋な(暗号化されていない)TCP接続ではなく、**セキュアなTLS接続**の中に単なる**HTTP**があるだけです。
/// tip | 豆知識
@ -152,7 +149,7 @@ TLS Termination Proxy は、合意が取れている暗号化を使用して、*
### HTTPS レスポンス { #https-response }
TLS Termination Proxyは次に、事前に合意が取れている暗号(`someapp.example.com`の証明書から始まる)を使って**レスポンスを暗号化し**、ブラウザに送り返す。
TLS Termination Proxyは次に、事前に合意が取れている暗号(`someapp.example.com`の証明書から始まる)を使って**レスポンスを暗号化し**、ブラウザに送り返します。
その後ブラウザでは、レスポンスが有効で正しい暗号キーで暗号化されていることなどを検証します。そして、ブラウザはレスポンスを**復号化**して処理します。
@ -191,7 +188,6 @@ TLS Termination Proxyは次に、事前に合意が取れている暗号(`someap
* これは、同じTLS Termination Proxyが証明書の更新処理も行う場合に非常に便利な理由の1つです。
* そうでなければ、TLS Termination Proxyを一時的に停止し、証明書を取得するために更新プログラムを起動し、TLS Termination Proxyで証明書を設定し、TLS Termination Proxyを再起動しなければならないかもしれません。TLS Termination Proxyが停止している間はアプリが利用できなくなるため、これは理想的ではありません。
アプリを提供しながらこのような更新処理を行うことは、アプリケーション・サーバー(Uvicornなど)でTLS証明書を直接使用するのではなく、TLS Termination Proxyを使用して**HTTPSを処理する別のシステム**を用意したくなる主な理由の1つです。
## プロキシ転送ヘッダー { #proxy-forwarded-headers }

2
docs/ja/docs/deployment/manually.md

@ -1,6 +1,6 @@
# サーバーを手動で実行する { #run-a-server-manually }
## fastapi run コマンドを使う { #use-the-fastapi-run-command }
## `fastapi run` コマンドを使う { #use-the-fastapi-run-command }
結論として、FastAPI アプリケーションを提供するには `fastapi run` を使います:

2
docs/ja/docs/how-to/configure-swagger-ui.md

@ -67,4 +67,4 @@ presets: [
これらは文字列ではなく **JavaScript** のオブジェクトであるため、Python のコードから直接渡すことはできません。
そのような JavaScript 専用の設定を使う必要がある場合は、上記のいずれかの方法を使用し、Swagger UI の path operation をオーバーライドして、必要な JavaScript を手動で記述してください。
そのような JavaScript 専用の設定を使う必要がある場合は、上記のいずれかの方法を使用できます。Swagger UI の *path operation* 全体をオーバーライドして、必要な JavaScript を手動で記述してください。

2
docs/ja/docs/how-to/custom-request-and-route.md

@ -10,7 +10,7 @@
これは「上級」機能です。
FastAPI を始めたばかりの場合は、このセクションは読み飛ばしてもよいでしょう。
**FastAPI** を始めたばかりの場合は、このセクションは読み飛ばしてもよいでしょう。
///

18
docs/ja/docs/how-to/migrate-from-pydantic-v1-to-pydantic-v2.md

@ -8,6 +8,8 @@ FastAPI 0.119.0 では、Pydantic v2 内からの Pydantic v1 の部分的サポ
FastAPI 0.126.0 で Pydantic v1 のサポートは終了しましたが、しばらくの間は `pydantic.v1` は利用可能でした。
FastAPI 0.128.0 で `pydantic.v1` のサポートも終了したため、FastAPI の最新バージョンでは Pydantic v2 が必要です。
/// warning | 注意
Pydantic チームは Python の最新バージョン、つまり **Python 3.14** から、Pydantic v1 のサポートを終了しました。
@ -54,6 +56,16 @@ Pydantic v2 には、Pydantic v1 がサブモジュール `pydantic.v1` とし
### v2 内の Pydantic v1 に対する FastAPI のサポート { #fastapi-support-for-pydantic-v1-in-v2 }
/// warning | 注意
この FastAPI による `pydantic.v1` モデルのサポートは **FastAPI 0.119.0** で追加され、**FastAPI 0.128.0** で削除されました。これは Pydantic v2 への移行のための一時的な支援を意図したものでした。
現在のバージョンの FastAPI では、アプリで `pydantic.v1` モデルを使用するとエラーが発生します。
このセクションの残りは、それらの古いバージョンでのみ利用可能だった一時的なサポートについて説明します。
///
FastAPI 0.119.0 以降では、移行を容易にするため、Pydantic v2 内の Pydantic v1 に対する部分的サポートもあります。
そのため、Pydantic を v2 の最新に上げ、インポートを `pydantic.v1` サブモジュールに切り替えるだけで、多くの場合そのまま動作します。
@ -122,6 +134,12 @@ Pydantic v1 のモデルで `Body`、`Query`、`Form` などの FastAPI 固有
### 段階的に移行 { #migrate-in-steps }
/// warning | 注意
以下で説明する、同じアプリ内で Pydantic v1 と v2 のモデルを併用する段階的移行は、**FastAPI 0.119.0 から 0.127.x** でのみ動作します。これは **FastAPI 0.128.0** で削除され、最新バージョンでは **Pydantic v2** モデルが必要です。
///
/// tip | 豆知識
まずは `bump-pydantic` を試してください。テストが通り、問題なければコマンド一発で完了です。✨

4
docs/ja/docs/how-to/separate-openapi-schemas.md

@ -41,7 +41,7 @@
ドキュメントから試してレスポンスを確認すると、コードでは一方の `description` フィールドに何も追加していないにもかかわらず、JSON レスポンスにはデフォルト値(`null`)が含まれています:
<div class="screenshot">
<img src="/img/tutorial/separate-openapi_schemas/image02.png">
<img src="/img/tutorial/separate-openapi-schemas/image02.png">
</div>
つまりそのフィールドには **常に値があります**。値が `None`(JSON では `null`)になることがあるだけです。
@ -72,7 +72,7 @@
一方、`Item-Output` では、`description` は **必須**(赤いアスタリスクあり)です。
<div class="screenshot">
<img src="/img/tutorial/separate-openapi_schemas/image04.png">
<img src="/img/tutorial/separate-openapi-schemas/image04.png">
</div>
この **Pydantic v2** の機能により、API ドキュメントはより **正確** になり、自動生成されたクライアントや SDK もより正確になります。これにより、より良い **開発者エクスペリエンス** と一貫性が得られます。🎉

20
docs/ja/docs/tutorial/bigger-applications.md

@ -17,16 +17,16 @@ Flask 出身であれば、Flask の Blueprint に相当します。
```
.
├── app
   ├── __init__.py
   ├── main.py
   ├── dependencies.py
   └── routers
   │ ├── __init__.py
   │ ├── items.py
   │ └── users.py
   └── internal
   ├── __init__.py
   └── admin.py
├── __init__.py
├── main.py
├── dependencies.py
└── routers
│ ├── __init__.py
│ ├── items.py
│ └── users.py
└── internal
├── __init__.py
└── admin.py
```
/// tip | 豆知識

2
docs/ja/docs/tutorial/debugging.md

@ -99,7 +99,7 @@ from myapp import app
---
Pycharmを使用する場合、次のことが可能です:
PyCharmを使用する場合、次のことが可能です:
* 「実行」メニューをオープン。
* オプション「デバッグ...」を選択。

1
docs/ja/docs/tutorial/dependencies/dependencies-with-yield.md

@ -234,6 +234,7 @@ participant operation as Path Operation
`yield`を持つ依存関係は、さまざまなユースケースをカバーし、いくつかの問題を修正するために、時間とともに進化してきました。
FastAPIの異なるバージョンで何が変わったのかを知りたい場合は、上級ガイドの[上級の依存関係 - `yield`、`HTTPException`、`except`、バックグラウンドタスクを持つ依存関係](../../advanced/advanced-dependencies.md#dependencies-with-yield-httpexception-except-and-background-tasks)で詳しく読めます。
## コンテキストマネージャ { #context-managers }
### 「コンテキストマネージャ」とは { #what-are-context-managers }

2
docs/ja/docs/tutorial/extra-models.md

@ -208,4 +208,4 @@ some_variable: PlaneItem | CarItem
複数のPydanticモデルを使用し、ケースごとに自由に継承します。
エンティティが異なる「状態」を持たなければならない場合は、エンティティごとに単一のデータモデルを持つ必要はありません。`password`、`password_hash`、パスワードなしを含む状態を持つユーザー「エンティティ」の場合と同様です。
エンティティが異なる「状態」を持たなければならない場合は、エンティティごとに単一のデータモデルを持つ必要はありません。`password`、`password_hash`、パスワードなしを含む状態を持つ**ユーザー**「エンティティ」の場合と同様です。

5
docs/ja/docs/tutorial/first-steps.md

@ -78,7 +78,7 @@ INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
次に、[http://127.0.0.1:8000/redoc](http://127.0.0.1:8000/redoc)にアクセスします。
先ほどとは異なる、自動生成された対話的APIドキュメントが表示されます([ReDoc](https://github.com/Rebilly/ReDoc)によって提供):
代替の自動生成ドキュメントが表示されます([ReDoc](https://github.com/Rebilly/ReDoc)によって提供):
![ReDoc](https://fastapi.tiangolo.com/img/index/index-02-redoc-simple.png)
@ -104,7 +104,7 @@ INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
#### OpenAPIおよびJSONスキーマ { #openapi-and-json-schema }
OpenAPIはAPIのためのAPIスキーマを定義します。そして、そのスキーマは**JSONデータスキーマ**の標準規格である**JSON Schema**を利用するAPIによって送受されるデータの定義(または「スキーマ」)を含んでいます。
OpenAPIはAPIのためのAPIスキーマを定義します。そして、そのスキーマには、JSONデータスキーマの標準である**JSON Schema**を使用して、APIによって送受信されるデータの定義(または「スキーマ」)が含まれます。
#### `openapi.json`を確認 { #check-the-openapi-json }
@ -239,6 +239,7 @@ CLIはFastAPIアプリケーションを自動検出してクラウドにデプ
### Step 2: `FastAPI`の「インスタンス」を生成 { #step-2-create-a-fastapi-instance }
{* ../../docs_src/first_steps/tutorial001_py310.py hl[3] *}
ここで、`app`変数が`FastAPI`クラスの「インスタンス」になります。
これが、すべてのAPIを作成するための主要なポイントになります。

6
docs/ja/docs/tutorial/metadata.md

@ -11,10 +11,10 @@ OpenAPI仕様および自動APIドキュメントUIで使用される次のフ
| `title` | `str` | APIのタイトルです。 |
| `summary` | `str` | APIの短い要約です。 <small>OpenAPI 3.1.0、FastAPI 0.99.0 以降で利用できます。</small> |
| `description` | `str` | APIの短い説明です。Markdownを使用できます。 |
| `version` | `string` | APIのバージョンです。これはOpenAPIのバージョンではなく、あなた自身のアプリケーションのバージョンです。たとえば `2.5.0` です。 |
| `version` | `str` | APIのバージョンです。これはOpenAPIのバージョンではなく、あなた自身のアプリケーションのバージョンです。たとえば `2.5.0` です。 |
| `terms_of_service` | `str` | APIの利用規約へのURLです。指定する場合、URLである必要があります。 |
| `contact` | `dict` | 公開されるAPIの連絡先情報です。複数のフィールドを含められます。 <details><summary><code>contact</code> fields</summary><table><thead><tr><th>Parameter</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code>name</code></td><td><code>str</code></td><td>連絡先の個人/組織を識別する名前です。</td></tr><tr><td><code>url</code></td><td><code>str</code></td><td>連絡先情報を指すURLです。URL形式である必要があります。</td></tr><tr><td><code>email</code></td><td><code>str</code></td><td>連絡先の個人/組織のメールアドレスです。メールアドレス形式である必要があります。</td></tr></tbody></table></details> |
| `license_info` | `dict` | 公開されるAPIのライセンス情報です。複数のフィールドを含められます。 <details><summary><code>license_info</code> fields</summary><table><thead><tr><th>Parameter</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code>name</code></td><td><code>str</code></td><td><strong>必須</strong><code>license_info</code> が設定されている場合)。APIに使用されるライセンス名です。</td></tr><tr><td><code>identifier</code></td><td><code>str</code></td><td>APIの [SPDX](https://spdx.org/licenses/) ライセンス式です。<code>identifier</code> フィールドは <code>url</code> フィールドと同時に指定できません。 <small>OpenAPI 3.1.0、FastAPI 0.99.0 以降で利用できます。</small></td></tr><tr><td><code>url</code></td><td><code>str</code></td><td>APIに使用されるライセンスへのURLです。URL形式である必要があります。</td></tr></tbody></table></details> |
| `contact` | `dict` | 公開されるAPIの連絡先情報です。複数のフィールドを含められます。 <details><summary><code>contact</code> のフィールド</summary><table><thead><tr><th>パラメータ</th><th></th><th>説明</th></tr></thead><tbody><tr><td><code>name</code></td><td><code>str</code></td><td>連絡先の個人/組織を識別する名前です。</td></tr><tr><td><code>url</code></td><td><code>str</code></td><td>連絡先情報を指すURLです。URL形式である必要があります。</td></tr><tr><td><code>email</code></td><td><code>str</code></td><td>連絡先の個人/組織のメールアドレスです。メールアドレス形式である必要があります。</td></tr></tbody></table></details> |
| `license_info` | `dict` | 公開されるAPIのライセンス情報です。複数のフィールドを含められます。 <details><summary><code>license_info</code> のフィールド</summary><table><thead><tr><th>パラメータ</th><th></th><th>説明</th></tr></thead><tbody><tr><td><code>name</code></td><td><code>str</code></td><td><strong>必須</strong><code>license_info</code> が設定されている場合)。APIに使用されるライセンス名です。</td></tr><tr><td><code>identifier</code></td><td><code>str</code></td><td>APIの [SPDX](https://spdx.org/licenses/) ライセンス式です。<code>identifier</code> フィールドは <code>url</code> フィールドと同時に指定できません。 <small>OpenAPI 3.1.0、FastAPI 0.99.0 以降で利用できます。</small></td></tr><tr><td><code>url</code></td><td><code>str</code></td><td>APIに使用されるライセンスへのURLです。URL形式である必要があります。</td></tr></tbody></table></details> |
以下のように設定できます:

4
docs/ja/docs/tutorial/query-params-str-validations.md

@ -41,7 +41,7 @@ FastAPI はバージョン 0.95.0 で `Annotated` のサポートを追加し(
## `q` パラメータの型で `Annotated` を使う { #use-annotated-in-the-type-for-the-q-parameter }
以前、[Python Types Intro](../python-types.md#type-hints-with-metadata-annotations) で `Annotated` を使ってパラメータにメタデータを追加できると説明したことを覚えていますか?
以前、[Python 型入門](../python-types.md#type-hints-with-metadata-annotations) で `Annotated` を使ってパラメータにメタデータを追加できると説明したことを覚えていますか?
いよいよ FastAPI で使うときです。 🚀
@ -242,7 +242,7 @@ q: Annotated[str | None, Query(min_length=3)] = None
http://localhost:8000/items/?q=foo&q=bar
```
*path operation function* 内の *function parameter* `q` で、複数の `q` *query parameters'* 値(`foo` と `bar`)を Python の `list` として受け取ります。
*path operation function* 内の *function parameter* `q` で、複数の `q` *クエリパラメータ*の値(`foo` と `bar`)を Python の `list` として受け取ります。
そのため、このURLのレスポンスは以下のようになります:

2
docs/ja/docs/tutorial/request-forms.md

@ -70,4 +70,4 @@ HTMLフォーム(`<form></form>`)がサーバにデータを送信する方
## まとめ { #recap }
フォームデータの入力パラメータを宣言するには、`Form`を使用す
フォームデータの入力パラメータを宣言するには、`Form`を使用します。

4
docs/ja/docs/tutorial/security/first-steps.md

@ -109,7 +109,7 @@ OAuth2は、バックエンドやAPIがユーザーを認証するサーバー
* ユーザーがフロントエンドでクリックして、フロントエンドのWebアプリの別のセクションに移動します。
* フロントエンドはAPIからさらにデータを取得する必要があります。
* しかし、特定のエンドポイントの認証が必要です。
* したがって、APIで認証するため、HTTPヘッダー`Authorization`に`Bearer`の文字列とトークンを加えた値を送信します。
* したがって、APIで認証するため、HTTPヘッダー`Authorization`に`Bearer `の文字列とトークンを加えた値を送信します。
* トークンに`foobar`が含まれている場合、`Authorization`ヘッダーの内容は次のようになります: `Bearer foobar`
## **FastAPI**の`OAuth2PasswordBearer` { #fastapis-oauth2passwordbearer }
@ -178,7 +178,7 @@ oauth2_scheme(some, parameters)
/// note | 技術詳細
**FastAPI**は、`OAuth2PasswordBearer` クラス (依存関係で宣言されている) を使用してOpenAPIのセキュリティスキームを定義できることを知っています。これは`fastapi.security.oauth2.OAuth2`、`fastapi.security.base.SecurityBase`を継承しているからです。
**FastAPI**は、`OAuth2PasswordBearer` クラス (依存関係で宣言されている) を使用してOpenAPIのセキュリティスキームを定義できることを知っています。これは、このクラスが`fastapi.security.oauth2.OAuth2`を継承しておりさらにそれが`fastapi.security.base.SecurityBase`を継承しているからです。
OpenAPIと統合するセキュリティユーティリティ (および自動APIドキュメント) はすべて`SecurityBase`を継承しています。それにより、**FastAPI**はそれらをOpenAPIに統合する方法を知ることができます。

2
docs/ja/docs/tutorial/security/get-current-user.md

@ -14,7 +14,7 @@
ボディを宣言するのにPydanticを使用するのと同じやり方で、Pydanticを別のどんなところでも使うことができます:
{* ../../docs_src/security/tutorial002_an_py310.py hl[5,12:6] *}
{* ../../docs_src/security/tutorial002_an_py310.py hl[5,12:16] *}
## 依存関係 `get_current_user` を作成 { #create-a-get-current-user-dependency }

8
docs/ja/docs/tutorial/security/oauth2-jwt.md

@ -1,6 +1,6 @@
# パスワード(およびハッシュ化)によるOAuth2、JWTトークンによるBearer { #oauth2-with-password-and-hashing-bearer-with-jwt-tokens }
これでセキュリティの流れが全てわかったので、<abbr title="JSON Web Tokens - JSON Web Token">JWT</abbr>トークンと安全なパスワードのハッシュ化を使用して、実際にアプリケーションを安全にしてみましょう。
これでセキュリティの流れが全てわかったので、<abbr title="JSON Web Tokens - JSON Webトークン">JWT</abbr>トークンと安全なパスワードのハッシュ化を使用して、実際にアプリケーションを安全にしてみましょう。
このコードは、アプリケーションで実際に使用したり、パスワードハッシュをデータベースに保存するといった用途に利用できます。
@ -46,7 +46,7 @@ $ pip install pyjwt
RSAやECDSAのようなデジタル署名アルゴリズムを使用する予定がある場合は、cryptographyライブラリの依存関係`pyjwt[crypto]`をインストールしてください。
詳細は[PyJWT Installation docs](https://pyjwt.readthedocs.io/en/latest/installation.html)で確認できます。
詳細は[PyJWT インストールに関するドキュメント](https://pyjwt.readthedocs.io/en/latest/installation.html)で確認できます。
///
@ -120,7 +120,7 @@ pwdlibはbcryptハッシュアルゴリズムもサポートしていますが
`authenticate_user` がデータベースに存在しないユーザー名で呼び出された場合でも、ダミーのハッシュを使って `verify_password` を実行します。
これにより、ユーザー名が有効かどうかに関わらずエンドポイントの応答時間がおおよそ同じになり、既存のユーザー名を列挙するために悪用されうる「タイミング攻撃」を防止できます。
これにより、ユーザー名が有効かどうかに関わらずエンドポイントの応答時間がおおよそ同じになり、既存のユーザー名を列挙するために悪用されうる**タイミング攻撃**を防止できます。
/// note | 備考
@ -215,7 +215,7 @@ Password: `secret`
/// tip | 豆知識
コードのどこにも平文のパスワード"`secret`"はなく、ハッシュ化されたものしかないことを確認してください。
コードのどこにも平文のパスワード「`secret`」はなく、ハッシュ化されたものしかないことを確認してください。
///

16
docs/ja/docs/tutorial/security/simple-oauth2.md

@ -14,7 +14,7 @@ OAuth2 では、「password flow」(ここで使用するフロー)を使う
また、データベースのモデルでは任意の別名を使って構いません。
しかし、ログイン用の path operation では、仕様との互換性を保つ(たとえば組み込みのAPIドキュメントシステムを使えるようにする)ために、これらの名前を使う必要があります。
しかし、ログイン用の *path operation* では、仕様との互換性を保つ(たとえば組み込みのAPIドキュメントシステムを使えるようにする)ために、これらの名前を使う必要があります。
また、仕様では `username``password` はフォームデータとして送らなければならない(つまり、ここではJSONは使わない)ことも定められています。
@ -50,7 +50,7 @@ OAuth2 にとっては単なる文字列です。
### `OAuth2PasswordRequestForm` { #oauth2passwordrequestform }
まず、`OAuth2PasswordRequestForm` をインポートし、`/token` の path operation に `Depends` で依存関係として使います:
まず、`OAuth2PasswordRequestForm` をインポートし、`/token` の *path operation*`Depends` で依存関係として使います:
{* ../../docs_src/security/tutorial003_an_py310.py hl[4,78] *}
@ -132,7 +132,7 @@ OAuth2 の仕様では、固定値 `password` を持つフィールド `grant_ty
`UserInDB(**user_dict)` は次を意味します:
`user_dict` のキーと値を、そのままキーワード引数として渡します。つまり次と同等です:
*`user_dict` のキーと値を、そのままキーワード引数として渡します。つまり次と同等です:*
```Python
UserInDB(
@ -146,7 +146,7 @@ UserInDB(
/// note | 備考
`**user_dict` のより完全な解説は、[**追加モデル**のドキュメント](../extra-models.md#about-user-in-dict)を参照してください。
`**user_dict` のより完全な解説は、[**追加モデル**のドキュメント](../extra-models.md#about-user-in-model-dump)を参照してください。
///
@ -188,7 +188,7 @@ UserInDB(
アクティブなユーザーの場合にのみ `current_user` を取得したいとします。
そこで、`get_current_active_user` を依存関係として利用する追加の依存関係 `get_current_active_user` を作成します。
そこで、今度は `get_current_user` を依存関係として利用する追加の依存関係 `get_current_active_user` を作成します。
これら2つの依存関係は、ユーザーが存在しない、または非アクティブである場合に、HTTPエラーを返すだけです。
@ -236,7 +236,7 @@ Password: `secret`
### 自分のユーザーデータを取得 { #get-your-own-user-data }
`GET` の path `/users/me` を使います。
今度は path `/users/me` で operation `GET` を使います。
次のようなユーザーデータが取得できます:
@ -268,7 +268,7 @@ User: `alice`
Password: `secret2`
そして `GET` の path `/users/me` を使います。
そして path `/users/me` で operation `GET` を使ってみます。
次のような「Inactive user」エラーになります:
@ -284,6 +284,6 @@ Password: `secret2`
これらの道具を使えば、任意のデータベース、任意のユーザー/データモデルと互換性のあるセキュリティシステムを構築できます。
ただし、実際にはまだ「安全」ではありません
唯一欠けている点は、実際にはまだ「安全」ではないことです
次の章では、安全なパスワードハッシュライブラリと <abbr title="JSON Web Tokens - JSON Web Token">JWT</abbr> トークンの使い方を見ていきます。

8
docs/ja/docs/tutorial/static-files.md

@ -2,6 +2,14 @@
`StaticFiles` を使用して、ディレクトリから静的ファイルを自動的に提供できます。
/// tip | 豆知識
フロントエンドをホストする必要がある場合は、代わりに `app.frontend()` を使用してください。詳しくは [フロントエンド](frontend.md) を読んでください。
`app.frontend()` は内部で `StaticFiles` を使用しており、client-side routing の処理など、フロントエンド向けの追加の利点がいくつかあります。
///
## `StaticFiles` の使用 { #use-staticfiles }
* `StaticFiles` をインポート。

8
docs/ja/docs/tutorial/testing.md

@ -22,7 +22,7 @@ $ pip install httpx
`TestClient` をインポートします。
`TestClient` を作成し、**FastAPI** に渡します。
**FastAPI** アプリケーションを渡して `TestClient` を作成します。
`test_` から始まる名前の関数を作成します (これは `pytest` の標準的なコンベンションです)。
@ -52,7 +52,7 @@ $ pip install httpx
/// tip | 豆知識
FastAPIアプリケーションへのリクエストの送信とは別に、テストで `async` 関数 (非同期データベース関数など) を呼び出したい場合は、高度なチュートリアルの[Async Tests](../advanced/async-tests.md) を参照してください。
FastAPIアプリケーションへのリクエストの送信とは別に、テストで `async` 関数 (非同期データベース関数など) を呼び出したい場合は、高度なチュートリアルの[非同期テスト](../advanced/async-tests.md) を参照してください。
///
@ -64,7 +64,7 @@ FastAPIアプリケーションへのリクエストの送信とは別に、テ
### **FastAPI** アプリファイル { #fastapi-app-file }
[Bigger Applications](bigger-applications.md) で説明されている、次のようなファイル構成があるとします:
[大規模なアプリケーション](bigger-applications.md) で説明されている、次のようなファイル構成があるとします:
```
.
@ -113,7 +113,7 @@ FastAPIアプリケーションへのリクエストの送信とは別に、テ
│   └── test_main.py
```
ここで、**FastAPI** アプリがある `main.py` ファイルには、他の path operation があります。
ここで、**FastAPI** アプリがある `main.py` ファイルには、他の **path operations**いくつかあります。
エラーを返す可能性のある `GET` オペレーションがあります。

Loading…
Cancel
Save