34
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

この章の目標

推定読了時間: 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

スクリーンショット 2018-12-03 23.50.01.png

シングルページ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フォルダに配置し、上記プログラムを実行して見ましょう。

templates/index.html
<h1>Hello, responder!</h1>
スクリーンショット 2018-12-04 0.33.06.png

最後に

今回は、今最も勢いあるpythonのWebアプリケーションフレームワークであるresponderを、簡単に説明しました。まだまだ多くのことが出来ますので、引き続き是非試して見てください。そしてAI AcademyではWebアプリ開発も学べますので、この機会にFlaskやDjangoも勉強して見てください。

この記事を書いた人

37741205_1003841679788059_2705403151040643072_n.jpg

サイバーブレイン株式会社
代表取締役CEO 谷 一徳

フォローお待ちしております!
Twitter
Facebook

2000名以上が参加しいてるAIコミュニティも運営しております。
毎日AIに関する情報を提供しておりますので、こちらのご参加もお待ちしております!
人工知能研究コミュニティ

その他記事

【保存版・初心者向け】独学でAIエンジニアになりたい人向けのオススメの勉強方法

【保存版・初心者向け】僕が本気でオススメするPythonと機械学習の良書12選

【保存版・初心者向け】Python 目的別チュートリアル

34
29
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
34
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?