Browse Source

🌐 Update translations for ja (update-outdated)

pull/15171/head
github-actions[bot] 4 months ago
committed by Yurii Motov
parent
commit
a82fabdda4
  1. 16
      docs/ja/docs/_llm-test.md
  2. 58
      docs/ja/docs/alternatives.md
  3. 24
      docs/ja/docs/async.md
  4. 2
      docs/ja/docs/benchmarks.md
  5. 46
      docs/ja/docs/environment-variables.md
  6. 71
      docs/ja/docs/fastapi-cli.md
  7. 30
      docs/ja/docs/features.md
  8. 60
      docs/ja/docs/help-fastapi.md
  9. 12
      docs/ja/docs/history-design-future.md
  10. 26
      docs/ja/docs/index.md
  11. 2
      docs/ja/docs/project-generation.md
  12. 8
      docs/ja/docs/python-types.md
  13. 6
      docs/ja/docs/tutorial/background-tasks.md
  14. 69
      docs/ja/docs/tutorial/bigger-applications.md
  15. 2
      docs/ja/docs/tutorial/body-nested-models.md
  16. 8
      docs/ja/docs/tutorial/body-updates.md
  17. 12
      docs/ja/docs/tutorial/body.md
  18. 8
      docs/ja/docs/tutorial/cors.md
  19. 4
      docs/ja/docs/tutorial/debugging.md
  20. 4
      docs/ja/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md
  21. 20
      docs/ja/docs/tutorial/dependencies/dependencies-with-yield.md
  22. 6
      docs/ja/docs/tutorial/dependencies/global-dependencies.md
  23. 4
      docs/ja/docs/tutorial/dependencies/index.md
  24. 4
      docs/ja/docs/tutorial/encoder.md
  25. 4
      docs/ja/docs/tutorial/extra-data-types.md
  26. 4
      docs/ja/docs/tutorial/extra-models.md
  27. 77
      docs/ja/docs/tutorial/first-steps.md
  28. 2
      docs/ja/docs/tutorial/handling-errors.md
  29. 12
      docs/ja/docs/tutorial/index.md
  30. 2
      docs/ja/docs/tutorial/metadata.md
  31. 10
      docs/ja/docs/tutorial/middleware.md
  32. 2
      docs/ja/docs/tutorial/path-operation-configuration.md
  33. 4
      docs/ja/docs/tutorial/path-params-numeric-validations.md
  34. 16
      docs/ja/docs/tutorial/path-params.md
  35. 12
      docs/ja/docs/tutorial/query-params-str-validations.md
  36. 12
      docs/ja/docs/tutorial/request-files.md
  37. 6
      docs/ja/docs/tutorial/request-form-models.md
  38. 4
      docs/ja/docs/tutorial/request-forms-and-files.md
  39. 6
      docs/ja/docs/tutorial/request-forms.md
  40. 9
      docs/ja/docs/tutorial/response-model.md
  41. 6
      docs/ja/docs/tutorial/response-status-code.md
  42. 8
      docs/ja/docs/tutorial/schema-extra-example.md
  43. 10
      docs/ja/docs/tutorial/security/first-steps.md
  44. 10
      docs/ja/docs/tutorial/security/oauth2-jwt.md
  45. 4
      docs/ja/docs/tutorial/security/simple-oauth2.md
  46. 22
      docs/ja/docs/tutorial/sql-databases.md
  47. 4
      docs/ja/docs/tutorial/static-files.md
  48. 28
      docs/ja/docs/tutorial/testing.md
  49. 30
      docs/ja/docs/virtual-environments.md

16
docs/ja/docs/_llm-test.md

@ -11,7 +11,7 @@
* 翻訳が問題ないか確認します。 * 翻訳が問題ないか確認します。
* 必要であれば、言語固有プロンプト、general プロンプト、または英語ドキュメントを改善します。 * 必要であれば、言語固有プロンプト、general プロンプト、または英語ドキュメントを改善します。
* その後、翻訳に残っている問題を手動で修正し、良い翻訳にします。 * その後、翻訳に残っている問題を手動で修正し、良い翻訳にします。
* 良い翻訳を用意した状態でもう一度翻訳します。理想的な結果は、LLM が翻訳に一切変更を加えないことです。つまり general プロンプトと言語固有プロンプトが最良であることを意味します(時々いくつかランダムに見える変更を行うことがあります。理由は <a href="https://doublespeak.chat/#/handbook#deterministic-output" class="external-link" target="_blank">LLM は決定論的アルゴリズムではない</a> ためです)。 * 良い翻訳を用意した状態でもう一度翻訳します。理想的な結果は、LLM が翻訳に一切変更を加えないことです。つまり general プロンプトと言語固有プロンプトが最良であることを意味します(時々いくつかランダムに見える変更を行うことがあります。理由は [LLM は決定論的アルゴリズムではない](https://doublespeak.chat/#/handbook#deterministic-output) ためです)。
テスト内容: テスト内容:
@ -95,7 +95,7 @@ $ <font color="#4E9A06">fastapi</font> run <u style="text-decoration-style:solid
...さらに別のコンソールのコード例です... ...さらに別のコンソールのコード例です...
```console ```console
// ディレクトリ "code" を作成 // ディレクトリ "Code" を作成
$ mkdir code $ mkdir code
// そのディレクトリに移動 // そのディレクトリに移動
$ cd code $ cd code
@ -169,15 +169,15 @@ works(foo="bar") # これは動作します 🎉
リンクのテキストは翻訳し、リンク先のアドレスは変更しないでください: リンクのテキストは翻訳し、リンク先のアドレスは変更しないでください:
* [上の見出しへのリンク](#code-snippets) * [上の見出しへのリンク](#code-snippets)
* [内部リンク](index.md#installation){.internal-link target=_blank} * [内部リンク](index.md#installation)
* <a href="https://sqlmodel.tiangolo.com/" class="external-link" target="_blank">外部リンク</a> * [外部リンク](https://sqlmodel.tiangolo.com/)
* <a href="https://fastapi.tiangolo.com/css/styles.css" class="external-link" target="_blank">スタイルへのリンク</a> * [スタイルへのリンク](https://fastapi.tiangolo.com/css/styles.css)
* <a href="https://fastapi.tiangolo.com/js/logic.js" class="external-link" target="_blank">スクリプトへのリンク</a> * [スクリプトへのリンク](https://fastapi.tiangolo.com/js/logic.js)
* <a href="https://fastapi.tiangolo.com/img/foo.jpg" class="external-link" target="_blank">画像へのリンク</a> * [画像へのリンク](https://fastapi.tiangolo.com/img/foo.jpg)
リンクのテキストは翻訳し、リンク先のアドレスは翻訳版を指すようにしてください: リンクのテキストは翻訳し、リンク先のアドレスは翻訳版を指すようにしてください:
* <a href="https://fastapi.tiangolo.com/ja/" class="external-link" target="_blank">FastAPI リンク</a> * [FastAPI リンク](https://fastapi.tiangolo.com/ja/)
//// ////

58
docs/ja/docs/alternatives.md

@ -14,7 +14,7 @@
## 以前のツール { #previous-tools } ## 以前のツール { #previous-tools }
### <a href="https://www.djangoproject.com/" class="external-link" target="_blank">Django</a> { #django } ### [Django](https://www.djangoproject.com/) { #django }
Pythonのフレームワークの中で最もポピュラーで、広く信頼されています。Instagramのようなシステムの構築に使われています。 Pythonのフレームワークの中で最もポピュラーで、広く信頼されています。Instagramのようなシステムの構築に使われています。
@ -22,7 +22,7 @@ Pythonのフレームワークの中で最もポピュラーで、広く信頼
バックエンドでHTMLを生成するために作られたものであり、現代的なフロントエンド (ReactやVue.js、Angularなど) や、他のシステム (<abbr title="Internet of Things - モノのインターネット">IoT</abbr>デバイスなど) と通信するAPIを構築するために作られたものではありません。 バックエンドでHTMLを生成するために作られたものであり、現代的なフロントエンド (ReactやVue.js、Angularなど) や、他のシステム (<abbr title="Internet of Things - モノのインターネット">IoT</abbr>デバイスなど) と通信するAPIを構築するために作られたものではありません。
### <a href="https://www.django-rest-framework.org/" class="external-link" target="_blank">Django REST Framework</a> { #django-rest-framework } ### [Django REST Framework](https://www.django-rest-framework.org/) { #django-rest-framework }
Django REST Frameworkは、Djangoを下敷きにしてWeb APIを構築する柔軟なツールキットとして、APIの機能を向上させるために作られました。 Django REST Frameworkは、Djangoを下敷きにしてWeb APIを構築する柔軟なツールキットとして、APIの機能を向上させるために作られました。
@ -42,7 +42,7 @@ Django REST Framework は Tom Christie によって作成されました。Starl
/// ///
### <a href="https://flask.palletsprojects.com" class="external-link" target="_blank">Flask</a> { #flask } ### [Flask](https://flask.palletsprojects.com) { #flask }
Flask は「マイクロフレームワーク」であり、データベースとの統合のようなDjangoがデフォルトで持つ多くの機能は含まれていません。 Flask は「マイクロフレームワーク」であり、データベースとの統合のようなDjangoがデフォルトで持つ多くの機能は含まれていません。
@ -64,7 +64,7 @@ Flaskのシンプルさを考えると、APIを構築するのに適している
/// ///
### <a href="https://requests.readthedocs.io" class="external-link" target="_blank">Requests</a> { #requests } ### [Requests](https://requests.readthedocs.io) { #requests }
**FastAPI**は実際には**Requests**の代替ではありません。それらのスコープは大きく異なります。 **FastAPI**は実際には**Requests**の代替ではありません。それらのスコープは大きく異なります。
@ -106,7 +106,7 @@ def read_url():
/// ///
### <a href="https://swagger.io/" class="external-link" target="_blank">Swagger</a> / <a href="https://github.com/OAI/OpenAPI-Specification/" class="external-link" target="_blank">OpenAPI</a> { #swagger-openapi } ### [Swagger](https://swagger.io/) / [OpenAPI](https://github.com/OAI/OpenAPI-Specification/) { #swagger-openapi }
私がDjango REST Frameworkに求めていた主な機能は、APIの自動的なドキュメント生成でした。 私がDjango REST Frameworkに求めていた主な機能は、APIの自動的なドキュメント生成でした。
@ -124,8 +124,8 @@ def read_url():
そして、標準に基づくユーザーインターフェースツールを統合しています。 そして、標準に基づくユーザーインターフェースツールを統合しています。
* <a href="https://github.com/swagger-api/swagger-ui" class="external-link" target="_blank">Swagger UI</a> * [Swagger UI](https://github.com/swagger-api/swagger-ui)
* <a href="https://github.com/Rebilly/ReDoc" class="external-link" target="_blank">ReDoc</a> * [ReDoc](https://github.com/Rebilly/ReDoc)
この二つは人気で安定したものとして選択されましたが、少し検索してみると、 (**FastAPI**と同時に使用できる) OpenAPIのための多くの代替となるツールを見つけることができます。 この二つは人気で安定したものとして選択されましたが、少し検索してみると、 (**FastAPI**と同時に使用できる) OpenAPIのための多くの代替となるツールを見つけることができます。
@ -135,7 +135,7 @@ def read_url():
いくつかのFlask RESTフレームワークがありますが、それらを調査してみたところ、多くのものが不適切な問題が残ったまま、中断されたり放置されていることがわかりました。 いくつかのFlask RESTフレームワークがありますが、それらを調査してみたところ、多くのものが不適切な問題が残ったまま、中断されたり放置されていることがわかりました。
### <a href="https://marshmallow.readthedocs.io/en/stable/" class="external-link" target="_blank">Marshmallow</a> { #marshmallow } ### [Marshmallow](https://marshmallow.readthedocs.io/en/stable/) { #marshmallow }
APIシステムで必要とされる主な機能の一つに、コード (Python) からデータを取り出して、ネットワークを介して送れるものに変換するデータの「<dfn title="別名: marshalling、変換">シリアライゼーション</dfn>」があります。例えば、データベースのデータを含むオブジェクトをJSONオブジェクトに変換したり、`datetime` オブジェクトを文字列に変換するなどです。 APIシステムで必要とされる主な機能の一つに、コード (Python) からデータを取り出して、ネットワークを介して送れるものに変換するデータの「<dfn title="別名: marshalling、変換">シリアライゼーション</dfn>」があります。例えば、データベースのデータを含むオブジェクトをJSONオブジェクトに変換したり、`datetime` オブジェクトを文字列に変換するなどです。
@ -153,7 +153,7 @@ APIが必要とするもう一つの大きな機能はデータのバリデー
/// ///
### <a href="https://webargs.readthedocs.io/en/latest/" class="external-link" target="_blank">Webargs</a> { #webargs } ### [Webargs](https://webargs.readthedocs.io/en/latest/) { #webargs }
APIに求められる他の大きな機能として、<dfn title="Pythonデータへの読み込みと変換">受信したリクエストデータのパース</dfn>があります。 APIに求められる他の大きな機能として、<dfn title="Pythonデータへの読み込みと変換">受信したリクエストデータのパース</dfn>があります。
@ -175,7 +175,7 @@ Webargsは、Marshmallowと同じ開発者により作られました。
/// ///
### <a href="https://apispec.readthedocs.io/en/stable/" class="external-link" target="_blank">APISpec</a> { #apispec } ### [APISpec](https://apispec.readthedocs.io/en/stable/) { #apispec }
MarshmallowとWebargsはバリデーション、パース、シリアライゼーションをプラグインとして提供しています。 MarshmallowとWebargsはバリデーション、パース、シリアライゼーションをプラグインとして提供しています。
@ -205,7 +205,7 @@ OpenAPIという、APIについてのオープンな標準をサポートして
/// ///
### <a href="https://flask-apispec.readthedocs.io/en/latest/" class="external-link" target="_blank">Flask-apispec</a> { #flask-apispec } ### [Flask-apispec](https://flask-apispec.readthedocs.io/en/latest/) { #flask-apispec }
Webargs、Marshmallow、APISpecを連携させたFlaskプラグインです。 Webargs、Marshmallow、APISpecを連携させたFlaskプラグインです。
@ -219,11 +219,11 @@ Flask、Flask-apispec、Marshmallow、Webargsの組み合わせは、**FastAPI**
これを使うことで、いくつかのFlaskフルスタックジェネレータを作成することになりました。これらは私 (といくつかの外部のチーム) が今まで使ってきたメインのスタックです。 これを使うことで、いくつかのFlaskフルスタックジェネレータを作成することになりました。これらは私 (といくつかの外部のチーム) が今まで使ってきたメインのスタックです。
* <a href="https://github.com/tiangolo/full-stack" class="external-link" target="_blank">https://github.com/tiangolo/full-stack</a> * [https://github.com/tiangolo/full-stack](https://github.com/tiangolo/full-stack)
* <a href="https://github.com/tiangolo/full-stack-flask-couchbase" class="external-link" target="_blank">https://github.com/tiangolo/full-stack-flask-couchbase</a> * [https://github.com/tiangolo/full-stack-flask-couchbase](https://github.com/tiangolo/full-stack-flask-couchbase)
* <a href="https://github.com/tiangolo/full-stack-flask-couchdb" class="external-link" target="_blank">https://github.com/tiangolo/full-stack-flask-couchdb</a> * [https://github.com/tiangolo/full-stack-flask-couchdb](https://github.com/tiangolo/full-stack-flask-couchdb)
そして、これらのフルスタックジェネレーターは、[**FastAPI** Project Generators](project-generation.md){.internal-link target=_blank}の元となっていました。 そして、これらのフルスタックジェネレーターは、[**FastAPI** Project Generators](project-generation.md)の元となっていました。
/// info | 情報 /// info | 情報
@ -237,7 +237,7 @@ Flask-apispecはMarshmallowと同じ開発者により作成されました。
/// ///
### <a href="https://nestjs.com/" class="external-link" target="_blank">NestJS</a> (と<a href="https://angular.io/" class="external-link" target="_blank">Angular</a>) { #nestjs-and-angular } ### [NestJS](https://nestjs.com/) (と[Angular](https://angular.io/)) { #nestjs-and-angular }
NestJSはAngularにインスパイアされたJavaScript (TypeScript) NodeJSフレームワークで、Pythonですらありません。 NestJSはAngularにインスパイアされたJavaScript (TypeScript) NodeJSフレームワークで、Pythonですらありません。
@ -259,13 +259,13 @@ Angular 2にインスピレーションを受けた、統合された依存性
/// ///
### <a href="https://sanic.readthedocs.io/en/latest/" class="external-link" target="_blank">Sanic</a> { #sanic } ### [Sanic](https://sanic.readthedocs.io/en/latest/) { #sanic }
`asyncio`に基づいた、Pythonのフレームワークの中でも非常に高速なものの一つです。Flaskと非常に似た作りになっています。 `asyncio`に基づいた、Pythonのフレームワークの中でも非常に高速なものの一つです。Flaskと非常に似た作りになっています。
/// note | 技術詳細 /// note | 技術詳細
Pythonの`asyncio`ループの代わりに、<a href="https://github.com/MagicStack/uvloop" class="external-link" target="_blank">`uvloop`</a>が利用されています。それにより、非常に高速です。 Pythonの`asyncio`ループの代わりに、[`uvloop`](https://github.com/MagicStack/uvloop)が利用されています。それにより、非常に高速です。
`Uvicorn`と`Starlette`に明らかなインスピレーションを与えており、それらは現在オープンなベンチマークにおいてSanicより高速です。 `Uvicorn`と`Starlette`に明らかなインスピレーションを与えており、それらは現在オープンなベンチマークにおいてSanicより高速です。
@ -279,7 +279,7 @@ Pythonの`asyncio`ループの代わりに、<a href="https://github.com/MagicSt
/// ///
### <a href="https://falconframework.org/" class="external-link" target="_blank">Falcon</a> { #falcon } ### [Falcon](https://falconframework.org/) { #falcon }
Falconはもう一つの高性能Pythonフレームワークで、ミニマムに設計されており、Hugのような他のフレームワークの基盤として動作します。 Falconはもう一つの高性能Pythonフレームワークで、ミニマムに設計されており、Hugのような他のフレームワークの基盤として動作します。
@ -297,7 +297,7 @@ Hug (HugはFalconをベースにしています) と一緒に、**FastAPI**が`r
/// ///
### <a href="https://moltenframework.com/" class="external-link" target="_blank">Molten</a> { #molten } ### [Molten](https://moltenframework.com/) { #molten }
**FastAPI**を構築する最初の段階でMoltenを発見しました。そして、それは非常に似たようなアイデアを持っています。 **FastAPI**を構築する最初の段階でMoltenを発見しました。そして、それは非常に似たようなアイデアを持っています。
@ -321,7 +321,7 @@ Pydanticのようなデータのバリデーション、シリアライゼーシ
/// ///
### <a href="https://github.com/hugapi/hug" class="external-link" target="_blank">Hug</a> { #hug } ### [Hug](https://github.com/hugapi/hug) { #hug }
Hugは、Pythonの型ヒントを利用してAPIパラメータの型宣言を実装した最初のフレームワークの1つです。これは素晴らしいアイデアで、他のツールが同じことをするきっかけとなりました。 Hugは、Pythonの型ヒントを利用してAPIパラメータの型宣言を実装した最初のフレームワークの1つです。これは素晴らしいアイデアで、他のツールが同じことをするきっかけとなりました。
@ -337,7 +337,7 @@ OpenAPIやJSON Schemaのような標準に基づいたものではありませ
/// info | 情報 /// info | 情報
HugはTimothy Crosleyにより作成されました。彼は<a href="https://github.com/timothycrosley/isort" class="external-link" target="_blank">`isort`</a>など、Pythonのファイル内のインポートの並び替えを自動的におこうなう素晴らしいツールの開発者です。 HugはTimothy Crosleyにより作成されました。彼は[`isort`](https://github.com/timothycrosley/isort)など、Pythonのファイル内のインポートの並び替えを自動的におこうなう素晴らしいツールの開発者です。
/// ///
@ -351,7 +351,7 @@ Hugは、**FastAPI**がヘッダーやクッキーを設定するために関数
/// ///
### <a href="https://github.com/encode/apistar" class="external-link" target="_blank">APIStar</a> (<= 0.5) { #apistar-0-5 } ### [APIStar](https://github.com/encode/apistar) (<= 0.5) { #apistar-0-5 }
**FastAPI**を構築することを決める直前に、**APIStar**サーバーを見つけました。それは私が探していたものがほぼすべて含まれており、素晴らしいデザインでした。 **FastAPI**を構築することを決める直前に、**APIStar**サーバーを見つけました。それは私が探していたものがほぼすべて含まれており、素晴らしいデザインでした。
@ -401,7 +401,7 @@ APIStarはTom Christieにより開発されました。以下の開発者でも
## **FastAPI**が利用しているもの { #used-by-fastapi } ## **FastAPI**が利用しているもの { #used-by-fastapi }
### <a href="https://docs.pydantic.dev/" class="external-link" target="_blank">Pydantic</a> { #pydantic } ### [Pydantic](https://docs.pydantic.dev/) { #pydantic }
Pydanticは、Pythonの型ヒントを元にデータのバリデーション、シリアライゼーション、 (JSON Schemaを使用した) ドキュメントを定義するライブラリです。 Pydanticは、Pythonの型ヒントを元にデータのバリデーション、シリアライゼーション、 (JSON Schemaを使用した) ドキュメントを定義するライブラリです。
@ -413,11 +413,11 @@ Marshmallowに匹敵しますが、ベンチマークではMarshmallowよりも
データのバリデーション、データのシリアライゼーション、自動的なモデルの (JSON Schemaに基づいた) ドキュメント化の全てを扱えます。 データのバリデーション、データのシリアライゼーション、自動的なモデルの (JSON Schemaに基づいた) ドキュメント化の全てを扱えます。
**FastAPI**はJSON SchemaのデータをOpenAPIに利用します **FastAPI**はそのJSON SchemaデータをOpenAPIに取り込みます (それ以外にも多くのことを行います)
/// ///
### <a href="https://www.starlette.dev/" class="external-link" target="_blank">Starlette</a> { #starlette } ### [Starlette](https://www.starlette.dev/) { #starlette }
Starletteは、軽量な<dfn title="非同期Python Webアプリケーションを構築するための新しい標準">ASGI</dfn>フレームワーク/ツールキットで、高性能な非同期サービスの構築に最適です。 Starletteは、軽量な<dfn title="非同期Python Webアプリケーションを構築するための新しい標準">ASGI</dfn>フレームワーク/ツールキットで、高性能な非同期サービスの構築に最適です。
@ -462,7 +462,7 @@ webに関するコアな部分を全て扱います。その上に機能を追
/// ///
### <a href="https://www.uvicorn.dev/" class="external-link" target="_blank">Uvicorn</a> { #uvicorn } ### [Uvicorn](https://www.uvicorn.dev/) { #uvicorn }
Uvicornは非常に高速なASGIサーバーで、uvloopとhttptoolsにより構成されています。 Uvicornは非常に高速なASGIサーバーで、uvloopとhttptoolsにより構成されています。
@ -476,10 +476,10 @@ Starletteや**FastAPI**のサーバーとして推奨されています。
コマンドラインオプション `--workers` を使って、非同期のマルチプロセスサーバーにできます。 コマンドラインオプション `--workers` を使って、非同期のマルチプロセスサーバーにできます。
詳細は[デプロイ](deployment/index.md){.internal-link target=_blank}の項目で確認してください。 詳細は[デプロイ](deployment/index.md)の項目で確認してください。
/// ///
## ベンチマーク と スピード { #benchmarks-and-speed } ## ベンチマーク と スピード { #benchmarks-and-speed }
Uvicorn、Starlette、FastAPIの違いを理解、比較、確認するには、[ベンチマーク](benchmarks.md){.internal-link target=_blank}を確認してください。 Uvicorn、Starlette、FastAPIの違いを理解、比較、確認するには、[ベンチマーク](benchmarks.md)を確認してください。

24
docs/ja/docs/async.md

@ -141,7 +141,7 @@ def results():
/// info | 情報 /// info | 情報
美しいイラストは <a href="https://www.instagram.com/ketrinadrawsalot" class="external-link" target="_blank">Ketrina Thompson</a> によるものです。🎨 美しいイラストは [Ketrina Thompson](https://www.instagram.com/ketrinadrawsalot) によるものです。🎨
/// ///
@ -207,7 +207,7 @@ def results():
/// info | 情報 /// info | 情報
美しいイラストは <a href="https://www.instagram.com/ketrinadrawsalot" class="external-link" target="_blank">Ketrina Thompson</a> によるものです。🎨 美しいイラストは [Ketrina Thompson](https://www.instagram.com/ketrinadrawsalot) によるものです。🎨
/// ///
@ -251,7 +251,7 @@ def results():
そして、それが **FastAPI** で得られるパフォーマンスの水準です。 そして、それが **FastAPI** で得られるパフォーマンスの水準です。
さらに、並列性と非同期性を同時に活用できるため、テストされた多くの NodeJS フレームワークより高い性能を発揮し、C に近いコンパイル言語である Go と同等の性能になります <a href="https://www.techempower.com/benchmarks/#section=data-r17&hw=ph&test=query&l=zijmkf-1" class="external-link" target="_blank">(すべて Starlette のおかげです)</a> さらに、並列性と非同期性を同時に活用できるため、テストされた多くの NodeJS フレームワークより高い性能を発揮し、C に近いコンパイル言語である Go と同等の性能になります [(すべて Starlette のおかげです)](https://www.techempower.com/benchmarks/#section=data-r17&hw=ph&test=query&l=zijmkf-1)。
### 並行処理は並列処理より優れている? { #is-concurrency-better-than-parallelism } ### 並行処理は並列処理より優れている? { #is-concurrency-better-than-parallelism }
@ -298,7 +298,7 @@ CPU バウンドな操作の一般的な例は、複雑な数値処理が必要
さらに、Python が **データサイエンス**、機械学習、特にディープラーニングの主要言語であるという事実も相まって、FastAPI はデータサイエンス/機械学習の Web API やアプリケーション (ほか多数) に非常に適しています。 さらに、Python が **データサイエンス**、機械学習、特にディープラーニングの主要言語であるという事実も相まって、FastAPI はデータサイエンス/機械学習の Web API やアプリケーション (ほか多数) に非常に適しています。
本番環境でこの並列性を実現する方法は、[デプロイ](deployment/index.md){.internal-link target=_blank} のセクションを参照してください。 本番環境でこの並列性を実現する方法は、[デプロイ](deployment/index.md) のセクションを参照してください。
## `async``await` { #async-and-await } ## `async``await` { #async-and-await }
@ -363,13 +363,13 @@ async def read_burgers():
### 自分で async コードを書く { #write-your-own-async-code } ### 自分で async コードを書く { #write-your-own-async-code }
Starlette (**FastAPI** も) は <a href="https://anyio.readthedocs.io/en/stable/" class="external-link" target="_blank">AnyIO</a> の上に構築されており、標準ライブラリの <a href="https://docs.python.org/3/library/asyncio-task.html" class="external-link" target="_blank">asyncio</a><a href="https://trio.readthedocs.io/en/stable/" class="external-link" target="_blank">Trio</a> の両方に対応しています。 Starlette (**FastAPI** も) は [AnyIO](https://anyio.readthedocs.io/en/stable/) の上に構築されており、標準ライブラリの [asyncio](https://docs.python.org/3/library/asyncio-task.html) と [Trio](https://trio.readthedocs.io/en/stable/) の両方に対応しています。
特に、あなた自身のコード内で、より高度なパターンを必要とする発展的な並行処理のユースケースに対して、<a href="https://anyio.readthedocs.io/en/stable/" class="external-link" target="_blank">AnyIO</a> を直接使えます。 特に、あなた自身のコード内で、より高度なパターンを必要とする発展的な並行処理のユースケースに対して、[AnyIO](https://anyio.readthedocs.io/en/stable/) を直接使えます。
仮に FastAPI を使っていなくても、<a href="https://anyio.readthedocs.io/en/stable/" class="external-link" target="_blank">AnyIO</a> で独自の async アプリケーションを書けば、高い互換性と利点 (例: 構造化並行性) を得られます。 仮に FastAPI を使っていなくても、[AnyIO](https://anyio.readthedocs.io/en/stable/) で独自の async アプリケーションを書けば、高い互換性と利点 (例: 構造化並行性) を得られます。
私は AnyIO の上に薄い層として、型注釈を少し改善し、より良い**補完**や**インラインエラー**などを得るための別ライブラリも作りました。また、**理解**して**自分で async コードを書く**のに役立つフレンドリーなイントロ/チュートリアルもあります: <a href="https://asyncer.tiangolo.com/" class="external-link" target="_blank">Asyncer</a>。特に、**async コードと通常の** (ブロッキング/同期) **コードを組み合わせる**必要がある場合に有用です。 私は AnyIO の上に薄い層として、型注釈を少し改善し、より良い**補完**や**インラインエラー**などを得るための別ライブラリも作りました。また、**理解**して**自分で async コードを書く**のに役立つフレンドリーなイントロ/チュートリアルもあります: [Asyncer](https://asyncer.tiangolo.com/)。特に、**async コードと通常の** (ブロッキング/同期) **コードを組み合わせる**必要がある場合に有用です。
### 非同期コードの他の形式 { #other-forms-of-asynchronous-code } ### 非同期コードの他の形式 { #other-forms-of-asynchronous-code }
@ -381,7 +381,7 @@ Starlette (**FastAPI** も) は <a href="https://anyio.readthedocs.io/en/stable/
それ以前は、非同期コードの扱いはかなり複雑で難解でした。 それ以前は、非同期コードの扱いはかなり複雑で難解でした。
以前の Python ではスレッドや <a href="https://www.gevent.org/" class="external-link" target="_blank">Gevent</a> を使えましたが、コードの理解・デバッグ・思考がはるかに難しくなります。 以前の Python ではスレッドや [Gevent](https://www.gevent.org/) を使えましたが、コードの理解・デバッグ・思考がはるかに難しくなります。
以前の NodeJS / ブラウザ JavaScript では「コールバック」を使っており、「コールバック地獄」を招きました。 以前の NodeJS / ブラウザ JavaScript では「コールバック」を使っており、「コールバック地獄」を招きました。
@ -419,15 +419,15 @@ Starlette (**FastAPI** も) は <a href="https://anyio.readthedocs.io/en/stable/
上記とは異なる動作の別の非同期フレームワークから来ており、ほんのわずかなパフォーマンス向上 (約 100 ナノ秒) を狙って、計算のみの些細な *path operation 関数* を素の `def` で定義することに慣れている場合、**FastAPI** では効果がまったく逆になる点に注意してください。これらの場合、*path operation 関数* がブロッキングな <abbr title="Input/Output - 入出力: ディスクの読み取りまたは書き込み、ネットワーク通信。">I/O</abbr> を行うコードを使っていない限り、`async def` を使った方が良いです。 上記とは異なる動作の別の非同期フレームワークから来ており、ほんのわずかなパフォーマンス向上 (約 100 ナノ秒) を狙って、計算のみの些細な *path operation 関数* を素の `def` で定義することに慣れている場合、**FastAPI** では効果がまったく逆になる点に注意してください。これらの場合、*path operation 関数* がブロッキングな <abbr title="Input/Output - 入出力: ディスクの読み取りまたは書き込み、ネットワーク通信。">I/O</abbr> を行うコードを使っていない限り、`async def` を使った方が良いです。
それでも、どちらの状況でも、**FastAPI** はあなたが以前使っていたフレームワークよりも (少なくとも同等に) [高速である](index.md#performance){.internal-link target=_blank} 可能性が高いです。 それでも、どちらの状況でも、**FastAPI** はあなたが以前使っていたフレームワークよりも (少なくとも同等に) [高速である](index.md#performance) 可能性が高いです。
### 依存関係 { #dependencies } ### 依存関係 { #dependencies }
[依存関係](tutorial/dependencies/index.md){.internal-link target=_blank} についても同様です。依存関係が `async def` ではなく標準の `def` 関数である場合、外部のスレッドプールで実行されます。 [依存関係](tutorial/dependencies/index.md) についても同様です。依存関係が `async def` ではなく標準の `def` 関数である場合、外部のスレッドプールで実行されます。
### サブ依存関係 { #sub-dependencies } ### サブ依存関係 { #sub-dependencies }
複数の依存関係や [サブ依存関係](tutorial/dependencies/sub-dependencies.md){.internal-link target=_blank} を (関数定義のパラメータとして) 相互に要求させられます。その一部は `async def`、他は通常の `def` で作られていても動作します。通常の `def` で作られたものは「await」される代わりに、外部スレッドプールからスレッド上で呼び出されます。 複数の依存関係や [サブ依存関係](tutorial/dependencies/sub-dependencies.md) を (関数定義のパラメータとして) 相互に要求させられます。その一部は `async def`、他は通常の `def` で作られていても動作します。通常の `def` で作られたものは「await」される代わりに、外部スレッドプールからスレッド上で呼び出されます。
### その他のユーティリティ関数 { #other-utility-functions } ### その他のユーティリティ関数 { #other-utility-functions }

2
docs/ja/docs/benchmarks.md

@ -1,6 +1,6 @@
# ベンチマーク { #benchmarks } # ベンチマーク { #benchmarks }
TechEmpowerの独立したベンチマークでは、Uvicornの下で動作する**FastAPI**アプリケーションは、<a href="https://www.techempower.com/benchmarks/#section=test&runid=7464e520-0dc2-473d-bd34-dbdfd7e85911&hw=ph&test=query&l=zijzen-7" class="external-link" target="_blank">利用可能な最速のPythonフレームワークの1つ</a>であり、下回っているのはStarletteとUvicorn自体(FastAPIによって内部で使用される)のみだと示されています。 TechEmpowerの独立したベンチマークでは、Uvicornの下で動作する**FastAPI**アプリケーションは、[利用可能な最速のPythonフレームワークの1つ](https://www.techempower.com/benchmarks/#section=test&runid=7464e520-0dc2-473d-bd34-dbdfd7e85911&hw=ph&test=query&l=zijzen-7)であり、下回っているのはStarletteとUvicorn自体(FastAPIによって内部で使用される)のみだと示されています。
ただし、ベンチマークを確認し、比較する際には下記の内容に気を付けてください。 ただし、ベンチマークを確認し、比較する際には下記の内容に気を付けてください。

46
docs/ja/docs/environment-variables.md

@ -2,7 +2,7 @@
/// tip | 豆知識 /// tip | 豆知識
もし「環境変数」とは何か、それをどう使うかを既に知っている場合は、このセクションをスキップして構いません。 もし「環境変数」とは何か、それをどう使うかを既に知っている場合は、このセクションをスキップして構いません。
/// ///
@ -19,10 +19,10 @@
<div class="termy"> <div class="termy">
```console ```console
// You could create an env var MY_NAME with // 環境変数 MY_NAME を作成する例
$ export MY_NAME="Wade Wilson" $ export MY_NAME="Wade Wilson"
// Then you could use it with other programs, like // その後、他のプログラムで利用できます。例えば
$ echo "Hello $MY_NAME" $ echo "Hello $MY_NAME"
Hello Wade Wilson Hello Wade Wilson
@ -37,10 +37,10 @@ Hello Wade Wilson
<div class="termy"> <div class="termy">
```console ```console
// Create an env var MY_NAME // 環境変数 MY_NAME を作成
$ $Env:MY_NAME = "Wade Wilson" $ $Env:MY_NAME = "Wade Wilson"
// Use it with other programs, like // 他のプログラムで利用、例えば
$ echo "Hello $Env:MY_NAME" $ echo "Hello $Env:MY_NAME"
Hello Wade Wilson Hello Wade Wilson
@ -65,7 +65,7 @@ print(f"Hello {name} from Python")
/// tip | 豆知識 /// tip | 豆知識
<a href="https://docs.python.org/3.8/library/os.html#os.getenv" class="external-link" target="_blank">`os.getenv()`</a> の第2引数は、デフォルトで返される値です。 [`os.getenv()`](https://docs.python.org/3.8/library/os.html#os.getenv) の第2引数は、返されるデフォルト値です。
指定しない場合、デフォルトは`None`ですが、ここでは使用するデフォルト値として`"World"`を指定しています。 指定しない場合、デフォルトは`None`ですが、ここでは使用するデフォルト値として`"World"`を指定しています。
@ -78,20 +78,20 @@ print(f"Hello {name} from Python")
<div class="termy"> <div class="termy">
```console ```console
// Here we don't set the env var yet // ここではまだ環境変数を設定していません
$ python main.py $ python main.py
// As we didn't set the env var, we get the default value // 環境変数を設定していないため、デフォルト値が使われます
Hello World from Python Hello World from Python
// But if we create an environment variable first // しかし、先に環境変数を作成すると
$ export MY_NAME="Wade Wilson" $ export MY_NAME="Wade Wilson"
// And then call the program again // それからもう一度プログラムを実行すると
$ python main.py $ python main.py
// Now it can read the environment variable // すると環境変数を読み取れます
Hello Wade Wilson from Python Hello Wade Wilson from Python
``` ```
@ -105,20 +105,20 @@ Hello Wade Wilson from Python
<div class="termy"> <div class="termy">
```console ```console
// Here we don't set the env var yet // ここではまだ環境変数を設定していません
$ python main.py $ python main.py
// As we didn't set the env var, we get the default value // 環境変数を設定していないため、デフォルト値が使われます
Hello World from Python Hello World from Python
// But if we create an environment variable first // しかし、先に環境変数を作成すると
$ $Env:MY_NAME = "Wade Wilson" $ $Env:MY_NAME = "Wade Wilson"
// And then call the program again // それからもう一度プログラムを実行すると
$ python main.py $ python main.py
// Now it can read the environment variable // すると環境変数を読み取れます
Hello Wade Wilson from Python Hello Wade Wilson from Python
``` ```
@ -136,14 +136,14 @@ Hello Wade Wilson from Python
<div class="termy"> <div class="termy">
```console ```console
// Create an env var MY_NAME in line for this program call // このプログラム呼び出し用に同じ行で環境変数 MY_NAME を作成
$ MY_NAME="Wade Wilson" python main.py $ MY_NAME="Wade Wilson" python main.py
// Now it can read the environment variable // これで環境変数を読み取れます
Hello Wade Wilson from Python Hello Wade Wilson from Python
// The env var no longer exists afterwards // その後は環境変数は存在しません
$ python main.py $ python main.py
Hello World from Python Hello World from Python
@ -153,7 +153,7 @@ Hello World from Python
/// tip | 豆知識 /// tip | 豆知識
詳しくは <a href="https://12factor.net/config" class="external-link" target="_blank">The Twelve-Factor App: 設定</a> を参照してください。 詳しくは [The Twelve-Factor App: 設定](https://12factor.net/config) を参照してください。
/// ///
@ -163,7 +163,7 @@ Hello World from Python
つまり、環境変数からPythonで読み取る**あらゆる値**は **`str`になり**、他の型への変換やバリデーションはコード内で行う必要があります。 つまり、環境変数からPythonで読み取る**あらゆる値**は **`str`になり**、他の型への変換やバリデーションはコード内で行う必要があります。
環境変数を使って**アプリケーション設定**を扱う方法については、[高度なユーザーガイド - Settings and Environment Variables](./advanced/settings.md){.internal-link target=_blank} で詳しく学べます。 環境変数を使って**アプリケーション設定**を扱う方法については、[高度なユーザーガイド - Settings and Environment Variables](./advanced/settings.md)で詳しく学べます。
## `PATH`環境変数 { #path-environment-variable } ## `PATH`環境変数 { #path-environment-variable }
@ -285,13 +285,13 @@ $ C:\opt\custompython\bin\python
//// ////
この情報は、[Virtual Environments](virtual-environments.md){.internal-link target=_blank} について学ぶ際にも役立ちます。 この情報は、[Virtual Environments](virtual-environments.md)について学ぶ際にも役立ちます。
## まとめ { #conclusion } ## まとめ { #conclusion }
これで、**環境変数**とは何か、Pythonでどのように使用するかについて、基本的な理解が得られたはずです。 これで、**環境変数**とは何か、Pythonでどのように使用するかについて、基本的な理解が得られたはずです。
環境変数についての詳細は、<a href="https://en.wikipedia.org/wiki/Environment_variable" class="external-link" target="_blank">Wikipedia の環境変数</a> も参照してください。 環境変数についての詳細は、[Wikipedia の環境変数](https://en.wikipedia.org/wiki/Environment_variable)も参照してください。
多くの場合、環境変数がどのように役立ち、すぐに適用できるのかはあまり明確ではありません。しかし、開発中のさまざまなシナリオで何度も登場するため、知っておくとよいでしょう。 多くの場合、環境変数がどのように役立ち、すぐに適用できるのかはあまり明確ではありません。しかし、開発中のさまざまなシナリオで何度も登場するため、知っておくとよいでしょう。

71
docs/ja/docs/fastapi-cli.md

@ -1,15 +1,15 @@
# FastAPI CLI { #fastapi-cli } # FastAPI CLI { #fastapi-cli }
**FastAPI CLI** は、FastAPI アプリの提供、FastAPI プロジェクトの管理などに使用できるコマンドラインプログラムです。 **FastAPI <abbr title="command line interface - コマンドラインインターフェース">CLI</abbr>** は、FastAPI アプリの提供、FastAPI プロジェクトの管理などに使用できるコマンドラインプログラムです。
FastAPI をインストールすると(例: `pip install "fastapi[standard]"`)、`fastapi-cli` というパッケージが含まれます。このパッケージがターミナルで使用する `fastapi` コマンドを提供します。 FastAPI をインストールすると(例: `pip install "fastapi[standard]"`)、ターミナルで実行できるコマンドラインプログラムが付属します。
開発用に FastAPI アプリを起動するには、`fastapi dev` コマンドを使用できます: 開発用に FastAPI アプリを起動するには、`fastapi dev` コマンドを使用できます:
<div class="termy"> <div class="termy">
```console ```console
$ <font color="#4E9A06">fastapi</font> dev <u style="text-decoration-style:solid">main.py</u> $ <font color="#4E9A06">fastapi</font> dev
<span style="background-color:#009485"><font color="#D3D7CF"> FastAPI </font></span> Starting development server 🚀 <span style="background-color:#009485"><font color="#D3D7CF"> FastAPI </font></span> Starting development server 🚀
@ -46,13 +46,66 @@ $ <font color="#4E9A06">fastapi</font> dev <u style="text-decoration-style:solid
</div> </div>
`fastapi` というコマンドラインプログラムが **FastAPI CLI** です。 /// tip
FastAPI CLI は、Python プログラムへのパス(例: `main.py`)を受け取り、`FastAPI` インスタンス(通常は `app`)を自動検出し、適切な import 方法を判断して提供します。 本番では `fastapi dev` の代わりに `fastapi run` を使用します。🚀
本番環境では代わりに `fastapi run` を使用します。🚀 ///
内部的には、**FastAPI CLI** は [Uvicorn](https://www.uvicorn.dev)(高性能で本番運用向けの ASGI サーバー)を使用します。😎
`fastapi` CLI は、実行する FastAPI アプリを自動検出しようとします。既定では、`main.py` の中にある `app` という名前のオブジェクト(ほかにもいくつかの変種)であると仮定します。
ただし、使用するアプリを明示的に設定することもできます。
## `pyproject.toml` でアプリの `entrypoint` を設定 { #configure-the-app-entrypoint-in-pyproject-toml }
`pyproject.toml` に次のように、アプリの場所を設定できます:
```toml
[tool.fastapi]
entrypoint = "main:app"
```
この `entrypoint` により、`fastapi` コマンドは次のようにアプリを import する必要があると認識します:
```python
from main import app
```
もしコード構成が次のような場合:
```
.
├── backend
│   ├── main.py
│   ├── __init__.py
```
`entrypoint` は次のように設定します:
```toml
[tool.fastapi]
entrypoint = "backend.main:app"
```
これは次と同等です:
```python
from backend.main import app
```
### パス指定での `fastapi dev` { #fastapi-dev-with-path }
`fastapi dev` コマンドにファイルパスを渡すこともでき、使用する FastAPI アプリオブジェクトを推測します:
```console
$ fastapi dev main.py
```
ただし、そのたびに `fastapi` コマンドを呼び出す際に正しいパスを渡す必要があります。
内部的には、**FastAPI CLI** は <a href="https://www.uvicorn.dev" class="external-link" target="_blank">Uvicorn</a>(高性能で本番運用向けの ASGI サーバー)を使用します。😎 さらに、[VS Code 拡張機能](editor-support.md) や [FastAPI Cloud](https://fastapicloud.com) など、ほかのツールがそれを見つけられない場合があります。そのため、`pyproject.toml` の `entrypoint` を使用することを推奨します。
## `fastapi dev` { #fastapi-dev } ## `fastapi dev` { #fastapi-dev }
@ -68,8 +121,8 @@ FastAPI CLI は、Python プログラムへのパス(例: `main.py`)を受
多くの場合(そして推奨されるのは)、上位に HTTPS を終端する「termination proxy」を置きます。これはアプリのデプロイ方法に依存し、プロバイダが代行する場合もあれば、自分で設定する必要がある場合もあります。 多くの場合(そして推奨されるのは)、上位に HTTPS を終端する「termination proxy」を置きます。これはアプリのデプロイ方法に依存し、プロバイダが代行する場合もあれば、自分で設定する必要がある場合もあります。
/// tip | 豆知識 /// tip
詳しくは、[デプロイのドキュメント](deployment/index.md){.internal-link target=_blank}を参照してください。 詳しくは、[デプロイのドキュメント](deployment/index.md)を参照してください。
/// ///

30
docs/ja/docs/features.md

@ -6,8 +6,8 @@
### オープンスタンダード準拠 { #based-on-open-standards } ### オープンスタンダード準拠 { #based-on-open-standards }
* API 作成のための <a href="https://github.com/OAI/OpenAPI-Specification" class="external-link" target="_blank"><strong>OpenAPI</strong></a><dfn title="別名: エンドポイント、ルート">path</dfn> <dfn title="別名: HTTP メソッド(POST、GET、PUT、DELETE など)">operations</dfn>、パラメータ、リクエストボディ、セキュリティなどの宣言を含みます。 * API 作成のための [**OpenAPI**](https://github.com/OAI/OpenAPI-Specification)<dfn title="別名: エンドポイント、ルート">パス</dfn> <dfn title="別名: HTTP メソッド(POST、GET、PUT、DELETE など)">オペレーション</dfn>、パラメータ、リクエストボディ、セキュリティなどの宣言を含みます。
* <a href="https://json-schema.org/" class="external-link" target="_blank"><strong>JSON Schema</strong></a> によるデータモデルの自動ドキュメント化(OpenAPI 自体が JSON Schema に基づいています)。 * [**JSON Schema**](https://json-schema.org/) によるデータモデルの自動ドキュメント化(OpenAPI 自体が JSON Schema に基づいています)。
* 入念な調査のうえ、これらの標準を中心に設計されています。後付けのレイヤーではありません。 * 入念な調査のうえ、これらの標準を中心に設計されています。後付けのレイヤーではありません。
* これにより、多くの言語で自動 **クライアントコード生成** が可能です。 * これにより、多くの言語で自動 **クライアントコード生成** が可能です。
@ -15,11 +15,11 @@
対話的な API ドキュメントと探索的な Web ユーザーインターフェース。フレームワークは OpenAPI に基づいているため、複数のオプションがあり、デフォルトで 2 つ含まれます。 対話的な API ドキュメントと探索的な Web ユーザーインターフェース。フレームワークは OpenAPI に基づいているため、複数のオプションがあり、デフォルトで 2 つ含まれます。
* <a href="https://github.com/swagger-api/swagger-ui" class="external-link" target="_blank"><strong>Swagger UI</strong></a>。インタラクティブに探索しつつ、ブラウザから直接 API を呼び出してテストできます。 * [**Swagger UI**](https://github.com/swagger-api/swagger-ui)。インタラクティブに探索しつつ、ブラウザから直接 API を呼び出してテストできます。
![Swagger UI interaction](https://fastapi.tiangolo.com/img/index/index-03-swagger-02.png) ![Swagger UI interaction](https://fastapi.tiangolo.com/img/index/index-03-swagger-02.png)
* <a href="https://github.com/Rebilly/ReDoc" class="external-link" target="_blank"><strong>ReDoc</strong></a> による代替の API ドキュメント。 * [**ReDoc**](https://github.com/Rebilly/ReDoc) による代替の API ドキュメント。
![ReDoc](https://fastapi.tiangolo.com/img/index/index-06-redoc-02.png) ![ReDoc](https://fastapi.tiangolo.com/img/index/index-06-redoc-02.png)
@ -27,7 +27,7 @@
すべて標準の **Python の型** 宣言(Pydantic に感謝)に基づいています。新しい構文を学ぶ必要はありません。標準的でモダンな Python だけです。 すべて標準の **Python の型** 宣言(Pydantic に感謝)に基づいています。新しい構文を学ぶ必要はありません。標準的でモダンな Python だけです。
(FastAPI を使わない場合でも)Python の型の使い方を 2 分で復習したい場合は、短いチュートリアル [Python Types](python-types.md){.internal-link target=_blank} を参照してください。 (FastAPI を使わない場合でも)Python の型の使い方を 2 分で復習したい場合は、短いチュートリアル [Python の型](python-types.md) を参照してください。
型を使った標準的な Python を記述します: 型を使った標準的な Python を記述します:
@ -36,13 +36,13 @@ from datetime import date
from pydantic import BaseModel from pydantic import BaseModel
# 変数を str として宣言 # Declare a variable as a str
# そして関数内でエディタ支援を受ける # and get editor support inside the function
def main(user_id: str): def main(user_id: str):
return user_id return user_id
# Pydantic モデル # A Pydantic model
class User(BaseModel): class User(BaseModel):
id: int id: int
name: str name: str
@ -75,7 +75,7 @@ my_second_user: User = User(**second_user_data)
フレームワーク全体が使いやすく直感的になるよう設計されており、最高の開発体験を確保するため、開発開始前から複数のエディタであらゆる判断が検証されています。 フレームワーク全体が使いやすく直感的になるよう設計されており、最高の開発体験を確保するため、開発開始前から複数のエディタであらゆる判断が検証されています。
Python 開発者調査では、<a href="https://www.jetbrains.com/research/python-developers-survey-2017/#tools-and-features" class="external-link" target="_blank">最もよく使われる機能の 1 つが「オートコンプリート」であることが明らかです</a> Python 開発者調査では、[最もよく使われる機能の 1 つが「オートコンプリート」であることが明らかです](https://www.jetbrains.com/research/python-developers-survey-2017/#tools-and-features)
**FastAPI** はその要求を満たすことを基盤にしています。オートコンプリートはどこでも機能します。 **FastAPI** はその要求を満たすことを基盤にしています。オートコンプリートはどこでも機能します。
@ -83,11 +83,11 @@ Python 開発者調査では、<a href="https://www.jetbrains.com/research/pytho
エディタがどのように役立つかの例です: エディタがどのように役立つかの例です:
* <a href="https://code.visualstudio.com/" class="external-link" target="_blank">Visual Studio Code</a> の場合: * [Visual Studio Code](https://code.visualstudio.com/) の場合:
![editor support](https://fastapi.tiangolo.com/img/vscode-completion.png) ![editor support](https://fastapi.tiangolo.com/img/vscode-completion.png)
* <a href="https://www.jetbrains.com/pycharm/" class="external-link" target="_blank">PyCharm</a> の場合: * [PyCharm](https://www.jetbrains.com/pycharm/) の場合:
![editor support](https://fastapi.tiangolo.com/img/pycharm-completion.png) ![editor support](https://fastapi.tiangolo.com/img/pycharm-completion.png)
@ -124,7 +124,7 @@ Python 開発者調査では、<a href="https://www.jetbrains.com/research/pytho
OpenAPI で定義されたすべてのセキュリティスキームをサポートします: OpenAPI で定義されたすべてのセキュリティスキームをサポートします:
* HTTP Basic。 * HTTP Basic。
* **OAuth2**(**JWT トークン** も可)。チュートリアル [JWT を用いた OAuth2](tutorial/security/oauth2-jwt.md){.internal-link target=_blank} を確認してください。 * **OAuth2**(**JWT トークン** も可)。チュートリアル [JWT を用いた OAuth2](tutorial/security/oauth2-jwt.md) を確認してください。
* API キー(以下の場所): * API キー(以下の場所):
* ヘッダー。 * ヘッダー。
* クエリパラメータ。 * クエリパラメータ。
@ -159,13 +159,13 @@ FastAPI には、非常に使いやすく、かつ非常に強力な <dfn title=
## Starletteの機能 { #starlette-features } ## Starletteの機能 { #starlette-features }
**FastAPI** は <a href="https://www.starlette.dev/" class="external-link" target="_blank"><strong>Starlette</strong></a> と完全に互換性があり(かつそれに基づいています)。そのため、手元の Starlette の追加コードも動作します。 **FastAPI** は [**Starlette**](https://www.starlette.dev/) と完全に互換性があり(かつそれに基づいています)。そのため、手元の Starlette の追加コードも動作します。
`FastAPI` は実際には `Starlette` のサブクラスです。すでに Starlette を知っている、あるいは使っているなら、ほとんどの機能は同じように動作します。 `FastAPI` は実際には `Starlette` のサブクラスです。すでに Starlette を知っている、あるいは使っているなら、ほとんどの機能は同じように動作します。
**FastAPI** では **Starlette** のすべての機能が利用できます(FastAPI は強化された Starlette にすぎません): **FastAPI** では **Starlette** のすべての機能が利用できます(FastAPI は強化された Starlette にすぎません):
* 圧倒的なパフォーマンス。<a href="https://github.com/encode/starlette#performance" class="external-link" target="_blank">利用可能な最速クラスの Python フレームワークの 1 つで、**NodeJS** や **Go** と同等です</a> * 圧倒的なパフォーマンス。[利用可能な最速クラスの Python フレームワークの 1 つで、**NodeJS** や **Go** と同等です](https://github.com/encode/starlette#performance)
* **WebSocket** のサポート。 * **WebSocket** のサポート。
* プロセス内バックグラウンドタスク。 * プロセス内バックグラウンドタスク。
* 起動およびシャットダウンイベント。 * 起動およびシャットダウンイベント。
@ -177,7 +177,7 @@ FastAPI には、非常に使いやすく、かつ非常に強力な <dfn title=
## Pydanticの機能 { #pydantic-features } ## Pydanticの機能 { #pydantic-features }
**FastAPI** は <a href="https://docs.pydantic.dev/" class="external-link" target="_blank"><strong>Pydantic</strong></a> と完全に互換性があり(かつそれに基づいています)。そのため、手元の Pydantic の追加コードも動作します。 **FastAPI** は [**Pydantic**](https://docs.pydantic.dev/) と完全に互換性があり(かつそれに基づいています)。そのため、手元の Pydantic の追加コードも動作します。
Pydantic に基づく外部ライブラリ(データベース用の <abbr title="Object-Relational Mapper - オブジェクト関係マッパー">ORM</abbr><abbr title="Object-Document Mapper - オブジェクトドキュメントマッパー">ODM</abbr> など)も含まれます。 Pydantic に基づく外部ライブラリ(データベース用の <abbr title="Object-Relational Mapper - オブジェクト関係マッパー">ORM</abbr><abbr title="Object-Document Mapper - オブジェクトドキュメントマッパー">ODM</abbr> など)も含まれます。

60
docs/ja/docs/help-fastapi.md

@ -12,7 +12,7 @@ FastAPIや他のユーザー、作者を応援したいですか?
## ニュースレターを購読 { #subscribe-to-the-newsletter } ## ニュースレターを購読 { #subscribe-to-the-newsletter }
[**FastAPI and friends** ニュースレター](newsletter.md){.internal-link target=_blank}(配信はまれです)を購読すると、次の情報をキャッチアップできます: [**FastAPI and friends** ニュースレター](newsletter.md)(配信はまれです)を購読すると、次の情報をキャッチアップできます:
* FastAPI と関連プロジェクトのニュース 🚀 * FastAPI と関連プロジェクトのニュース 🚀
* ガイド 📝 * ガイド 📝
@ -22,17 +22,17 @@ FastAPIや他のユーザー、作者を応援したいですか?
## X (Twitter) で FastAPI をフォロー { #follow-fastapi-on-x-twitter } ## X (Twitter) で FastAPI をフォロー { #follow-fastapi-on-x-twitter }
<a href="https://x.com/fastapi" class="external-link" target="_blank">**X (Twitter)** で @fastapi をフォロー</a>して、**FastAPI** の最新情報を受け取りましょう。🐦 [**X (Twitter)** で @fastapi をフォロー](https://x.com/fastapi)して、**FastAPI** の最新情報を受け取りましょう。🐦
## GitHubで **FastAPI** にStar { #star-fastapi-in-github } ## GitHubで **FastAPI** にStar { #star-fastapi-in-github }
GitHubでFastAPIに「Star」をつけることができます(右上部のStarボタンをクリック): <a href="https://github.com/fastapi/fastapi" class="external-link" target="_blank">https://github.com/fastapi/fastapi</a>。⭐️ GitHubでFastAPIに「Star」をつけることができます(右上部のStarボタンをクリック): [https://github.com/fastapi/fastapi](https://github.com/fastapi/fastapi)。⭐️
スターを増やすことで、他のユーザーの目につきやすくなり、すでに多くの人の役に立っていることが伝わります。 スターを増やすことで、他のユーザーの目につきやすくなり、すでに多くの人の役に立っていることが伝わります。
## GitHubレポジトリのリリースをWatch { #watch-the-github-repository-for-releases } ## GitHubレポジトリのリリースをWatch { #watch-the-github-repository-for-releases }
GitHubでFastAPIを「Watch」できます(右上部の「Watch」ボタンをクリック): <a href="https://github.com/fastapi/fastapi" class="external-link" target="_blank">https://github.com/fastapi/fastapi</a>。👀 GitHubでFastAPIを「Watch」できます(右上部の「Watch」ボタンをクリック): [https://github.com/fastapi/fastapi](https://github.com/fastapi/fastapi)。👀
そこで「Releases only」を選択できます。 そこで「Releases only」を選択できます。
@ -40,45 +40,45 @@ GitHubでFastAPIを「Watch」できます(右上部の「Watch」ボタンを
## 開発者とつながる { #connect-with-the-author } ## 開発者とつながる { #connect-with-the-author }
作者である<a href="https://tiangolo.com" class="external-link" target="_blank">私(Sebastián Ramírez / `tiangolo`</a>とつながれます。 作者である[私(Sebastián Ramírez / `tiangolo`)](https://tiangolo.com)とつながれます。
できること: できること:
* <a href="https://github.com/tiangolo" class="external-link" target="_blank">**GitHub** でフォロー</a> * [**GitHub** でフォロー](https://github.com/tiangolo)
* 役に立つかもしれない、私が作成した他のオープンソースプロジェクトを見られます。 * 役に立つかもしれない、私が作成した他のオープンソースプロジェクトを見られます。
* 新しいオープンソースプロジェクトを作成したときにわかります。 * 新しいオープンソースプロジェクトを作成したときにわかります。
* <a href="https://x.com/tiangolo" class="external-link" target="_blank">**X (Twitter)** でフォロー</a> または <a href="https://fosstodon.org/@tiangolo" class="external-link" target="_blank">Mastodon</a> * [**X (Twitter)** でフォロー](https://x.com/tiangolo) または [Mastodon](https://fosstodon.org/@tiangolo)
* あなたがどのようにFastAPIを使っているか教えてください(聞けると嬉しいです)。 * あなたがどのようにFastAPIを使っているか教えてください(聞けると嬉しいです)。
* 新しいツールの告知やリリースを聞けます。 * 新しいツールの告知やリリースを聞けます。
* さらに、<a href="https://x.com/fastapi" class="external-link" target="_blank">X (Twitter) の @fastapi</a>(別アカウント)もフォローできます。 * さらに、[X (Twitter) の @fastapi](https://x.com/fastapi)(別アカウント)もフォローできます。
* <a href="https://www.linkedin.com/in/tiangolo/" class="external-link" target="_blank">**LinkedIn** でフォロー</a> * [**LinkedIn** でフォロー](https://www.linkedin.com/in/tiangolo/)
* 新しいツールの告知やリリースを聞けます(ただしX (Twitter) の方をよく使っています 🤷‍♂)。 * 新しいツールの告知やリリースを聞けます(ただしX (Twitter) の方をよく使っています 🤷‍♂)。
* <a href="https://dev.to/tiangolo" class="external-link" target="_blank">**Dev.to**</a><a href="https://medium.com/@tiangolo" class="external-link" target="_blank">**Medium**</a> で執筆内容を読む(またはフォロー)。 * [**Dev.to**](https://dev.to/tiangolo) や [**Medium**](https://medium.com/@tiangolo) で執筆内容を読む(またはフォロー)。
* 私のアイデアや、作成したツールに関する記事を読めます。 * 私のアイデアや、作成したツールに関する記事を読めます。
* 新しい記事を公開したときに読めます。 * 新しい記事を公開したときに読めます。
## **FastAPI** についてツイート { #tweet-about-fastapi } ## **FastAPI** についてツイート { #tweet-about-fastapi }
<a href="https://x.com/compose/tweet?text=I'm loving @fastapi because... https://github.com/fastapi/fastapi" class="external-link" target="_blank">**FastAPI** についてツイート</a>して、なぜ気に入っているのかを私や他の人に教えてください。🎉 [**FastAPI** についてツイート](https://x.com/compose/tweet?text=I'm loving @fastapi because... https://github.com/fastapi/fastapi)して、なぜ気に入っているのかを私や他の人に教えてください。🎉
**FastAPI** がどのように使われているか、どこを気に入っているか、どのプロジェクト/会社で使っているか等、聞けると嬉しいです。 **FastAPI** がどのように使われているか、どこを気に入っているか、どのプロジェクト/会社で使っているか等、聞けると嬉しいです。
## FastAPIに投票 { #vote-for-fastapi } ## FastAPIに投票 { #vote-for-fastapi }
* <a href="https://www.slant.co/options/34241/~fastapi-review" class="external-link" target="_blank">Slantで **FastAPI** に投票</a> * [Slantで **FastAPI** に投票](https://www.slant.co/options/34241/~fastapi-review)
* <a href="https://alternativeto.net/software/fastapi/about/" class="external-link" target="_blank">AlternativeToで **FastAPI** に投票</a> * [AlternativeToで **FastAPI** に投票](https://alternativeto.net/software/fastapi/about/)
* <a href="https://stackshare.io/pypi-fastapi" class="external-link" target="_blank">StackShare で **FastAPI** を使っていると宣言</a> * [StackShare で **FastAPI** を使っていると宣言](https://stackshare.io/pypi-fastapi)
## GitHubで質問に困っている人を助ける { #help-others-with-questions-in-github } ## GitHubで質問に困っている人を助ける { #help-others-with-questions-in-github }
次の場所で、他の人の質問を手助けできます: 次の場所で、他の人の質問を手助けできます:
* <a href="https://github.com/fastapi/fastapi/discussions/categories/questions?discussions_q=category%3AQuestions+is%3Aunanswered" class="external-link" target="_blank">GitHub Discussions</a> * [GitHub Discussions](https://github.com/fastapi/fastapi/discussions/categories/questions?discussions_q=category%3AQuestions+is%3Aunanswered)
* <a href="https://github.com/fastapi/fastapi/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3Aquestion+-label%3Aanswered+" class="external-link" target="_blank">GitHub Issues</a> * [GitHub Issues](https://github.com/fastapi/fastapi/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3Aquestion+-label%3Aanswered+)
多くの場合、その質問の答えをすでに知っているかもしれません。🤓 多くの場合、その質問の答えをすでに知っているかもしれません。🤓
もし多くの人の質問に答えて助けてくれたなら、あなたは公式の[FastAPI Expert](fastapi-people.md#fastapi-experts){.internal-link target=_blank}になります。🎉 もし多くの人の質問に答えて助けてくれたなら、あなたは公式の[FastAPI Expert](fastapi-people.md#fastapi-experts)になります。🎉
最も大事なポイントは「親切であること」を心がけることです。人はフラストレーションを抱えてやって来るので、必ずしも最良の聞き方をしているとは限りませんが、できる限り親切に対応しましょう。🤗 最も大事なポイントは「親切であること」を心がけることです。人はフラストレーションを抱えてやって来るので、必ずしも最良の聞き方をしているとは限りませんが、できる限り親切に対応しましょう。🤗
@ -98,13 +98,13 @@ GitHubでFastAPIを「Watch」できます(右上部の「Watch」ボタンを
* 質問が理解できない場合は、さらに「詳細」を尋ねます。 * 質問が理解できない場合は、さらに「詳細」を尋ねます。
### 題を再現する { #reproduce-the-problem } ### 題を再現する { #reproduce-the-problem }
多くのケースや質問は、その人の「元のコード」に関係しています。 多くのケースや質問は、その人の「元のコード」に関係しています。
しばしばコードの断片だけが共有されますが、それでは問題を「再現」するには不十分です。 しばしばコードの断片だけが共有されますが、それでは問題を「再現」するには不十分です。
* ローカルで同じエラーや挙動を確認できるように、またはユースケースをよりよく理解できるように、**コピー&ペースト**して実行できる<a href="https://stackoverflow.com/help/minimal-reproducible-example" class="external-link" target="_blank">最小の再現可能な例</a>の提供を依頼できます。 * ローカルで同じエラーや挙動を確認できるように、またはユースケースをよりよく理解できるように、**コピー&ペースト**して実行できる[最小の再現可能な例](https://stackoverflow.com/help/minimal-reproducible-example)の提供を依頼できます。
* とても寛大な気分なら、問題の説明だけをもとに、あなた自身でそのような**例を作成**してみることもできます。ただし時間がかかる可能性が高いので、まずは問題の明確化を依頼した方が良い場合もあります。 * とても寛大な気分なら、問題の説明だけをもとに、あなた自身でそのような**例を作成**してみることもできます。ただし時間がかかる可能性が高いので、まずは問題の明確化を依頼した方が良い場合もあります。
@ -125,7 +125,7 @@ GitHubでFastAPIを「Watch」できます(右上部の「Watch」ボタンを
## GitHubレポジトリをWatch { #watch-the-github-repository } ## GitHubレポジトリをWatch { #watch-the-github-repository }
GitHubでFastAPIを「Watch」できます(右上部の「Watch」ボタンをクリック): <a href="https://github.com/fastapi/fastapi" class="external-link" target="_blank">https://github.com/fastapi/fastapi</a>。👀 GitHubでFastAPIを「Watch」できます(右上部の「Watch」ボタンをクリック): [https://github.com/fastapi/fastapi](https://github.com/fastapi/fastapi)。👀
「Releases only」ではなく「Watching」を選択すると、新しい issue や質問が作成されたときに通知を受け取れます。新しい issue のみ、Discussions のみ、PR のみ、など通知対象を絞ることもできます。 「Releases only」ではなく「Watching」を選択すると、新しい issue や質問が作成されたときに通知を受け取れます。新しい issue のみ、Discussions のみ、PR のみ、など通知対象を絞ることもできます。
@ -133,7 +133,7 @@ GitHubでFastAPIを「Watch」できます(右上部の「Watch」ボタンを
## 質問する { #ask-questions } ## 質問する { #ask-questions }
GitHubレポジトリで<a href="https://github.com/fastapi/fastapi/discussions/new?category=questions" class="external-link" target="_blank">新しい質問</a>を作成できます。例えば: GitHubレポジトリで[新しい質問](https://github.com/fastapi/fastapi/discussions/new?category=questions)を作成できます。例えば:
* **質問**をする、または**問題**について尋ねる。 * **質問**をする、または**問題**について尋ねる。
* 新しい**機能**を提案する。 * 新しい**機能**を提案する。
@ -196,12 +196,12 @@ GitHubレポジトリで<a href="https://github.com/fastapi/fastapi/discussions/
## プルリクエストを作成 { #create-a-pull-request } ## プルリクエストを作成 { #create-a-pull-request }
[貢献](contributing.md){.internal-link target=_blank}として、次のようにプルリクエストでソースコードに貢献できます: [貢献](contributing.md)として、次のようにプルリクエストでソースコードに貢献できます:
* ドキュメントで見つけたタイポの修正。 * ドキュメントで見つけたタイポの修正。
* 自分が作成/発見した FastAPI に関する記事・動画・ポッドキャストを、<a href="https://github.com/fastapi/fastapi/edit/master/docs/en/data/external_links.yml" class="external-link" target="_blank">このファイルを編集</a>して共有。 * 自分が作成/発見した FastAPI に関する記事・動画・ポッドキャストを、[このファイルを編集](https://github.com/fastapi/fastapi/edit/master/docs/en/data/external_links.yml)して共有。
* 該当セクションの先頭にリンクを追加してください。 * 該当セクションの先頭にリンクを追加してください。
* 自分の言語への[ドキュメント翻訳を手伝う](contributing.md#translations){.internal-link target=_blank} * 自分の言語への[ドキュメント翻訳を手伝う](contributing.md#translations)。
* 他の人が作成した翻訳のレビューも手伝えます。 * 他の人が作成した翻訳のレビューも手伝えます。
* 新しいドキュメントセクションの提案。 * 新しいドキュメントセクションの提案。
* 既存のissue/バグの修正。 * 既存のissue/バグの修正。
@ -218,8 +218,8 @@ GitHubレポジトリで<a href="https://github.com/fastapi/fastapi/discussions/
今すぐできる主なタスクは次のとおりです: 今すぐできる主なタスクは次のとおりです:
* [GitHubで質問に困っている人を助ける](#help-others-with-questions-in-github){.internal-link target=_blank}(上のセクションを参照)。 * [GitHubで質問に困っている人を助ける](#help-others-with-questions-in-github)(上のセクションを参照)。
* [プルリクエストをレビュー](#review-pull-requests){.internal-link target=_blank}(上のセクションを参照)。 * [プルリクエストをレビュー](#review-pull-requests)(上のセクションを参照)。
この2つが**最も時間を消費**します。FastAPI のメンテナンス作業の中心です。 この2つが**最も時間を消費**します。FastAPI のメンテナンス作業の中心です。
@ -227,11 +227,11 @@ GitHubレポジトリで<a href="https://github.com/fastapi/fastapi/discussions/
## チャットに参加 { #join-the-chat } ## チャットに参加 { #join-the-chat }
👥 <a href="https://discord.gg/VQjSZaeJmf" class="external-link" target="_blank">Discord チャットサーバー</a> 👥 に参加し、FastAPI コミュニティのみんなと交流しましょう。 👥 [Discord チャットサーバー](https://discord.gg/VQjSZaeJmf) 👥 に参加し、FastAPI コミュニティのみんなと交流しましょう。
/// tip | 豆知識 /// tip | 豆知識
質問は <a href="https://github.com/fastapi/fastapi/discussions/new?category=questions" class="external-link" target="_blank">GitHub Discussions</a> に投稿してください。そこなら[FastAPI Experts](fastapi-people.md#fastapi-experts){.internal-link target=_blank}から助けてもらえる可能性がずっと高いです。 質問は [GitHub Discussions](https://github.com/fastapi/fastapi/discussions/new?category=questions) に投稿してください。そこなら[FastAPI Experts](fastapi-people.md#fastapi-experts)から助けてもらえる可能性がずっと高いです。
チャットは一般的な会話のみに使いましょう。 チャットは一般的な会話のみに使いましょう。
@ -243,13 +243,13 @@ GitHubレポジトリで<a href="https://github.com/fastapi/fastapi/discussions/
GitHub では、テンプレートが正しい形で質問を書くのを助けてくれるため、良い回答を得やすくなりますし、質問する前に自分で問題を解決できることもあります。さらにGitHubなら、時間がかかっても私が必ずすべてに回答できるようにできます。チャットでは私個人にはそれができません。😅 GitHub では、テンプレートが正しい形で質問を書くのを助けてくれるため、良い回答を得やすくなりますし、質問する前に自分で問題を解決できることもあります。さらにGitHubなら、時間がかかっても私が必ずすべてに回答できるようにできます。チャットでは私個人にはそれができません。😅
チャットでの会話はGitHubほど検索しやすくないため、質問と回答が会話に埋もれがちです。そして、[FastAPI Expert](fastapi-people.md#fastapi-experts){.internal-link target=_blank}になるためにカウントされるのはGitHub上の活動だけです。ですから、GitHubの方が注目を集めやすいでしょう。 チャットでの会話はGitHubほど検索しやすくないため、質問と回答が会話に埋もれがちです。そして、[FastAPI Expert](fastapi-people.md#fastapi-experts)になるためにカウントされるのはGitHub上の活動だけです。ですから、GitHubの方が注目を集めやすいでしょう。
一方で、チャットには数千人のユーザーがいるため、ほぼ常に誰かと会話できる可能性が高いです。😄 一方で、チャットには数千人のユーザーがいるため、ほぼ常に誰かと会話できる可能性が高いです。😄
## 作者をスポンサー { #sponsor-the-author } ## 作者をスポンサー { #sponsor-the-author }
あなたの**製品/会社**が **FastAPI** に依存している、または関連しており、そのユーザーにリーチしたい場合は、<a href="https://github.com/sponsors/tiangolo" class="external-link" target="_blank">GitHub sponsors</a> を通じて作者(私)を支援できます。プランに応じて、ドキュメントにバッジが表示されるなどの特典がある場合があります。🎁 あなたの**製品/会社**が **FastAPI** に依存している、または関連しており、そのユーザーにリーチしたい場合は、[GitHub sponsors](https://github.com/sponsors/tiangolo) を通じて作者(私)を支援できます。プランに応じて、ドキュメントにバッジが表示されるなどの特典がある場合があります。🎁
--- ---

12
docs/ja/docs/history-design-future.md

@ -1,6 +1,6 @@
# 歴史、設計、そしてこれから { #history-design-and-future } # 歴史、設計、そしてこれから { #history-design-and-future }
少し前に、<a href="https://github.com/fastapi/fastapi/issues/3#issuecomment-454956920" class="external-link" target="_blank">**FastAPI**のユーザーに以下の様に尋ねられました</a>: しばらく前に、[ある **FastAPI** ユーザーが質問しました](https://github.com/fastapi/fastapi/issues/3#issuecomment-454956920):
> このプロジェクトの歴史は?何もないところから、数週間ですごいものができているようです。 [...] > このプロジェクトの歴史は?何もないところから、数週間ですごいものができているようです。 [...]
@ -14,7 +14,7 @@
**FastAPI** の歴史は、その前身の歴史が大部分を占めています。 **FastAPI** の歴史は、その前身の歴史が大部分を占めています。
[代替ツールから受けたインスピレーションと比較](alternatives.md){.internal-link target=_blank}のセクションでこう述べています: [代替手段](alternatives.md)のセクションでこう述べています:
<blockquote markdown="1"> <blockquote markdown="1">
@ -44,7 +44,7 @@
もっとも人気のあるPythonエディターでいくつかのアイデアをテストしました。PyCharm、VS Code、Jediベースのエディターです。 もっとも人気のあるPythonエディターでいくつかのアイデアをテストしました。PyCharm、VS Code、Jediベースのエディターです。
最新の <a href="https://www.jetbrains.com/research/python-developers-survey-2018/#development-tools" class="external-link" target="_blank">Python開発者調査</a>で、それらのエディターがユーザーの80%をカバーしていました。 最新の [Python開発者調査](https://www.jetbrains.com/research/python-developers-survey-2018/#development-tools)で、それらのエディターがユーザーの80%をカバーしていました。
これは、**FastAPI**がPython開発者の80%が使用しているエディターで特別にテストされたことを意味します。また、ほとんどの他のエディターも同様に動作する傾向があるため、この恩恵は事実上すべてのエディターでうけられるはずです。 これは、**FastAPI**がPython開発者の80%が使用しているエディターで特別にテストされたことを意味します。また、ほとんどの他のエディターも同様に動作する傾向があるため、この恩恵は事実上すべてのエディターでうけられるはずです。
@ -54,11 +54,11 @@
## 要件 { #requirements } ## 要件 { #requirements }
いくつかの代替手法を試したあと、私は<a href="https://docs.pydantic.dev/" class="external-link" target="_blank">**Pydantic**</a>の強みを利用することを決めました。 いくつかの代替手法を試したあと、私は[**Pydantic**](https://docs.pydantic.dev/)の強みを利用することを決めました。
そして、JSON Schemaに完全に準拠するようにしたり、制約宣言を定義するさまざまな方法をサポートしたり、いくつかのエディターでのテストに基づいてエディターのサポート (型チェック、自動補完) を改善するために貢献しました。 そして、JSON Schemaに完全に準拠するようにしたり、制約宣言を定義するさまざまな方法をサポートしたり、いくつかのエディターでのテストに基づいてエディターのサポート (型チェック、自動補完) を改善するために貢献しました。
開発中、もう1つの重要な鍵となる<a href="https://www.starlette.dev/" class="external-link" target="_blank">**Starlette**</a>にも貢献しました。 開発中、もう1つの重要な鍵となる[**Starlette**](https://www.starlette.dev/)にも貢献しました。
## 開発 { #development } ## 開発 { #development }
@ -76,4 +76,4 @@
**FastAPI**には大きな未来が待っています。 **FastAPI**には大きな未来が待っています。
そして、[あなたの助け](help-fastapi.md){.internal-link target=_blank}を大いに歓迎します。 そして、[あなたの助け](help-fastapi.md)を大いに歓迎します。

26
docs/ja/docs/index.md

@ -27,9 +27,9 @@
--- ---
**ドキュメント**: <a href="https://fastapi.tiangolo.com/ja" target="_blank">https://fastapi.tiangolo.com</a> **ドキュメント**: [https://fastapi.tiangolo.com/ja](https://fastapi.tiangolo.com/ja)
**ソースコード**: <a href="https://github.com/fastapi/fastapi" target="_blank">https://github.com/fastapi/fastapi</a> **ソースコード**: [https://github.com/fastapi/fastapi](https://github.com/fastapi/fastapi)
--- ---
@ -44,7 +44,7 @@ FastAPI は、Python の標準である型ヒントに基づいて Python で AP
* **簡単**: 簡単に利用・習得できるようにデザインされています。ドキュメントを読む時間を削減します。 * **簡単**: 簡単に利用・習得できるようにデザインされています。ドキュメントを読む時間を削減します。
* **短い**: コードの重複を最小限にします。各パラメータ宣言から複数の機能を得られます。バグも減ります。 * **短い**: コードの重複を最小限にします。各パラメータ宣言から複数の機能を得られます。バグも減ります。
* **堅牢性**: 自動対話型ドキュメントにより、本番環境向けのコードが得られます。 * **堅牢性**: 自動対話型ドキュメントにより、本番環境向けのコードが得られます。
* **Standards-based**: API のオープンスタンダードに基づいており(そして完全に互換性があります)、<a href="https://github.com/OAI/OpenAPI-Specification" class="external-link" target="_blank">OpenAPI</a>(以前は Swagger として知られていました)や <a href="https://json-schema.org/" class="external-link" target="_blank">JSON Schema</a> をサポートします。 * **Standards-based**: API のオープンスタンダードに基づいており(そして完全に互換性があります)、[OpenAPI](https://github.com/OAI/OpenAPI-Specification)(以前は Swagger として知られていました)や [JSON Schema](https://json-schema.org/) をサポートします。
<small>* 本番アプリケーションを構築している社内開発チームのテストに基づく見積もりです。</small> <small>* 本番アプリケーションを構築している社内開発チームのテストに基づく見積もりです。</small>
@ -69,7 +69,7 @@ FastAPI は、Python の標準である型ヒントに基づいて Python で AP
<!-- /sponsors --> <!-- /sponsors -->
<a href="https://fastapi.tiangolo.com/ja/fastapi-people/#sponsors" class="external-link" target="_blank">その他のスポンサー</a> [その他のスポンサー](https://fastapi.tiangolo.com/ja/fastapi-people/#sponsors)
## 評価 { #opinions } ## 評価 { #opinions }
@ -210,7 +210,7 @@ async def read_item(item_id: int, q: str | None = None):
<div class="termy"> <div class="termy">
```console ```console
$ fastapi dev main.py $ fastapi dev
╭────────── FastAPI CLI - Development mode ───────────╮ ╭────────── FastAPI CLI - Development mode ───────────╮
│ │ │ │
@ -235,7 +235,7 @@ INFO: Application startup complete.
</div> </div>
<details markdown="1"> <details markdown="1">
<summary><code>fastapi dev main.py</code> コマンドについて</summary> <summary><code>fastapi dev</code> コマンドについて</summary>
`fastapi dev` コマンドは `main.py` ファイルを読み取り、その中の **FastAPI** アプリを検出し、<a href="https://www.uvicorn.dev" class="external-link" target="_blank">Uvicorn</a> を使用してサーバーを起動します。 `fastapi dev` コマンドは `main.py` ファイルを読み取り、その中の **FastAPI** アプリを検出し、<a href="https://www.uvicorn.dev" class="external-link" target="_blank">Uvicorn</a> を使用してサーバーを起動します。
@ -456,20 +456,6 @@ item: Item
すでに **FastAPI Cloud** アカウント(ウェイティングリストから招待されました 😉)がある場合は、1 コマンドでアプリケーションをデプロイできます。 すでに **FastAPI Cloud** アカウント(ウェイティングリストから招待されました 😉)がある場合は、1 コマンドでアプリケーションをデプロイできます。
デプロイ前に、ログインしていることを確認してください。
<div class="termy">
```console
$ fastapi login
You are logged in to FastAPI Cloud 🚀
```
</div>
次に、アプリをデプロイします。
<div class="termy"> <div class="termy">
```console ```console

2
docs/ja/docs/project-generation.md

@ -4,7 +4,7 @@
このテンプレートを使って開始できます。初期セットアップ、セキュリティ、データベース、いくつかのAPIエンドポイントがすでに用意されています。 このテンプレートを使って開始できます。初期セットアップ、セキュリティ、データベース、いくつかのAPIエンドポイントがすでに用意されています。
GitHubリポジトリ: <a href="https://github.com/tiangolo/full-stack-fastapi-template" class="external-link" target="_blank">Full Stack FastAPI Template</a> GitHubリポジトリ: [Full Stack FastAPI Template](https://github.com/tiangolo/full-stack-fastapi-template)
## Full Stack FastAPI テンプレート - 技術スタックと機能 { #full-stack-fastapi-template-technology-stack-and-features } ## Full Stack FastAPI テンプレート - 技術スタックと機能 { #full-stack-fastapi-template-technology-stack-and-features }

8
docs/ja/docs/python-types.md

@ -231,7 +231,7 @@ def some_function(data: Any):
{!> ../../docs_src/python_types/tutorial008b_py310.py!} {!> ../../docs_src/python_types/tutorial008b_py310.py!}
``` ```
これは `item``int` または `str` になり得ることを意味します. これは `item``int` または `str` になり得ることを意味します
#### `None` の可能性 { #possibly-none } #### `None` の可能性 { #possibly-none }
@ -269,7 +269,7 @@ def some_function(data: Any):
## Pydantic のモデル { #pydantic-models } ## Pydantic のモデル { #pydantic-models }
<a href="https://docs.pydantic.dev/" class="external-link" target="_blank">Pydantic</a> はデータ検証を行うための Python ライブラリです。 [Pydantic](https://docs.pydantic.dev/) はデータ検証を行うための Python ライブラリです。
データの「形」を属性付きのクラスとして宣言します。 データの「形」を属性付きのクラスとして宣言します。
@ -285,7 +285,7 @@ Pydantic の公式ドキュメントからの例:
/// info | 情報 /// info | 情報
<a href="https://docs.pydantic.dev/" class="external-link" target="_blank">Pydantic の詳細はドキュメントを参照してください</a> [ Pydantic の詳細はドキュメントを参照してください](https://docs.pydantic.dev/)
/// ///
@ -343,6 +343,6 @@ Python 自体は、この `Annotated` で何かをするわけではありませ
/// info | 情報 /// info | 情報
すでにすべてのチュートリアルを終えて、型についての詳細を見るためにこのページに戻ってきた場合は、良いリソースとして <a href="https://mypy.readthedocs.io/en/latest/cheat_sheet_py3.html" class="external-link" target="_blank">`mypy` の「チートシート」</a> があります。 すでにすべてのチュートリアルを終えて、型についての詳細を見るためにこのページに戻ってきた場合は、良いリソースとして [`mypy` の「チートシート`](https://mypy.readthedocs.io/en/latest/cheat_sheet_py3.html) があります。
/// ///

6
docs/ja/docs/tutorial/background-tasks.md

@ -63,7 +63,7 @@
## 技術的な詳細 { #technical-details } ## 技術的な詳細 { #technical-details }
`BackgroundTasks` クラスは、<a href="https://www.starlette.dev/background/" class="external-link" target="_blank">`starlette.background`</a>から直接取得されます。 `BackgroundTasks` クラスは、[`starlette.background`](https://www.starlette.dev/background/) から直接取得されます。
これは、FastAPI に直接インポート/インクルードされるため、`fastapi` からインポートできる上に、`starlette.background`から別の `BackgroundTask` (末尾に `s` がない) を誤ってインポートすることを回避できます。 これは、FastAPI に直接インポート/インクルードされるため、`fastapi` からインポートできる上に、`starlette.background`から別の `BackgroundTask` (末尾に `s` がない) を誤ってインポートすることを回避できます。
@ -71,11 +71,11 @@
それでも、FastAPI で `BackgroundTask` を単独で使用することは可能ですが、コード内でオブジェクトを作成し、それを含むStarlette `Response` を返す必要があります。 それでも、FastAPI で `BackgroundTask` を単独で使用することは可能ですが、コード内でオブジェクトを作成し、それを含むStarlette `Response` を返す必要があります。
詳細については、<a href="https://www.starlette.dev/background/" class="external-link" target="_blank">Starlette のバックグラウンドタスクに関する公式ドキュメント</a>を参照して下さい。 詳細については、[Starlette のバックグラウンドタスクに関する公式ドキュメント](https://www.starlette.dev/background/)を参照して下さい。
## 注意 { #caveat } ## 注意 { #caveat }
大量のバックグラウンド計算が必要であり、必ずしも同じプロセスで実行する必要がない場合 (たとえば、メモリや変数などを共有する必要がない場合)、<a href="https://docs.celeryq.dev" class="external-link" target="_blank">Celery</a> のようなより大きな他のツールを使用するとメリットがあるかもしれません。 大量のバックグラウンド計算が必要であり、必ずしも同じプロセスで実行する必要がない場合 (たとえば、メモリや変数などを共有する必要がない場合)、[Celery](https://docs.celeryq.dev) のようなより大きな他のツールを使用するとメリットがあるかもしれません。
これらは、より複雑な構成、RabbitMQ や Redis などのメッセージ/ジョブキューマネージャーを必要とする傾向がありますが、複数のプロセス、特に複数のサーバーでバックグラウンドタスクを実行できます。 これらは、より複雑な構成、RabbitMQ や Redis などのメッセージ/ジョブキューマネージャーを必要とする傾向がありますが、複数のプロセス、特に複数のサーバーでバックグラウンドタスクを実行できます。

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

@ -58,17 +58,17 @@ from app.routers import items
```bash ```bash
. .
├── app # "app" is a Python package ├── app # "app" は Python パッケージ
│   ├── __init__.py # this file makes "app" a "Python package" │   ├── __init__.py # このファイルにより "app" は「Python パッケージ」になる
│   ├── main.py # "main" module, e.g. import app.main │   ├── main.py # "main" モジュール(例: import app.main)
│   ├── dependencies.py # "dependencies" module, e.g. import app.dependencies │   ├── dependencies.py # "dependencies" モジュール(例: import app.dependencies)
│   └── routers # "routers" is a "Python subpackage" │   └── routers # "routers" は「Python サブパッケージ」
│   │ ├── __init__.py # makes "routers" a "Python subpackage" │   │ ├── __init__.py # このファイルにより "routers" は「Python サブパッケージ」になる
│   │ ├── items.py # "items" submodule, e.g. import app.routers.items │   │ ├── items.py # "items" サブモジュール(例: import app.routers.items)
│   │ └── users.py # "users" submodule, e.g. import app.routers.users │   │ └── users.py # "users" サブモジュール(例: import app.routers.users)
│   └── internal # "internal" is a "Python subpackage" │   └── internal # "internal" は「Python サブパッケージ」
│   ├── __init__.py # makes "internal" a "Python subpackage" │   ├── __init__.py # このファイルにより "internal" は「Python サブパッケージ」になる
│   └── admin.py # "admin" submodule, e.g. import app.internal.admin │   └── admin.py # "admin" サブモジュール(例: import app.internal.admin)
``` ```
## `APIRouter` { #apirouter } ## `APIRouter` { #apirouter }
@ -123,7 +123,7 @@ from app.routers import items
この例を簡単にするために架空のヘッダーを使っています。 この例を簡単にするために架空のヘッダーを使っています。
しかし実際には、組み込みの [Security utilities](security/index.md){.internal-link target=_blank} を使う方が良い結果になります。 しかし実際には、組み込みの [Security utilities](security/index.md) を使う方が良い結果になります。
/// ///
@ -169,7 +169,7 @@ async def read_item(item_id: str):
/// tip | 豆知識 /// tip | 豆知識
[*path operation デコレータ*の依存関係](dependencies/dependencies-in-path-operation-decorators.md){.internal-link target=_blank} と同様に、*path operation 関数*には値は渡されない点に注意してください。 [*path operation デコレータ*の依存関係](dependencies/dependencies-in-path-operation-decorators.md) と同様に、*path operation 関数*には値は渡されない点に注意してください。
/// ///
@ -185,8 +185,8 @@ async def read_item(item_id: str):
* すべてに事前定義した `responses` が含まれます。 * すべてに事前定義した `responses` が含まれます。
* これらすべての *path operations* では、実行前に `dependencies` のリストが評価・実行されます。 * これらすべての *path operations* では、実行前に `dependencies` のリストが評価・実行されます。
* 特定の *path operation* に依存関係を宣言した場合は、**それらも実行されます**。 * 特定の *path operation* に依存関係を宣言した場合は、**それらも実行されます**。
* ルーターの依存関係が先に実行され、その後に[デコレータ内の `dependencies`](dependencies/dependencies-in-path-operation-decorators.md){.internal-link target=_blank}、次に通常のパラメータ依存関係が続きます。 * ルーターの依存関係が先に実行され、その後に[デコレータ内の `dependencies`](dependencies/dependencies-in-path-operation-decorators.md)、次に通常のパラメータ依存関係が続きます。
* [`scopes` を伴う `Security` 依存関係](../advanced/security/oauth2-scopes.md){.internal-link target=_blank} を追加することもできます。 * [`scopes` を伴う `Security` 依存関係](../advanced/security/oauth2-scopes.md) を追加することもできます。
/// tip | 豆知識 /// tip | 豆知識
@ -303,7 +303,7 @@ from ...dependencies import get_token_header
通常どおり `FastAPI` クラスをインポートして作成します。 通常どおり `FastAPI` クラスをインポートして作成します。
さらに、各 `APIRouter` の依存関係と組み合わされる[グローバル依存関係](dependencies/global-dependencies.md){.internal-link target=_blank}も宣言できます: さらに、各 `APIRouter` の依存関係と組み合わされる[グローバル依存関係](dependencies/global-dependencies.md)も宣言できます:
{* ../../docs_src/bigger_applications/app_an_py310/main.py hl[1,3,7] title["app/main.py"] *} {* ../../docs_src/bigger_applications/app_an_py310/main.py hl[1,3,7] title["app/main.py"] *}
@ -353,7 +353,7 @@ from .routers import items, users
from app.routers import items, users from app.routers import items, users
``` ```
Python のパッケージとモジュールについて詳しくは、<a href="https://docs.python.org/3/tutorial/modules.html" class="external-link" target="_blank">公式の Python モジュールに関するドキュメント</a>をご覧ください。 Python のパッケージとモジュールについて詳しくは、[公式の Python モジュールに関するドキュメント](https://docs.python.org/3/tutorial/modules.html)をご覧ください。
/// ///
@ -465,6 +465,37 @@ from .routers.users import router
/// ///
## `pyproject.toml``entrypoint` を設定 { #configure-the-entrypoint-in-pyproject.toml }
FastAPI の `app` オブジェクトは `app/main.py` にあるので、`pyproject.toml` で `entrypoint` を次のように設定できます:
```toml
[tool.fastapi]
entrypoint = "app.main:app"
```
これは次のようにインポートするのと同等です:
```python
from app.main import app
```
このようにすると、`fastapi` コマンドがアプリの場所を把握できます。
/// Note | 備考
コマンドにパスを渡すこともできます。例えば:
```console
$ fastapi dev app/main.py
```
しかし、そのたびに `fastapi` コマンドを呼ぶ際、正しいパスを渡すのを忘れないようにする必要があります。
さらに、[VS Code Extension](../editor-support.md) や [FastAPI Cloud](https://fastapicloud.com) など、他のツールが見つけられない場合があります。そのため、`pyproject.toml` の `entrypoint` を使うことを推奨します。
///
## 自動APIドキュメントの確認 { #check-the-automatic-api-docs } ## 自動APIドキュメントの確認 { #check-the-automatic-api-docs }
アプリを実行します: アプリを実行します:
@ -472,14 +503,14 @@ from .routers.users import router
<div class="termy"> <div class="termy">
```console ```console
$ fastapi dev app/main.py $ fastapi dev
<span style="color: green;">INFO</span>: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) <span style="color: green;">INFO</span>: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
``` ```
</div> </div>
そして <a href="http://127.0.0.1:8000/docs" class="external-link" target="_blank">http://127.0.0.1:8000/docs</a> を開きます。 そして [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs) を開きます。
すべてのサブモジュール由来のパスを含む自動 API ドキュメントが表示され、正しいパス(および prefix)と正しいタグが使われているのが分かります: すべてのサブモジュール由来のパスを含む自動 API ドキュメントが表示され、正しいパス(および prefix)と正しいタグが使われているのが分かります:

2
docs/ja/docs/tutorial/body-nested-models.md

@ -96,7 +96,7 @@ Pydanticモデルの各属性には型があります。
`str`や`int`、`float`などの通常の単数型の他にも、`str`を継承したより複雑な単数型を使うこともできます。 `str`や`int`、`float`などの通常の単数型の他にも、`str`を継承したより複雑な単数型を使うこともできます。
すべてのオプションをみるには、<a href="https://docs.pydantic.dev/latest/concepts/types/" class="external-link" target="_blank">Pydanticの型の概要</a>を確認してください。次の章でいくつかの例をみることができます。 すべてのオプションをみるには、[Pydantic の型の概要](https://docs.pydantic.dev/latest/concepts/types/)を確認してください。次の章でいくつかの例をみることができます。
例えば、`Image`モデルのように`url`フィールドがある場合、`str`の代わりにPydanticの`HttpUrl`のインスタンスとして宣言することができます: 例えば、`Image`モデルのように`url`フィールドがある場合、`str`の代わりにPydanticの`HttpUrl`のインスタンスとして宣言することができます:

8
docs/ja/docs/tutorial/body-updates.md

@ -2,7 +2,7 @@
## `PUT`による置換での更新 { #update-replacing-with-put } ## `PUT`による置換での更新 { #update-replacing-with-put }
項目を更新するには<a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PUT" class="external-link" target="_blank">HTTPの`PUT`</a>操作を使用することができます。 項目を更新するには[HTTPの`PUT`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PUT)操作を使用することができます。
`jsonable_encoder`を用いて、入力データをJSONとして保存できるデータに変換することができます(例:NoSQLデータベース)。例えば、`datetime`を`str`に変換します。 `jsonable_encoder`を用いて、入力データをJSONとして保存できるデータに変換することができます(例:NoSQLデータベース)。例えば、`datetime`を`str`に変換します。
@ -28,7 +28,7 @@
## `PATCH`による部分的な更新 { #partial-updates-with-patch } ## `PATCH`による部分的な更新 { #partial-updates-with-patch }
また、<a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PATCH" class="external-link" target="_blank">HTTPの`PATCH`</a>操作でデータを*部分的に*更新することもできます。 また、[HTTPの`PATCH`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PATCH)操作でデータを*部分的に*更新することもできます。
つまり、更新したいデータだけを送信して、残りはそのままにしておくことができます。 つまり、更新したいデータだけを送信して、残りはそのままにしておくことができます。
@ -68,7 +68,7 @@
まとめると、部分的な更新を適用するには、次のようにします: まとめると、部分的な更新を適用するには、次のようにします:
* (オプションで)`PATCH`の代わりに`PUT`を使用します。 * (オプションで)`PUT`の代わりに`PATCH`を使用します。
* 保存されているデータを取得します。 * 保存されているデータを取得します。
* そのデータをPydanticモデルにいれます。 * そのデータをPydanticモデルにいれます。
* 入力モデルからデフォルト値を含まない`dict`を生成します(`exclude_unset`を使用します)。 * 入力モデルからデフォルト値を含まない`dict`を生成します(`exclude_unset`を使用します)。
@ -95,6 +95,6 @@
そのため、すべての属性を省略できる部分的な変更を受け取りたい場合は、すべての属性をオプションとしてマークしたモデルを用意する必要があります(デフォルト値または`None`を使用して)。 そのため、すべての属性を省略できる部分的な変更を受け取りたい場合は、すべての属性をオプションとしてマークしたモデルを用意する必要があります(デフォルト値または`None`を使用して)。
**更新** のためのオプション値がすべて設定されているモデルと、**作成** のための必須値が設定されているモデルを区別するには、[追加モデル](extra-models.md){.internal-link target=_blank}で説明されている考え方を利用することができます。 **更新** のためのオプション値がすべて設定されているモデルと、**作成** のための必須値が設定されているモデルを区別するには、[追加モデル](extra-models.md)で説明されている考え方を利用することができます。
/// ///

12
docs/ja/docs/tutorial/body.md

@ -6,7 +6,7 @@
APIはほとんどの場合 **レスポンス** ボディを送信する必要があります。しかしクライアントは、常に **リクエストボディ** を送信する必要があるとは限りません。場合によっては、クエリパラメータ付きのパスだけをリクエストして、ボディを送信しないこともあります。 APIはほとんどの場合 **レスポンス** ボディを送信する必要があります。しかしクライアントは、常に **リクエストボディ** を送信する必要があるとは限りません。場合によっては、クエリパラメータ付きのパスだけをリクエストして、ボディを送信しないこともあります。
**リクエスト**ボディを宣言するには、<a href="https://docs.pydantic.dev/" class="external-link" target="_blank">Pydantic</a> モデルを使用し、その強力な機能とメリットをすべて利用します。 **リクエスト**ボディを宣言するには、[Pydantic](https://docs.pydantic.dev/) モデルを使用し、その強力な機能とメリットをすべて利用します。
/// info | 情報 /// info | 情報
@ -73,7 +73,7 @@ APIはほとんどの場合 **レスポンス** ボディを送信する必要
* データが無効な場合は、どこで何が不正なデータだったのかを正確に示す、分かりやすい明確なエラーを返します。 * データが無効な場合は、どこで何が不正なデータだったのかを正確に示す、分かりやすい明確なエラーを返します。
* 受け取ったデータをパラメータ `item` に渡します。 * 受け取ったデータをパラメータ `item` に渡します。
* 関数内で `Item` 型として宣言したため、すべての属性とその型について、エディタサポート(補完など)も利用できます。 * 関数内で `Item` 型として宣言したため、すべての属性とその型について、エディタサポート(補完など)も利用できます。
* モデル向けの <a href="https://json-schema.org" class="external-link" target="_blank">JSON Schema</a> 定義を生成します。プロジェクトにとって意味があるなら、他の場所でも好きなように利用できます。 * モデル向けの [JSON Schema](https://json-schema.org) 定義を生成します。プロジェクトにとって意味があるなら、他の場所でも好きなように利用できます。
* それらのスキーマは生成されるOpenAPIスキーマの一部となり、自動ドキュメントの <abbr title="User Interfaces - ユーザーインターフェース">UIs</abbr> で使用されます。 * それらのスキーマは生成されるOpenAPIスキーマの一部となり、自動ドキュメントの <abbr title="User Interfaces - ユーザーインターフェース">UIs</abbr> で使用されます。
## 自動ドキュメント { #automatic-docs } ## 自動ドキュメント { #automatic-docs }
@ -102,15 +102,15 @@ APIはほとんどの場合 **レスポンス** ボディを送信する必要
これをサポートするために、Pydantic自体にもいくつかの変更が加えられました。 これをサポートするために、Pydantic自体にもいくつかの変更が加えられました。
前述のスクリーンショットは <a href="https://code.visualstudio.com" class="external-link" target="_blank">Visual Studio Code</a> で撮影されたものです。 前述のスクリーンショットは [Visual Studio Code](https://code.visualstudio.com) で撮影されたものです。
ただし、<a href="https://www.jetbrains.com/pycharm/" class="external-link" target="_blank">PyCharm</a> や、他のほとんどのPythonエディタでも同じエディタサポートを得られます: ただし、[PyCharm](https://www.jetbrains.com/pycharm/) や、他のほとんどのPythonエディタでも同じエディタサポートを得られます:
<img src="/img/tutorial/body/image05.png"> <img src="/img/tutorial/body/image05.png">
/// tip | 豆知識 /// tip | 豆知識
エディタとして <a href="https://www.jetbrains.com/pycharm/" class="external-link" target="_blank">PyCharm</a> を使用している場合、<a href="https://github.com/koxudaxi/pydantic-pycharm-plugin/" class="external-link" target="_blank">Pydantic PyCharm Plugin</a> を使用できます。 エディタとして [PyCharm](https://www.jetbrains.com/pycharm/) を使用している場合、[Pydantic PyCharm Plugin](https://github.com/koxudaxi/pydantic-pycharm-plugin/) を使用できます。
以下により、Pydanticモデルに対するエディタサポートが改善されます: 以下により、Pydanticモデルに対するエディタサポートが改善されます:
@ -163,4 +163,4 @@ FastAPIは、デフォルト値 `= None` があるため、`q` の値が必須
## Pydanticを使わない方法 { #without-pydantic } ## Pydanticを使わない方法 { #without-pydantic }
Pydanticモデルを使いたくない場合は、**Body** パラメータも使用できます。[Body - Multiple Parameters: Singular values in body](body-multiple-params.md#singular-values-in-body){.internal-link target=_blank} のドキュメントを参照してください。 Pydanticモデルを使いたくない場合は、**Body** パラメータも使用できます。[Body - 複数のパラメータ: ボディ内の単一値](body-multiple-params.md#singular-values-in-body) のドキュメントを参照してください。

8
docs/ja/docs/tutorial/cors.md

@ -1,6 +1,6 @@
# CORS (Cross-Origin Resource Sharing) { #cors-cross-origin-resource-sharing } # CORS (Cross-Origin Resource Sharing) { #cors-cross-origin-resource-sharing }
<a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS" class="external-link" target="_blank">CORSまたは「Cross-Origin Resource Sharing」</a> は、ブラウザで実行されているフロントエンドにバックエンドと通信するJavaScriptコードがあり、そのバックエンドがフロントエンドとは異なる「オリジン」にある状況を指します。 [CORSまたは「Cross-Origin Resource Sharing」](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) は、ブラウザで実行されているフロントエンドにバックエンドと通信するJavaScriptコードがあり、そのバックエンドがフロントエンドとは異なる「オリジン」にある状況を指します。
## オリジン { #origin } ## オリジン { #origin }
@ -56,10 +56,10 @@
* `allow_origins` - オリジン間リクエストを許可するオリジンのリスト。例えば、`['https://example.org', 'https://www.example.org']`。`['*']`を使用して任意のオリジンを許可できます。 * `allow_origins` - オリジン間リクエストを許可するオリジンのリスト。例えば、`['https://example.org', 'https://www.example.org']`。`['*']`を使用して任意のオリジンを許可できます。
* `allow_origin_regex` - オリジン間リクエストを許可するオリジンの正規表現文字列。例えば、`'https://.*\.example\.org'`。 * `allow_origin_regex` - オリジン間リクエストを許可するオリジンの正規表現文字列。例えば、`'https://.*\.example\.org'`。
* `allow_methods` - オリジン間リクエストで許可するHTTPメソッドのリスト。デフォルトは `['GET']` です。`['*']`を使用してすべての標準メソッドを許可できます。 * `allow_methods` - オリジン間リクエストで許可するHTTPメソッドのリスト。デフォルトは `['GET']` です。`['*']`を使用してすべての標準メソッドを許可できます。
* `allow_headers` - オリジン間リクエストでサポートするHTTPリクエストヘッダーのリスト。デフォルトは `[]` です。`['*']`を使用して、すべてのヘッダーを許可できます。<a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple_requests" class="external-link" rel="noopener" target="_blank">シンプルなCORSリクエスト</a>では、 `Accept``Accept-Language``Content-Language``Content-Type` ヘッダーが常に許可されます。 * `allow_headers` - オリジン間リクエストでサポートするHTTPリクエストヘッダーのリスト。デフォルトは `[]` です。`['*']`を使用して、すべてのヘッダーを許可できます。[シンプルなCORSリクエスト](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple_requests)では、 `Accept``Accept-Language``Content-Language``Content-Type` ヘッダーが常に許可されます。
* `allow_credentials` - オリジン間リクエストでCookieをサポートする必要があることを示します。デフォルトは `False` です。 * `allow_credentials` - オリジン間リクエストでCookieをサポートする必要があることを示します。デフォルトは `False` です。
`allow_credentials``True` に設定されている場合、`allow_origins`、`allow_methods`、`allow_headers` のいずれも `['*']` に設定できません。これらはすべて<a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#credentialed_requests_and_wildcards" class="external-link" rel="noopener" target="_blank">明示的に指定</a>する必要があります。 `allow_credentials``True` に設定されている場合、`allow_origins`、`allow_methods`、`allow_headers` のいずれも `['*']` に設定できません。これらはすべて[明示的に指定](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#credentialed_requests_and_wildcards)する必要があります。
* `expose_headers` - ブラウザからアクセスできるようにするレスポンスヘッダーを示します。デフォルトは `[]` です。 * `expose_headers` - ブラウザからアクセスできるようにするレスポンスヘッダーを示します。デフォルトは `[]` です。
* `max_age` - ブラウザがCORSレスポンスをキャッシュする最大時間を秒単位で設定します。デフォルトは `600` です。 * `max_age` - ブラウザがCORSレスポンスをキャッシュする最大時間を秒単位で設定します。デフォルトは `600` です。
@ -78,7 +78,7 @@
## より詳しい情報 { #more-info } ## より詳しい情報 { #more-info }
<abbr title="Cross-Origin Resource Sharing オリジン間リソース共有">CORS</abbr>についてより詳しい情報は、<a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS" class="external-link" target="_blank">Mozilla CORS documentation</a> を参照して下さい。 <abbr title="Cross-Origin Resource Sharing - オリジン間リソース共有">CORS</abbr>についてより詳しい情報は、[Mozilla CORS documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) を参照して下さい。
/// note | 技術詳細 /// note | 技術詳細

4
docs/ja/docs/tutorial/debugging.md

@ -59,7 +59,7 @@ Pythonによって自動的に作成されたファイル内の内部変数 `__n
```Python ```Python
from myapp import app from myapp import app
# Some more code # その他のコード
``` ```
その場合、`myapp.py` 内の自動的に作成された変数 `__name__` は、値として `"__main__"` を持ちません。 その場合、`myapp.py` 内の自動的に作成された変数 `__name__` は、値として `"__main__"` を持ちません。
@ -74,7 +74,7 @@ from myapp import app
/// info | 情報 /// info | 情報
より詳しい情報は、<a href="https://docs.python.org/3/library/__main__.html" class="external-link" target="_blank">公式Pythonドキュメント</a>を参照してください。 より詳しい情報は、[公式Pythonドキュメント](https://docs.python.org/3/library/__main__.html)を参照してください。
/// ///

4
docs/ja/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md

@ -32,7 +32,7 @@
この例では、架空のカスタムヘッダー `X-Key``X-Token` を使用しています。 この例では、架空のカスタムヘッダー `X-Key``X-Token` を使用しています。
しかし実際のケースでセキュリティを実装する際は、統合された[Security utilities(次の章)](../security/index.md){.internal-link target=_blank}を使うことで、より多くの利点を得られます。 しかし実際のケースでセキュリティを実装する際は、統合された[Security utilities(次の章)](../security/index.md)を使うことで、より多くの利点を得られます。
/// ///
@ -62,7 +62,7 @@
## *path operation*のグループに対する依存関係 { #dependencies-for-a-group-of-path-operations } ## *path operation*のグループに対する依存関係 { #dependencies-for-a-group-of-path-operations }
後で、より大きなアプリケーションを(おそらく複数ファイルで)構造化する方法([Bigger Applications - Multiple Files](../../tutorial/bigger-applications.md){.internal-link target=_blank})について読むときに、*path operation*のグループに対して単一の`dependencies`パラメータを宣言する方法を学びます。 後で、より大きなアプリケーションを(おそらく複数ファイルで)構造化する方法([Bigger Applications - Multiple Files](../../tutorial/bigger-applications.md))について読むときに、*path operation*のグループに対して単一の`dependencies`パラメータを宣言する方法を学びます。
## グローバル依存関係 { #global-dependencies } ## グローバル依存関係 { #global-dependencies }

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

@ -14,8 +14,8 @@ FastAPIは、いくつかの<dfn title="「終了コード」「クリーンア
以下と一緒に使用できる関数なら何でも有効です: 以下と一緒に使用できる関数なら何でも有効です:
* <a href="https://docs.python.org/3/library/contextlib.html#contextlib.contextmanager" class="external-link" target="_blank">`@contextlib.contextmanager`</a>または * [`@contextlib.contextmanager`](https://docs.python.org/3/library/contextlib.html#contextlib.contextmanager) または
* <a href="https://docs.python.org/3/library/contextlib.html#contextlib.asynccontextmanager" class="external-link" target="_blank">`@contextlib.asynccontextmanager`</a> * [`@contextlib.asynccontextmanager`](https://docs.python.org/3/library/contextlib.html#contextlib.asynccontextmanager)
これらは **FastAPI** の依存関係として使用するのに有効です。 これらは **FastAPI** の依存関係として使用するのに有効です。
@ -87,7 +87,7 @@ FastAPIは、いくつかの<dfn title="「終了コード」「クリーンア
/// note | 技術詳細 /// note | 技術詳細
これはPythonの<a href="https://docs.python.org/3/library/contextlib.html" class="external-link" target="_blank">Context Managers</a>のおかげで動作します。 これはPythonの[コンテキストマネージャ](https://docs.python.org/3/library/contextlib.html)のおかげで動作します。
**FastAPI** はこれを実現するために内部的に使用しています。 **FastAPI** はこれを実現するために内部的に使用しています。
@ -111,7 +111,7 @@ FastAPIは、いくつかの<dfn title="「終了コード」「クリーンア
{* ../../docs_src/dependencies/tutorial008b_an_py310.py hl[18:22,31] *} {* ../../docs_src/dependencies/tutorial008b_an_py310.py hl[18:22,31] *}
例外をキャッチして、それに基づいてカスタムレスポンスを作成したい場合は、[カスタム例外ハンドラ](../handling-errors.md#install-custom-exception-handlers){.internal-link target=_blank}を作成してください。 例外をキャッチして、それに基づいてカスタムレスポンスを作成したい場合は、[カスタム例外ハンドラ](../handling-errors.md#install-custom-exception-handlers)を作成してください。
## `yield`と`except`を持つ依存関係 { #dependencies-with-yield-and-except } ## `yield`と`except`を持つ依存関係 { #dependencies-with-yield-and-except }
@ -233,14 +233,14 @@ participant operation as Path Operation
`yield`を持つ依存関係は、さまざまなユースケースをカバーし、いくつかの問題を修正するために、時間とともに進化してきました。 `yield`を持つ依存関係は、さまざまなユースケースをカバーし、いくつかの問題を修正するために、時間とともに進化してきました。
FastAPIの異なるバージョンで何が変わったのかを知りたい場合は、上級ガイドの[上級の依存関係 - `yield`、`HTTPException`、`except`、バックグラウンドタスクを持つ依存関係](../../advanced/advanced-dependencies.md#dependencies-with-yield-httpexception-except-and-background-tasks){.internal-link target=_blank}で詳しく読めます。 FastAPIの異なるバージョンで何が変わったのかを知りたい場合は、上級ガイドの[上級の依存関係 - `yield`、`HTTPException`、`except`、バックグラウンドタスクを持つ依存関係](../../advanced/advanced-dependencies.md#dependencies-with-yield-httpexception-except-and-background-tasks)で詳しく読めます。
## コンテキストマネージャ { #context-managers } ## コンテキストマネージャ { #context-managers }
### 「コンテキストマネージャ」とは { #what-are-context-managers } ### 「コンテキストマネージャ」とは { #what-are-context-managers }
「コンテキストマネージャ」とは、`with`文の中で使用できるPythonオブジェクトのことです。 「コンテキストマネージャ」とは、`with`文の中で使用できるPythonオブジェクトのことです。
例えば、<a href="https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files" class="external-link" target="_blank">ファイルを読み込むには`with`を使用することができます</a>: 例えば、[ファイルを読み込むには`with`を使用することができます](https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files):
```Python ```Python
with open("./somefile.txt") as f: with open("./somefile.txt") as f:
@ -264,7 +264,7 @@ with open("./somefile.txt") as f:
/// ///
Pythonでは、<a href="https://docs.python.org/3/reference/datamodel.html#context-managers" class="external-link" target="_blank">以下の2つのメソッドを持つクラスを作成する: `__enter__()`と`__exit__()`</a>ことでコンテキストマネージャを作成することができます。 Pythonでは、[以下の2つのメソッドを持つクラスを作成する: `__enter__()`と`__exit__()`](https://docs.python.org/3/reference/datamodel.html#context-managers)ことでコンテキストマネージャを作成することができます。
また、依存関数の中で`with`や`async with`文を使用することによって`yield`を持つ **FastAPI** の依存関係の中でそれらを使用することができます: また、依存関数の中で`with`や`async with`文を使用することによって`yield`を持つ **FastAPI** の依存関係の中でそれらを使用することができます:
@ -272,10 +272,10 @@ Pythonでは、<a href="https://docs.python.org/3/reference/datamodel.html#conte
/// tip | 豆知識 /// tip | 豆知識
コンテキストマネージャを作成するもう一つの方法はwithです: コンテキストマネージャを作成するもう一つの方法は次の方法です:
* <a href="https://docs.python.org/3/library/contextlib.html#contextlib.contextmanager" class="external-link" target="_blank">`@contextlib.contextmanager`</a> または * [`@contextlib.contextmanager`](https://docs.python.org/3/library/contextlib.html#contextlib.contextmanager) または
* <a href="https://docs.python.org/3/library/contextlib.html#contextlib.asynccontextmanager" class="external-link" target="_blank">`@contextlib.asynccontextmanager`</a> * [`@contextlib.asynccontextmanager`](https://docs.python.org/3/library/contextlib.html#contextlib.asynccontextmanager)
これらを使って、関数を単一の`yield`でデコレートすることができます。 これらを使って、関数を単一の`yield`でデコレートすることができます。

6
docs/ja/docs/tutorial/dependencies/global-dependencies.md

@ -2,14 +2,14 @@
アプリケーションの種類によっては、アプリ全体に依存関係を追加したい場合があります。 アプリケーションの種類によっては、アプリ全体に依存関係を追加したい場合があります。
[`dependencies` を path operation のデコレータに追加](dependencies-in-path-operation-decorators.md){.internal-link target=_blank}できるのと同様に、`FastAPI` アプリケーション自体にも追加できます。 [`dependencies` を path operation のデコレータに追加](dependencies-in-path-operation-decorators.md)できるのと同様に、`FastAPI` アプリケーション自体にも追加できます。
その場合、アプリケーション内のすべての path operation に適用されます: その場合、アプリケーション内のすべての path operation に適用されます:
{* ../../docs_src/dependencies/tutorial012_an_py310.py hl[17] *} {* ../../docs_src/dependencies/tutorial012_an_py310.py hl[17] *}
また、[`dependencies` を path operation のデコレータに追加](dependencies-in-path-operation-decorators.md){.internal-link target=_blank}する節で説明した考え方はすべて引き続き当てはまりますが、この場合はアプリ内のすべての path operation に対して適用されます。 また、[`dependencies` を path operation のデコレータに追加](dependencies-in-path-operation-decorators.md)する節で説明した考え方はすべて引き続き当てはまりますが、この場合はアプリ内のすべての path operation に対して適用されます。
## path operation のグループに対する依存関係 { #dependencies-for-groups-of-path-operations } ## path operation のグループに対する依存関係 { #dependencies-for-groups-of-path-operations }
後で、複数ファイルを含む大規模アプリケーションの構成方法([大規模アプリケーション - 複数ファイル](../../tutorial/bigger-applications.md){.internal-link target=_blank})を読むと、path operation のグループに対して 1 つの `dependencies` パラメータを宣言する方法を学びます。 後で、複数ファイルを含む大規模アプリケーションの構成方法([大規模アプリケーション - 複数ファイル](../../tutorial/bigger-applications.md))を読むと、path operation のグループに対して 1 つの `dependencies` パラメータを宣言する方法を学びます。

4
docs/ja/docs/tutorial/dependencies/index.md

@ -57,7 +57,7 @@ FastAPI はバージョン 0.95.0 で `Annotated` のサポートを追加し(
古いバージョンを使用している場合、`Annotated` を使おうとするとエラーになります。 古いバージョンを使用している場合、`Annotated` を使おうとするとエラーになります。
`Annotated` を使用する前に、少なくとも 0.95.1 まで [FastAPI のバージョンをアップグレード](../../deployment/versions.md#upgrading-the-fastapi-versions){.internal-link target=_blank} してください。 `Annotated` を使用する前に、少なくとも 0.95.1 まで [FastAPI のバージョンをアップグレード](../../deployment/versions.md#upgrading-the-fastapi-versions) してください。
/// ///
@ -152,7 +152,7 @@ commons: Annotated[dict, Depends(common_parameters)]
/// note | 備考 /// note | 備考
わからない場合は、ドキュメントの[Async: *"In a hurry?"*](../../async.md#in-a-hurry){.internal-link target=_blank}の中の`async`と`await`についてのセクションを確認してください。 わからない場合は、ドキュメントの[Async: *「急いでいますか?」*](../../async.md#in-a-hurry)の中の`async`と`await`についてのセクションを確認してください。
/// ///

4
docs/ja/docs/tutorial/encoder.md

@ -12,7 +12,7 @@ JSON互換のデータのみを受信するデータベース`fake_db`がある
例えば、`datetime`オブジェクトはJSONと互換性がないので、受け取られません。 例えば、`datetime`オブジェクトはJSONと互換性がないので、受け取られません。
そのため、`datetime`オブジェクトは<a href="https://en.wikipedia.org/wiki/ISO_8601" class="external-link" target="_blank">ISO形式</a>のデータを含む`str`に変換されなければなりません。 そのため、`datetime`オブジェクトは[ISO形式](https://en.wikipedia.org/wiki/ISO_8601)のデータを含む`str`に変換されなければなりません。
同様に、このデータベースはPydanticモデル(属性を持つオブジェクト)を受け取らず、`dict`だけを受け取ります。 同様に、このデータベースはPydanticモデル(属性を持つオブジェクト)を受け取らず、`dict`だけを受け取ります。
@ -24,7 +24,7 @@ Pydanticモデルのようなオブジェクトを受け取り、JSON互換版
この例では、Pydanticモデルを`dict`に、`datetime`を`str`に変換します。 この例では、Pydanticモデルを`dict`に、`datetime`を`str`に変換します。
呼び出した結果は、Pythonの標準の<a href="https://docs.python.org/3/library/json.html#json.dumps" class="external-link" target="_blank">`json.dumps()`</a>でエンコードできるものです。 呼び出した結果は、Pythonの標準の[`json.dumps()`](https://docs.python.org/3/library/json.html#json.dumps)でエンコードできるものです。
これはJSON形式のデータを含む大きな`str`を(文字列として)返しません。JSONと互換性のある値とサブの値を持つPython標準のデータ構造(例:`dict`)を返します。 これはJSON形式のデータを含む大きな`str`を(文字列として)返しません。JSONと互換性のある値とサブの値を持つPython標準のデータ構造(例:`dict`)を返します。

4
docs/ja/docs/tutorial/extra-data-types.md

@ -36,7 +36,7 @@
* `datetime.timedelta`: * `datetime.timedelta`:
* Pythonの`datetime.timedelta`です。 * Pythonの`datetime.timedelta`です。
* リクエストとレスポンスでは合計秒数の`float`で表現されます。 * リクエストとレスポンスでは合計秒数の`float`で表現されます。
* Pydanticでは「ISO 8601 time diff encoding」として表現することも可能です。<a href="https://docs.pydantic.dev/latest/concepts/serialization/#custom-serializers" class="external-link" target="_blank">詳細はドキュメントを参照してください</a> * Pydanticでは「ISO 8601 time diff encoding」として表現することも可能です。[詳細はドキュメントを参照してください](https://docs.pydantic.dev/latest/concepts/serialization/#custom-serializers)
* `frozenset`: * `frozenset`:
* リクエストとレスポンスでは`set`と同じように扱われます: * リクエストとレスポンスでは`set`と同じように扱われます:
* リクエストでは、リストが読み込まれ、重複を排除して`set`に変換されます。 * リクエストでは、リストが読み込まれ、重複を排除して`set`に変換されます。
@ -49,7 +49,7 @@
* `Decimal`: * `Decimal`:
* Pythonの標準的な`Decimal`です。 * Pythonの標準的な`Decimal`です。
* リクエストとレスポンスでは`float`と同じように扱われます。 * リクエストとレスポンスでは`float`と同じように扱われます。
* Pydanticの全ての有効な型はこちらで確認できます: <a href="https://docs.pydantic.dev/latest/usage/types/types/" class="external-link" target="_blank">Pydantic data types</a> * 有効なPydanticのデータ型はここで確認できます: [Pydantic のデータ型](https://docs.pydantic.dev/latest/usage/types/types/)
## 例 { #example } ## 例 { #example }

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

@ -162,11 +162,11 @@ UserInDB(
OpenAPIでは`anyOf`で定義されます。 OpenAPIでは`anyOf`で定義されます。
そのためには、標準的なPythonの型ヒント<a href="https://docs.python.org/3/library/typing.html#typing.Union" class="external-link" target="_blank">`typing.Union`</a>を使用します: そのためには、標準的なPythonの型ヒント[`typing.Union`](https://docs.python.org/3/library/typing.html#typing.Union)を使用します:
/// note | 備考 /// note | 備考
<a href="https://docs.pydantic.dev/latest/concepts/types/#unions" class="external-link" target="_blank">`Union`</a>を定義する場合は、最も具体的な型を先に、その後により具体性の低い型を含めてください。以下の例では、より具体的な`PlaneItem`が`Union[PlaneItem, CarItem]`内で`CarItem`より前に来ています。 [`Union`](https://docs.pydantic.dev/latest/concepts/types/#unions)を定義する場合は、最も具体的な型を先に、その後により具体性の低い型を含めてください。以下の例では、より具体的な`PlaneItem`が`Union[PlaneItem, CarItem]`内で`CarItem`より前に来ています。
/// ///

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

@ -11,7 +11,7 @@
<div class="termy"> <div class="termy">
```console ```console
$ <font color="#4E9A06">fastapi</font> dev <u style="text-decoration-style:solid">main.py</u> $ <font color="#4E9A06">fastapi</font> dev
<span style="background-color:#009485"><font color="#D3D7CF"> FastAPI </font></span> Starting development server 🚀 <span style="background-color:#009485"><font color="#D3D7CF"> FastAPI </font></span> Starting development server 🚀
@ -58,7 +58,7 @@ INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
### チェック { #check-it } ### チェック { #check-it }
ブラウザで<a href="http://127.0.0.1:8000" class="external-link" target="_blank">http://127.0.0.1:8000</a>を開きます。 ブラウザで[http://127.0.0.1:8000](http://127.0.0.1:8000)を開きます。
次のようなJSONレスポンスが表示されます: 次のようなJSONレスポンスが表示されます:
@ -68,17 +68,17 @@ INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
### 対話的APIドキュメント { #interactive-api-docs } ### 対話的APIドキュメント { #interactive-api-docs }
次に、<a href="http://127.0.0.1:8000/docs" class="external-link" target="_blank">http://127.0.0.1:8000/docs</a>にアクセスします。 次に、[http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs)にアクセスします。
自動生成された対話的APIドキュメントが表示されます (<a href="https://github.com/swagger-api/swagger-ui" class="external-link" target="_blank">Swagger UI</a>で提供): 自動生成された対話的APIドキュメントが表示されます([Swagger UI](https://github.com/swagger-api/swagger-ui)で提供):
![Swagger UI](https://fastapi.tiangolo.com/img/index/index-01-swagger-ui-simple.png) ![Swagger UI](https://fastapi.tiangolo.com/img/index/index-01-swagger-ui-simple.png)
### 代替APIドキュメント { #alternative-api-docs } ### 代替APIドキュメント { #alternative-api-docs }
次に、<a href="http://127.0.0.1:8000/redoc" class="external-link" target="_blank">http://127.0.0.1:8000/redoc</a>にアクセスします。 次に、[http://127.0.0.1:8000/redoc](http://127.0.0.1:8000/redoc)にアクセスします。
先ほどとは異なる、自動生成された対話的APIドキュメントが表示されます (<a href="https://github.com/Rebilly/ReDoc" class="external-link" target="_blank">ReDoc</a>によって提供): 先ほどとは異なる、自動生成された対話的APIドキュメントが表示されます([ReDoc](https://github.com/Rebilly/ReDoc)によって提供):
![ReDoc](https://fastapi.tiangolo.com/img/index/index-02-redoc-simple.png) ![ReDoc](https://fastapi.tiangolo.com/img/index/index-02-redoc-simple.png)
@ -92,7 +92,7 @@ INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
#### API「スキーマ」 { #api-schema } #### API「スキーマ」 { #api-schema }
ここでは、<a href="https://github.com/OAI/OpenAPI-Specification" class="external-link" target="_blank">OpenAPI</a>はAPIのスキーマ定義の方法を規定する仕様です。 ここでは、[OpenAPI](https://github.com/OAI/OpenAPI-Specification)はAPIのスキーマ定義の方法を規定する仕様です。
このスキーマ定義はAPIパス、受け取り可能なパラメータなどが含まれます。 このスキーマ定義はAPIパス、受け取り可能なパラメータなどが含まれます。
@ -110,7 +110,7 @@ OpenAPIはAPIのためのAPIスキーマを定義します。そして、その
素のOpenAPIスキーマがどのようなものか興味がある場合、FastAPIはすべてのAPIの説明を含むJSON(スキーマ)を自動的に生成します。 素のOpenAPIスキーマがどのようなものか興味がある場合、FastAPIはすべてのAPIの説明を含むJSON(スキーマ)を自動的に生成します。
次の場所で直接確認できます: <a href="http://127.0.0.1:8000/openapi.json" class="external-link" target="_blank">http://127.0.0.1:8000/openapi.json</a>. 次の場所で直接確認できます: [http://127.0.0.1:8000/openapi.json](http://127.0.0.1:8000/openapi.json).
次のようなJSONが表示されます。 次のようなJSONが表示されます。
@ -143,9 +143,58 @@ OpenAPIスキーマは、FastAPIに含まれている2つのインタラクテ
また、APIと通信するクライアント用のコードを自動的に生成するために使用することもできます。たとえば、フロントエンド、モバイル、またはIoTアプリケーションです。 また、APIと通信するクライアント用のコードを自動的に生成するために使用することもできます。たとえば、フロントエンド、モバイル、またはIoTアプリケーションです。
### `pyproject.toml`でアプリの`entrypoint`を設定 { #configure-the-app-entrypoint-in-pyproject-toml }
`pyproject.toml`でアプリの場所を次のように設定できます:
```toml
[tool.fastapi]
entrypoint = "main:app"
```
この`entrypoint`は、`fastapi`コマンドに対して、次のようにアプリをインポートすべきであることを伝えます:
```python
from main import app
```
もしコード構成が次のようになっている場合:
```
.
├── backend
│   ├── main.py
│   ├── __init__.py
```
このときは`entrypoint`を次のように設定します:
```toml
[tool.fastapi]
entrypoint = "backend.main:app"
```
これは次と同等です:
```python
from backend.main import app
```
### パス付きの`fastapi dev` { #fastapi-dev-with-path }
`fastapi dev`コマンドにファイルパスを渡すこともでき、使用すべきFastAPIのappオブジェクトを推測します:
```console
$ fastapi dev main.py
```
ただし、その場合は毎回`fastapi`コマンドを呼ぶたびに正しいパスを渡すことを覚えておく必要があります。
さらに、他のツール(たとえば、[VS Code 拡張機能](../editor-support.md)や[FastAPI Cloud](https://fastapicloud.com))が見つけられない場合があります。そのため、`pyproject.toml`の`entrypoint`を使うことを推奨します。
### アプリをデプロイ(任意) { #deploy-your-app-optional } ### アプリをデプロイ(任意) { #deploy-your-app-optional }
任意でFastAPIアプリを<a href="https://fastapicloud.com" class="external-link" target="_blank">FastAPI Cloud</a>にデプロイできます。まだなら、待機リストに登録してください。 🚀 任意でFastAPIアプリを[FastAPI Cloud](https://fastapicloud.com)にデプロイできます。まだなら、待機リストに登録してください。 🚀
すでに**FastAPI Cloud**アカウントがある場合(待機リストから招待済みの場合😉)、1コマンドでアプリケーションをデプロイできます。 すでに**FastAPI Cloud**アカウントがある場合(待機リストから招待済みの場合😉)、1コマンドでアプリケーションをデプロイできます。
@ -191,7 +240,7 @@ Deploying to FastAPI Cloud...
`FastAPI`は`Starlette`を直接継承するクラスです。 `FastAPI`は`Starlette`を直接継承するクラスです。
`FastAPI`でも<a href="https://www.starlette.dev/" class="external-link" target="_blank">Starlette</a>のすべての機能を利用可能です。 `FastAPI`でも[Starlette](https://www.starlette.dev/)のすべての機能を利用可能です。
/// ///
@ -272,7 +321,7 @@ APIを構築するときは、通常、これらの特定のHTTPメソッドを
* パス `/` * パス `/`
* <dfn title="HTTP GET メソッド"><code>get</code> オペレーション</dfn> * <dfn title="HTTP GET メソッド"><code>get</code> オペレーション</dfn>
/// info | `@decorator` Info /// info | `@decorator` 情報
Pythonにおける`@something`シンタックスはデコレータと呼ばれます。 Pythonにおける`@something`シンタックスはデコレータと呼ばれます。
@ -335,7 +384,7 @@ Pythonにおける`@something`シンタックスはデコレータと呼ばれ
/// note | 備考 /// note | 備考
違いが分からない場合は、[Async: *"急いでいますか?"*](../async.md#in-a-hurry){.internal-link target=_blank}を確認してください。 違いが分からない場合は、[Async: *「急いでいますか?」*](../async.md#in-a-hurry)を確認してください。
/// ///
@ -351,11 +400,11 @@ JSONに自動的に変換されるオブジェクトやモデルは他にもた
### Step 6: デプロイする { #step-6-deploy-it } ### Step 6: デプロイする { #step-6-deploy-it }
**<a href="https://fastapicloud.com" class="external-link" target="_blank">FastAPI Cloud</a>**に1コマンドでアプリをデプロイします: `fastapi deploy`. 🎉 **[FastAPI Cloud](https://fastapicloud.com)**に1コマンドでアプリをデプロイします: `fastapi deploy`. 🎉
#### FastAPI Cloudについて { #about-fastapi-cloud } #### FastAPI Cloudについて { #about-fastapi-cloud }
**<a href="https://fastapicloud.com" class="external-link" target="_blank">FastAPI Cloud</a>**は、**FastAPI**の作者とそのチームによって開発されています。 **[FastAPI Cloud](https://fastapicloud.com)**は、**FastAPI**の作者とそのチームによって開発されています。
最小限の労力でAPIの**構築**、**デプロイ**、**アクセス**を行うプロセスを合理化します。 最小限の労力でAPIの**構築**、**デプロイ**、**アクセス**を行うプロセスを合理化します。

2
docs/ja/docs/tutorial/handling-errors.md

@ -81,7 +81,7 @@ Pythonの例外なので、`return`ではなく、`raise`です。
## カスタム例外ハンドラのインストール { #install-custom-exception-handlers } ## カスタム例外ハンドラのインストール { #install-custom-exception-handlers }
カスタム例外ハンドラは<a href="https://www.starlette.dev/exceptions/" class="external-link" target="_blank">Starletteと同じ例外ユーティリティ</a>を使用して追加することができます。 カスタム例外ハンドラは[Starletteと同じ例外ユーティリティ](https://www.starlette.dev/exceptions/)を使用して追加することができます。
あなた(または使用しているライブラリ)が`raise`するかもしれないカスタム例外`UnicornException`があるとしましょう。 あなた(または使用しているライブラリ)が`raise`するかもしれないカスタム例外`UnicornException`があるとしましょう。

12
docs/ja/docs/tutorial/index.md

@ -15,7 +15,7 @@
<div class="termy"> <div class="termy">
```console ```console
$ <font color="#4E9A06">fastapi</font> dev <u style="text-decoration-style:solid">main.py</u> $ <font color="#4E9A06">fastapi</font> dev
<span style="background-color:#009485"><font color="#D3D7CF"> FastAPI </font></span> Starting development server 🚀 <span style="background-color:#009485"><font color="#D3D7CF"> FastAPI </font></span> Starting development server 🚀
@ -62,7 +62,7 @@ $ <font color="#4E9A06">fastapi</font> dev <u style="text-decoration-style:solid
最初のステップは、FastAPIのインストールです。 最初のステップは、FastAPIのインストールです。
[仮想環境](../virtual-environments.md){.internal-link target=_blank} を作成して有効化し、それから **FastAPIをインストール** してください: [仮想環境](../virtual-environments.md) を作成して有効化し、それから **FastAPIをインストール** してください:
<div class="termy"> <div class="termy">
@ -76,7 +76,7 @@ $ pip install "fastapi[standard]"
/// note | 備考 /// note | 備考
`pip install "fastapi[standard]"` でインストールすると、`fastapi-cloud-cli` を含むいくつかのデフォルトのオプション標準依存関係が付属します。これにより、<a href="https://fastapicloud.com" class="external-link" target="_blank">FastAPI Cloud</a> にデプロイできます。 `pip install "fastapi[standard]"` でインストールすると、`fastapi-cloud-cli` を含むいくつかのデフォルトのオプション標準依存関係が付属します。これにより、[FastAPI Cloud](https://fastapicloud.com) にデプロイできます。
これらのオプション依存関係が不要な場合は、代わりに `pip install fastapi` をインストールできます。 これらのオプション依存関係が不要な場合は、代わりに `pip install fastapi` をインストールできます。
@ -84,6 +84,12 @@ $ pip install "fastapi[standard]"
/// ///
/// tip | 豆知識
FastAPI には [VS Code の公式拡張機能](https://marketplace.visualstudio.com/items?itemName=FastAPILabs.fastapi-vscode)(および Cursor)があります。path operation エクスプローラー、path operation 検索、テスト内の CodeLens ナビゲーション(テストから定義へジャンプ)、そして FastAPI Cloud へのデプロイやログなど、さまざまな機能をエディターから利用できます。
///
## 高度なユーザーガイド { #advanced-user-guide } ## 高度なユーザーガイド { #advanced-user-guide }
この **チュートリアル - ユーザーガイド** の後で、後から読める **高度なユーザーガイド** もあります。 この **チュートリアル - ユーザーガイド** の後で、後から読める **高度なユーザーガイド** もあります。

2
docs/ja/docs/tutorial/metadata.md

@ -76,7 +76,7 @@ OpenAPI 3.1.0 および FastAPI 0.99.0 以降では、`license_info` を `url`
/// info | 情報 /// info | 情報
タグの詳細は [Path Operation Configuration](path-operation-configuration.md#tags){.internal-link target=_blank} を参照してください。 タグの詳細は [Path Operation の設定](path-operation-configuration.md#tags) を参照してください。
/// ///

10
docs/ja/docs/tutorial/middleware.md

@ -15,7 +15,7 @@
`yield` を使った依存関係をもつ場合は、終了コードはミドルウェアの *後に* 実行されます。 `yield` を使った依存関係をもつ場合は、終了コードはミドルウェアの *後に* 実行されます。
バックグラウンドタスク ([バックグラウンドタスク](background-tasks.md){.internal-link target=_blank} セクションで説明します。後で確認できます) がある場合は、それらは全てのミドルウェアの *後に* 実行されます。 バックグラウンドタスク ([バックグラウンドタスク](background-tasks.md) セクションで説明します。後で確認できます) がある場合は、それらは全てのミドルウェアの *後に* 実行されます。
/// ///
@ -35,9 +35,9 @@
/// tip | 豆知識 /// tip | 豆知識
カスタムの独自ヘッダーは <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers" class="external-link" target="_blank">`X-` プレフィックスを使用</a>して追加できる点に注意してください。 カスタムの独自ヘッダーは [`X-` プレフィックスを使用](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers)して追加できる点に注意してください。
ただし、ブラウザのクライアントに表示させたいカスタムヘッダーがある場合は、<a href="https://www.starlette.dev/middleware/#corsmiddleware" class="external-link" target="_blank">StarletteのCORSドキュメント</a>に記載されているパラメータ `expose_headers` を使用して、それらをCORS設定に追加する必要があります ([CORS (Cross-Origin Resource Sharing)](cors.md){.internal-link target=_blank})。 ただし、ブラウザのクライアントに表示させたいカスタムヘッダーがある場合は、[StarletteのCORSドキュメント](https://www.starlette.dev/middleware/#corsmiddleware)に記載されているパラメータ `expose_headers` を使用して、それらをCORS設定に追加する必要があります ([CORS (Cross-Origin Resource Sharing)](cors.md))。
/// ///
@ -61,7 +61,7 @@
/// tip | 豆知識 /// tip | 豆知識
ここでは、これらのユースケースに対してより正確になり得るため、`time.time()` の代わりに <a href="https://docs.python.org/3/library/time.html#time.perf_counter" class="external-link" target="_blank">`time.perf_counter()`</a> を使用しています。 🤓 ここでは、これらのユースケースに対してより正確になり得るため、`time.time()` の代わりに [`time.perf_counter()`](https://docs.python.org/3/library/time.html#time.perf_counter) を使用しています。 🤓
/// ///
@ -90,6 +90,6 @@ app.add_middleware(MiddlewareB)
## その他のミドルウェア { #other-middlewares } ## その他のミドルウェア { #other-middlewares }
他のミドルウェアの詳細については、[高度なユーザーガイド: 高度なミドルウェア](../advanced/middleware.md){.internal-link target=_blank}を参照してください。 他のミドルウェアの詳細については、[高度なユーザーガイド: 高度なミドルウェア](../advanced/middleware.md)を参照してください。
次のセクションでは、ミドルウェアを使用して <abbr title="Cross-Origin Resource Sharing - クロスオリジンリソース共有">CORS</abbr> を処理する方法について説明します。 次のセクションでは、ミドルウェアを使用して <abbr title="Cross-Origin Resource Sharing - クロスオリジンリソース共有">CORS</abbr> を処理する方法について説明します。

2
docs/ja/docs/tutorial/path-operation-configuration.md

@ -58,7 +58,7 @@
説明文は長くて複数行におよぶ傾向があるので、関数<dfn title="関数内の最初の式(どの変数にも代入されない)として記述される、ドキュメント用の複数行の文字列">docstring</dfn>内に*path operation*の説明文を宣言できます。すると、**FastAPI** は説明文を読み込んでくれます。 説明文は長くて複数行におよぶ傾向があるので、関数<dfn title="関数内の最初の式(どの変数にも代入されない)として記述される、ドキュメント用の複数行の文字列">docstring</dfn>内に*path operation*の説明文を宣言できます。すると、**FastAPI** は説明文を読み込んでくれます。
docstringに<a href="https://en.wikipedia.org/wiki/Markdown" class="external-link" target="_blank">Markdown</a>を記述すれば、正しく解釈されて表示されます。(docstringのインデントを考慮して) docstringに[Markdown](https://en.wikipedia.org/wiki/Markdown)を記述すれば、正しく解釈されて表示されます。(docstringのインデントを考慮して)
{* ../../docs_src/path_operation_configuration/tutorial004_py310.py hl[17:25] *} {* ../../docs_src/path_operation_configuration/tutorial004_py310.py hl[17:25] *}

4
docs/ja/docs/tutorial/path-params-numeric-validations.md

@ -14,7 +14,7 @@ FastAPI はバージョン 0.95.0 で`Annotated`のサポートを追加し(
古いバージョンの場合、`Annotated`を使おうとするとエラーになります。 古いバージョンの場合、`Annotated`を使おうとするとエラーになります。
`Annotated`を使用する前に、FastAPI のバージョンを少なくとも 0.95.1 まで[アップグレードしてください](../deployment/versions.md#upgrading-the-fastapi-versions){.internal-link target=_blank} `Annotated`を使用する前に、FastAPI のバージョンを少なくとも 0.95.1 まで[アップグレードしてください](../deployment/versions.md#upgrading-the-fastapi-versions)。
/// ///
@ -122,7 +122,7 @@ Pythonはその`*`で何かをすることはありませんが、それ以降
## まとめ { #recap } ## まとめ { #recap }
`Query`と`Path`(そしてまだ見たことない他のもの)では、[クエリパラメータと文字列の検証](query-params-str-validations.md){.internal-link target=_blank}と同じようにメタデータと文字列の検証を宣言することができます。 `Query`と`Path`(そしてまだ見たことない他のもの)では、[クエリパラメータと文字列の検証](query-params-str-validations.md)と同じようにメタデータと文字列の検証を宣言することができます。
また、数値のバリデーションを宣言することもできます: また、数値のバリデーションを宣言することもできます:

16
docs/ja/docs/tutorial/path-params.md

@ -6,7 +6,7 @@ Pythonのformat文字列と同様のシンタックスで「パスパラメー
パスパラメータ `item_id` の値は、引数 `item_id` として関数に渡されます。 パスパラメータ `item_id` の値は、引数 `item_id` として関数に渡されます。
したがって、この例を実行して <a href="http://127.0.0.1:8000/items/foo" class="external-link" target="_blank">http://127.0.0.1:8000/items/foo</a> にアクセスすると、次のレスポンスが表示されます。 したがって、この例を実行して [http://127.0.0.1:8000/items/foo](http://127.0.0.1:8000/items/foo) にアクセスすると、次のレスポンスが表示されます。
```JSON ```JSON
{"item_id":"foo"} {"item_id":"foo"}
@ -28,7 +28,7 @@ Pythonのformat文字列と同様のシンタックスで「パスパラメー
## データ<dfn title="別名: シリアライズ、パース、マーシャリング">変換</dfn> { #data-conversion } ## データ<dfn title="別名: シリアライズ、パース、マーシャリング">変換</dfn> { #data-conversion }
この例を実行し、ブラウザで <a href="http://127.0.0.1:8000/items/3" class="external-link" target="_blank">http://127.0.0.1:8000/items/3</a> を開くと、次のレスポンスが表示されます: この例を実行し、ブラウザで [http://127.0.0.1:8000/items/3](http://127.0.0.1:8000/items/3) を開くと、次のレスポンスが表示されます:
```JSON ```JSON
{"item_id":3} {"item_id":3}
@ -44,7 +44,7 @@ Pythonのformat文字列と同様のシンタックスで「パスパラメー
## データバリデーション { #data-validation } ## データバリデーション { #data-validation }
しかしブラウザで <a href="http://127.0.0.1:8000/items/foo" class="external-link" target="_blank">http://127.0.0.1:8000/items/foo</a> を開くと、次のHTTPエラーが表示されます: しかしブラウザで [http://127.0.0.1:8000/items/foo](http://127.0.0.1:8000/items/foo) を開くと、次のHTTPエラーが表示されます:
```JSON ```JSON
{ {
@ -64,7 +64,7 @@ Pythonのformat文字列と同様のシンタックスで「パスパラメー
これは、パスパラメータ `item_id``int` ではない値 `"foo"` だからです。 これは、パスパラメータ `item_id``int` ではない値 `"foo"` だからです。
<a href="http://127.0.0.1:8000/items/4.2" class="external-link" target="_blank">http://127.0.0.1:8000/items/4.2</a> で見られるように、`int` のかわりに `float` が与えられた場合にも同様なエラーが表示されます。 [http://127.0.0.1:8000/items/4.2](http://127.0.0.1:8000/items/4.2) で見られるように、`int` のかわりに `float` が与えられた場合にも同様なエラーが表示されます。
/// check | 確認 /// check | 確認
@ -78,7 +78,7 @@ Pythonのformat文字列と同様のシンタックスで「パスパラメー
## ドキュメント { #documentation } ## ドキュメント { #documentation }
そしてブラウザで <a href="http://127.0.0.1:8000/docs" class="external-link" target="_blank">http://127.0.0.1:8000/docs</a> を開くと、以下の様な自動的に生成された対話的なAPIドキュメントが表示されます。 そしてブラウザで [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs) を開くと、以下の様な自動的に生成された対話的なAPIドキュメントが表示されます。
<img src="/img/tutorial/path-params/image01.png"> <img src="/img/tutorial/path-params/image01.png">
@ -92,9 +92,9 @@ Pythonのformat文字列と同様のシンタックスで「パスパラメー
## 標準ベースのメリット、ドキュメンテーションの代替物 { #standards-based-benefits-alternative-documentation } ## 標準ベースのメリット、ドキュメンテーションの代替物 { #standards-based-benefits-alternative-documentation }
また、生成されたスキーマが <a href="https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md" class="external-link" target="_blank">OpenAPI</a> 標準に従っているので、互換性のあるツールが多数あります。 また、生成されたスキーマが [OpenAPI](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md) 標準に従っているので、互換性のあるツールが多数あります。
このため、**FastAPI**自体が代替のAPIドキュメントを提供します(ReDocを使用)。これは、 <a href="http://127.0.0.1:8000/redoc" class="external-link" target="_blank">http://127.0.0.1:8000/redoc</a> にアクセスすると確認できます。 このため、**FastAPI**自体が代替のAPIドキュメントを提供します(ReDocを使用)。これは、 [http://127.0.0.1:8000/redoc](http://127.0.0.1:8000/redoc) にアクセスすると確認できます。
<img src="/img/tutorial/path-params/image02.png"> <img src="/img/tutorial/path-params/image02.png">
@ -102,7 +102,7 @@ Pythonのformat文字列と同様のシンタックスで「パスパラメー
## Pydantic { #pydantic } ## Pydantic { #pydantic }
すべてのデータバリデーションは <a href="https://docs.pydantic.dev/" class="external-link" target="_blank">Pydantic</a> によって内部で実行されるため、Pydanticの全てのメリットが得られます。そして、安心して利用することができます。 すべてのデータバリデーションは [Pydantic](https://docs.pydantic.dev/) によって内部で実行されるため、Pydanticの全てのメリットが得られます。そして、安心して利用することができます。
`str``float``bool` および他の多くの複雑なデータ型を型宣言に使用できます。 `str``float``bool` および他の多くの複雑なデータ型を型宣言に使用できます。

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

@ -35,13 +35,13 @@ FastAPI はバージョン 0.95.0 で `Annotated` のサポートを追加し(
古いバージョンの場合、`Annotated` を使おうとするとエラーになります。 古いバージョンの場合、`Annotated` を使おうとするとエラーになります。
`Annotated` を使う前に、FastAPI のバージョンを少なくとも 0.95.1 にするために、[FastAPI のバージョンをアップグレード](../deployment/versions.md#upgrading-the-fastapi-versions){.internal-link target=_blank}してください。 `Annotated` を使う前に、FastAPI のバージョンを少なくとも 0.95.1 にするために、[FastAPI のバージョンをアップグレード](../deployment/versions.md#upgrading-the-fastapi-versions)してください。
/// ///
## `q` パラメータの型で `Annotated` を使う { #use-annotated-in-the-type-for-the-q-parameter } ## `q` パラメータの型で `Annotated` を使う { #use-annotated-in-the-type-for-the-q-parameter }
以前、[Python Types Intro](../python-types.md#type-hints-with-metadata-annotations){.internal-link target=_blank}`Annotated` を使ってパラメータにメタデータを追加できると説明したことを覚えていますか? 以前、[Python Types Intro](../python-types.md#type-hints-with-metadata-annotations) で `Annotated` を使ってパラメータにメタデータを追加できると説明したことを覚えていますか?
いよいよ FastAPI で使うときです。 🚀 いよいよ FastAPI で使うときです。 🚀
@ -158,7 +158,7 @@ FastAPI なしで同じ関数を **別の場所** から **呼び出しても**
`Annotated` を使わずに **(古い)デフォルト値スタイル** を使う場合、FastAPI なしでその関数を **別の場所** で呼び出すとき、正しく動かすために関数へ引数を渡すことを **覚えておく** 必要があります。そうしないと値が期待と異なります(例えば `str` の代わりに `QueryInfo` か、それに類するものになります)。また、エディターも警告せず、Python もその関数の実行で文句を言いません。内部の処理がエラーになるときに初めて問題が出ます。 `Annotated` を使わずに **(古い)デフォルト値スタイル** を使う場合、FastAPI なしでその関数を **別の場所** で呼び出すとき、正しく動かすために関数へ引数を渡すことを **覚えておく** 必要があります。そうしないと値が期待と異なります(例えば `str` の代わりに `QueryInfo` か、それに類するものになります)。また、エディターも警告せず、Python もその関数の実行で文句を言いません。内部の処理がエラーになるときに初めて問題が出ます。
`Annotated` は複数のメタデータアノテーションを持てるので、<a href="https://typer.tiangolo.com/" class="external-link" target="_blank">Typer</a> のような別ツールと同じ関数を使うこともできます。 🚀 `Annotated` は複数のメタデータアノテーションを持てるので、[Typer](https://typer.tiangolo.com/) のような別ツールと同じ関数を使うこともできます。 🚀
## バリデーションをさらに追加する { #add-more-validations } ## バリデーションをさらに追加する { #add-more-validations }
@ -348,7 +348,7 @@ http://127.0.0.1:8000/items/?item-query=foobaritems
さて、このパラメータが気に入らなくなったとしましょう。 さて、このパラメータが気に入らなくなったとしましょう。
それを使っているクライアントがいるので、しばらくは残しておく必要がありますが、ドキュメントには<abbr title="obsolete, recommended not to use it - 廃止予定、使用は推奨されません">deprecated</abbr>と明記しておきたいです。 それを使っているクライアントがいるので、しばらくは残しておく必要がありますが、ドキュメントには<dfn title="廃止予定、使用は推奨されません">廃止予定</dfn>と明記しておきたいです。
その場合、`Query`にパラメータ`deprecated=True`を渡します: その場合、`Query`にパラメータ`deprecated=True`を渡します:
@ -370,11 +370,11 @@ http://127.0.0.1:8000/items/?item-query=foobaritems
その場合、通常のバリデーション(例: 値が `str` であることの検証)の後に適用される **カスタムバリデータ関数** を使えます。 その場合、通常のバリデーション(例: 値が `str` であることの検証)の後に適用される **カスタムバリデータ関数** を使えます。
これを行うには、`Annotated` の中で <a href="https://docs.pydantic.dev/latest/concepts/validators/#field-after-validator" class="external-link" target="_blank">Pydantic の `AfterValidator`</a> を使います。 これを行うには、`Annotated` の中で [Pydantic の `AfterValidator`](https://docs.pydantic.dev/latest/concepts/validators/#field-after-validator) を使います。
/// tip | 豆知識 /// tip | 豆知識
Pydantic には <a href="https://docs.pydantic.dev/latest/concepts/validators/#field-before-validator" class="external-link" target="_blank">`BeforeValidator`</a> などもあります。 🤓 Pydantic には [`BeforeValidator`](https://docs.pydantic.dev/latest/concepts/validators/#field-before-validator) などもあります。 🤓
/// ///

12
docs/ja/docs/tutorial/request-files.md

@ -4,9 +4,9 @@
/// info | 情報 /// info | 情報
アップロードされたファイルを受け取るには、まず <a href="https://github.com/Kludex/python-multipart" class="external-link" target="_blank">`python-multipart`</a> をインストールします。 アップロードされたファイルを受け取るには、まず [`python-multipart`](https://github.com/Kludex/python-multipart) をインストールします。
[仮想環境](../virtual-environments.md){.internal-link target=_blank}を作成して有効化し、次のようにインストールしてください: [仮想環境](../virtual-environments.md)を作成して有効化し、次のようにインストールしてください:
```console ```console
$ pip install python-multipart $ pip install python-multipart
@ -63,8 +63,8 @@ $ pip install python-multipart
- 最大サイズまではメモリに保持し、それを超えるとディスクに格納されるファイルです。 - 最大サイズまではメモリに保持し、それを超えるとディスクに格納されるファイルです。
- そのため、画像・動画・大きなバイナリなどの大きなファイルでも、メモリを使い果たすことなくうまく動作します。 - そのため、画像・動画・大きなバイナリなどの大きなファイルでも、メモリを使い果たすことなくうまく動作します。
- アップロードされたファイルからメタデータを取得できます。 - アップロードされたファイルからメタデータを取得できます。
- <a href="https://docs.python.org/3/glossary.html#term-file-like-object" class="external-link" target="_blank">file-like</a>`async` インターフェースを持ちます。 - [file-like](https://docs.python.org/3/glossary.html#term-file-like-object)`async` インターフェースを持ちます。
- 実際の Python の <a href="https://docs.python.org/3/library/tempfile.html#tempfile.SpooledTemporaryFile" class="external-link" target="_blank">`SpooledTemporaryFile`</a> オブジェクトを公開しており、file-like オブジェクトを期待する他のライブラリにそのまま渡せます。 - 実際の Python の [`SpooledTemporaryFile`](https://docs.python.org/3/library/tempfile.html#tempfile.SpooledTemporaryFile) オブジェクトを公開しており、file-like オブジェクトを期待する他のライブラリにそのまま渡せます。
### `UploadFile` { #uploadfile } ### `UploadFile` { #uploadfile }
@ -72,7 +72,7 @@ $ pip install python-multipart
- `filename`: アップロード時の元のファイル名を表す `str`(例: `myimage.jpg` - `filename`: アップロード時の元のファイル名を表す `str`(例: `myimage.jpg`
- `content_type`: コンテントタイプ(MIME タイプ / メディアタイプ)を表す `str`(例: `image/jpeg` - `content_type`: コンテントタイプ(MIME タイプ / メディアタイプ)を表す `str`(例: `image/jpeg`
- `file`: <a href="https://docs.python.org/3/library/tempfile.html#tempfile.SpooledTemporaryFile" class="external-link" target="_blank">`SpooledTemporaryFile`</a><a href="https://docs.python.org/3/glossary.html#term-file-like-object" class="external-link" target="_blank">file-like</a> なオブジェクト)。これは実際の Python のファイルオブジェクトで、「file-like」オブジェクトを期待する関数やライブラリに直接渡せます。 - `file`: [`SpooledTemporaryFile`](https://docs.python.org/3/library/tempfile.html#tempfile.SpooledTemporaryFile)([file-like](https://docs.python.org/3/glossary.html#term-file-like-object) なオブジェクト)。これは実際の Python のファイルオブジェクトで、「file-like」オブジェクトを期待する関数やライブラリに直接渡せます。
`UploadFile` には次の `async` メソッドがあります。いずれも内部で対応するファイルメソッド(内部の `SpooledTemporaryFile`)を呼び出します。 `UploadFile` には次の `async` メソッドがあります。いずれも内部で対応するファイルメソッド(内部の `SpooledTemporaryFile`)を呼び出します。
@ -121,7 +121,7 @@ HTML フォーム(`<form></form>`)がサーバーにデータを送る方法
ただしフォームにファイルが含まれる場合は、`multipart/form-data` としてエンコードされます。`File` を使うと、**FastAPI** はボディ内の正しい部分からファイルを取得すべきであると認識します。 ただしフォームにファイルが含まれる場合は、`multipart/form-data` としてエンコードされます。`File` を使うと、**FastAPI** はボディ内の正しい部分からファイルを取得すべきであると認識します。
これらのエンコーディングやフォームフィールドの詳細は、<a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST" class="external-link" target="_blank"><abbr title="Mozilla Developer Network - Mozilla 開発者ネットワーク">MDN</abbr> Web Docs の <code>POST</code></a> を参照してください。 これらのエンコーディングやフォームフィールドの詳細は、[<abbr title="Mozilla Developer Network - Mozilla 開発者ネットワーク">MDN</abbr> Web Docs の `POST`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST) を参照してください。
/// ///

6
docs/ja/docs/tutorial/request-form-models.md

@ -1,12 +1,12 @@
# フォームモデル { #form-models } # フォームモデル { #form-models }
FastAPI では、フォームフィールドを宣言するために Pydantic モデルを使用できます。 FastAPI では、フォームフィールドを宣言するために **Pydantic モデル**を使用できます。
/// info | 情報 /// info | 情報
フォームを使うには、まず <a href="https://github.com/Kludex/python-multipart" class="external-link" target="_blank">`python-multipart`</a> をインストールします。 フォームを使うには、まず [`python-multipart`](https://github.com/Kludex/python-multipart) をインストールします。
まず [仮想環境](../virtual-environments.md){.internal-link target=_blank} を作成して有効化し、そのうえでインストールしてください。例えば: まず [仮想環境](../virtual-environments.md) を作成して有効化し、そのうえでインストールしてください。例えば:
```console ```console
$ pip install python-multipart $ pip install python-multipart

4
docs/ja/docs/tutorial/request-forms-and-files.md

@ -4,9 +4,9 @@
/// info | 情報 /// info | 情報
アップロードされたファイルやフォームデータを受信するには、まず<a href="https://github.com/Kludex/python-multipart" class="external-link" target="_blank">`python-multipart`</a>をインストールします。 アップロードされたファイルやフォームデータを受信するには、まず[`python-multipart`](https://github.com/Kludex/python-multipart)をインストールします。
[仮想環境](../virtual-environments.md){.internal-link target=_blank}を作成し、それを有効化してから、例えば次のようにインストールしてください: [仮想環境](../virtual-environments.md)を作成し、それを有効化してから、例えば次のようにインストールしてください:
```console ```console
$ pip install python-multipart $ pip install python-multipart

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

@ -4,9 +4,9 @@ JSONの代わりにフィールドを受け取る場合は、`Form`を使用し
/// info | 情報 /// info | 情報
フォームを使うためには、まず<a href="https://github.com/Kludex/python-multipart" class="external-link" target="_blank">`python-multipart`</a>をインストールします。 フォームを使うためには、まず[`python-multipart`](https://github.com/Kludex/python-multipart)をインストールします。
必ず[仮想環境](../virtual-environments.md){.internal-link target=_blank}を作成して有効化してから、例えば次のようにインストールしてください: 必ず[仮想環境](../virtual-environments.md)を作成して有効化してから、例えば次のようにインストールしてください:
```console ```console
$ pip install python-multipart $ pip install python-multipart
@ -56,7 +56,7 @@ HTMLフォーム(`<form></form>`)がサーバにデータを送信する方
しかし、フォームがファイルを含む場合は、`multipart/form-data`としてエンコードされます。ファイルの扱いについては次の章で説明します。 しかし、フォームがファイルを含む場合は、`multipart/form-data`としてエンコードされます。ファイルの扱いについては次の章で説明します。
これらのエンコーディングやフォームフィールドの詳細については、<a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST" class="external-link" target="_blank"><abbr title="Mozilla Developer Network - Mozilla 開発者ネットワーク">MDN</abbr><code>POST</code></a>のウェブドキュメントを参照してください。 これらのエンコーディングやフォームフィールドの詳細については、[<abbr title="Mozilla Developer Network - Mozilla 開発者ネットワーク">MDN</abbr>`POST` ウェブドキュメント](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST)を参照してください。
/// ///

9
docs/ja/docs/tutorial/response-model.md

@ -13,6 +13,7 @@ FastAPIはこの戻り値の型を使って以下を行います:
* OpenAPIの *path operation* に、レスポンス用の **JSON Schema** を追加します。 * OpenAPIの *path operation* に、レスポンス用の **JSON Schema** を追加します。
* これは**自動ドキュメント**で使用されます。 * これは**自動ドキュメント**で使用されます。
* 自動クライアントコード生成ツールでも使用されます。 * 自動クライアントコード生成ツールでも使用されます。
* 返却データを Pydantic を使ってJSONに**シリアライズ**します。Pydantic は内部が**Rust**で実装されているため、**非常に高速**です。
しかし、最も重要なのは: しかし、最も重要なのは:
@ -73,9 +74,9 @@ FastAPIはこの `response_model` を使って、データのドキュメント
/// info | 情報 /// info | 情報
`EmailStr` を使用するには、最初に <a href="https://github.com/JoshData/python-email-validator" class="external-link" target="_blank">`email-validator`</a> をインストールしてください。 `EmailStr` を使用するには、最初に [`email-validator`](https://github.com/JoshData/python-email-validator) をインストールしてください。
[仮想環境](../virtual-environments.md){.internal-link target=_blank}を作成して有効化してから、例えば次のようにインストールしてください: [仮想環境](../virtual-environments.md)を作成して有効化してから、例えば次のようにインストールしてください:
```console ```console
$ pip install email-validator $ pip install email-validator
@ -181,7 +182,7 @@ Pydanticフィールドとして有効ではないものを返し、ツール(
### レスポンスを直接返す { #return-a-response-directly } ### レスポンスを直接返す { #return-a-response-directly }
最も一般的なケースは、[高度なドキュメントで後述する「Responseを直接返す」](../advanced/response-directly.md){.internal-link target=_blank}場合です。 最も一般的なケースは、[高度なドキュメントで後述する「Responseを直接返す」](../advanced/response-directly.md)場合です。
{* ../../docs_src/response_model/tutorial003_02_py310.py hl[8,10:11] *} {* ../../docs_src/response_model/tutorial003_02_py310.py hl[8,10:11] *}
@ -257,7 +258,7 @@ Pydanticフィールドとして有効ではないものを返し、ツール(
* `response_model_exclude_defaults=True` * `response_model_exclude_defaults=True`
* `response_model_exclude_none=True` * `response_model_exclude_none=True`
`exclude_defaults``exclude_none` については、<a href="https://docs.pydantic.dev/1.10/usage/exporting_models/#modeldict" class="external-link" target="_blank">Pydanticのドキュメント</a>で説明されている通りです。 `exclude_defaults``exclude_none` については、[Pydanticのドキュメント](https://docs.pydantic.dev/1.10/usage/exporting_models/#modeldict)で説明されている通りです。
/// ///

6
docs/ja/docs/tutorial/response-status-code.md

@ -20,7 +20,7 @@
/// info | 情報 /// info | 情報
`status_code`は代わりに、Pythonの<a href="https://docs.python.org/3/library/http.html#http.HTTPStatus" class="external-link" target="_blank">`http.HTTPStatus`</a>のように、`IntEnum`を受け取ることもできます。 `status_code`は代わりに、Pythonの[`http.HTTPStatus`](https://docs.python.org/3/library/http.html#http.HTTPStatus)のように、`IntEnum`を受け取ることもできます。
/// ///
@ -66,7 +66,7 @@ HTTPでは、レスポンスの一部として3桁の数字のステータスコ
/// tip | 豆知識 /// tip | 豆知識
それぞれのステータスコードとどのコードが何のためのコードなのかについて詳細は<a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Status" class="external-link" target="_blank"><abbr title="Mozilla Developer Network">MDN</abbr> documentation about HTTP status codes</a>を参照してください。 それぞれのステータスコードとどのコードが何のためのコードなのかについての詳細は、[<abbr title="Mozilla Developer Network - Mozilla 開発者ネットワーク">MDN</abbr> のHTTPステータスコードに関するドキュメント](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status)を参照してください。
/// ///
@ -92,7 +92,7 @@ HTTPでは、レスポンスの一部として3桁の数字のステータスコ
また、`from starlette import status`を使うこともできます。 また、`from starlette import status`を使うこともできます。
**FastAPI** は、`開発者の利便性を考慮して、fastapi.status`と同じ`starlette.status`を提供しています。しかし、これはStarletteから直接提供されています。 **FastAPI** は、開発者の利便性を考慮して、fastapi.statusと同じ`starlette.status`を提供しています。しかし、これはStarletteから直接提供されています。
/// ///

8
docs/ja/docs/tutorial/schema-extra-example.md

@ -12,7 +12,7 @@
その追加情報は、そのモデルの出力**JSON Schema**にそのまま追加され、APIドキュメントで使用されます。 その追加情報は、そのモデルの出力**JSON Schema**にそのまま追加され、APIドキュメントで使用されます。
<a href="https://docs.pydantic.dev/latest/api/config/" class="external-link" target="_blank">Pydanticのドキュメント: Configuration</a>で説明されているように、`dict`を受け取る属性`model_config`を使用できます。 [Pydanticのドキュメント: Configuration](https://docs.pydantic.dev/latest/api/config/)で説明されているように、`dict`を受け取る属性`model_config`を使用できます。
生成されるJSON Schemaに表示したい追加データ(`examples`を含む)を含む`dict`を使って、`"json_schema_extra"`を設定できます。 生成されるJSON Schemaに表示したい追加データ(`examples`を含む)を含む`dict`を使って、`"json_schema_extra"`を設定できます。
@ -145,12 +145,12 @@ JSON Schemaには`examples`がなかったため、OpenAPIは自身が改変し
OpenAPIは、仕様の他の部分にも`example`と`examples`フィールドを追加しました: OpenAPIは、仕様の他の部分にも`example`と`examples`フィールドを追加しました:
* <a href="https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#parameter-object" class="external-link" target="_blank">`Parameter Object`(仕様内)</a>。FastAPIの以下で使用されました: * [`Parameter Object`(仕様内)](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#parameter-object)。FastAPIの以下で使用されました:
* `Path()` * `Path()`
* `Query()` * `Query()`
* `Header()` * `Header()`
* `Cookie()` * `Cookie()`
* <a href="https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#media-type-object" class="external-link" target="_blank">`Request Body Object`。仕様内の`Media Type Object`の`content`フィールド(仕様内)</a>。FastAPIの以下で使用されました: * [`Request Body Object`、`Media Type Object`の`content`フィールド(仕様内)](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#media-type-object)。FastAPIの以下で使用されました:
* `Body()` * `Body()`
* `File()` * `File()`
* `Form()` * `Form()`
@ -163,7 +163,7 @@ OpenAPIは、仕様の他の部分にも`example`と`examples`フィールドを
### JSON Schemaの`examples`フィールド { #json-schemas-examples-field } ### JSON Schemaの`examples`フィールド { #json-schemas-examples-field }
しかしその後、JSON Schemaは新しいバージョンの仕様に<a href="https://json-schema.org/draft/2019-09/json-schema-validation.html#rfc.section.9.5" class="external-link" target="_blank">`examples`</a>フィールドを追加しました。 しかしその後、JSON Schemaは新しいバージョンの仕様に[`examples`](https://json-schema.org/draft/2019-09/json-schema-validation.html#rfc.section.9.5)フィールドを追加しました。
そして、新しいOpenAPI 3.1.0は、この新しいフィールド`examples`を含む最新バージョン(JSON Schema 2020-12)に基づくようになりました。 そして、新しいOpenAPI 3.1.0は、この新しいフィールド`examples`を含む最新バージョン(JSON Schema 2020-12)に基づくようになりました。

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

@ -26,11 +26,11 @@
/// info | 情報 /// info | 情報
<a href="https://github.com/Kludex/python-multipart" class="external-link" target="_blank">`python-multipart`</a> パッケージは、`pip install "fastapi[standard]"` コマンドを実行すると **FastAPI** と一緒に自動的にインストールされます。 [`python-multipart`](https://github.com/Kludex/python-multipart) パッケージは、`pip install "fastapi[standard]"` コマンドを実行すると **FastAPI** と一緒に自動的にインストールされます。
しかし、`pip install fastapi` コマンドを使用する場合、`python-multipart` パッケージはデフォルトでは含まれません。 しかし、`pip install fastapi` コマンドを使用する場合、`python-multipart` パッケージはデフォルトでは含まれません。
手動でインストールするには、[仮想環境](../../virtual-environments.md){.internal-link target=_blank}を作成して有効化し、次のコマンドでインストールしてください: 手動でインストールするには、[仮想環境](../../virtual-environments.md)を作成して有効化し、次のコマンドでインストールしてください:
```console ```console
$ pip install python-multipart $ pip install python-multipart
@ -45,7 +45,7 @@ $ pip install python-multipart
<div class="termy"> <div class="termy">
```console ```console
$ fastapi dev main.py $ fastapi dev
<span style="color: green;">INFO</span>: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) <span style="color: green;">INFO</span>: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
``` ```
@ -54,7 +54,7 @@ $ fastapi dev main.py
## 確認 { #check-it } ## 確認 { #check-it }
次のインタラクティブなドキュメントにアクセスしてください: <a href="http://127.0.0.1:8000/docs" class="external-link" target="_blank">http://127.0.0.1:8000/docs</a> 次のインタラクティブなドキュメントにアクセスしてください: [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs)
下記のように見えるでしょう: 下記のように見えるでしょう:
@ -140,7 +140,7 @@ OAuth2は、バックエンドやAPIがユーザーを認証するサーバー
相対URLを使っているので、APIが`https://example.com/`にある場合、`https://example.com/token`を参照します。しかし、APIが`https://example.com/api/v1/`にある場合は`https://example.com/api/v1/token`を参照することになります。 相対URLを使っているので、APIが`https://example.com/`にある場合、`https://example.com/token`を参照します。しかし、APIが`https://example.com/api/v1/`にある場合は`https://example.com/api/v1/token`を参照することになります。
相対 URL を使うことは、[プロキシの背後](../../advanced/behind-a-proxy.md){.internal-link target=_blank}のような高度なユースケースでもアプリケーションを動作させ続けるために重要です。 相対 URL を使うことは、[プロキシの背後](../../advanced/behind-a-proxy.md)のような高度なユースケースでもアプリケーションを動作させ続けるために重要です。
/// ///

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

@ -24,13 +24,13 @@ eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4
1週間後、トークンが期限切れとなるとどうなるでしょうか?ユーザーは認可されず、新しいトークンを得るために再びサインインしなければなりません。また、ユーザー(または第三者)がトークンを修正して有効期限を変更しようとした場合、署名が一致しないため、トークンの修正を検知できます。 1週間後、トークンが期限切れとなるとどうなるでしょうか?ユーザーは認可されず、新しいトークンを得るために再びサインインしなければなりません。また、ユーザー(または第三者)がトークンを修正して有効期限を変更しようとした場合、署名が一致しないため、トークンの修正を検知できます。
JWT トークンを使って遊んでみたいという方は、<a href="https://jwt.io/" class="external-link" target="_blank">https://jwt.io</a> をチェックしてください。 JWT トークンを使って遊んでみたいという方は、[https://jwt.io](https://jwt.io/) をチェックしてください。
## `PyJWT` のインストール { #install-pyjwt } ## `PyJWT` のインストール { #install-pyjwt }
PythonでJWTトークンの生成と検証を行うために、`PyJWT`をインストールする必要があります。 PythonでJWTトークンの生成と検証を行うために、`PyJWT`をインストールする必要があります。
[仮想環境](../../virtual-environments.md){.internal-link target=_blank}を作成し、アクティベートしてから、`pyjwt`をインストールしてください。 [仮想環境](../../virtual-environments.md)を作成し、アクティベートしてから、`pyjwt`をインストールしてください。
<div class="termy"> <div class="termy">
@ -46,7 +46,7 @@ $ pip install pyjwt
RSAやECDSAのようなデジタル署名アルゴリズムを使用する予定がある場合は、cryptographyライブラリの依存関係`pyjwt[crypto]`をインストールしてください。 RSAやECDSAのようなデジタル署名アルゴリズムを使用する予定がある場合は、cryptographyライブラリの依存関係`pyjwt[crypto]`をインストールしてください。
詳細は<a href="https://pyjwt.readthedocs.io/en/latest/installation.html" class="external-link" target="_blank">PyJWT Installation docs</a>で確認できます。 詳細は[PyJWT Installation docs](https://pyjwt.readthedocs.io/en/latest/installation.html)で確認できます。
/// ///
@ -72,7 +72,7 @@ pwdlib は、パスワードのハッシュを処理するための優れたPyth
推奨されるアルゴリズムは「Argon2」です。 推奨されるアルゴリズムは「Argon2」です。
[仮想環境](../../virtual-environments.md){.internal-link target=_blank}を作成し、アクティベートしてから、Argon2付きでpwdlibをインストールしてください。 [仮想環境](../../virtual-environments.md)を作成し、アクティベートしてから、Argon2付きでpwdlibをインストールしてください。
<div class="termy"> <div class="termy">
@ -200,7 +200,7 @@ IDの衝突を回避するために、ユーザーのJWTトークンを作成す
## 確認 { #check-it } ## 確認 { #check-it }
サーバーを実行し、ドキュメントに移動します:<a href="http://127.0.0.1:8000/docs" class="external-link" target="_blank">http://127.0.0.1:8000/docs</a> サーバーを実行し、ドキュメントに移動します:[http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs)
次のようなユーザーインターフェイスが表示されます: 次のようなユーザーインターフェイスが表示されます:

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

@ -188,7 +188,7 @@ UserInDB(
アクティブなユーザーの場合にのみ `current_user` を取得したいとします。 アクティブなユーザーの場合にのみ `current_user` を取得したいとします。
そこで、`get_current_user` を依存関係として利用する追加の依存関係 `get_current_active_user` を作成します。 そこで、`get_current_active_user` を依存関係として利用する追加の依存関係 `get_current_active_user` を作成します。
これら2つの依存関係は、ユーザーが存在しない、または非アクティブである場合に、HTTPエラーを返すだけです。 これら2つの依存関係は、ユーザーが存在しない、または非アクティブである場合に、HTTPエラーを返すだけです。
@ -216,7 +216,7 @@ HTTP(エラー)ステータスコード 401「UNAUTHORIZED」は、`WWW-Auth
## 動作確認 { #see-it-in-action } ## 動作確認 { #see-it-in-action }
インタラクティブドキュメントを開きます: <a href="http://127.0.0.1:8000/docs" class="external-link" target="_blank">http://127.0.0.1:8000/docs</a> インタラクティブドキュメントを開きます: [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs)
### 認証 { #authenticate } ### 認証 { #authenticate }

22
docs/ja/docs/tutorial/sql-databases.md

@ -2,9 +2,9 @@
FastAPI は SQL(リレーショナル)データベースの使用を必須にはしません。必要であれば、任意のデータベースを使用できます。 FastAPI は SQL(リレーショナル)データベースの使用を必須にはしません。必要であれば、任意のデータベースを使用できます。
ここでは <a href="https://sqlmodel.tiangolo.com/" class="external-link" target="_blank">SQLModel</a> を使った例を見ていきます。 ここでは [SQLModel](https://sqlmodel.tiangolo.com/) を使った例を見ていきます。
SQLModel は <a href="https://www.sqlalchemy.org/" class="external-link" target="_blank">SQLAlchemy</a> と Pydantic の上に構築されています。FastAPI と同じ作者により、SQL データベースを使う必要がある FastAPI アプリに最適になるように作られています。 SQLModel は [SQLAlchemy](https://www.sqlalchemy.org/) と Pydantic の上に構築されています。FastAPI と同じ作者により、SQL データベースを使う必要がある FastAPI アプリに最適になるように作られています。
/// tip | 豆知識 /// tip | 豆知識
@ -26,15 +26,15 @@ SQLModel は SQLAlchemy をベースにしているため、SQLAlchemy がサポ
/// tip | 豆知識 /// tip | 豆知識
フロントエンドやその他のツールを含む、FastAPI と PostgreSQL の公式プロジェクトジェネレーターがあります: <a href="https://github.com/fastapi/full-stack-fastapi-template" class="external-link" target="_blank">https://github.com/fastapi/full-stack-fastapi-template</a> フロントエンドやその他のツールを含む、FastAPI と PostgreSQL の公式プロジェクトジェネレーターがあります: [https://github.com/fastapi/full-stack-fastapi-template](https://github.com/fastapi/full-stack-fastapi-template)
/// ///
これはとてもシンプルで短いチュートリアルです。データベースや SQL、より高度な機能について学びたい場合は、<a href="https://sqlmodel.tiangolo.com/" class="external-link" target="_blank">SQLModel のドキュメント</a>をご覧ください。 これはとてもシンプルで短いチュートリアルです。データベースや SQL、より高度な機能について学びたい場合は、[SQLModel のドキュメント](https://sqlmodel.tiangolo.com/)をご覧ください。
## `SQLModel` のインストール { #install-sqlmodel } ## `SQLModel` のインストール { #install-sqlmodel }
まずは [仮想環境](../virtual-environments.md){.internal-link target=_blank} を作成・有効化し、`sqlmodel` をインストールします: まずは [仮想環境](../virtual-environments.md) を作成・有効化し、`sqlmodel` をインストールします:
<div class="termy"> <div class="termy">
@ -65,7 +65,7 @@ $ pip install sqlmodel
* `Field(primary_key=True)``id` が SQL データベースのプライマリキーであることを SQLModel に伝えます(SQL のプライマリキーについては SQLModel ドキュメントを参照してください)。 * `Field(primary_key=True)``id` が SQL データベースのプライマリキーであることを SQLModel に伝えます(SQL のプライマリキーについては SQLModel ドキュメントを参照してください)。
注: プライマリキーのフィールドには `int | None` を使っています。これは Python コード内で `id=None` のように「`id` なしでオブジェクトを作成」し、保存時にデータベースが生成することを想定するためです。SQLModel はデータベースが `id` を提供することを理解し、スキーマでは「NULL 不可の `INTEGER` 列」を定義します。詳細は <a href="https://sqlmodel.tiangolo.com/tutorial/create-db-and-table/#primary-key-id" class="external-link" target="_blank">SQLModel のプライマリキーに関するドキュメント</a> を参照してください。 注: プライマリキーのフィールドには `int | None` を使っています。これは Python コード内で `id=None` のように「`id` なしでオブジェクトを作成」し、保存時にデータベースが生成することを想定するためです。SQLModel はデータベースが `id` を提供することを理解し、スキーマでは「NULL 不可の `INTEGER` 列」を定義します。詳細は [SQLModel のプライマリキーに関するドキュメント](https://sqlmodel.tiangolo.com/tutorial/create-db-and-table/#primary-key-id) を参照してください。
* `Field(index=True)` は、この列に対して SQL のインデックスを作成するよう SQLModel に指示します。これにより、この列でフィルタしてデータを読む場合に検索が高速になります。 * `Field(index=True)` は、この列に対して SQL のインデックスを作成するよう SQLModel に指示します。これにより、この列でフィルタしてデータを読む場合に検索が高速になります。
@ -111,7 +111,7 @@ SQLModel の `engine`(内部的には SQLAlchemy の `engine`)は、デー
/// tip | 豆知識 /// tip | 豆知識
SQLModel は Alembic をラップしたマイグレーションユーティリティを提供予定ですが、現時点では <a href="https://alembic.sqlalchemy.org/en/latest/" class="external-link" target="_blank">Alembic</a> を直接使えます。 SQLModel は Alembic をラップしたマイグレーションユーティリティを提供予定ですが、現時点では [Alembic](https://alembic.sqlalchemy.org/en/latest/) を直接使えます。
/// ///
@ -152,7 +152,7 @@ SQLModel は Alembic をラップしたマイグレーションユーティリ
<div class="termy"> <div class="termy">
```console ```console
$ fastapi dev main.py $ fastapi dev
<span style="color: green;">INFO</span>: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) <span style="color: green;">INFO</span>: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
``` ```
@ -337,7 +337,7 @@ SQLModel では継承を使って、あらゆるケースでフィールドの
<div class="termy"> <div class="termy">
```console ```console
$ fastapi dev main.py $ fastapi dev
<span style="color: green;">INFO</span>: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) <span style="color: green;">INFO</span>: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
``` ```
@ -352,6 +352,6 @@ $ fastapi dev main.py
## まとめ { #recap } ## まとめ { #recap }
<a href="https://sqlmodel.tiangolo.com/" class="external-link" target="_blank">SQLModel</a> を使って SQL データベースとやり取りし、データモデルとテーブルモデルでコードを簡潔にできます。 [SQLModel](https://sqlmodel.tiangolo.com/) を使って SQL データベースとやり取りし、データモデルとテーブルモデルでコードを簡潔にできます。
さらに多くを学ぶには SQLModel のドキュメントをご覧ください。<a href="https://sqlmodel.tiangolo.com/tutorial/fastapi/" class="external-link" target="_blank">FastAPI と SQLModel を使うチュートリアル</a> もあります。🚀 さらに多くを学ぶには SQLModel のドキュメントをご覧ください。[FastAPI と SQLModel を使うチュートリアル](https://sqlmodel.tiangolo.com/tutorial/fastapi/) もあります。🚀

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

@ -23,7 +23,7 @@
これは、マウントされたアプリケーションが完全に独立しているため、`APIRouter` とは異なります。メインアプリケーションのOpenAPIとドキュメントには、マウントされたアプリケーションの内容などは含まれません。 これは、マウントされたアプリケーションが完全に独立しているため、`APIRouter` とは異なります。メインアプリケーションのOpenAPIとドキュメントには、マウントされたアプリケーションの内容などは含まれません。
これについて詳しくは、[高度なユーザーガイド](../advanced/index.md){.internal-link target=_blank} をご覧ください。 これについて詳しくは、[高度なユーザーガイド](../advanced/index.md) をご覧ください。
## 詳細 { #details } ## 詳細 { #details }
@ -37,4 +37,4 @@
## より詳しい情報 { #more-info } ## より詳しい情報 { #more-info }
詳細とオプションについては、<a href="https://www.starlette.dev/staticfiles/" class="external-link" target="_blank">Starletteの静的ファイルに関するドキュメント</a>を確認してください。 詳細とオプションについては、[Starletteの静的ファイルに関するドキュメント](https://www.starlette.dev/staticfiles/)を確認してください。

28
docs/ja/docs/tutorial/testing.md

@ -1,18 +1,18 @@
# テスト { #testing } # テスト { #testing }
<a href="https://www.starlette.dev/testclient/" class="external-link" target="_blank">Starlette</a> のおかげで、**FastAPI** アプリケーションのテストは簡単で楽しいものになっています。 [Starlette](https://www.starlette.dev/testclient/) のおかげで、**FastAPI** アプリケーションのテストは簡単で楽しいものになっています。
<a href="https://www.python-httpx.org" class="external-link" target="_blank">HTTPX</a> がベースで、さらにその設計は Requests をベースにしているため、とても馴染みがあり直感的です。 [HTTPX](https://www.python-httpx.org) がベースで、さらにその設計は Requests をベースにしているため、とても馴染みがあり直感的です。
これを使用すると、**FastAPI** と共に <a href="https://docs.pytest.org/" class="external-link" target="_blank">pytest</a> を直接利用できます。 これを使用すると、**FastAPI** と共に [pytest](https://docs.pytest.org/) を直接利用できます。
## `TestClient` を使用 { #using-testclient } ## `TestClient` を使用 { #using-testclient }
/// info | 情報 /// info
`TestClient` を使用するには、まず <a href="https://www.python-httpx.org" class="external-link" target="_blank">`httpx`</a> をインストールします。 `TestClient` を使用するには、まず [`httpx`](https://www.python-httpx.org) をインストールします。
[仮想環境](../virtual-environments.md){.internal-link target=_blank} を作成し、それを有効化してから、例えば以下のようにインストールしてください: [仮想環境](../virtual-environments.md) を作成し、それを有効化してから、例えば以下のようにインストールしてください:
```console ```console
$ pip install httpx $ pip install httpx
@ -32,7 +32,7 @@ $ pip install httpx
{* ../../docs_src/app_testing/tutorial001_py310.py hl[2,12,15:18] *} {* ../../docs_src/app_testing/tutorial001_py310.py hl[2,12,15:18] *}
/// tip | 豆知識 /// tip
テスト関数は `async def` ではなく、通常の `def` であることに注意してください。 テスト関数は `async def` ではなく、通常の `def` であることに注意してください。
@ -50,9 +50,9 @@ $ pip install httpx
/// ///
/// tip | 豆知識 /// tip
FastAPIアプリケーションへのリクエストの送信とは別に、テストで `async` 関数 (非同期データベース関数など) を呼び出したい場合は、高度なチュートリアルの[Async Tests](../advanced/async-tests.md){.internal-link target=_blank} を参照してください。 FastAPIアプリケーションへのリクエストの送信とは別に、テストで `async` 関数 (非同期データベース関数など) を呼び出したい場合は、高度なチュートリアルの[Async Tests](../advanced/async-tests.md) を参照してください。
/// ///
@ -64,7 +64,7 @@ FastAPIアプリケーションへのリクエストの送信とは別に、テ
### **FastAPI** アプリファイル { #fastapi-app-file } ### **FastAPI** アプリファイル { #fastapi-app-file }
[Bigger Applications](bigger-applications.md){.internal-link target=_blank} で説明されている、次のようなファイル構成があるとします: [Bigger Applications](bigger-applications.md) で説明されている、次のようなファイル構成があるとします:
``` ```
. .
@ -142,13 +142,13 @@ FastAPIアプリケーションへのリクエストの送信とは別に、テ
* *ヘッダー* を渡すには、`headers` パラメータに `dict` を渡します。 * *ヘッダー* を渡すには、`headers` パラメータに `dict` を渡します。
* *cookies* の場合、 `cookies` パラメータに `dict` です。 * *cookies* の場合、 `cookies` パラメータに `dict` です。
(`httpx` または `TestClient` を使用して) バックエンドにデータを渡す方法の詳細は、<a href="https://www.python-httpx.org" class="external-link" target="_blank">HTTPXのドキュメント</a>を確認してください。 (`httpx` または `TestClient` を使用して) バックエンドにデータを渡す方法の詳細は、[HTTPXのドキュメント](https://www.python-httpx.org)を確認してください。
/// info | 情報 /// info
`TestClient` は、Pydanticモデルではなく、JSONに変換できるデータを受け取ることに注意してください。 `TestClient` は、Pydanticモデルではなく、JSONに変換できるデータを受け取ることに注意してください。
テストにPydanticモデルがあり、テスト中にそのデータをアプリケーションに送信したい場合は、[JSON互換エンコーダ](encoder.md){.internal-link target=_blank} で説明されている `jsonable_encoder` が利用できます。 テストにPydanticモデルがあり、テスト中にそのデータをアプリケーションに送信したい場合は、[JSON互換エンコーダ](encoder.md) で説明されている `jsonable_encoder` が利用できます。
/// ///
@ -156,7 +156,7 @@ FastAPIアプリケーションへのリクエストの送信とは別に、テ
その後、`pytest` をインストールするだけです。 その後、`pytest` をインストールするだけです。
[仮想環境](../virtual-environments.md){.internal-link target=_blank} を作成し、それを有効化してから、例えば以下のようにインストールしてください: [仮想環境](../virtual-environments.md) を作成し、それを有効化してから、例えば以下のようにインストールしてください:
<div class="termy"> <div class="termy">

30
docs/ja/docs/virtual-environments.md

@ -21,7 +21,7 @@ Pythonプロジェクトの作業では、**仮想環境**(または類似の
/// info | 情報 /// info | 情報
このページでは、**仮想環境**の使用方法と、そのはたらきについて説明します。 このページでは、**仮想環境**の使用方法と、そのはたらきについて説明します。
もし**すべてを管理するツール**(Pythonのインストールも含む)を導入する準備ができているなら、<a href="https://github.com/astral-sh/uv" class="external-link" target="_blank">uv</a> をお試しください。 もし**すべてを管理するツール**(Pythonのインストールも含む)を導入する準備ができているなら、[uv](https://github.com/astral-sh/uv) をお試しください。
/// ///
@ -83,7 +83,7 @@ $ python -m venv .venv
//// tab | `uv` //// tab | `uv`
もし <a href="https://github.com/astral-sh/uv" class="external-link" target="_blank">`uv`</a> をインストール済みなら、仮想環境を作成するために `uv` を使うこともできます。 もし [`uv`](https://github.com/astral-sh/uv) をインストール済みなら、仮想環境を作成するために `uv` を使うこともできます。
<div class="termy"> <div class="termy">
@ -147,7 +147,7 @@ $ .venv\Scripts\Activate.ps1
//// tab | Windows Bash //// tab | Windows Bash
もしWindowsでBashを使用している場合 (<a href="https://gitforwindows.org/" class="external-link" target="_blank">Git Bash</a>など): もしWindowsでBashを使用している場合 ([Git Bash](https://gitforwindows.org/)など):
<div class="termy"> <div class="termy">
@ -213,7 +213,7 @@ C:\Users\user\code\awesome-project\.venv\Scripts\python
/// tip | 豆知識 /// tip | 豆知識
もし <a href="https://github.com/astral-sh/uv" class="external-link" target="_blank">`uv`</a> を使用している場合は、 `pip` の代わりに `uv` を使ってインストールを行うため、 `pip` をアップグレードする必要はありません 😎。 もし [`uv`](https://github.com/astral-sh/uv) を使用している場合は、 `pip` の代わりに `uv` を使ってインストールを行うため、 `pip` をアップグレードする必要はありません 😎。
/// ///
@ -265,7 +265,7 @@ $ python -m ensurepip --upgrade
/// tip | 豆知識 /// tip | 豆知識
もし <a href="https://github.com/astral-sh/uv" class="external-link" target="_blank">`uv`</a> を使用して仮想環境を作成した場合、すでにこの作業は済んでいるので、この手順をスキップできます 😎。 もし [`uv`](https://github.com/astral-sh/uv) を使用して仮想環境を作成した場合、すでにこの作業は済んでいるので、この手順をスキップできます 😎。
/// ///
@ -337,7 +337,7 @@ $ pip install "fastapi[standard]"
//// tab | `uv` //// tab | `uv`
もし <a href="https://github.com/astral-sh/uv" class="external-link" target="_blank">`uv`</a> を使用できるなら: もし [`uv`](https://github.com/astral-sh/uv) を使用できるなら:
<div class="termy"> <div class="termy">
@ -369,7 +369,7 @@ $ pip install -r requirements.txt
//// tab | `uv` //// tab | `uv`
もし <a href="https://github.com/astral-sh/uv" class="external-link" target="_blank">`uv`</a> を使用できるなら: もし [`uv`](https://github.com/astral-sh/uv) を使用できるなら:
<div class="termy"> <div class="termy">
@ -413,8 +413,8 @@ Hello World
設定例: 設定例:
* <a href="https://code.visualstudio.com/docs/python/environments#_select-and-activate-an-environment" class="external-link" target="_blank">VS Code</a> * [VS Code](https://code.visualstudio.com/docs/python/environments#_select-and-activate-an-environment)
* <a href="https://www.jetbrains.com/help/pycharm/creating-virtual-environment.html" class="external-link" target="_blank">PyCharm</a> * [PyCharm](https://www.jetbrains.com/help/pycharm/creating-virtual-environment.html)
/// tip | 豆知識 /// tip | 豆知識
@ -452,7 +452,7 @@ $ deactivate
## なぜ仮想環境? { #why-virtual-environments } ## なぜ仮想環境? { #why-virtual-environments }
FastAPIを使った作業をするには、<a href="https://www.python.org/" class="external-link" target="_blank">Python</a> のインストールが必要です。 FastAPIを使った作業をするには、[Python](https://www.python.org/) のインストールが必要です。
それから、FastAPIや、使用したいその他の**パッケージ**を**インストール**する必要があります。 それから、FastAPIや、使用したいその他の**パッケージ**を**インストール**する必要があります。
@ -561,7 +561,7 @@ $ pip install "fastapi[standard]"
</div> </div>
FastAPIのコードを含む圧縮ファイルが、通常は <a href="https://pypi.org/project/fastapi/" class="external-link" target="_blank">PyPI</a> からダウンロードされます。 FastAPIのコードを含む圧縮ファイルが、通常は [PyPI](https://pypi.org/project/fastapi/) からダウンロードされます。
また、FastAPIが依存する他のパッケージも**ダウンロード**されます。 また、FastAPIが依存する他のパッケージも**ダウンロード**されます。
@ -624,7 +624,7 @@ $ .venv\Scripts\Activate.ps1
//// tab | Windows Bash //// tab | Windows Bash
あるいは、WindowsでBashを使用している場合 (<a href="https://gitforwindows.org/" class="external-link" target="_blank">Git Bash</a>など): あるいは、WindowsでBashを使用している場合 ([Git Bash](https://gitforwindows.org/)など):
<div class="termy"> <div class="termy">
@ -636,13 +636,13 @@ $ source .venv/Scripts/activate
//// ////
これによって、いくつかの [環境変数](environment-variables.md){.internal-link target=_blank} が作成・修正され、次に実行されるコマンドで使用できるようになります。 これによって、いくつかの [環境変数](environment-variables.md) が作成・修正され、次に実行されるコマンドで使用できるようになります。
これらの環境変数のひとつに、 `PATH` 変数があります。 これらの環境変数のひとつに、 `PATH` 変数があります。
/// tip | 豆知識 /// tip | 豆知識
`PATH` 変数についての詳細は [環境変数](environment-variables.md#path-environment-variable){.internal-link target=_blank} を参照してください。 `PATH` 変数についての詳細は [環境変数](environment-variables.md#path-environment-variable) を参照してください。
/// ///
@ -835,7 +835,7 @@ I solemnly swear 🐺
仮想環境、パッケージの依存関係(requirements)、プロジェクトの管理には、多くの**代替手段**があります。 仮想環境、パッケージの依存関係(requirements)、プロジェクトの管理には、多くの**代替手段**があります。
準備が整い、パッケージの依存関係、仮想環境など**プロジェクト全体の管理**ツールを使いたいと考えたら、<a href="https://github.com/astral-sh/uv" class="external-link" target="_blank">uv</a> を試してみることをおすすめします。 準備が整い、パッケージの依存関係、仮想環境など**プロジェクト全体の管理**ツールを使いたいと考えたら、[uv](https://github.com/astral-sh/uv) を試してみることをおすすめします。
`uv` では以下のような多くのことができます: `uv` では以下のような多くのことができます:

Loading…
Cancel
Save