From a82fabdda4635baaf7faaa98070124234086b4a8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 19 Mar 2026 19:16:28 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=8C=90=20Update=20translations=20for=20ja?= =?UTF-8?q?=20(update-outdated)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ja/docs/_llm-test.md | 16 ++-- docs/ja/docs/alternatives.md | 58 +++++++------- docs/ja/docs/async.md | 24 +++--- docs/ja/docs/benchmarks.md | 2 +- docs/ja/docs/environment-variables.md | 46 +++++------ docs/ja/docs/fastapi-cli.md | 71 ++++++++++++++--- docs/ja/docs/features.md | 30 ++++---- docs/ja/docs/help-fastapi.md | 60 +++++++-------- docs/ja/docs/history-design-future.md | 12 +-- docs/ja/docs/index.md | 26 ++----- docs/ja/docs/project-generation.md | 2 +- docs/ja/docs/python-types.md | 8 +- docs/ja/docs/tutorial/background-tasks.md | 6 +- docs/ja/docs/tutorial/bigger-applications.md | 69 ++++++++++++----- docs/ja/docs/tutorial/body-nested-models.md | 2 +- docs/ja/docs/tutorial/body-updates.md | 8 +- docs/ja/docs/tutorial/body.md | 12 +-- docs/ja/docs/tutorial/cors.md | 8 +- docs/ja/docs/tutorial/debugging.md | 4 +- ...pendencies-in-path-operation-decorators.md | 4 +- .../dependencies/dependencies-with-yield.md | 20 ++--- .../dependencies/global-dependencies.md | 6 +- docs/ja/docs/tutorial/dependencies/index.md | 4 +- docs/ja/docs/tutorial/encoder.md | 4 +- docs/ja/docs/tutorial/extra-data-types.md | 4 +- docs/ja/docs/tutorial/extra-models.md | 4 +- docs/ja/docs/tutorial/first-steps.md | 77 +++++++++++++++---- docs/ja/docs/tutorial/handling-errors.md | 2 +- docs/ja/docs/tutorial/index.md | 12 ++- docs/ja/docs/tutorial/metadata.md | 2 +- docs/ja/docs/tutorial/middleware.md | 10 +-- .../tutorial/path-operation-configuration.md | 2 +- .../path-params-numeric-validations.md | 4 +- docs/ja/docs/tutorial/path-params.md | 16 ++-- .../tutorial/query-params-str-validations.md | 12 +-- docs/ja/docs/tutorial/request-files.md | 12 +-- docs/ja/docs/tutorial/request-form-models.md | 6 +- .../docs/tutorial/request-forms-and-files.md | 4 +- docs/ja/docs/tutorial/request-forms.md | 6 +- docs/ja/docs/tutorial/response-model.md | 9 ++- docs/ja/docs/tutorial/response-status-code.md | 6 +- docs/ja/docs/tutorial/schema-extra-example.md | 8 +- docs/ja/docs/tutorial/security/first-steps.md | 10 +-- docs/ja/docs/tutorial/security/oauth2-jwt.md | 10 +-- .../docs/tutorial/security/simple-oauth2.md | 4 +- docs/ja/docs/tutorial/sql-databases.md | 22 +++--- docs/ja/docs/tutorial/static-files.md | 4 +- docs/ja/docs/tutorial/testing.md | 28 +++---- docs/ja/docs/virtual-environments.md | 30 ++++---- 49 files changed, 466 insertions(+), 340 deletions(-) diff --git a/docs/ja/docs/_llm-test.md b/docs/ja/docs/_llm-test.md index b3d9fc28cd..4c84a7c04c 100644 --- a/docs/ja/docs/_llm-test.md +++ b/docs/ja/docs/_llm-test.md @@ -11,7 +11,7 @@ * 翻訳が問題ないか確認します。 * 必要であれば、言語固有プロンプト、general プロンプト、または英語ドキュメントを改善します。 * その後、翻訳に残っている問題を手動で修正し、良い翻訳にします。 -* 良い翻訳を用意した状態でもう一度翻訳します。理想的な結果は、LLM が翻訳に一切変更を加えないことです。つまり general プロンプトと言語固有プロンプトが最良であることを意味します(時々いくつかランダムに見える変更を行うことがあります。理由は LLM は決定論的アルゴリズムではない ためです)。 +* 良い翻訳を用意した状態でもう一度翻訳します。理想的な結果は、LLM が翻訳に一切変更を加えないことです。つまり general プロンプトと言語固有プロンプトが最良であることを意味します(時々いくつかランダムに見える変更を行うことがあります。理由は [LLM は決定論的アルゴリズムではない](https://doublespeak.chat/#/handbook#deterministic-output) ためです)。 テスト内容: @@ -95,7 +95,7 @@ $ fastapi run 外部リンク -* スタイルへのリンク -* スクリプトへのリンク -* 画像へのリンク +* [内部リンク](index.md#installation) +* [外部リンク](https://sqlmodel.tiangolo.com/) +* [スタイルへのリンク](https://fastapi.tiangolo.com/css/styles.css) +* [スクリプトへのリンク](https://fastapi.tiangolo.com/js/logic.js) +* [画像へのリンク](https://fastapi.tiangolo.com/img/foo.jpg) リンクのテキストは翻訳し、リンク先のアドレスは翻訳版を指すようにしてください: -* FastAPI リンク +* [FastAPI リンク](https://fastapi.tiangolo.com/ja/) //// diff --git a/docs/ja/docs/alternatives.md b/docs/ja/docs/alternatives.md index 8b1ec072d6..34017b00e9 100644 --- a/docs/ja/docs/alternatives.md +++ b/docs/ja/docs/alternatives.md @@ -14,7 +14,7 @@ ## 以前のツール { #previous-tools } -### Django { #django } +### [Django](https://www.djangoproject.com/) { #django } Pythonのフレームワークの中で最もポピュラーで、広く信頼されています。Instagramのようなシステムの構築に使われています。 @@ -22,7 +22,7 @@ Pythonのフレームワークの中で最もポピュラーで、広く信頼 バックエンドでHTMLを生成するために作られたものであり、現代的なフロントエンド (ReactやVue.js、Angularなど) や、他のシステム (IoTデバイスなど) と通信するAPIを構築するために作られたものではありません。 -### Django REST Framework { #django-rest-framework } +### [Django REST Framework](https://www.django-rest-framework.org/) { #django-rest-framework } Django REST Frameworkは、Djangoを下敷きにしてWeb APIを構築する柔軟なツールキットとして、APIの機能を向上させるために作られました。 @@ -42,7 +42,7 @@ Django REST Framework は Tom Christie によって作成されました。Starl /// -### Flask { #flask } +### [Flask](https://flask.palletsprojects.com) { #flask } Flask は「マイクロフレームワーク」であり、データベースとの統合のようなDjangoがデフォルトで持つ多くの機能は含まれていません。 @@ -64,7 +64,7 @@ Flaskのシンプルさを考えると、APIを構築するのに適している /// -### Requests { #requests } +### [Requests](https://requests.readthedocs.io) { #requests } **FastAPI**は実際には**Requests**の代替ではありません。それらのスコープは大きく異なります。 @@ -106,7 +106,7 @@ def read_url(): /// -### Swagger / OpenAPI { #swagger-openapi } +### [Swagger](https://swagger.io/) / [OpenAPI](https://github.com/OAI/OpenAPI-Specification/) { #swagger-openapi } 私がDjango REST Frameworkに求めていた主な機能は、APIの自動的なドキュメント生成でした。 @@ -124,8 +124,8 @@ def read_url(): そして、標準に基づくユーザーインターフェースツールを統合しています。 -* Swagger UI -* ReDoc +* [Swagger UI](https://github.com/swagger-api/swagger-ui) +* [ReDoc](https://github.com/Rebilly/ReDoc) この二つは人気で安定したものとして選択されましたが、少し検索してみると、 (**FastAPI**と同時に使用できる) OpenAPIのための多くの代替となるツールを見つけることができます。 @@ -135,7 +135,7 @@ def read_url(): いくつかのFlask RESTフレームワークがありますが、それらを調査してみたところ、多くのものが不適切な問題が残ったまま、中断されたり放置されていることがわかりました。 -### Marshmallow { #marshmallow } +### [Marshmallow](https://marshmallow.readthedocs.io/en/stable/) { #marshmallow } APIシステムで必要とされる主な機能の一つに、コード (Python) からデータを取り出して、ネットワークを介して送れるものに変換するデータの「シリアライゼーション」があります。例えば、データベースのデータを含むオブジェクトをJSONオブジェクトに変換したり、`datetime` オブジェクトを文字列に変換するなどです。 @@ -153,7 +153,7 @@ APIが必要とするもう一つの大きな機能はデータのバリデー /// -### Webargs { #webargs } +### [Webargs](https://webargs.readthedocs.io/en/latest/) { #webargs } APIに求められる他の大きな機能として、受信したリクエストデータのパースがあります。 @@ -175,7 +175,7 @@ Webargsは、Marshmallowと同じ開発者により作られました。 /// -### APISpec { #apispec } +### [APISpec](https://apispec.readthedocs.io/en/stable/) { #apispec } MarshmallowとWebargsはバリデーション、パース、シリアライゼーションをプラグインとして提供しています。 @@ -205,7 +205,7 @@ OpenAPIという、APIについてのオープンな標準をサポートして /// -### Flask-apispec { #flask-apispec } +### [Flask-apispec](https://flask-apispec.readthedocs.io/en/latest/) { #flask-apispec } Webargs、Marshmallow、APISpecを連携させたFlaskプラグインです。 @@ -219,11 +219,11 @@ Flask、Flask-apispec、Marshmallow、Webargsの組み合わせは、**FastAPI** これを使うことで、いくつかのFlaskフルスタックジェネレータを作成することになりました。これらは私 (といくつかの外部のチーム) が今まで使ってきたメインのスタックです。 -* https://github.com/tiangolo/full-stack -* https://github.com/tiangolo/full-stack-flask-couchbase -* https://github.com/tiangolo/full-stack-flask-couchdb +* [https://github.com/tiangolo/full-stack](https://github.com/tiangolo/full-stack) +* [https://github.com/tiangolo/full-stack-flask-couchbase](https://github.com/tiangolo/full-stack-flask-couchbase) +* [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 | 情報 @@ -237,7 +237,7 @@ Flask-apispecはMarshmallowと同じ開発者により作成されました。 /// -### NestJS (とAngular) { #nestjs-and-angular } +### [NestJS](https://nestjs.com/) (と[Angular](https://angular.io/)) { #nestjs-and-angular } NestJSはAngularにインスパイアされたJavaScript (TypeScript) NodeJSフレームワークで、Pythonですらありません。 @@ -259,13 +259,13 @@ Angular 2にインスピレーションを受けた、統合された依存性 /// -### Sanic { #sanic } +### [Sanic](https://sanic.readthedocs.io/en/latest/) { #sanic } `asyncio`に基づいた、Pythonのフレームワークの中でも非常に高速なものの一つです。Flaskと非常に似た作りになっています。 /// note | 技術詳細 -Pythonの`asyncio`ループの代わりに、`uvloop`が利用されています。それにより、非常に高速です。 +Pythonの`asyncio`ループの代わりに、[`uvloop`](https://github.com/MagicStack/uvloop)が利用されています。それにより、非常に高速です。 `Uvicorn`と`Starlette`に明らかなインスピレーションを与えており、それらは現在オープンなベンチマークにおいてSanicより高速です。 @@ -279,7 +279,7 @@ Pythonの`asyncio`ループの代わりに、Falcon { #falcon } +### [Falcon](https://falconframework.org/) { #falcon } Falconはもう一つの高性能Pythonフレームワークで、ミニマムに設計されており、Hugのような他のフレームワークの基盤として動作します。 @@ -297,7 +297,7 @@ Hug (HugはFalconをベースにしています) と一緒に、**FastAPI**が`r /// -### Molten { #molten } +### [Molten](https://moltenframework.com/) { #molten } **FastAPI**を構築する最初の段階でMoltenを発見しました。そして、それは非常に似たようなアイデアを持っています。 @@ -321,7 +321,7 @@ Pydanticのようなデータのバリデーション、シリアライゼーシ /// -### Hug { #hug } +### [Hug](https://github.com/hugapi/hug) { #hug } Hugは、Pythonの型ヒントを利用してAPIパラメータの型宣言を実装した最初のフレームワークの1つです。これは素晴らしいアイデアで、他のツールが同じことをするきっかけとなりました。 @@ -337,7 +337,7 @@ OpenAPIやJSON Schemaのような標準に基づいたものではありませ /// info | 情報 -HugはTimothy Crosleyにより作成されました。彼は`isort`など、Pythonのファイル内のインポートの並び替えを自動的におこうなう素晴らしいツールの開発者です。 +HugはTimothy Crosleyにより作成されました。彼は[`isort`](https://github.com/timothycrosley/isort)など、Pythonのファイル内のインポートの並び替えを自動的におこうなう素晴らしいツールの開発者です。 /// @@ -351,7 +351,7 @@ Hugは、**FastAPI**がヘッダーやクッキーを設定するために関数 /// -### APIStar (<= 0.5) { #apistar-0-5 } +### [APIStar](https://github.com/encode/apistar) (<= 0.5) { #apistar-0-5 } **FastAPI**を構築することを決める直前に、**APIStar**サーバーを見つけました。それは私が探していたものがほぼすべて含まれており、素晴らしいデザインでした。 @@ -401,7 +401,7 @@ APIStarはTom Christieにより開発されました。以下の開発者でも ## **FastAPI**が利用しているもの { #used-by-fastapi } -### Pydantic { #pydantic } +### [Pydantic](https://docs.pydantic.dev/) { #pydantic } Pydanticは、Pythonの型ヒントを元にデータのバリデーション、シリアライゼーション、 (JSON Schemaを使用した) ドキュメントを定義するライブラリです。 @@ -413,11 +413,11 @@ Marshmallowに匹敵しますが、ベンチマークではMarshmallowよりも データのバリデーション、データのシリアライゼーション、自動的なモデルの (JSON Schemaに基づいた) ドキュメント化の全てを扱えます。 -**FastAPI**はJSON SchemaのデータをOpenAPIに利用します。 +**FastAPI**はそのJSON SchemaデータをOpenAPIに取り込みます (それ以外にも多くのことを行います)。 /// -### Starlette { #starlette } +### [Starlette](https://www.starlette.dev/) { #starlette } Starletteは、軽量なASGIフレームワーク/ツールキットで、高性能な非同期サービスの構築に最適です。 @@ -462,7 +462,7 @@ webに関するコアな部分を全て扱います。その上に機能を追 /// -### Uvicorn { #uvicorn } +### [Uvicorn](https://www.uvicorn.dev/) { #uvicorn } Uvicornは非常に高速なASGIサーバーで、uvloopとhttptoolsにより構成されています。 @@ -476,10 +476,10 @@ Starletteや**FastAPI**のサーバーとして推奨されています。 コマンドラインオプション `--workers` を使って、非同期のマルチプロセスサーバーにできます。 -詳細は[デプロイ](deployment/index.md){.internal-link target=_blank}の項目で確認してください。 +詳細は[デプロイ](deployment/index.md)の項目で確認してください。 /// ## ベンチマーク と スピード { #benchmarks-and-speed } -Uvicorn、Starlette、FastAPIの違いを理解、比較、確認するには、[ベンチマーク](benchmarks.md){.internal-link target=_blank}を確認してください。 +Uvicorn、Starlette、FastAPIの違いを理解、比較、確認するには、[ベンチマーク](benchmarks.md)を確認してください。 diff --git a/docs/ja/docs/async.md b/docs/ja/docs/async.md index bf4acda3f7..e2886d74e2 100644 --- a/docs/ja/docs/async.md +++ b/docs/ja/docs/async.md @@ -141,7 +141,7 @@ def results(): /// info | 情報 -美しいイラストは Ketrina Thompson によるものです。🎨 +美しいイラストは [Ketrina Thompson](https://www.instagram.com/ketrinadrawsalot) によるものです。🎨 /// @@ -207,7 +207,7 @@ def results(): /// info | 情報 -美しいイラストは Ketrina Thompson によるものです。🎨 +美しいイラストは [Ketrina Thompson](https://www.instagram.com/ketrinadrawsalot) によるものです。🎨 /// @@ -251,7 +251,7 @@ def results(): そして、それが **FastAPI** で得られるパフォーマンスの水準です。 -さらに、並列性と非同期性を同時に活用できるため、テストされた多くの NodeJS フレームワークより高い性能を発揮し、C に近いコンパイル言語である Go と同等の性能になります (すべて Starlette のおかげです)。 +さらに、並列性と非同期性を同時に活用できるため、テストされた多くの NodeJS フレームワークより高い性能を発揮し、C に近いコンパイル言語である Go と同等の性能になります [(すべて Starlette のおかげです)](https://www.techempower.com/benchmarks/#section=data-r17&hw=ph&test=query&l=zijmkf-1)。 ### 並行処理は並列処理より優れている? { #is-concurrency-better-than-parallelism } @@ -298,7 +298,7 @@ CPU バウンドな操作の一般的な例は、複雑な数値処理が必要 さらに、Python が **データサイエンス**、機械学習、特にディープラーニングの主要言語であるという事実も相まって、FastAPI はデータサイエンス/機械学習の Web API やアプリケーション (ほか多数) に非常に適しています。 -本番環境でこの並列性を実現する方法は、[デプロイ](deployment/index.md){.internal-link target=_blank} のセクションを参照してください。 +本番環境でこの並列性を実現する方法は、[デプロイ](deployment/index.md) のセクションを参照してください。 ## `async` と `await` { #async-and-await } @@ -363,13 +363,13 @@ async def read_burgers(): ### 自分で async コードを書く { #write-your-own-async-code } -Starlette (**FastAPI** も) は AnyIO の上に構築されており、標準ライブラリの asyncioTrio の両方に対応しています。 +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/) の両方に対応しています。 -特に、あなた自身のコード内で、より高度なパターンを必要とする発展的な並行処理のユースケースに対して、AnyIO を直接使えます。 +特に、あなた自身のコード内で、より高度なパターンを必要とする発展的な並行処理のユースケースに対して、[AnyIO](https://anyio.readthedocs.io/en/stable/) を直接使えます。 -仮に FastAPI を使っていなくても、AnyIO で独自の async アプリケーションを書けば、高い互換性と利点 (例: 構造化並行性) を得られます。 +仮に FastAPI を使っていなくても、[AnyIO](https://anyio.readthedocs.io/en/stable/) で独自の async アプリケーションを書けば、高い互換性と利点 (例: 構造化並行性) を得られます。 -私は AnyIO の上に薄い層として、型注釈を少し改善し、より良い**補完**や**インラインエラー**などを得るための別ライブラリも作りました。また、**理解**して**自分で async コードを書く**のに役立つフレンドリーなイントロ/チュートリアルもあります: Asyncer。特に、**async コードと通常の** (ブロッキング/同期) **コードを組み合わせる**必要がある場合に有用です。 +私は AnyIO の上に薄い層として、型注釈を少し改善し、より良い**補完**や**インラインエラー**などを得るための別ライブラリも作りました。また、**理解**して**自分で async コードを書く**のに役立つフレンドリーなイントロ/チュートリアルもあります: [Asyncer](https://asyncer.tiangolo.com/)。特に、**async コードと通常の** (ブロッキング/同期) **コードを組み合わせる**必要がある場合に有用です。 ### 非同期コードの他の形式 { #other-forms-of-asynchronous-code } @@ -381,7 +381,7 @@ Starlette (**FastAPI** も) は Gevent を使えましたが、コードの理解・デバッグ・思考がはるかに難しくなります。 +以前の Python ではスレッドや [Gevent](https://www.gevent.org/) を使えましたが、コードの理解・デバッグ・思考がはるかに難しくなります。 以前の NodeJS / ブラウザ JavaScript では「コールバック」を使っており、「コールバック地獄」を招きました。 @@ -419,15 +419,15 @@ Starlette (**FastAPI** も) は I/O を行うコードを使っていない限り、`async def` を使った方が良いです。 -それでも、どちらの状況でも、**FastAPI** はあなたが以前使っていたフレームワークよりも (少なくとも同等に) [高速である](index.md#performance){.internal-link target=_blank} 可能性が高いです。 +それでも、どちらの状況でも、**FastAPI** はあなたが以前使っていたフレームワークよりも (少なくとも同等に) [高速である](index.md#performance) 可能性が高いです。 ### 依存関係 { #dependencies } -[依存関係](tutorial/dependencies/index.md){.internal-link target=_blank} についても同様です。依存関係が `async def` ではなく標準の `def` 関数である場合、外部のスレッドプールで実行されます。 +[依存関係](tutorial/dependencies/index.md) についても同様です。依存関係が `async def` ではなく標準の `def` 関数である場合、外部のスレッドプールで実行されます。 ### サブ依存関係 { #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 } diff --git a/docs/ja/docs/benchmarks.md b/docs/ja/docs/benchmarks.md index fbfba2e637..b6ed4d6d29 100644 --- a/docs/ja/docs/benchmarks.md +++ b/docs/ja/docs/benchmarks.md @@ -1,6 +1,6 @@ # ベンチマーク { #benchmarks } -TechEmpowerの独立したベンチマークでは、Uvicornの下で動作する**FastAPI**アプリケーションは、利用可能な最速のPythonフレームワークの1つであり、下回っているのは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によって内部で使用される)のみだと示されています。 ただし、ベンチマークを確認し、比較する際には下記の内容に気を付けてください。 diff --git a/docs/ja/docs/environment-variables.md b/docs/ja/docs/environment-variables.md index 4deae70446..846f328461 100644 --- a/docs/ja/docs/environment-variables.md +++ b/docs/ja/docs/environment-variables.md @@ -2,7 +2,7 @@ /// tip | 豆知識 -もし、「環境変数」とは何か、それをどう使うかを既に知っている場合は、このセクションをスキップして構いません。 +もし「環境変数」とは何か、それをどう使うかを既に知っている場合は、このセクションをスキップして構いません。 /// @@ -19,10 +19,10 @@
```console -// You could create an env var MY_NAME with +// 環境変数 MY_NAME を作成する例 $ export MY_NAME="Wade Wilson" -// Then you could use it with other programs, like +// その後、他のプログラムで利用できます。例えば $ echo "Hello $MY_NAME" Hello Wade Wilson @@ -37,10 +37,10 @@ Hello Wade Wilson
```console -// Create an env var MY_NAME +// 環境変数 MY_NAME を作成 $ $Env:MY_NAME = "Wade Wilson" -// Use it with other programs, like +// 他のプログラムで利用、例えば $ echo "Hello $Env:MY_NAME" Hello Wade Wilson @@ -65,7 +65,7 @@ print(f"Hello {name} from Python") /// tip | 豆知識 -`os.getenv()` の第2引数は、デフォルトで返される値です。 +[`os.getenv()`](https://docs.python.org/3.8/library/os.html#os.getenv) の第2引数は、返されるデフォルト値です。 指定しない場合、デフォルトは`None`ですが、ここでは使用するデフォルト値として`"World"`を指定しています。 @@ -78,20 +78,20 @@ print(f"Hello {name} from Python")
```console -// Here we don't set the env var yet +// ここではまだ環境変数を設定していません $ python main.py -// As we didn't set the env var, we get the default value +// 環境変数を設定していないため、デフォルト値が使われます Hello World from Python -// But if we create an environment variable first +// しかし、先に環境変数を作成すると $ export MY_NAME="Wade Wilson" -// And then call the program again +// それからもう一度プログラムを実行すると $ python main.py -// Now it can read the environment variable +// すると環境変数を読み取れます Hello Wade Wilson from Python ``` @@ -105,20 +105,20 @@ Hello Wade Wilson from Python
```console -// Here we don't set the env var yet +// ここではまだ環境変数を設定していません $ python main.py -// As we didn't set the env var, we get the default value +// 環境変数を設定していないため、デフォルト値が使われます Hello World from Python -// But if we create an environment variable first +// しかし、先に環境変数を作成すると $ $Env:MY_NAME = "Wade Wilson" -// And then call the program again +// それからもう一度プログラムを実行すると $ python main.py -// Now it can read the environment variable +// すると環境変数を読み取れます Hello Wade Wilson from Python ``` @@ -136,14 +136,14 @@ Hello Wade Wilson from Python
```console -// Create an env var MY_NAME in line for this program call +// このプログラム呼び出し用に同じ行で環境変数 MY_NAME を作成 $ MY_NAME="Wade Wilson" python main.py -// Now it can read the environment variable +// これで環境変数を読み取れます Hello Wade Wilson from Python -// The env var no longer exists afterwards +// その後は環境変数は存在しません $ python main.py Hello World from Python @@ -153,7 +153,7 @@ Hello World from Python /// tip | 豆知識 -詳しくは The Twelve-Factor App: 設定 を参照してください。 +詳しくは [The Twelve-Factor App: 設定](https://12factor.net/config) を参照してください。 /// @@ -163,7 +163,7 @@ Hello World from Python つまり、環境変数からPythonで読み取る**あらゆる値**は **`str`になり**、他の型への変換やバリデーションはコード内で行う必要があります。 -環境変数を使って**アプリケーション設定**を扱う方法については、[高度なユーザーガイド - Settings and Environment Variables](./advanced/settings.md){.internal-link target=_blank} で詳しく学べます。 +環境変数を使って**アプリケーション設定**を扱う方法については、[高度なユーザーガイド - Settings and Environment Variables](./advanced/settings.md)で詳しく学べます。 ## `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 } これで、**環境変数**とは何か、Pythonでどのように使用するかについて、基本的な理解が得られたはずです。 -環境変数についての詳細は、Wikipedia の環境変数 も参照してください。 +環境変数についての詳細は、[Wikipedia の環境変数](https://en.wikipedia.org/wiki/Environment_variable)も参照してください。 多くの場合、環境変数がどのように役立ち、すぐに適用できるのかはあまり明確ではありません。しかし、開発中のさまざまなシナリオで何度も登場するため、知っておくとよいでしょう。 diff --git a/docs/ja/docs/fastapi-cli.md b/docs/ja/docs/fastapi-cli.md index 20cc9c2fb8..298ed91416 100644 --- a/docs/ja/docs/fastapi-cli.md +++ b/docs/ja/docs/fastapi-cli.md @@ -1,15 +1,15 @@ # FastAPI CLI { #fastapi-cli } -**FastAPI CLI** は、FastAPI アプリの提供、FastAPI プロジェクトの管理などに使用できるコマンドラインプログラムです。 +**FastAPI CLI** は、FastAPI アプリの提供、FastAPI プロジェクトの管理などに使用できるコマンドラインプログラムです。 -FastAPI をインストールすると(例: `pip install "fastapi[standard]"`)、`fastapi-cli` というパッケージが含まれます。このパッケージがターミナルで使用する `fastapi` コマンドを提供します。 +FastAPI をインストールすると(例: `pip install "fastapi[standard]"`)、ターミナルで実行できるコマンドラインプログラムが付属します。 開発用に FastAPI アプリを起動するには、`fastapi dev` コマンドを使用できます:
```console -$ fastapi dev main.py +$ fastapi dev FastAPI Starting development server 🚀 @@ -46,13 +46,66 @@ $ fastapi dev Uvicorn(高性能で本番運用向けの ASGI サーバー)を使用します。😎 +さらに、[VS Code 拡張機能](editor-support.md) や [FastAPI Cloud](https://fastapicloud.com) など、ほかのツールがそれを見つけられない場合があります。そのため、`pyproject.toml` の `entrypoint` を使用することを推奨します。 ## `fastapi dev` { #fastapi-dev } @@ -68,8 +121,8 @@ FastAPI CLI は、Python プログラムへのパス(例: `main.py`)を受 多くの場合(そして推奨されるのは)、上位に HTTPS を終端する「termination proxy」を置きます。これはアプリのデプロイ方法に依存し、プロバイダが代行する場合もあれば、自分で設定する必要がある場合もあります。 -/// tip | 豆知識 +/// tip -詳しくは、[デプロイのドキュメント](deployment/index.md){.internal-link target=_blank}を参照してください。 +詳しくは、[デプロイのドキュメント](deployment/index.md)を参照してください。 /// diff --git a/docs/ja/docs/features.md b/docs/ja/docs/features.md index 40a1d2e60d..cfde6592d2 100644 --- a/docs/ja/docs/features.md +++ b/docs/ja/docs/features.md @@ -6,8 +6,8 @@ ### オープンスタンダード準拠 { #based-on-open-standards } -* API 作成のための OpenAPIpath operations、パラメータ、リクエストボディ、セキュリティなどの宣言を含みます。 -* JSON Schema によるデータモデルの自動ドキュメント化(OpenAPI 自体が JSON Schema に基づいています)。 +* API 作成のための [**OpenAPI**](https://github.com/OAI/OpenAPI-Specification)。パス オペレーション、パラメータ、リクエストボディ、セキュリティなどの宣言を含みます。 +* [**JSON Schema**](https://json-schema.org/) によるデータモデルの自動ドキュメント化(OpenAPI 自体が JSON Schema に基づいています)。 * 入念な調査のうえ、これらの標準を中心に設計されています。後付けのレイヤーではありません。 * これにより、多くの言語で自動 **クライアントコード生成** が可能です。 @@ -15,11 +15,11 @@ 対話的な API ドキュメントと探索的な Web ユーザーインターフェース。フレームワークは OpenAPI に基づいているため、複数のオプションがあり、デフォルトで 2 つ含まれます。 -* Swagger UI。インタラクティブに探索しつつ、ブラウザから直接 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) -* ReDoc による代替の API ドキュメント。 +* [**ReDoc**](https://github.com/Rebilly/ReDoc) による代替の API ドキュメント。 ![ReDoc](https://fastapi.tiangolo.com/img/index/index-06-redoc-02.png) @@ -27,7 +27,7 @@ すべて標準の **Python の型** 宣言(Pydantic に感謝)に基づいています。新しい構文を学ぶ必要はありません。標準的でモダンな Python だけです。 -(FastAPI を使わない場合でも)Python の型の使い方を 2 分で復習したい場合は、短いチュートリアル [Python Types](python-types.md){.internal-link target=_blank} を参照してください。 +(FastAPI を使わない場合でも)Python の型の使い方を 2 分で復習したい場合は、短いチュートリアル [Python の型](python-types.md) を参照してください。 型を使った標準的な Python を記述します: @@ -36,13 +36,13 @@ from datetime import date from pydantic import BaseModel -# 変数を str として宣言 -# そして関数内でエディタ支援を受ける +# Declare a variable as a str +# and get editor support inside the function def main(user_id: str): return user_id -# Pydantic モデル +# A Pydantic model class User(BaseModel): id: int name: str @@ -75,7 +75,7 @@ my_second_user: User = User(**second_user_data) フレームワーク全体が使いやすく直感的になるよう設計されており、最高の開発体験を確保するため、開発開始前から複数のエディタであらゆる判断が検証されています。 -Python 開発者調査では、最もよく使われる機能の 1 つが「オートコンプリート」であることが明らかです。 +Python 開発者調査では、[最もよく使われる機能の 1 つが「オートコンプリート」であることが明らかです](https://www.jetbrains.com/research/python-developers-survey-2017/#tools-and-features)。 **FastAPI** はその要求を満たすことを基盤にしています。オートコンプリートはどこでも機能します。 @@ -83,11 +83,11 @@ Python 開発者調査では、Visual Studio Code の場合: +* [Visual Studio Code](https://code.visualstudio.com/) の場合: ![editor support](https://fastapi.tiangolo.com/img/vscode-completion.png) -* PyCharm の場合: +* [PyCharm](https://www.jetbrains.com/pycharm/) の場合: ![editor support](https://fastapi.tiangolo.com/img/pycharm-completion.png) @@ -124,7 +124,7 @@ Python 開発者調査では、Starlette と完全に互換性があり(かつそれに基づいています)。そのため、手元の Starlette の追加コードも動作します。 +**FastAPI** は [**Starlette**](https://www.starlette.dev/) と完全に互換性があり(かつそれに基づいています)。そのため、手元の Starlette の追加コードも動作します。 `FastAPI` は実際には `Starlette` のサブクラスです。すでに Starlette を知っている、あるいは使っているなら、ほとんどの機能は同じように動作します。 **FastAPI** では **Starlette** のすべての機能が利用できます(FastAPI は強化された Starlette にすぎません): -* 圧倒的なパフォーマンス。利用可能な最速クラスの Python フレームワークの 1 つで、**NodeJS** や **Go** と同等です。 +* 圧倒的なパフォーマンス。[利用可能な最速クラスの Python フレームワークの 1 つで、**NodeJS** や **Go** と同等です](https://github.com/encode/starlette#performance)。 * **WebSocket** のサポート。 * プロセス内バックグラウンドタスク。 * 起動およびシャットダウンイベント。 @@ -177,7 +177,7 @@ FastAPI には、非常に使いやすく、かつ非常に強力な Pydantic と完全に互換性があり(かつそれに基づいています)。そのため、手元の Pydantic の追加コードも動作します。 +**FastAPI** は [**Pydantic**](https://docs.pydantic.dev/) と完全に互換性があり(かつそれに基づいています)。そのため、手元の Pydantic の追加コードも動作します。 Pydantic に基づく外部ライブラリ(データベース用の ORMODM など)も含まれます。 diff --git a/docs/ja/docs/help-fastapi.md b/docs/ja/docs/help-fastapi.md index ed91bb19f6..3ae18449fa 100644 --- a/docs/ja/docs/help-fastapi.md +++ b/docs/ja/docs/help-fastapi.md @@ -12,7 +12,7 @@ FastAPIや他のユーザー、作者を応援したいですか? ## ニュースレターを購読 { #subscribe-to-the-newsletter } -[**FastAPI and friends** ニュースレター](newsletter.md){.internal-link target=_blank}(配信はまれです)を購読すると、次の情報をキャッチアップできます: +[**FastAPI and friends** ニュースレター](newsletter.md)(配信はまれです)を購読すると、次の情報をキャッチアップできます: * FastAPI と関連プロジェクトのニュース 🚀 * ガイド 📝 @@ -22,17 +22,17 @@ FastAPIや他のユーザー、作者を応援したいですか? ## X (Twitter) で FastAPI をフォロー { #follow-fastapi-on-x-twitter } -**X (Twitter)** で @fastapi をフォローして、**FastAPI** の最新情報を受け取りましょう。🐦 +[**X (Twitter)** で @fastapi をフォロー](https://x.com/fastapi)して、**FastAPI** の最新情報を受け取りましょう。🐦 ## GitHubで **FastAPI** にStar { #star-fastapi-in-github } -GitHubでFastAPIに「Star」をつけることができます(右上部のStarボタンをクリック): https://github.com/fastapi/fastapi。⭐️ +GitHubでFastAPIに「Star」をつけることができます(右上部のStarボタンをクリック): [https://github.com/fastapi/fastapi](https://github.com/fastapi/fastapi)。⭐️ スターを増やすことで、他のユーザーの目につきやすくなり、すでに多くの人の役に立っていることが伝わります。 ## GitHubレポジトリのリリースをWatch { #watch-the-github-repository-for-releases } -GitHubでFastAPIを「Watch」できます(右上部の「Watch」ボタンをクリック): https://github.com/fastapi/fastapi。👀 +GitHubでFastAPIを「Watch」できます(右上部の「Watch」ボタンをクリック): [https://github.com/fastapi/fastapi](https://github.com/fastapi/fastapi)。👀 そこで「Releases only」を選択できます。 @@ -40,45 +40,45 @@ GitHubでFastAPIを「Watch」できます(右上部の「Watch」ボタンを ## 開発者とつながる { #connect-with-the-author } -作者である私(Sebastián Ramírez / `tiangolo`)とつながれます。 +作者である[私(Sebastián Ramírez / `tiangolo`)](https://tiangolo.com)とつながれます。 できること: -* **GitHub** でフォロー。 +* [**GitHub** でフォロー](https://github.com/tiangolo)。 * 役に立つかもしれない、私が作成した他のオープンソースプロジェクトを見られます。 * 新しいオープンソースプロジェクトを作成したときにわかります。 -* **X (Twitter)** でフォロー または Mastodon。 +* [**X (Twitter)** でフォロー](https://x.com/tiangolo) または [Mastodon](https://fosstodon.org/@tiangolo)。 * あなたがどのようにFastAPIを使っているか教えてください(聞けると嬉しいです)。 * 新しいツールの告知やリリースを聞けます。 - * さらに、X (Twitter) の @fastapi(別アカウント)もフォローできます。 -* **LinkedIn** でフォロー。 + * さらに、[X (Twitter) の @fastapi](https://x.com/fastapi)(別アカウント)もフォローできます。 +* [**LinkedIn** でフォロー](https://www.linkedin.com/in/tiangolo/)。 * 新しいツールの告知やリリースを聞けます(ただしX (Twitter) の方をよく使っています 🤷‍♂)。 -* **Dev.to****Medium** で執筆内容を読む(またはフォロー)。 +* [**Dev.to**](https://dev.to/tiangolo) や [**Medium**](https://medium.com/@tiangolo) で執筆内容を読む(またはフォロー)。 * 私のアイデアや、作成したツールに関する記事を読めます。 * 新しい記事を公開したときに読めます。 ## **FastAPI** についてツイート { #tweet-about-fastapi } -**FastAPI** についてツイートして、なぜ気に入っているのかを私や他の人に教えてください。🎉 +[**FastAPI** についてツイート](https://x.com/compose/tweet?text=I'm loving @fastapi because... https://github.com/fastapi/fastapi)して、なぜ気に入っているのかを私や他の人に教えてください。🎉 **FastAPI** がどのように使われているか、どこを気に入っているか、どのプロジェクト/会社で使っているか等、聞けると嬉しいです。 ## FastAPIに投票 { #vote-for-fastapi } -* Slantで **FastAPI** に投票。 -* AlternativeToで **FastAPI** に投票。 -* StackShare で **FastAPI** を使っていると宣言。 +* [Slantで **FastAPI** に投票](https://www.slant.co/options/34241/~fastapi-review)。 +* [AlternativeToで **FastAPI** に投票](https://alternativeto.net/software/fastapi/about/)。 +* [StackShare で **FastAPI** を使っていると宣言](https://stackshare.io/pypi-fastapi)。 ## GitHubで質問に困っている人を助ける { #help-others-with-questions-in-github } 次の場所で、他の人の質問を手助けできます: -* GitHub Discussions -* GitHub Issues +* [GitHub Discussions](https://github.com/fastapi/fastapi/discussions/categories/questions?discussions_q=category%3AQuestions+is%3Aunanswered) +* [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 } 多くのケースや質問は、その人の「元のコード」に関係しています。 しばしばコードの断片だけが共有されますが、それでは問題を「再現」するには不十分です。 -* ローカルで同じエラーや挙動を確認できるように、またはユースケースをよりよく理解できるように、**コピー&ペースト**して実行できる最小の再現可能な例の提供を依頼できます。 +* ローカルで同じエラーや挙動を確認できるように、またはユースケースをよりよく理解できるように、**コピー&ペースト**して実行できる[最小の再現可能な例](https://stackoverflow.com/help/minimal-reproducible-example)の提供を依頼できます。 * とても寛大な気分なら、問題の説明だけをもとに、あなた自身でそのような**例を作成**してみることもできます。ただし時間がかかる可能性が高いので、まずは問題の明確化を依頼した方が良い場合もあります。 @@ -125,7 +125,7 @@ GitHubでFastAPIを「Watch」できます(右上部の「Watch」ボタンを ## GitHubレポジトリをWatch { #watch-the-github-repository } -GitHubでFastAPIを「Watch」できます(右上部の「Watch」ボタンをクリック): https://github.com/fastapi/fastapi。👀 +GitHubでFastAPIを「Watch」できます(右上部の「Watch」ボタンをクリック): [https://github.com/fastapi/fastapi](https://github.com/fastapi/fastapi)。👀 「Releases only」ではなく「Watching」を選択すると、新しい issue や質問が作成されたときに通知を受け取れます。新しい issue のみ、Discussions のみ、PR のみ、など通知対象を絞ることもできます。 @@ -133,7 +133,7 @@ GitHubでFastAPIを「Watch」できます(右上部の「Watch」ボタンを ## 質問する { #ask-questions } -GitHubレポジトリで新しい質問を作成できます。例えば: +GitHubレポジトリで[新しい質問](https://github.com/fastapi/fastapi/discussions/new?category=questions)を作成できます。例えば: * **質問**をする、または**問題**について尋ねる。 * 新しい**機能**を提案する。 @@ -196,12 +196,12 @@ GitHubレポジトリでこのファイルを編集して共有。 +* 自分が作成/発見した 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/バグの修正。 @@ -218,8 +218,8 @@ GitHubレポジトリでDiscord チャットサーバー 👥 に参加し、FastAPI コミュニティのみんなと交流しましょう。 +👥 [Discord チャットサーバー](https://discord.gg/VQjSZaeJmf) 👥 に参加し、FastAPI コミュニティのみんなと交流しましょう。 /// tip | 豆知識 -質問は GitHub Discussions に投稿してください。そこなら[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レポジトリでGitHub sponsors を通じて作者(私)を支援できます。プランに応じて、ドキュメントにバッジが表示されるなどの特典がある場合があります。🎁 +あなたの**製品/会社**が **FastAPI** に依存している、または関連しており、そのユーザーにリーチしたい場合は、[GitHub sponsors](https://github.com/sponsors/tiangolo) を通じて作者(私)を支援できます。プランに応じて、ドキュメントにバッジが表示されるなどの特典がある場合があります。🎁 --- diff --git a/docs/ja/docs/history-design-future.md b/docs/ja/docs/history-design-future.md index 1465557080..8364002886 100644 --- a/docs/ja/docs/history-design-future.md +++ b/docs/ja/docs/history-design-future.md @@ -1,6 +1,6 @@ # 歴史、設計、そしてこれから { #history-design-and-future } -少し前に、**FastAPI**のユーザーに以下の様に尋ねられました: +しばらく前に、[ある **FastAPI** ユーザーが質問しました](https://github.com/fastapi/fastapi/issues/3#issuecomment-454956920): > このプロジェクトの歴史は?何もないところから、数週間ですごいものができているようです。 [...] @@ -14,7 +14,7 @@ **FastAPI** の歴史は、その前身の歴史が大部分を占めています。 -[代替ツールから受けたインスピレーションと比較](alternatives.md){.internal-link target=_blank}のセクションでこう述べています: +[代替手段](alternatives.md)のセクションでこう述べています:
@@ -44,7 +44,7 @@ もっとも人気のあるPythonエディターでいくつかのアイデアをテストしました。PyCharm、VS Code、Jediベースのエディターです。 -最新の Python開発者調査で、それらのエディターがユーザーの80%をカバーしていました。 +最新の [Python開発者調査](https://www.jetbrains.com/research/python-developers-survey-2018/#development-tools)で、それらのエディターがユーザーの80%をカバーしていました。 これは、**FastAPI**がPython開発者の80%が使用しているエディターで特別にテストされたことを意味します。また、ほとんどの他のエディターも同様に動作する傾向があるため、この恩恵は事実上すべてのエディターでうけられるはずです。 @@ -54,11 +54,11 @@ ## 要件 { #requirements } -いくつかの代替手法を試したあと、私は**Pydantic**の強みを利用することを決めました。 +いくつかの代替手法を試したあと、私は[**Pydantic**](https://docs.pydantic.dev/)の強みを利用することを決めました。 そして、JSON Schemaに完全に準拠するようにしたり、制約宣言を定義するさまざまな方法をサポートしたり、いくつかのエディターでのテストに基づいてエディターのサポート (型チェック、自動補完) を改善するために貢献しました。 -開発中、もう1つの重要な鍵となる**Starlette**にも貢献しました。 +開発中、もう1つの重要な鍵となる[**Starlette**](https://www.starlette.dev/)にも貢献しました。 ## 開発 { #development } @@ -76,4 +76,4 @@ **FastAPI**には大きな未来が待っています。 -そして、[あなたの助け](help-fastapi.md){.internal-link target=_blank}を大いに歓迎します。 +そして、[あなたの助け](help-fastapi.md)を大いに歓迎します。 diff --git a/docs/ja/docs/index.md b/docs/ja/docs/index.md index 90368b4ae3..a974901bdb 100644 --- a/docs/ja/docs/index.md +++ b/docs/ja/docs/index.md @@ -27,9 +27,9 @@ --- -**ドキュメント**: https://fastapi.tiangolo.com +**ドキュメント**: [https://fastapi.tiangolo.com/ja](https://fastapi.tiangolo.com/ja) -**ソースコード**: https://github.com/fastapi/fastapi +**ソースコード**: [https://github.com/fastapi/fastapi](https://github.com/fastapi/fastapi) --- @@ -44,7 +44,7 @@ FastAPI は、Python の標準である型ヒントに基づいて Python で AP * **簡単**: 簡単に利用・習得できるようにデザインされています。ドキュメントを読む時間を削減します。 * **短い**: コードの重複を最小限にします。各パラメータ宣言から複数の機能を得られます。バグも減ります。 * **堅牢性**: 自動対話型ドキュメントにより、本番環境向けのコードが得られます。 -* **Standards-based**: API のオープンスタンダードに基づいており(そして完全に互換性があります)、OpenAPI(以前は Swagger として知られていました)や JSON Schema をサポートします。 +* **Standards-based**: API のオープンスタンダードに基づいており(そして完全に互換性があります)、[OpenAPI](https://github.com/OAI/OpenAPI-Specification)(以前は Swagger として知られていました)や [JSON Schema](https://json-schema.org/) をサポートします。 * 本番アプリケーションを構築している社内開発チームのテストに基づく見積もりです。 @@ -69,7 +69,7 @@ FastAPI は、Python の標準である型ヒントに基づいて Python で AP -その他のスポンサー +[その他のスポンサー](https://fastapi.tiangolo.com/ja/fastapi-people/#sponsors) ## 評価 { #opinions } @@ -210,7 +210,7 @@ async def read_item(item_id: int, q: str | None = None):
```console -$ fastapi dev main.py +$ fastapi dev ╭────────── FastAPI CLI - Development mode ───────────╮ │ │ @@ -235,7 +235,7 @@ INFO: Application startup complete.
-fastapi dev main.py コマンドについて +fastapi dev コマンドについて `fastapi dev` コマンドは `main.py` ファイルを読み取り、その中の **FastAPI** アプリを検出し、Uvicorn を使用してサーバーを起動します。 @@ -456,20 +456,6 @@ item: Item すでに **FastAPI Cloud** アカウント(ウェイティングリストから招待されました 😉)がある場合は、1 コマンドでアプリケーションをデプロイできます。 -デプロイ前に、ログインしていることを確認してください。 - -
- -```console -$ fastapi login - -You are logged in to FastAPI Cloud 🚀 -``` - -
- -次に、アプリをデプロイします。 -
```console diff --git a/docs/ja/docs/project-generation.md b/docs/ja/docs/project-generation.md index c930fb557c..b6550e3ac3 100644 --- a/docs/ja/docs/project-generation.md +++ b/docs/ja/docs/project-generation.md @@ -4,7 +4,7 @@ このテンプレートを使って開始できます。初期セットアップ、セキュリティ、データベース、いくつかのAPIエンドポイントがすでに用意されています。 -GitHubリポジトリ: Full Stack FastAPI Template +GitHubリポジトリ: [Full Stack FastAPI Template](https://github.com/tiangolo/full-stack-fastapi-template) ## Full Stack FastAPI テンプレート - 技術スタックと機能 { #full-stack-fastapi-template-technology-stack-and-features } diff --git a/docs/ja/docs/python-types.md b/docs/ja/docs/python-types.md index a6b46c256d..7802336487 100644 --- a/docs/ja/docs/python-types.md +++ b/docs/ja/docs/python-types.md @@ -231,7 +231,7 @@ def some_function(data: Any): {!> ../../docs_src/python_types/tutorial008b_py310.py!} ``` -これは `item` が `int` または `str` になり得ることを意味します. +これは `item` が `int` または `str` になり得ることを意味します。 #### `None` の可能性 { #possibly-none } @@ -269,7 +269,7 @@ def some_function(data: Any): ## Pydantic のモデル { #pydantic-models } -Pydantic はデータ検証を行うための Python ライブラリです。 +[Pydantic](https://docs.pydantic.dev/) はデータ検証を行うための Python ライブラリです。 データの「形」を属性付きのクラスとして宣言します。 @@ -285,7 +285,7 @@ Pydantic の公式ドキュメントからの例: /// info | 情報 -Pydantic の詳細はドキュメントを参照してください。 +[ Pydantic の詳細はドキュメントを参照してください](https://docs.pydantic.dev/)。 /// @@ -343,6 +343,6 @@ Python 自体は、この `Annotated` で何かをするわけではありませ /// info | 情報 -すでにすべてのチュートリアルを終えて、型についての詳細を見るためにこのページに戻ってきた場合は、良いリソースとして `mypy` の「チートシート」 があります。 +すでにすべてのチュートリアルを終えて、型についての詳細を見るためにこのページに戻ってきた場合は、良いリソースとして [`mypy` の「チートシート`](https://mypy.readthedocs.io/en/latest/cheat_sheet_py3.html) があります。 /// diff --git a/docs/ja/docs/tutorial/background-tasks.md b/docs/ja/docs/tutorial/background-tasks.md index d32c141b5b..0bacbb3947 100644 --- a/docs/ja/docs/tutorial/background-tasks.md +++ b/docs/ja/docs/tutorial/background-tasks.md @@ -63,7 +63,7 @@ ## 技術的な詳細 { #technical-details } -`BackgroundTasks` クラスは、`starlette.background`から直接取得されます。 +`BackgroundTasks` クラスは、[`starlette.background`](https://www.starlette.dev/background/) から直接取得されます。 これは、FastAPI に直接インポート/インクルードされるため、`fastapi` からインポートできる上に、`starlette.background`から別の `BackgroundTask` (末尾に `s` がない) を誤ってインポートすることを回避できます。 @@ -71,11 +71,11 @@ それでも、FastAPI で `BackgroundTask` を単独で使用することは可能ですが、コード内でオブジェクトを作成し、それを含むStarlette `Response` を返す必要があります。 -詳細については、Starlette のバックグラウンドタスクに関する公式ドキュメントを参照して下さい。 +詳細については、[Starlette のバックグラウンドタスクに関する公式ドキュメント](https://www.starlette.dev/background/)を参照して下さい。 ## 注意 { #caveat } -大量のバックグラウンド計算が必要であり、必ずしも同じプロセスで実行する必要がない場合 (たとえば、メモリや変数などを共有する必要がない場合)、Celery のようなより大きな他のツールを使用するとメリットがあるかもしれません。 +大量のバックグラウンド計算が必要であり、必ずしも同じプロセスで実行する必要がない場合 (たとえば、メモリや変数などを共有する必要がない場合)、[Celery](https://docs.celeryq.dev) のようなより大きな他のツールを使用するとメリットがあるかもしれません。 これらは、より複雑な構成、RabbitMQ や Redis などのメッセージ/ジョブキューマネージャーを必要とする傾向がありますが、複数のプロセス、特に複数のサーバーでバックグラウンドタスクを実行できます。 diff --git a/docs/ja/docs/tutorial/bigger-applications.md b/docs/ja/docs/tutorial/bigger-applications.md index 9c1cc0fe69..49ee92cf71 100644 --- a/docs/ja/docs/tutorial/bigger-applications.md +++ b/docs/ja/docs/tutorial/bigger-applications.md @@ -58,17 +58,17 @@ from app.routers import items ```bash . -├── app # "app" is a Python package -│   ├── __init__.py # this file makes "app" a "Python package" -│   ├── main.py # "main" module, e.g. import app.main -│   ├── dependencies.py # "dependencies" module, e.g. import app.dependencies -│   └── routers # "routers" is a "Python subpackage" -│   │ ├── __init__.py # makes "routers" a "Python subpackage" -│   │ ├── items.py # "items" submodule, e.g. import app.routers.items -│   │ └── users.py # "users" submodule, e.g. import app.routers.users -│   └── internal # "internal" is a "Python subpackage" -│   ├── __init__.py # makes "internal" a "Python subpackage" -│   └── admin.py # "admin" submodule, e.g. import app.internal.admin +├── app # "app" は Python パッケージ +│   ├── __init__.py # このファイルにより "app" は「Python パッケージ」になる +│   ├── main.py # "main" モジュール(例: import app.main) +│   ├── dependencies.py # "dependencies" モジュール(例: import app.dependencies) +│   └── routers # "routers" は「Python サブパッケージ」 +│   │ ├── __init__.py # このファイルにより "routers" は「Python サブパッケージ」になる +│   │ ├── items.py # "items" サブモジュール(例: import app.routers.items) +│   │ └── users.py # "users" サブモジュール(例: import app.routers.users) +│   └── internal # "internal" は「Python サブパッケージ」 +│   ├── __init__.py # このファイルにより "internal" は「Python サブパッケージ」になる +│   └── admin.py # "admin" サブモジュール(例: import app.internal.admin) ``` ## `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 | 豆知識 -[*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` が含まれます。 * これらすべての *path operations* では、実行前に `dependencies` のリストが評価・実行されます。 * 特定の *path operation* に依存関係を宣言した場合は、**それらも実行されます**。 - * ルーターの依存関係が先に実行され、その後に[デコレータ内の `dependencies`](dependencies/dependencies-in-path-operation-decorators.md){.internal-link target=_blank}、次に通常のパラメータ依存関係が続きます。 - * [`scopes` を伴う `Security` 依存関係](../advanced/security/oauth2-scopes.md){.internal-link target=_blank} を追加することもできます。 + * ルーターの依存関係が先に実行され、その後に[デコレータ内の `dependencies`](dependencies/dependencies-in-path-operation-decorators.md)、次に通常のパラメータ依存関係が続きます。 + * [`scopes` を伴う `Security` 依存関係](../advanced/security/oauth2-scopes.md) を追加することもできます。 /// tip | 豆知識 @@ -303,7 +303,7 @@ from ...dependencies import get_token_header 通常どおり `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"] *} @@ -353,7 +353,7 @@ from .routers import items, users from app.routers import items, users ``` -Python のパッケージとモジュールについて詳しくは、公式の Python モジュールに関するドキュメントをご覧ください。 +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 } アプリを実行します: @@ -472,14 +503,14 @@ from .routers.users import router
```console -$ fastapi dev app/main.py +$ fastapi dev INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) ```
-そして http://127.0.0.1:8000/docs を開きます。 +そして [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs) を開きます。 すべてのサブモジュール由来のパスを含む自動 API ドキュメントが表示され、正しいパス(および prefix)と正しいタグが使われているのが分かります: diff --git a/docs/ja/docs/tutorial/body-nested-models.md b/docs/ja/docs/tutorial/body-nested-models.md index ab78b8f86a..5187eb14e5 100644 --- a/docs/ja/docs/tutorial/body-nested-models.md +++ b/docs/ja/docs/tutorial/body-nested-models.md @@ -96,7 +96,7 @@ Pydanticモデルの各属性には型があります。 `str`や`int`、`float`などの通常の単数型の他にも、`str`を継承したより複雑な単数型を使うこともできます。 -すべてのオプションをみるには、Pydanticの型の概要を確認してください。次の章でいくつかの例をみることができます。 +すべてのオプションをみるには、[Pydantic の型の概要](https://docs.pydantic.dev/latest/concepts/types/)を確認してください。次の章でいくつかの例をみることができます。 例えば、`Image`モデルのように`url`フィールドがある場合、`str`の代わりにPydanticの`HttpUrl`のインスタンスとして宣言することができます: diff --git a/docs/ja/docs/tutorial/body-updates.md b/docs/ja/docs/tutorial/body-updates.md index 310530c690..a4fa8bd7be 100644 --- a/docs/ja/docs/tutorial/body-updates.md +++ b/docs/ja/docs/tutorial/body-updates.md @@ -2,7 +2,7 @@ ## `PUT`による置換での更新 { #update-replacing-with-put } -項目を更新するにはHTTPの`PUT`操作を使用することができます。 +項目を更新するには[HTTPの`PUT`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PUT)操作を使用することができます。 `jsonable_encoder`を用いて、入力データをJSONとして保存できるデータに変換することができます(例:NoSQLデータベース)。例えば、`datetime`を`str`に変換します。 @@ -28,7 +28,7 @@ ## `PATCH`による部分的な更新 { #partial-updates-with-patch } -また、HTTPの`PATCH`操作でデータを*部分的に*更新することもできます。 +また、[HTTPの`PATCH`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PATCH)操作でデータを*部分的に*更新することもできます。 つまり、更新したいデータだけを送信して、残りはそのままにしておくことができます。 @@ -68,7 +68,7 @@ まとめると、部分的な更新を適用するには、次のようにします: -* (オプションで)`PATCH`の代わりに`PUT`を使用します。 +* (オプションで)`PUT`の代わりに`PATCH`を使用します。 * 保存されているデータを取得します。 * そのデータをPydanticモデルにいれます。 * 入力モデルからデフォルト値を含まない`dict`を生成します(`exclude_unset`を使用します)。 @@ -95,6 +95,6 @@ そのため、すべての属性を省略できる部分的な変更を受け取りたい場合は、すべての属性をオプションとしてマークしたモデルを用意する必要があります(デフォルト値または`None`を使用して)。 -**更新** のためのオプション値がすべて設定されているモデルと、**作成** のための必須値が設定されているモデルを区別するには、[追加モデル](extra-models.md){.internal-link target=_blank}で説明されている考え方を利用することができます。 +**更新** のためのオプション値がすべて設定されているモデルと、**作成** のための必須値が設定されているモデルを区別するには、[追加モデル](extra-models.md)で説明されている考え方を利用することができます。 /// diff --git a/docs/ja/docs/tutorial/body.md b/docs/ja/docs/tutorial/body.md index 7c939bdfa0..9f100738c0 100644 --- a/docs/ja/docs/tutorial/body.md +++ b/docs/ja/docs/tutorial/body.md @@ -6,7 +6,7 @@ APIはほとんどの場合 **レスポンス** ボディを送信する必要があります。しかしクライアントは、常に **リクエストボディ** を送信する必要があるとは限りません。場合によっては、クエリパラメータ付きのパスだけをリクエストして、ボディを送信しないこともあります。 -**リクエスト**ボディを宣言するには、Pydantic モデルを使用し、その強力な機能とメリットをすべて利用します。 +**リクエスト**ボディを宣言するには、[Pydantic](https://docs.pydantic.dev/) モデルを使用し、その強力な機能とメリットをすべて利用します。 /// info | 情報 @@ -73,7 +73,7 @@ APIはほとんどの場合 **レスポンス** ボディを送信する必要 * データが無効な場合は、どこで何が不正なデータだったのかを正確に示す、分かりやすい明確なエラーを返します。 * 受け取ったデータをパラメータ `item` に渡します。 * 関数内で `Item` 型として宣言したため、すべての属性とその型について、エディタサポート(補完など)も利用できます。 -* モデル向けの JSON Schema 定義を生成します。プロジェクトにとって意味があるなら、他の場所でも好きなように利用できます。 +* モデル向けの [JSON Schema](https://json-schema.org) 定義を生成します。プロジェクトにとって意味があるなら、他の場所でも好きなように利用できます。 * それらのスキーマは生成されるOpenAPIスキーマの一部となり、自動ドキュメントの UIs で使用されます。 ## 自動ドキュメント { #automatic-docs } @@ -102,15 +102,15 @@ APIはほとんどの場合 **レスポンス** ボディを送信する必要 これをサポートするために、Pydantic自体にもいくつかの変更が加えられました。 -前述のスクリーンショットは Visual Studio Code で撮影されたものです。 +前述のスクリーンショットは [Visual Studio Code](https://code.visualstudio.com) で撮影されたものです。 -ただし、PyCharm や、他のほとんどのPythonエディタでも同じエディタサポートを得られます: +ただし、[PyCharm](https://www.jetbrains.com/pycharm/) や、他のほとんどのPythonエディタでも同じエディタサポートを得られます: /// tip | 豆知識 -エディタとして PyCharm を使用している場合、Pydantic PyCharm Plugin を使用できます。 +エディタとして [PyCharm](https://www.jetbrains.com/pycharm/) を使用している場合、[Pydantic PyCharm Plugin](https://github.com/koxudaxi/pydantic-pycharm-plugin/) を使用できます。 以下により、Pydanticモデルに対するエディタサポートが改善されます: @@ -163,4 +163,4 @@ FastAPIは、デフォルト値 `= None` があるため、`q` の値が必須 ## 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) のドキュメントを参照してください。 diff --git a/docs/ja/docs/tutorial/cors.md b/docs/ja/docs/tutorial/cors.md index 5136a7fd5f..3716b179b9 100644 --- a/docs/ja/docs/tutorial/cors.md +++ b/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」 は、ブラウザで実行されているフロントエンドにバックエンドと通信するJavaScriptコードがあり、そのバックエンドがフロントエンドとは異なる「オリジン」にある状況を指します。 +[CORSまたは「Cross-Origin Resource Sharing」](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) は、ブラウザで実行されているフロントエンドにバックエンドと通信するJavaScriptコードがあり、そのバックエンドがフロントエンドとは異なる「オリジン」にある状況を指します。 ## オリジン { #origin } @@ -56,10 +56,10 @@ * `allow_origins` - オリジン間リクエストを許可するオリジンのリスト。例えば、`['https://example.org', 'https://www.example.org']`。`['*']`を使用して任意のオリジンを許可できます。 * `allow_origin_regex` - オリジン間リクエストを許可するオリジンの正規表現文字列。例えば、`'https://.*\.example\.org'`。 * `allow_methods` - オリジン間リクエストで許可するHTTPメソッドのリスト。デフォルトは `['GET']` です。`['*']`を使用してすべての標準メソッドを許可できます。 -* `allow_headers` - オリジン間リクエストでサポートするHTTPリクエストヘッダーのリスト。デフォルトは `[]` です。`['*']`を使用して、すべてのヘッダーを許可できます。シンプルなCORSリクエストでは、 `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` が `True` に設定されている場合、`allow_origins`、`allow_methods`、`allow_headers` のいずれも `['*']` に設定できません。これらはすべて明示的に指定する必要があります。 + `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` - ブラウザからアクセスできるようにするレスポンスヘッダーを示します。デフォルトは `[]` です。 * `max_age` - ブラウザがCORSレスポンスをキャッシュする最大時間を秒単位で設定します。デフォルトは `600` です。 @@ -78,7 +78,7 @@ ## より詳しい情報 { #more-info } -CORSについてより詳しい情報は、Mozilla CORS documentation を参照して下さい。 +CORSについてより詳しい情報は、[Mozilla CORS documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) を参照して下さい。 /// note | 技術詳細 diff --git a/docs/ja/docs/tutorial/debugging.md b/docs/ja/docs/tutorial/debugging.md index 9d88ba42b5..023e988dce 100644 --- a/docs/ja/docs/tutorial/debugging.md +++ b/docs/ja/docs/tutorial/debugging.md @@ -59,7 +59,7 @@ Pythonによって自動的に作成されたファイル内の内部変数 `__n ```Python from myapp import app -# Some more code +# その他のコード ``` その場合、`myapp.py` 内の自動的に作成された変数 `__name__` は、値として `"__main__"` を持ちません。 @@ -74,7 +74,7 @@ from myapp import app /// info | 情報 -より詳しい情報は、公式Pythonドキュメントを参照してください。 +より詳しい情報は、[公式Pythonドキュメント](https://docs.python.org/3/library/__main__.html)を参照してください。 /// diff --git a/docs/ja/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md b/docs/ja/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md index d0a2b16721..573ccc1f96 100644 --- a/docs/ja/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md +++ b/docs/ja/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md @@ -32,7 +32,7 @@ この例では、架空のカスタムヘッダー `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 } -後で、より大きなアプリケーションを(おそらく複数ファイルで)構造化する方法([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 } diff --git a/docs/ja/docs/tutorial/dependencies/dependencies-with-yield.md b/docs/ja/docs/tutorial/dependencies/dependencies-with-yield.md index 380dcb536b..83e4f88098 100644 --- a/docs/ja/docs/tutorial/dependencies/dependencies-with-yield.md +++ b/docs/ja/docs/tutorial/dependencies/dependencies-with-yield.md @@ -14,8 +14,8 @@ FastAPIは、いくつかの`@contextlib.contextmanager`または -* `@contextlib.asynccontextmanager` +* [`@contextlib.contextmanager`](https://docs.python.org/3/library/contextlib.html#contextlib.contextmanager) または +* [`@contextlib.asynccontextmanager`](https://docs.python.org/3/library/contextlib.html#contextlib.asynccontextmanager) これらは **FastAPI** の依存関係として使用するのに有効です。 @@ -87,7 +87,7 @@ FastAPIは、いくつかのContext Managersのおかげで動作します。 +これはPythonの[コンテキストマネージャ](https://docs.python.org/3/library/contextlib.html)のおかげで動作します。 **FastAPI** はこれを実現するために内部的に使用しています。 @@ -111,7 +111,7 @@ FastAPIは、いくつかのファイルを読み込むには`with`を使用することができます: +例えば、[ファイルを読み込むには`with`を使用することができます](https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files): ```Python with open("./somefile.txt") as f: @@ -264,7 +264,7 @@ with open("./somefile.txt") as f: /// -Pythonでは、以下の2つのメソッドを持つクラスを作成する: `__enter__()`と`__exit__()`ことでコンテキストマネージャを作成することができます。 +Pythonでは、[以下の2つのメソッドを持つクラスを作成する: `__enter__()`と`__exit__()`](https://docs.python.org/3/reference/datamodel.html#context-managers)ことでコンテキストマネージャを作成することができます。 また、依存関数の中で`with`や`async with`文を使用することによって`yield`を持つ **FastAPI** の依存関係の中でそれらを使用することができます: @@ -272,10 +272,10 @@ Pythonでは、`@contextlib.contextmanager` または -* `@contextlib.asynccontextmanager` +* [`@contextlib.contextmanager`](https://docs.python.org/3/library/contextlib.html#contextlib.contextmanager) または +* [`@contextlib.asynccontextmanager`](https://docs.python.org/3/library/contextlib.html#contextlib.asynccontextmanager) これらを使って、関数を単一の`yield`でデコレートすることができます。 diff --git a/docs/ja/docs/tutorial/dependencies/global-dependencies.md b/docs/ja/docs/tutorial/dependencies/global-dependencies.md index 284da2181b..35a77a5f76 100644 --- a/docs/ja/docs/tutorial/dependencies/global-dependencies.md +++ b/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 に適用されます: {* ../../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 } -後で、複数ファイルを含む大規模アプリケーションの構成方法([大規模アプリケーション - 複数ファイル](../../tutorial/bigger-applications.md){.internal-link target=_blank})を読むと、path operation のグループに対して 1 つの `dependencies` パラメータを宣言する方法を学びます。 +後で、複数ファイルを含む大規模アプリケーションの構成方法([大規模アプリケーション - 複数ファイル](../../tutorial/bigger-applications.md))を読むと、path operation のグループに対して 1 つの `dependencies` パラメータを宣言する方法を学びます。 diff --git a/docs/ja/docs/tutorial/dependencies/index.md b/docs/ja/docs/tutorial/dependencies/index.md index 64cb4f79e4..a3cf3e26b5 100644 --- a/docs/ja/docs/tutorial/dependencies/index.md +++ b/docs/ja/docs/tutorial/dependencies/index.md @@ -57,7 +57,7 @@ FastAPI はバージョン 0.95.0 で `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 | 備考 -わからない場合は、ドキュメントの[Async: *"In a hurry?"*](../../async.md#in-a-hurry){.internal-link target=_blank}の中の`async`と`await`についてのセクションを確認してください。 +わからない場合は、ドキュメントの[Async: *「急いでいますか?」*](../../async.md#in-a-hurry)の中の`async`と`await`についてのセクションを確認してください。 /// diff --git a/docs/ja/docs/tutorial/encoder.md b/docs/ja/docs/tutorial/encoder.md index 33cc6ae48c..e4745faf7c 100644 --- a/docs/ja/docs/tutorial/encoder.md +++ b/docs/ja/docs/tutorial/encoder.md @@ -12,7 +12,7 @@ JSON互換のデータのみを受信するデータベース`fake_db`がある 例えば、`datetime`オブジェクトはJSONと互換性がないので、受け取られません。 -そのため、`datetime`オブジェクトはISO形式のデータを含む`str`に変換されなければなりません。 +そのため、`datetime`オブジェクトは[ISO形式](https://en.wikipedia.org/wiki/ISO_8601)のデータを含む`str`に変換されなければなりません。 同様に、このデータベースはPydanticモデル(属性を持つオブジェクト)を受け取らず、`dict`だけを受け取ります。 @@ -24,7 +24,7 @@ Pydanticモデルのようなオブジェクトを受け取り、JSON互換版 この例では、Pydanticモデルを`dict`に、`datetime`を`str`に変換します。 -呼び出した結果は、Pythonの標準の`json.dumps()`でエンコードできるものです。 +呼び出した結果は、Pythonの標準の[`json.dumps()`](https://docs.python.org/3/library/json.html#json.dumps)でエンコードできるものです。 これはJSON形式のデータを含む大きな`str`を(文字列として)返しません。JSONと互換性のある値とサブの値を持つPython標準のデータ構造(例:`dict`)を返します。 diff --git a/docs/ja/docs/tutorial/extra-data-types.md b/docs/ja/docs/tutorial/extra-data-types.md index 4ed84e86f8..1bbfeb71e3 100644 --- a/docs/ja/docs/tutorial/extra-data-types.md +++ b/docs/ja/docs/tutorial/extra-data-types.md @@ -36,7 +36,7 @@ * `datetime.timedelta`: * Pythonの`datetime.timedelta`です。 * リクエストとレスポンスでは合計秒数の`float`で表現されます。 - * Pydanticでは「ISO 8601 time diff encoding」として表現することも可能です。詳細はドキュメントを参照してください。 + * Pydanticでは「ISO 8601 time diff encoding」として表現することも可能です。[詳細はドキュメントを参照してください](https://docs.pydantic.dev/latest/concepts/serialization/#custom-serializers)。 * `frozenset`: * リクエストとレスポンスでは`set`と同じように扱われます: * リクエストでは、リストが読み込まれ、重複を排除して`set`に変換されます。 @@ -49,7 +49,7 @@ * `Decimal`: * Pythonの標準的な`Decimal`です。 * リクエストとレスポンスでは`float`と同じように扱われます。 -* Pydanticの全ての有効な型はこちらで確認できます: Pydantic data types。 +* 有効なPydanticのデータ型はここで確認できます: [Pydantic のデータ型](https://docs.pydantic.dev/latest/usage/types/types/)。 ## 例 { #example } diff --git a/docs/ja/docs/tutorial/extra-models.md b/docs/ja/docs/tutorial/extra-models.md index 951e8b35e4..7fac3e8cd8 100644 --- a/docs/ja/docs/tutorial/extra-models.md +++ b/docs/ja/docs/tutorial/extra-models.md @@ -162,11 +162,11 @@ UserInDB( OpenAPIでは`anyOf`で定義されます。 -そのためには、標準的なPythonの型ヒント`typing.Union`を使用します: +そのためには、標準的なPythonの型ヒント[`typing.Union`](https://docs.python.org/3/library/typing.html#typing.Union)を使用します: /// note | 備考 -`Union`を定義する場合は、最も具体的な型を先に、その後により具体性の低い型を含めてください。以下の例では、より具体的な`PlaneItem`が`Union[PlaneItem, CarItem]`内で`CarItem`より前に来ています。 +[`Union`](https://docs.pydantic.dev/latest/concepts/types/#unions)を定義する場合は、最も具体的な型を先に、その後により具体性の低い型を含めてください。以下の例では、より具体的な`PlaneItem`が`Union[PlaneItem, CarItem]`内で`CarItem`より前に来ています。 /// diff --git a/docs/ja/docs/tutorial/first-steps.md b/docs/ja/docs/tutorial/first-steps.md index 37d71a9f72..26cb49159c 100644 --- a/docs/ja/docs/tutorial/first-steps.md +++ b/docs/ja/docs/tutorial/first-steps.md @@ -11,7 +11,7 @@
```console -$ fastapi dev main.py +$ fastapi dev FastAPI Starting development server 🚀 @@ -58,7 +58,7 @@ INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) ### チェック { #check-it } -ブラウザでhttp://127.0.0.1:8000を開きます。 +ブラウザで[http://127.0.0.1:8000](http://127.0.0.1:8000)を開きます。 次のようなJSONレスポンスが表示されます: @@ -68,17 +68,17 @@ INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) ### 対話的APIドキュメント { #interactive-api-docs } -次に、http://127.0.0.1:8000/docsにアクセスします。 +次に、[http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs)にアクセスします。 -自動生成された対話的APIドキュメントが表示されます (Swagger UIで提供): +自動生成された対話的APIドキュメントが表示されます([Swagger UI](https://github.com/swagger-api/swagger-ui)で提供): ![Swagger UI](https://fastapi.tiangolo.com/img/index/index-01-swagger-ui-simple.png) ### 代替APIドキュメント { #alternative-api-docs } -次に、http://127.0.0.1:8000/redocにアクセスします。 +次に、[http://127.0.0.1:8000/redoc](http://127.0.0.1:8000/redoc)にアクセスします。 -先ほどとは異なる、自動生成された対話的APIドキュメントが表示されます (ReDocによって提供): +先ほどとは異なる、自動生成された対話的APIドキュメントが表示されます([ReDoc](https://github.com/Rebilly/ReDoc)によって提供): ![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 } -ここでは、OpenAPIはAPIのスキーマ定義の方法を規定する仕様です。 +ここでは、[OpenAPI](https://github.com/OAI/OpenAPI-Specification)はAPIのスキーマ定義の方法を規定する仕様です。 このスキーマ定義はAPIパス、受け取り可能なパラメータなどが含まれます。 @@ -110,7 +110,7 @@ OpenAPIはAPIのためのAPIスキーマを定義します。そして、その 素のOpenAPIスキーマがどのようなものか興味がある場合、FastAPIはすべてのAPIの説明を含むJSON(スキーマ)を自動的に生成します。 -次の場所で直接確認できます: http://127.0.0.1:8000/openapi.json. +次の場所で直接確認できます: [http://127.0.0.1:8000/openapi.json](http://127.0.0.1:8000/openapi.json). 次のようなJSONが表示されます。 @@ -143,9 +143,58 @@ OpenAPIスキーマは、FastAPIに含まれている2つのインタラクテ また、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 } -任意でFastAPIアプリをFastAPI Cloudにデプロイできます。まだなら、待機リストに登録してください。 🚀 +任意でFastAPIアプリを[FastAPI Cloud](https://fastapicloud.com)にデプロイできます。まだなら、待機リストに登録してください。 🚀 すでに**FastAPI Cloud**アカウントがある場合(待機リストから招待済みの場合😉)、1コマンドでアプリケーションをデプロイできます。 @@ -191,7 +240,7 @@ Deploying to FastAPI Cloud... `FastAPI`は`Starlette`を直接継承するクラスです。 -`FastAPI`でもStarletteのすべての機能を利用可能です。 +`FastAPI`でも[Starlette](https://www.starlette.dev/)のすべての機能を利用可能です。 /// @@ -272,7 +321,7 @@ APIを構築するときは、通常、これらの特定のHTTPメソッドを * パス `/` * get オペレーション -/// info | `@decorator` Info +/// info | `@decorator` 情報 Pythonにおける`@something`シンタックスはデコレータと呼ばれます。 @@ -335,7 +384,7 @@ Pythonにおける`@something`シンタックスはデコレータと呼ばれ /// 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 } -**FastAPI Cloud**に1コマンドでアプリをデプロイします: `fastapi deploy`. 🎉 +**[FastAPI Cloud](https://fastapicloud.com)**に1コマンドでアプリをデプロイします: `fastapi deploy`. 🎉 #### FastAPI Cloudについて { #about-fastapi-cloud } -**FastAPI Cloud**は、**FastAPI**の作者とそのチームによって開発されています。 +**[FastAPI Cloud](https://fastapicloud.com)**は、**FastAPI**の作者とそのチームによって開発されています。 最小限の労力でAPIの**構築**、**デプロイ**、**アクセス**を行うプロセスを合理化します。 diff --git a/docs/ja/docs/tutorial/handling-errors.md b/docs/ja/docs/tutorial/handling-errors.md index dc74e3f6cc..8d0190cb0b 100644 --- a/docs/ja/docs/tutorial/handling-errors.md +++ b/docs/ja/docs/tutorial/handling-errors.md @@ -81,7 +81,7 @@ Pythonの例外なので、`return`ではなく、`raise`です。 ## カスタム例外ハンドラのインストール { #install-custom-exception-handlers } -カスタム例外ハンドラはStarletteと同じ例外ユーティリティを使用して追加することができます。 +カスタム例外ハンドラは[Starletteと同じ例外ユーティリティ](https://www.starlette.dev/exceptions/)を使用して追加することができます。 あなた(または使用しているライブラリ)が`raise`するかもしれないカスタム例外`UnicornException`があるとしましょう。 diff --git a/docs/ja/docs/tutorial/index.md b/docs/ja/docs/tutorial/index.md index d298abc62d..8182c92ae9 100644 --- a/docs/ja/docs/tutorial/index.md +++ b/docs/ja/docs/tutorial/index.md @@ -15,7 +15,7 @@
```console -$ fastapi dev main.py +$ fastapi dev FastAPI Starting development server 🚀 @@ -62,7 +62,7 @@ $ fastapi dev @@ -76,7 +76,7 @@ $ pip install "fastapi[standard]" /// note | 備考 -`pip install "fastapi[standard]"` でインストールすると、`fastapi-cloud-cli` を含むいくつかのデフォルトのオプション標準依存関係が付属します。これにより、FastAPI Cloud にデプロイできます。 +`pip install "fastapi[standard]"` でインストールすると、`fastapi-cloud-cli` を含むいくつかのデフォルトのオプション標準依存関係が付属します。これにより、[FastAPI Cloud](https://fastapicloud.com) にデプロイできます。 これらのオプション依存関係が不要な場合は、代わりに `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 } この **チュートリアル - ユーザーガイド** の後で、後から読める **高度なユーザーガイド** もあります。 diff --git a/docs/ja/docs/tutorial/metadata.md b/docs/ja/docs/tutorial/metadata.md index 3b70bf2f41..d6882797bf 100644 --- a/docs/ja/docs/tutorial/metadata.md +++ b/docs/ja/docs/tutorial/metadata.md @@ -76,7 +76,7 @@ OpenAPI 3.1.0 および FastAPI 0.99.0 以降では、`license_info` を `url` /// info | 情報 -タグの詳細は [Path Operation Configuration](path-operation-configuration.md#tags){.internal-link target=_blank} を参照してください。 +タグの詳細は [Path Operation の設定](path-operation-configuration.md#tags) を参照してください。 /// diff --git a/docs/ja/docs/tutorial/middleware.md b/docs/ja/docs/tutorial/middleware.md index 103d6e2c06..d55ab3ed94 100644 --- a/docs/ja/docs/tutorial/middleware.md +++ b/docs/ja/docs/tutorial/middleware.md @@ -15,7 +15,7 @@ `yield` を使った依存関係をもつ場合は、終了コードはミドルウェアの *後に* 実行されます。 -バックグラウンドタスク ([バックグラウンドタスク](background-tasks.md){.internal-link target=_blank} セクションで説明します。後で確認できます) がある場合は、それらは全てのミドルウェアの *後に* 実行されます。 +バックグラウンドタスク ([バックグラウンドタスク](background-tasks.md) セクションで説明します。後で確認できます) がある場合は、それらは全てのミドルウェアの *後に* 実行されます。 /// @@ -35,9 +35,9 @@ /// tip | 豆知識 -カスタムの独自ヘッダーは `X-` プレフィックスを使用して追加できる点に注意してください。 +カスタムの独自ヘッダーは [`X-` プレフィックスを使用](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers)して追加できる点に注意してください。 -ただし、ブラウザのクライアントに表示させたいカスタムヘッダーがある場合は、StarletteのCORSドキュメントに記載されているパラメータ `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 | 豆知識 -ここでは、これらのユースケースに対してより正確になり得るため、`time.time()` の代わりに `time.perf_counter()` を使用しています。 🤓 +ここでは、これらのユースケースに対してより正確になり得るため、`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 } -他のミドルウェアの詳細については、[高度なユーザーガイド: 高度なミドルウェア](../advanced/middleware.md){.internal-link target=_blank}を参照してください。 +他のミドルウェアの詳細については、[高度なユーザーガイド: 高度なミドルウェア](../advanced/middleware.md)を参照してください。 次のセクションでは、ミドルウェアを使用して CORS を処理する方法について説明します。 diff --git a/docs/ja/docs/tutorial/path-operation-configuration.md b/docs/ja/docs/tutorial/path-operation-configuration.md index 556cc6b148..25a2783ea1 100644 --- a/docs/ja/docs/tutorial/path-operation-configuration.md +++ b/docs/ja/docs/tutorial/path-operation-configuration.md @@ -58,7 +58,7 @@ 説明文は長くて複数行におよぶ傾向があるので、関数docstring内に*path operation*の説明文を宣言できます。すると、**FastAPI** は説明文を読み込んでくれます。 -docstringにMarkdownを記述すれば、正しく解釈されて表示されます。(docstringのインデントを考慮して) +docstringに[Markdown](https://en.wikipedia.org/wiki/Markdown)を記述すれば、正しく解釈されて表示されます。(docstringのインデントを考慮して) {* ../../docs_src/path_operation_configuration/tutorial004_py310.py hl[17:25] *} diff --git a/docs/ja/docs/tutorial/path-params-numeric-validations.md b/docs/ja/docs/tutorial/path-params-numeric-validations.md index ab3240f042..55930eece2 100644 --- a/docs/ja/docs/tutorial/path-params-numeric-validations.md +++ b/docs/ja/docs/tutorial/path-params-numeric-validations.md @@ -14,7 +14,7 @@ FastAPI はバージョン 0.95.0 で`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 } -`Query`と`Path`(そしてまだ見たことない他のもの)では、[クエリパラメータと文字列の検証](query-params-str-validations.md){.internal-link target=_blank}と同じようにメタデータと文字列の検証を宣言することができます。 +`Query`と`Path`(そしてまだ見たことない他のもの)では、[クエリパラメータと文字列の検証](query-params-str-validations.md)と同じようにメタデータと文字列の検証を宣言することができます。 また、数値のバリデーションを宣言することもできます: diff --git a/docs/ja/docs/tutorial/path-params.md b/docs/ja/docs/tutorial/path-params.md index 5b78eb7b1f..8556b1c375 100644 --- a/docs/ja/docs/tutorial/path-params.md +++ b/docs/ja/docs/tutorial/path-params.md @@ -6,7 +6,7 @@ Pythonのformat文字列と同様のシンタックスで「パスパラメー パスパラメータ `item_id` の値は、引数 `item_id` として関数に渡されます。 -したがって、この例を実行して http://127.0.0.1:8000/items/foo にアクセスすると、次のレスポンスが表示されます。 +したがって、この例を実行して [http://127.0.0.1:8000/items/foo](http://127.0.0.1:8000/items/foo) にアクセスすると、次のレスポンスが表示されます。 ```JSON {"item_id":"foo"} @@ -28,7 +28,7 @@ Pythonのformat文字列と同様のシンタックスで「パスパラメー ## データ変換 { #data-conversion } -この例を実行し、ブラウザで http://127.0.0.1:8000/items/3 を開くと、次のレスポンスが表示されます: +この例を実行し、ブラウザで [http://127.0.0.1:8000/items/3](http://127.0.0.1:8000/items/3) を開くと、次のレスポンスが表示されます: ```JSON {"item_id":3} @@ -44,7 +44,7 @@ Pythonのformat文字列と同様のシンタックスで「パスパラメー ## データバリデーション { #data-validation } -しかしブラウザで http://127.0.0.1:8000/items/foo を開くと、次のHTTPエラーが表示されます: +しかしブラウザで [http://127.0.0.1:8000/items/foo](http://127.0.0.1:8000/items/foo) を開くと、次のHTTPエラーが表示されます: ```JSON { @@ -64,7 +64,7 @@ Pythonのformat文字列と同様のシンタックスで「パスパラメー これは、パスパラメータ `item_id` が `int` ではない値 `"foo"` だからです。 -http://127.0.0.1:8000/items/4.2 で見られるように、`int` のかわりに `float` が与えられた場合にも同様なエラーが表示されます。 +[http://127.0.0.1:8000/items/4.2](http://127.0.0.1:8000/items/4.2) で見られるように、`int` のかわりに `float` が与えられた場合にも同様なエラーが表示されます。 /// check | 確認 @@ -78,7 +78,7 @@ Pythonのformat文字列と同様のシンタックスで「パスパラメー ## ドキュメント { #documentation } -そしてブラウザで http://127.0.0.1:8000/docs を開くと、以下の様な自動的に生成された対話的なAPIドキュメントが表示されます。 +そしてブラウザで [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs) を開くと、以下の様な自動的に生成された対話的なAPIドキュメントが表示されます。 @@ -92,9 +92,9 @@ Pythonのformat文字列と同様のシンタックスで「パスパラメー ## 標準ベースのメリット、ドキュメンテーションの代替物 { #standards-based-benefits-alternative-documentation } -また、生成されたスキーマが OpenAPI 標準に従っているので、互換性のあるツールが多数あります。 +また、生成されたスキーマが [OpenAPI](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.0.md) 標準に従っているので、互換性のあるツールが多数あります。 -このため、**FastAPI**自体が代替のAPIドキュメントを提供します(ReDocを使用)。これは、 http://127.0.0.1:8000/redoc にアクセスすると確認できます。 +このため、**FastAPI**自体が代替のAPIドキュメントを提供します(ReDocを使用)。これは、 [http://127.0.0.1:8000/redoc](http://127.0.0.1:8000/redoc) にアクセスすると確認できます。 @@ -102,7 +102,7 @@ Pythonのformat文字列と同様のシンタックスで「パスパラメー ## Pydantic { #pydantic } -すべてのデータバリデーションは Pydantic によって内部で実行されるため、Pydanticの全てのメリットが得られます。そして、安心して利用することができます。 +すべてのデータバリデーションは [Pydantic](https://docs.pydantic.dev/) によって内部で実行されるため、Pydanticの全てのメリットが得られます。そして、安心して利用することができます。 `str`、 `float` 、 `bool` および他の多くの複雑なデータ型を型宣言に使用できます。 diff --git a/docs/ja/docs/tutorial/query-params-str-validations.md b/docs/ja/docs/tutorial/query-params-str-validations.md index dda4e120bf..d340598019 100644 --- a/docs/ja/docs/tutorial/query-params-str-validations.md +++ b/docs/ja/docs/tutorial/query-params-str-validations.md @@ -35,13 +35,13 @@ FastAPI はバージョン 0.95.0 で `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 } -以前、[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 で使うときです。 🚀 @@ -158,7 +158,7 @@ FastAPI なしで同じ関数を **別の場所** から **呼び出しても** `Annotated` を使わずに **(古い)デフォルト値スタイル** を使う場合、FastAPI なしでその関数を **別の場所** で呼び出すとき、正しく動かすために関数へ引数を渡すことを **覚えておく** 必要があります。そうしないと値が期待と異なります(例えば `str` の代わりに `QueryInfo` か、それに類するものになります)。また、エディターも警告せず、Python もその関数の実行で文句を言いません。内部の処理がエラーになるときに初めて問題が出ます。 -`Annotated` は複数のメタデータアノテーションを持てるので、Typer のような別ツールと同じ関数を使うこともできます。 🚀 +`Annotated` は複数のメタデータアノテーションを持てるので、[Typer](https://typer.tiangolo.com/) のような別ツールと同じ関数を使うこともできます。 🚀 ## バリデーションをさらに追加する { #add-more-validations } @@ -348,7 +348,7 @@ http://127.0.0.1:8000/items/?item-query=foobaritems さて、このパラメータが気に入らなくなったとしましょう。 -それを使っているクライアントがいるので、しばらくは残しておく必要がありますが、ドキュメントにはdeprecatedと明記しておきたいです。 +それを使っているクライアントがいるので、しばらくは残しておく必要がありますが、ドキュメントには廃止予定と明記しておきたいです。 その場合、`Query`にパラメータ`deprecated=True`を渡します: @@ -370,11 +370,11 @@ http://127.0.0.1:8000/items/?item-query=foobaritems その場合、通常のバリデーション(例: 値が `str` であることの検証)の後に適用される **カスタムバリデータ関数** を使えます。 -これを行うには、`Annotated` の中で Pydantic の `AfterValidator` を使います。 +これを行うには、`Annotated` の中で [Pydantic の `AfterValidator`](https://docs.pydantic.dev/latest/concepts/validators/#field-after-validator) を使います。 /// tip | 豆知識 -Pydantic には `BeforeValidator` などもあります。 🤓 +Pydantic には [`BeforeValidator`](https://docs.pydantic.dev/latest/concepts/validators/#field-before-validator) などもあります。 🤓 /// diff --git a/docs/ja/docs/tutorial/request-files.md b/docs/ja/docs/tutorial/request-files.md index 538cf64744..30a494afb0 100644 --- a/docs/ja/docs/tutorial/request-files.md +++ b/docs/ja/docs/tutorial/request-files.md @@ -4,9 +4,9 @@ /// info | 情報 -アップロードされたファイルを受け取るには、まず `python-multipart` をインストールします。 +アップロードされたファイルを受け取るには、まず [`python-multipart`](https://github.com/Kludex/python-multipart) をインストールします。 -[仮想環境](../virtual-environments.md){.internal-link target=_blank}を作成して有効化し、次のようにインストールしてください: +[仮想環境](../virtual-environments.md)を作成して有効化し、次のようにインストールしてください: ```console $ pip install python-multipart @@ -63,8 +63,8 @@ $ pip install python-multipart - 最大サイズまではメモリに保持し、それを超えるとディスクに格納されるファイルです。 - そのため、画像・動画・大きなバイナリなどの大きなファイルでも、メモリを使い果たすことなくうまく動作します。 - アップロードされたファイルからメタデータを取得できます。 -- file-like な `async` インターフェースを持ちます。 -- 実際の Python の `SpooledTemporaryFile` オブジェクトを公開しており、file-like オブジェクトを期待する他のライブラリにそのまま渡せます。 +- [file-like](https://docs.python.org/3/glossary.html#term-file-like-object) な `async` インターフェースを持ちます。 +- 実際の Python の [`SpooledTemporaryFile`](https://docs.python.org/3/library/tempfile.html#tempfile.SpooledTemporaryFile) オブジェクトを公開しており、file-like オブジェクトを期待する他のライブラリにそのまま渡せます。 ### `UploadFile` { #uploadfile } @@ -72,7 +72,7 @@ $ pip install python-multipart - `filename`: アップロード時の元のファイル名を表す `str`(例: `myimage.jpg`) - `content_type`: コンテントタイプ(MIME タイプ / メディアタイプ)を表す `str`(例: `image/jpeg`) -- `file`: `SpooledTemporaryFile`file-like なオブジェクト)。これは実際の 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`)を呼び出します。 @@ -121,7 +121,7 @@ HTML フォーム(`
`)がサーバーにデータを送る方法 ただしフォームにファイルが含まれる場合は、`multipart/form-data` としてエンコードされます。`File` を使うと、**FastAPI** はボディ内の正しい部分からファイルを取得すべきであると認識します。 -これらのエンコーディングやフォームフィールドの詳細は、MDN Web Docs の POST を参照してください。 +これらのエンコーディングやフォームフィールドの詳細は、[MDN Web Docs の `POST`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST) を参照してください。 /// diff --git a/docs/ja/docs/tutorial/request-form-models.md b/docs/ja/docs/tutorial/request-form-models.md index 071867964b..62aa9e2985 100644 --- a/docs/ja/docs/tutorial/request-form-models.md +++ b/docs/ja/docs/tutorial/request-form-models.md @@ -1,12 +1,12 @@ # フォームモデル { #form-models } -FastAPI では、フォームフィールドを宣言するために Pydantic モデルを使用できます。 +FastAPI では、フォームフィールドを宣言するために **Pydantic モデル**を使用できます。 /// info | 情報 -フォームを使うには、まず `python-multipart` をインストールします。 +フォームを使うには、まず [`python-multipart`](https://github.com/Kludex/python-multipart) をインストールします。 -まず [仮想環境](../virtual-environments.md){.internal-link target=_blank} を作成して有効化し、そのうえでインストールしてください。例えば: +まず [仮想環境](../virtual-environments.md) を作成して有効化し、そのうえでインストールしてください。例えば: ```console $ pip install python-multipart diff --git a/docs/ja/docs/tutorial/request-forms-and-files.md b/docs/ja/docs/tutorial/request-forms-and-files.md index 9a4e299e91..651f07ff01 100644 --- a/docs/ja/docs/tutorial/request-forms-and-files.md +++ b/docs/ja/docs/tutorial/request-forms-and-files.md @@ -4,9 +4,9 @@ /// info | 情報 -アップロードされたファイルやフォームデータを受信するには、まず`python-multipart`をインストールします。 +アップロードされたファイルやフォームデータを受信するには、まず[`python-multipart`](https://github.com/Kludex/python-multipart)をインストールします。 -[仮想環境](../virtual-environments.md){.internal-link target=_blank}を作成し、それを有効化してから、例えば次のようにインストールしてください: +[仮想環境](../virtual-environments.md)を作成し、それを有効化してから、例えば次のようにインストールしてください: ```console $ pip install python-multipart diff --git a/docs/ja/docs/tutorial/request-forms.md b/docs/ja/docs/tutorial/request-forms.md index dda2a4bf7f..c6b2a921a6 100644 --- a/docs/ja/docs/tutorial/request-forms.md +++ b/docs/ja/docs/tutorial/request-forms.md @@ -4,9 +4,9 @@ JSONの代わりにフィールドを受け取る場合は、`Form`を使用し /// info | 情報 -フォームを使うためには、まず`python-multipart`をインストールします。 +フォームを使うためには、まず[`python-multipart`](https://github.com/Kludex/python-multipart)をインストールします。 -必ず[仮想環境](../virtual-environments.md){.internal-link target=_blank}を作成して有効化してから、例えば次のようにインストールしてください: +必ず[仮想環境](../virtual-environments.md)を作成して有効化してから、例えば次のようにインストールしてください: ```console $ pip install python-multipart @@ -56,7 +56,7 @@ HTMLフォーム(`
`)がサーバにデータを送信する方 しかし、フォームがファイルを含む場合は、`multipart/form-data`としてエンコードされます。ファイルの扱いについては次の章で説明します。 -これらのエンコーディングやフォームフィールドの詳細については、MDNPOSTのウェブドキュメントを参照してください。 +これらのエンコーディングやフォームフィールドの詳細については、[MDN の `POST` ウェブドキュメント](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST)を参照してください。 /// diff --git a/docs/ja/docs/tutorial/response-model.md b/docs/ja/docs/tutorial/response-model.md index 07dc201233..b4024e0a02 100644 --- a/docs/ja/docs/tutorial/response-model.md +++ b/docs/ja/docs/tutorial/response-model.md @@ -13,6 +13,7 @@ FastAPIはこの戻り値の型を使って以下を行います: * OpenAPIの *path operation* に、レスポンス用の **JSON Schema** を追加します。 * これは**自動ドキュメント**で使用されます。 * 自動クライアントコード生成ツールでも使用されます。 +* 返却データを Pydantic を使ってJSONに**シリアライズ**します。Pydantic は内部が**Rust**で実装されているため、**非常に高速**です。 しかし、最も重要なのは: @@ -73,9 +74,9 @@ FastAPIはこの `response_model` を使って、データのドキュメント /// info | 情報 -`EmailStr` を使用するには、最初に `email-validator` をインストールしてください。 +`EmailStr` を使用するには、最初に [`email-validator`](https://github.com/JoshData/python-email-validator) をインストールしてください。 -[仮想環境](../virtual-environments.md){.internal-link target=_blank}を作成して有効化してから、例えば次のようにインストールしてください: +[仮想環境](../virtual-environments.md)を作成して有効化してから、例えば次のようにインストールしてください: ```console $ pip install email-validator @@ -181,7 +182,7 @@ Pydanticフィールドとして有効ではないものを返し、ツール( ### レスポンスを直接返す { #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] *} @@ -257,7 +258,7 @@ Pydanticフィールドとして有効ではないものを返し、ツール( * `response_model_exclude_defaults=True` * `response_model_exclude_none=True` -`exclude_defaults` と `exclude_none` については、Pydanticのドキュメントで説明されている通りです。 +`exclude_defaults` と `exclude_none` については、[Pydanticのドキュメント](https://docs.pydantic.dev/1.10/usage/exporting_models/#modeldict)で説明されている通りです。 /// diff --git a/docs/ja/docs/tutorial/response-status-code.md b/docs/ja/docs/tutorial/response-status-code.md index d4ac45da65..6150561062 100644 --- a/docs/ja/docs/tutorial/response-status-code.md +++ b/docs/ja/docs/tutorial/response-status-code.md @@ -20,7 +20,7 @@ /// info | 情報 -`status_code`は代わりに、Pythonの`http.HTTPStatus`のように、`IntEnum`を受け取ることもできます。 +`status_code`は代わりに、Pythonの[`http.HTTPStatus`](https://docs.python.org/3/library/http.html#http.HTTPStatus)のように、`IntEnum`を受け取ることもできます。 /// @@ -66,7 +66,7 @@ HTTPでは、レスポンスの一部として3桁の数字のステータスコ /// tip | 豆知識 -それぞれのステータスコードとどのコードが何のためのコードなのかについて詳細はMDN documentation about HTTP status codesを参照してください。 +それぞれのステータスコードとどのコードが何のためのコードなのかについての詳細は、[MDN のHTTPステータスコードに関するドキュメント](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status)を参照してください。 /// @@ -92,7 +92,7 @@ HTTPでは、レスポンスの一部として3桁の数字のステータスコ また、`from starlette import status`を使うこともできます。 -**FastAPI** は、`開発者の利便性を考慮して、fastapi.status`と同じ`starlette.status`を提供しています。しかし、これはStarletteから直接提供されています。 +**FastAPI** は、開発者の利便性を考慮して、fastapi.statusと同じ`starlette.status`を提供しています。しかし、これはStarletteから直接提供されています。 /// diff --git a/docs/ja/docs/tutorial/schema-extra-example.md b/docs/ja/docs/tutorial/schema-extra-example.md index 76a6b0f949..87ee85f402 100644 --- a/docs/ja/docs/tutorial/schema-extra-example.md +++ b/docs/ja/docs/tutorial/schema-extra-example.md @@ -12,7 +12,7 @@ その追加情報は、そのモデルの出力**JSON Schema**にそのまま追加され、APIドキュメントで使用されます。 -Pydanticのドキュメント: Configurationで説明されているように、`dict`を受け取る属性`model_config`を使用できます。 +[Pydanticのドキュメント: Configuration](https://docs.pydantic.dev/latest/api/config/)で説明されているように、`dict`を受け取る属性`model_config`を使用できます。 生成されるJSON Schemaに表示したい追加データ(`examples`を含む)を含む`dict`を使って、`"json_schema_extra"`を設定できます。 @@ -145,12 +145,12 @@ JSON Schemaには`examples`がなかったため、OpenAPIは自身が改変し OpenAPIは、仕様の他の部分にも`example`と`examples`フィールドを追加しました: -* `Parameter Object`(仕様内)。FastAPIの以下で使用されました: +* [`Parameter Object`(仕様内)](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#parameter-object)。FastAPIの以下で使用されました: * `Path()` * `Query()` * `Header()` * `Cookie()` -* `Request Body Object`。仕様内の`Media Type Object`の`content`フィールド(仕様内)。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()` * `File()` * `Form()` @@ -163,7 +163,7 @@ OpenAPIは、仕様の他の部分にも`example`と`examples`フィールドを ### JSON Schemaの`examples`フィールド { #json-schemas-examples-field } -しかしその後、JSON Schemaは新しいバージョンの仕様に`examples`フィールドを追加しました。 +しかしその後、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)に基づくようになりました。 diff --git a/docs/ja/docs/tutorial/security/first-steps.md b/docs/ja/docs/tutorial/security/first-steps.md index 5bf04386a8..e678ebce1c 100644 --- a/docs/ja/docs/tutorial/security/first-steps.md +++ b/docs/ja/docs/tutorial/security/first-steps.md @@ -26,11 +26,11 @@ /// info | 情報 -`python-multipart` パッケージは、`pip install "fastapi[standard]"` コマンドを実行すると **FastAPI** と一緒に自動的にインストールされます。 +[`python-multipart`](https://github.com/Kludex/python-multipart) パッケージは、`pip install "fastapi[standard]"` コマンドを実行すると **FastAPI** と一緒に自動的にインストールされます。 しかし、`pip install fastapi` コマンドを使用する場合、`python-multipart` パッケージはデフォルトでは含まれません。 -手動でインストールするには、[仮想環境](../../virtual-environments.md){.internal-link target=_blank}を作成して有効化し、次のコマンドでインストールしてください: +手動でインストールするには、[仮想環境](../../virtual-environments.md)を作成して有効化し、次のコマンドでインストールしてください: ```console $ pip install python-multipart @@ -45,7 +45,7 @@ $ pip install python-multipart
```console -$ fastapi dev main.py +$ fastapi dev INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) ``` @@ -54,7 +54,7 @@ $ fastapi dev main.py ## 確認 { #check-it } -次のインタラクティブなドキュメントにアクセスしてください: http://127.0.0.1:8000/docs。 +次のインタラクティブなドキュメントにアクセスしてください: [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 を使うことは、[プロキシの背後](../../advanced/behind-a-proxy.md){.internal-link target=_blank}のような高度なユースケースでもアプリケーションを動作させ続けるために重要です。 +相対 URL を使うことは、[プロキシの背後](../../advanced/behind-a-proxy.md)のような高度なユースケースでもアプリケーションを動作させ続けるために重要です。 /// diff --git a/docs/ja/docs/tutorial/security/oauth2-jwt.md b/docs/ja/docs/tutorial/security/oauth2-jwt.md index 0d6be90a24..9c527121ea 100644 --- a/docs/ja/docs/tutorial/security/oauth2-jwt.md +++ b/docs/ja/docs/tutorial/security/oauth2-jwt.md @@ -24,13 +24,13 @@ eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4 1週間後、トークンが期限切れとなるとどうなるでしょうか?ユーザーは認可されず、新しいトークンを得るために再びサインインしなければなりません。また、ユーザー(または第三者)がトークンを修正して有効期限を変更しようとした場合、署名が一致しないため、トークンの修正を検知できます。 -JWT トークンを使って遊んでみたいという方は、https://jwt.io をチェックしてください。 +JWT トークンを使って遊んでみたいという方は、[https://jwt.io](https://jwt.io/) をチェックしてください。 ## `PyJWT` のインストール { #install-pyjwt } PythonでJWTトークンの生成と検証を行うために、`PyJWT`をインストールする必要があります。 -[仮想環境](../../virtual-environments.md){.internal-link target=_blank}を作成し、アクティベートしてから、`pyjwt`をインストールしてください。 +[仮想環境](../../virtual-environments.md)を作成し、アクティベートしてから、`pyjwt`をインストールしてください。
@@ -46,7 +46,7 @@ $ pip install pyjwt RSAやECDSAのようなデジタル署名アルゴリズムを使用する予定がある場合は、cryptographyライブラリの依存関係`pyjwt[crypto]`をインストールしてください。 -詳細はPyJWT Installation docsで確認できます。 +詳細は[PyJWT Installation docs](https://pyjwt.readthedocs.io/en/latest/installation.html)で確認できます。 /// @@ -72,7 +72,7 @@ pwdlib は、パスワードのハッシュを処理するための優れたPyth 推奨されるアルゴリズムは「Argon2」です。 -[仮想環境](../../virtual-environments.md){.internal-link target=_blank}を作成し、アクティベートしてから、Argon2付きでpwdlibをインストールしてください。 +[仮想環境](../../virtual-environments.md)を作成し、アクティベートしてから、Argon2付きでpwdlibをインストールしてください。
@@ -200,7 +200,7 @@ IDの衝突を回避するために、ユーザーのJWTトークンを作成す ## 確認 { #check-it } -サーバーを実行し、ドキュメントに移動します:http://127.0.0.1:8000/docs。 +サーバーを実行し、ドキュメントに移動します:[http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs)。 次のようなユーザーインターフェイスが表示されます: diff --git a/docs/ja/docs/tutorial/security/simple-oauth2.md b/docs/ja/docs/tutorial/security/simple-oauth2.md index c371b0acf6..a47321576c 100644 --- a/docs/ja/docs/tutorial/security/simple-oauth2.md +++ b/docs/ja/docs/tutorial/security/simple-oauth2.md @@ -188,7 +188,7 @@ UserInDB( アクティブなユーザーの場合にのみ `current_user` を取得したいとします。 -そこで、`get_current_user` を依存関係として利用する追加の依存関係 `get_current_active_user` を作成します。 +そこで、`get_current_active_user` を依存関係として利用する追加の依存関係 `get_current_active_user` を作成します。 これら2つの依存関係は、ユーザーが存在しない、または非アクティブである場合に、HTTPエラーを返すだけです。 @@ -216,7 +216,7 @@ HTTP(エラー)ステータスコード 401「UNAUTHORIZED」は、`WWW-Auth ## 動作確認 { #see-it-in-action } -インタラクティブドキュメントを開きます: http://127.0.0.1:8000/docs。 +インタラクティブドキュメントを開きます: [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs)。 ### 認証 { #authenticate } diff --git a/docs/ja/docs/tutorial/sql-databases.md b/docs/ja/docs/tutorial/sql-databases.md index 930e433de4..13c71fdb2a 100644 --- a/docs/ja/docs/tutorial/sql-databases.md +++ b/docs/ja/docs/tutorial/sql-databases.md @@ -2,9 +2,9 @@ FastAPI は SQL(リレーショナル)データベースの使用を必須にはしません。必要であれば、任意のデータベースを使用できます。 -ここでは SQLModel を使った例を見ていきます。 +ここでは [SQLModel](https://sqlmodel.tiangolo.com/) を使った例を見ていきます。 -SQLModel は SQLAlchemy と Pydantic の上に構築されています。FastAPI と同じ作者により、SQL データベースを使う必要がある FastAPI アプリに最適になるように作られています。 +SQLModel は [SQLAlchemy](https://www.sqlalchemy.org/) と Pydantic の上に構築されています。FastAPI と同じ作者により、SQL データベースを使う必要がある FastAPI アプリに最適になるように作られています。 /// tip | 豆知識 @@ -26,15 +26,15 @@ SQLModel は SQLAlchemy をベースにしているため、SQLAlchemy がサポ /// tip | 豆知識 -フロントエンドやその他のツールを含む、FastAPI と PostgreSQL の公式プロジェクトジェネレーターがあります: https://github.com/fastapi/full-stack-fastapi-template +フロントエンドやその他のツールを含む、FastAPI と PostgreSQL の公式プロジェクトジェネレーターがあります: [https://github.com/fastapi/full-stack-fastapi-template](https://github.com/fastapi/full-stack-fastapi-template) /// -これはとてもシンプルで短いチュートリアルです。データベースや SQL、より高度な機能について学びたい場合は、SQLModel のドキュメントをご覧ください。 +これはとてもシンプルで短いチュートリアルです。データベースや SQL、より高度な機能について学びたい場合は、[SQLModel のドキュメント](https://sqlmodel.tiangolo.com/)をご覧ください。 ## `SQLModel` のインストール { #install-sqlmodel } -まずは [仮想環境](../virtual-environments.md){.internal-link target=_blank} を作成・有効化し、`sqlmodel` をインストールします: +まずは [仮想環境](../virtual-environments.md) を作成・有効化し、`sqlmodel` をインストールします:
@@ -65,7 +65,7 @@ $ pip install sqlmodel * `Field(primary_key=True)` は `id` が SQL データベースのプライマリキーであることを SQLModel に伝えます(SQL のプライマリキーについては SQLModel ドキュメントを参照してください)。 - 注: プライマリキーのフィールドには `int | None` を使っています。これは Python コード内で `id=None` のように「`id` なしでオブジェクトを作成」し、保存時にデータベースが生成することを想定するためです。SQLModel はデータベースが `id` を提供することを理解し、スキーマでは「NULL 不可の `INTEGER` 列」を定義します。詳細は SQLModel のプライマリキーに関するドキュメント を参照してください。 + 注: プライマリキーのフィールドには `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 に指示します。これにより、この列でフィルタしてデータを読む場合に検索が高速になります。 @@ -111,7 +111,7 @@ SQLModel の `engine`(内部的には SQLAlchemy の `engine`)は、デー /// tip | 豆知識 -SQLModel は Alembic をラップしたマイグレーションユーティリティを提供予定ですが、現時点では Alembic を直接使えます。 +SQLModel は Alembic をラップしたマイグレーションユーティリティを提供予定ですが、現時点では [Alembic](https://alembic.sqlalchemy.org/en/latest/) を直接使えます。 /// @@ -152,7 +152,7 @@ SQLModel は Alembic をラップしたマイグレーションユーティリ
```console -$ fastapi dev main.py +$ fastapi dev INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) ``` @@ -337,7 +337,7 @@ SQLModel では継承を使って、あらゆるケースでフィールドの
```console -$ fastapi dev main.py +$ fastapi dev INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) ``` @@ -352,6 +352,6 @@ $ fastapi dev main.py ## まとめ { #recap } -SQLModel を使って SQL データベースとやり取りし、データモデルとテーブルモデルでコードを簡潔にできます。 +[SQLModel](https://sqlmodel.tiangolo.com/) を使って SQL データベースとやり取りし、データモデルとテーブルモデルでコードを簡潔にできます。 -さらに多くを学ぶには SQLModel のドキュメントをご覧ください。FastAPI と SQLModel を使うチュートリアル もあります。🚀 +さらに多くを学ぶには SQLModel のドキュメントをご覧ください。[FastAPI と SQLModel を使うチュートリアル](https://sqlmodel.tiangolo.com/tutorial/fastapi/) もあります。🚀 diff --git a/docs/ja/docs/tutorial/static-files.md b/docs/ja/docs/tutorial/static-files.md index 52e28d6b05..81f281c2eb 100644 --- a/docs/ja/docs/tutorial/static-files.md +++ b/docs/ja/docs/tutorial/static-files.md @@ -23,7 +23,7 @@ これは、マウントされたアプリケーションが完全に独立しているため、`APIRouter` とは異なります。メインアプリケーションのOpenAPIとドキュメントには、マウントされたアプリケーションの内容などは含まれません。 -これについて詳しくは、[高度なユーザーガイド](../advanced/index.md){.internal-link target=_blank} をご覧ください。 +これについて詳しくは、[高度なユーザーガイド](../advanced/index.md) をご覧ください。 ## 詳細 { #details } @@ -37,4 +37,4 @@ ## より詳しい情報 { #more-info } -詳細とオプションについては、Starletteの静的ファイルに関するドキュメントを確認してください。 +詳細とオプションについては、[Starletteの静的ファイルに関するドキュメント](https://www.starlette.dev/staticfiles/)を確認してください。 diff --git a/docs/ja/docs/tutorial/testing.md b/docs/ja/docs/tutorial/testing.md index b09f1af723..0277d73b74 100644 --- a/docs/ja/docs/tutorial/testing.md +++ b/docs/ja/docs/tutorial/testing.md @@ -1,18 +1,18 @@ # テスト { #testing } -Starlette のおかげで、**FastAPI** アプリケーションのテストは簡単で楽しいものになっています。 +[Starlette](https://www.starlette.dev/testclient/) のおかげで、**FastAPI** アプリケーションのテストは簡単で楽しいものになっています。 -HTTPX がベースで、さらにその設計は Requests をベースにしているため、とても馴染みがあり直感的です。 +[HTTPX](https://www.python-httpx.org) がベースで、さらにその設計は Requests をベースにしているため、とても馴染みがあり直感的です。 -これを使用すると、**FastAPI** と共に pytest を直接利用できます。 +これを使用すると、**FastAPI** と共に [pytest](https://docs.pytest.org/) を直接利用できます。 ## `TestClient` を使用 { #using-testclient } -/// info | 情報 +/// info -`TestClient` を使用するには、まず `httpx` をインストールします。 +`TestClient` を使用するには、まず [`httpx`](https://www.python-httpx.org) をインストールします。 -[仮想環境](../virtual-environments.md){.internal-link target=_blank} を作成し、それを有効化してから、例えば以下のようにインストールしてください: +[仮想環境](../virtual-environments.md) を作成し、それを有効化してから、例えば以下のようにインストールしてください: ```console $ pip install httpx @@ -32,7 +32,7 @@ $ pip install httpx {* ../../docs_src/app_testing/tutorial001_py310.py hl[2,12,15:18] *} -/// tip | 豆知識 +/// tip テスト関数は `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 } -[Bigger Applications](bigger-applications.md){.internal-link target=_blank} で説明されている、次のようなファイル構成があるとします: +[Bigger Applications](bigger-applications.md) で説明されている、次のようなファイル構成があるとします: ``` . @@ -142,13 +142,13 @@ FastAPIアプリケーションへのリクエストの送信とは別に、テ * *ヘッダー* を渡すには、`headers` パラメータに `dict` を渡します。 * *cookies* の場合、 `cookies` パラメータに `dict` です。 -(`httpx` または `TestClient` を使用して) バックエンドにデータを渡す方法の詳細は、HTTPXのドキュメントを確認してください。 +(`httpx` または `TestClient` を使用して) バックエンドにデータを渡す方法の詳細は、[HTTPXのドキュメント](https://www.python-httpx.org)を確認してください。 -/// info | 情報 +/// info `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` をインストールするだけです。 -[仮想環境](../virtual-environments.md){.internal-link target=_blank} を作成し、それを有効化してから、例えば以下のようにインストールしてください: +[仮想環境](../virtual-environments.md) を作成し、それを有効化してから、例えば以下のようにインストールしてください:
diff --git a/docs/ja/docs/virtual-environments.md b/docs/ja/docs/virtual-environments.md index 94af6ddae2..21b7cd4727 100644 --- a/docs/ja/docs/virtual-environments.md +++ b/docs/ja/docs/virtual-environments.md @@ -21,7 +21,7 @@ Pythonプロジェクトの作業では、**仮想環境**(または類似の /// info | 情報 このページでは、**仮想環境**の使用方法と、そのはたらきについて説明します。 -もし**すべてを管理するツール**(Pythonのインストールも含む)を導入する準備ができているなら、uv をお試しください。 +もし**すべてを管理するツール**(Pythonのインストールも含む)を導入する準備ができているなら、[uv](https://github.com/astral-sh/uv) をお試しください。 /// @@ -83,7 +83,7 @@ $ python -m venv .venv //// tab | `uv` -もし `uv` をインストール済みなら、仮想環境を作成するために `uv` を使うこともできます。 +もし [`uv`](https://github.com/astral-sh/uv) をインストール済みなら、仮想環境を作成するために `uv` を使うこともできます。
@@ -147,7 +147,7 @@ $ .venv\Scripts\Activate.ps1 //// tab | Windows Bash -もしWindowsでBashを使用している場合 (Git Bashなど): +もしWindowsでBashを使用している場合 ([Git Bash](https://gitforwindows.org/)など):
@@ -213,7 +213,7 @@ C:\Users\user\code\awesome-project\.venv\Scripts\python /// tip | 豆知識 -もし `uv` を使用している場合は、 `pip` の代わりに `uv` を使ってインストールを行うため、 `pip` をアップグレードする必要はありません 😎。 +もし [`uv`](https://github.com/astral-sh/uv) を使用している場合は、 `pip` の代わりに `uv` を使ってインストールを行うため、 `pip` をアップグレードする必要はありません 😎。 /// @@ -265,7 +265,7 @@ $ python -m ensurepip --upgrade /// tip | 豆知識 -もし `uv` を使用して仮想環境を作成した場合、すでにこの作業は済んでいるので、この手順をスキップできます 😎。 +もし [`uv`](https://github.com/astral-sh/uv) を使用して仮想環境を作成した場合、すでにこの作業は済んでいるので、この手順をスキップできます 😎。 /// @@ -337,7 +337,7 @@ $ pip install "fastapi[standard]" //// tab | `uv` -もし `uv` を使用できるなら: +もし [`uv`](https://github.com/astral-sh/uv) を使用できるなら:
@@ -369,7 +369,7 @@ $ pip install -r requirements.txt //// tab | `uv` -もし `uv` を使用できるなら: +もし [`uv`](https://github.com/astral-sh/uv) を使用できるなら:
@@ -413,8 +413,8 @@ Hello World 設定例: -* VS Code -* PyCharm +* [VS Code](https://code.visualstudio.com/docs/python/environments#_select-and-activate-an-environment) +* [PyCharm](https://www.jetbrains.com/help/pycharm/creating-virtual-environment.html) /// tip | 豆知識 @@ -452,7 +452,7 @@ $ deactivate ## なぜ仮想環境? { #why-virtual-environments } -FastAPIを使った作業をするには、Python のインストールが必要です。 +FastAPIを使った作業をするには、[Python](https://www.python.org/) のインストールが必要です。 それから、FastAPIや、使用したいその他の**パッケージ**を**インストール**する必要があります。 @@ -561,7 +561,7 @@ $ pip install "fastapi[standard]"
-FastAPIのコードを含む圧縮ファイルが、通常は PyPI からダウンロードされます。 +FastAPIのコードを含む圧縮ファイルが、通常は [PyPI](https://pypi.org/project/fastapi/) からダウンロードされます。 また、FastAPIが依存する他のパッケージも**ダウンロード**されます。 @@ -624,7 +624,7 @@ $ .venv\Scripts\Activate.ps1 //// tab | Windows Bash -あるいは、WindowsでBashを使用している場合 (Git Bashなど): +あるいは、WindowsでBashを使用している場合 ([Git Bash](https://gitforwindows.org/)など):
@@ -636,13 +636,13 @@ $ source .venv/Scripts/activate //// -これによって、いくつかの [環境変数](environment-variables.md){.internal-link target=_blank} が作成・修正され、次に実行されるコマンドで使用できるようになります。 +これによって、いくつかの [環境変数](environment-variables.md) が作成・修正され、次に実行されるコマンドで使用できるようになります。 これらの環境変数のひとつに、 `PATH` 変数があります。 /// 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)、プロジェクトの管理には、多くの**代替手段**があります。 -準備が整い、パッケージの依存関係、仮想環境など**プロジェクト全体の管理**ツールを使いたいと考えたら、uv を試してみることをおすすめします。 +準備が整い、パッケージの依存関係、仮想環境など**プロジェクト全体の管理**ツールを使いたいと考えたら、[uv](https://github.com/astral-sh/uv) を試してみることをおすすめします。 `uv` では以下のような多くのことができます: