イントロ

Python界隈のWebフレームワークといえばDjangoFlaskが有名ですが、興味深いフレームワークを見つけました。

Python界の超有名ライブラリrequestsの作者が作ったWebフレームワーク responderで内部的に利用されており、responderのドキュメントにも Powered by Starlette としっかり明記されています。

Flask同様thinなフレームワークで、公式ドキュメントも充実、ソースも読みやすく手軽に始められるのですが、日本語情報が皆無なのでここで紹介してみます。

特徴

公式ドキュメントから「これは」と思ったものをピックアップしてみます。

Seriously impressive performance.

async/awaitを駆使してハイパフォーマンスということですね。

一番厄介なイベントループ周りの面倒を見てくれるので、カジュアルにasync/awaitを使っていけます。

高パフォーマンスを求めないのであれば、asyncを利用しない選択肢があるのもポイントだと思います。

100% test coverage.

カバレッジがすべてではありませんが、しっかりテストされているというのは利用する側からすると安心感に繋がります。

Zero hard dependencies.

コンパクトであるが故に、他ライブラリへの依存がありません。

もちろん、利便性を高めるためには色々なライブラリが必要になってきますが、何を選択するかは利用者に委ねられています。

Djangoのようなall-in-oneと比べて、どちらを好ましいと感じるかは個人の嗜好によると思いますが、フレームワークによる強い制約を好まない人にはフィットするのではないでしょうか。

余談ですが、開発元のEncodeという企業(?)は、django-rest-frameworkの開発元でもあります。

インストール

依存が無いので何も難しいことはありません。pip/pipenvでインストールしたら、公式ドキュメントのExampleですぐに動かせます。

ただし、StarletteにはWebサーバーが組み込まれていないため、ASGI serverも併せてインストールします。

pipenv install starlette
pipenv install uvicorn

まとめ

Googleで「python starlette」と検索しても、ヒットするのはresponderの記事ばかりなのですが、responderの作者がチョイスしただけあって、Starletteは高品質で安定したWebフレームワークだと思います。

業務用Webアプリケーションのバックエンドとして選定し、ドキュメントとにらめっこしながら活用しているため、そこで得た知見も記事にまとめていければと思います。