歴史、設計、そして未来¶
このプロジェクトの歴史は何ですか?数週間でどこからともなく素晴らしいものになったように見えます [...]
ここにその歴史の一部を少し紹介します。
代替案¶
私は数年間、複雑な要件(機械学習、分散システム、非同期ジョブ、NoSQLデータベースなど)を持つAPIを作成し、複数の開発チームを率いてきました。
その一環として、多くの代替案を調査し、テストし、使用する必要がありました。
FastAPIの歴史は、大部分がその前身の歴史です。
代替案のセクションで述べたように
他者のこれまでの努力がなければ、FastAPIは存在しませんでした。
その作成にインスピレーションを与えた多くのツールが以前に作成されてきました。
私は数年間、新しいフレームワークの作成を避けてきました。まず、FastAPIがカバーするすべての機能を、さまざまなフレームワーク、プラグイン、ツールを使って解決しようとしました。
しかし、ある時点で、これらすべての機能を提供し、以前のツールから最高のアイデアを取り入れ、これまでに利用できなかった言語機能(Python 3.6+の型ヒント)を使用して可能な限り最善の方法で組み合わせる、何かを作成する以外の選択肢はありませんでした。
調査¶
以前のすべての代替案を使用することで、それらすべてから学び、アイデアを取り入れ、私自身と私が一緒に仕事をしてきた開発チームにとって最善の方法でそれらを組み合わせる機会を得ました。
例えば、理想的には標準的なPythonの型ヒントに基づいているべきであることは明らかでした。
また、最善のアプローチは、すでに存在する標準を使用することでした。
そのため、FastAPIをコーディングし始める前に、OpenAPI、JSON Schema、OAuth2などの仕様を数ヶ月かけて研究しました。それらの関係、重複、および違いを理解しました。
設計¶
次に、ユーザーとして(FastAPIを使用する開発者として)持ちたい開発者「API」を設計するために時間を費やしました。
最も人気のあるPythonエディタであるPyCharm、VS Code、Jediベースのエディタでいくつかのアイデアをテストしました。
前回のPython開発者調査によると、これはユーザーの約80%をカバーしています。
これは、FastAPIがPython開発者の80%が使用するエディタで特別にテストされたことを意味します。他のほとんどのエディタも同様に機能する傾向があるため、そのすべての利点は実質的にすべてのエディタで機能するはずです。
そうすることで、コードの重複を可能な限り減らし、どこでも補完、型、エラーチェックなどを行える最善の方法を見つけることができました。
これらすべては、すべての開発者にとって最高の開発体験を提供する方法で行われました。
要件¶
いくつかの代替案をテストした後、その利点のためにPydanticを使用することにしました。
その後、JSON Schemaに完全に準拠させ、制約宣言を定義するさまざまな方法をサポートし、いくつかのエディタでのテストに基づいてエディタサポート(型チェック、自動補完)を改善するために貢献しました。
開発中、もう1つの主要な要件であるStarletteにも貢献しました。
開発¶
FastAPI自体を作成し始めた頃には、ほとんどの部品はすでに配置され、設計は定義され、要件とツールは準備され、標準と仕様に関する知識は明確で新鮮でした。
未来¶
現時点では、FastAPIとそのアイデアが多くの人々に役立っていることはすでに明らかです。
多くのユースケースにより適しているため、以前の代替案よりも選ばれています。
多くの開発者やチームは、プロジェクトにFastAPIをすでに依存しています(私と私のチームを含む)。
しかし、まだ多くの改善点や機能が控えています。
FastAPIには素晴らしい未来が待っています。
そして、皆様のご協力に心から感謝いたします。