【Python】Flaskで実装するWebサーバー(API)入門編

PythonのライブラリであるFlaskを用いて、Webサーバー(API)を立ち上げる方法について解説していきます。どなたでも立ち上げられるように解説していきますので、よかったら見ていってください。
解説を始める前に、理解に必要となる知識を挙げておきます。無くても実装することができますが、あればより理解が深まるでしょう。
- プログラミング言語「Python」の知識
環境の構築やソースの実行方法や本当の基礎(printfの使い方) - Webサーバーの知識
クライアントとWebサーバーの関係性
それでは解説していきましょう。
Flaskとは?
FlaskはPython用のWebアプリケーション開発フレームワーク、要するにPythonを使って簡単にWebサーバーやアプリケーションを開発することができるもの(ライブラリ)です。
Python用のWebアプリケーション開発フレームワークには他にもDjangoやTarnadoなど様々なライブラリが存在しますが、このflaskは動作が軽量でシンプルかつ開発に必要最低限の機能を盛り込んでいるため、他のライブラリに比べて複雑さは無く非常に扱いやすいというメリットがあります。そのため、初心者には大変オススメです。
Flaskのインストール
まずは、Flaskのインストールをしましょう。Pythonの環境が整っているという前提で話を進めていきますので、Pythonをインストールしていない方はまずそこから初めてください。(Pythonのインストール&仮想環境の構築については後ほど記事にしようと思います)
FlaskがインストールできるPythonのバージョンは以下の通りです。
- Python 3.3以降(3.2以下はサポート外)
- Python 2.6以降(2.5以下はサポート外)
PythonでFlaskのようなライブラリをインストールするには、pipコマンドを使用します。コマンドの入力画面を開いて以下のコマンドを入力しましょう。
1 |
pip install flask |
Flaskの実行に必要なライブラリと共に、Flaskがインストールされたと思います。(以下は2018年3月時点でのバージョンです)
1 |
Successfully installed Jinja2-2.10 MarkupSafe-1.0 Werkzeug-0.14.1 click-6.7 flask-0.12.2 itsdangerous-0.24 |
これでインストールは完了です。
FlaskでWebサーバーを立ち上げてみよう
まずは以下のソースを記述し、実行してみてください。
このソースを実行すると、以下のように表示され、記載されているURLが有効になります。
1 |
Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) |
試しに、ブラウザで「http://127.0.0.1:5000/hello」にアクセスしてみましょう。「Hello World!」と表示されましたか?
これでWebサーバーを立ち上げることができました。
さて、それぞれのコードはどんな意味を持っているのでしょうか?上から順番に見てみましょう。
1 |
from flask import Flask #Flaskクラスのインポート |
先ほどインストールしたFlaskをインポート(読み込み)し、使用可能にする記述です。この記述がなければFlaskを利用することができません。
1 |
app = Flask(__name__) #appという名前のFlaskクラスのインスタンスを作成 |
こちらはインポートされたFlaskを使って、appというインスタンスを作成しています。要するにWebサーバーに名前をつけていると思ってください。今後appという変数が何度か出てきますが、それらは全てFlask(Webサーバー)のことであると覚えておいてください。
1 2 3 |
@app.route("/hello") #ルーティング(URLの設定) def hello(): #"/hello"のURLで呼び出される関数 return "Hello World!" |
先ほど定義したappというWebサーバーに、”/hello”というURLをルーティングしています。”/hello”にアクセスすると、下にある「def hello()」という関数が実行されます。
ちょっとわかりにくいですね・・・。Webサーバーをただ立ち上げるだけでは、「http://127.0.0.1:5000/」というWebサーバーの場所が定義されるだけで機能は何も持ちません。
例えてみましょう。
貴方は無人島「http://127.0.0.1:5000/(Webサーバー)」を与えられ、自由に発展させていくことができます。無人島は場所を提供しますが、なんの機能も持ちません。
何から作りましょうか・・・、まずは貴方自身が住む家「hello()(関数)」を建てましょう。
家ができました。しかし無人島は広い、場所がわからなければたどり着くことはできません。そこで貴方は無人島の入り口に案内板を作成し、そこに家の場所「/hello」を記しました(ルーティング)。無人島「http://127.0.0.1:5000/」の家「/hello」、つまり「http://127.0.0.1:5000/hello」が家の住所となります。
イメージはつきましたでしょうか?
「/hello」だけでなく、他にも様々なURLをルーティングして機能を追加してみてください。
1 2 |
if __name__ == "__main__": app.run() #Webサーバーを立ち上げる |
「if __name__ == “__main__”:」というのはソースが実行された時必ず以下の処理が実行されるぞという意味です。詳しい内容については以下の記事をご覧ください。
さて、その下の記述を見てみましょう。appはWebサーバーのことですね。
「.run()」、これはWebサーバーの立ち上げを意味しています。つまりどれだけ大量の機能をルーティングしてもこの記述がなければWebサーバー「http://127.0.0.1:5000/」が立ち上がらず、アクセスしても何も起こらないということです。
大変重要な記述ですので、忘れないようにしてください。
実際にソースを書いて実行し、機能追加などしてみましょう。文章を読むより手で動かす方が理解が深まるはずです。
「Flaskで実装するWebサーバー(API)入門編」については以上です。
よろしければ他のノウハウもみていってください。