コンテンツへスキップ

歴史、デザイン、そして未来

少し前に、FastAPIユーザーから質問がありました

このプロジェクトの歴史は何ですか?数週間のうちに何もないところから素晴らしいものになったように見えますが [...]

ここにその歴史の一部をご紹介します。

代替案

私は長年、複雑な要件を持つAPI(機械学習、分散システム、非同期ジョブ、NoSQLデータベースなど)を作成し、いくつかの開発チームを率いてきました。

その一環として、多くの代替案を調査、テスト、使用する必要がありました。

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には素晴らしい未来が待っています。

そして、皆様のご支援に心から感謝いたします。