この章の目標
推定読了時間: 5分〜15分
- responderとは何かを学ぶ
- responderを使って簡単なWeb APIやWebページを開発する
はじめに
このテキストでは、次の環境で動作させております。
- Mac OS X Sierra(バージョン10.126)
- Jupyter Notebook
- Python3.7
上記以外の開発環境や、Windowsなどの環境の場合、動作しない場合がございますのご了承ください。
何かあればkazu (AI Academy今なら無料)にDMください。
また、今後もこの記事を更新していく予定です。
responderとは
responderとはPythonのWebアプリケーションフレームワークです。
responderの特徴として、非同期処理が簡単に記述できる点と、GraphQL APIが簡単に書ける点などが挙げられます。
また、requestsやpipenvなどの開発者である Kenneth Reitz が開発し、2018年10月に公開して僅か2ヶ月ほどでGithubのStarが2000以上もついており、勢いのある点からも注目です。
pythonのWebアプリケーションフレームワークで人気があるのは、DjangoやFlaskなどが有名ですが、githubのThe Basic Ideaには次のような記載がされています。
The primary concept here is to bring the niceties that are brought forth from both Flask and Falcon and unify them into a single framework, along with some new ideas I have.
記載がある通り、responderは、FlaskとFalconの良さを1つにまとめ、幾つかのアイディアを加えたものがresponderとのことです。
responderのインストール
Macの方はターミナル、Windowsの方はコマンドプロンプトを開いて、次のpipコマンドによりインストールが可能です。
pip install starlette==0.8
pip install responder
Jupyter NotebookやGoogle Colabをご利用の方は、セル内の先頭に!をつけて次のように実行することで、Notebook内でインストールが可能です。
!pip install starlette==0.8
!pip install responder
responderを動かしてみる
次のプログラムを記述し、実行して見てましょう。
import responder
api = responder.API()
@api.route("/hello/{who}")
def say_hello(req, resp, *, who):
params = req.params.get("id", "")
resp.headers["X-Pizza"] = "42"
resp.status_code = 200
resp.media = {
"Hello": who,
"param": params
}
if __name__ == '__main__':
api.run()
実行できましたでしょうか?
次のURLにアクセスして見ましょう。
http://127.0.0.1:5042/hello/aiacademy?id=1
シングルページWeb
シングルページのWebアプリケーションを作る場合は、**api.add_route("/", static=True)**を記述します。
templatesを使うため、jinja2をインストールしておきましょう。
pip install jinja2
import responder
api = responder.API()
@api.route("/")
async def hello(req, resp):
resp.text = api.template('index.html')
if __name__ == '__main__':
# api.run()
api.run(port=8080)
上記pythonプログラムと同じ場所に、下記index.htmlを作成し、staticフォルダに配置し、上記プログラムを実行して見ましょう。
<h1>Hello, responder!</h1>
最後に
今回は、今最も勢いあるpythonのWebアプリケーションフレームワークであるresponderを、簡単に説明しました。まだまだ多くのことが出来ますので、引き続き是非試して見てください。そしてAI AcademyではWebアプリ開発も学べますので、この機会にFlaskやDjangoも勉強して見てください。
この記事を書いた人
サイバーブレイン株式会社
代表取締役CEO 谷 一徳
フォローお待ちしております!
Twitter
Facebook
2000名以上が参加しいてるAIコミュニティも運営しております。
毎日AIに関する情報を提供しておりますので、こちらのご参加もお待ちしております!
人工知能研究コミュニティ
その他記事
【保存版・初心者向け】独学でAIエンジニアになりたい人向けのオススメの勉強方法