コンテンツへスキップ

歴史、設計、そして未来

少し前に、FastAPIのユーザーが尋ねました

このプロジェクトの歴史は何ですか?数週間でどこからともなく素晴らしいものになったようですが...。

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

代替案

私は数年間(機械学習、分散システム、非同期ジョブ、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に完全に準拠させ、制約宣言のさまざまな定義方法をサポートし、複数のエディターでのテストに基づいてエディターサポート(型チェック、オートコンプリート)を改善するために、Pydanticに貢献しました。

開発中、もう1つの重要な要件であるStarletteにも貢献しました。

開発

FastAPI自体を作成し始めたときには、ほとんどの要素がすでに整っており、設計は定義され、要件とツールは準備ができており、標準と仕様に関する知識は明確かつ新鮮なものでした。

将来

現時点では、FastAPIとそのアイデアが多くの人々に役立っていることは明らかです。

多くのユースケースに適しているため、以前の代替案よりも選ばれています。

多くの開発者とチームがすでに自分たちのプロジェクトでFastAPIに依存しています(私と私のチームも同様です)。

しかし、まだ多くの改善点と機能が控えています。

FastAPIには素晴らしい未来が待っています。

そして、あなたの協力は大変ありがたいです。