下町エンジニアの雑多ブログ

東京の端っこでITエンジニアやってます。テックブログを中心に書いていきたいと思います

Flask入門~公式ドキュメントを読み解く~ Day 1 ~

f:id:usktkt:20181019225022p:plain

前回の内容

前回の記事では、Flaskの特徴の説明、なぜFlaskを使うのか、環境のセットアップについて書きました。

今回は、前回構築したUbuntu上にPythonとFlaskをインストールし、最初のFlaskアプリケーションを作りたいと思います。

PythonとFlaskのインストール

公式サイトでは、venvでPythonをインストールしていますが、今回は便利なAnacondaディストリビューションを使用します。

Anacondaがどういったものなのかはこちらを参照してください。

まずはUbuntuに以下のコマンドを入力し、pyenvを使えるようにします。(何をやっているか分からない方は、とりあえずおまじないだと思って入力してもらって大丈夫です。)

git clone https://github.com/yyuu/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
source ~/.bashrc

これでpyenvが使えるようになるので、次にAnacondaをインストールします。 以下のコマンドを入力すると、使えるAnacondaのバージョン一覧が表示されます。

今回は表示された中で最新である、Anaconda3-5.3.0をインストールしますが、 実行したタイミングで最新のものをインストールすれば良いかと思います。

pyenv install -l | grep anaconda3
pyenv install anaconda3-5.3.0

Anacondaのインストールにはかなり時間がかかるので、ここで一息つきながら完了を待ちます。

完了後に以下のコマンドで、Anacondaのバージョンが表示されれば、インストール成功です。念の為、globalコマンドも入力しておきます。これにより、デフォルトのAnacodaのバージョンが5.3.0になります。

pyenv versions
pyenv global anaconda3-5.3.0

Anacondaのインストールに成功すると、以下のコマンドでAnacondaに同梱されているパッケージを確認することができます。なんと、AnacondaにはFlaskが元々含まれているので、旧バージョンのFlaskを使いたい等の理由が無ければ改めてインストールする必要はありません。

conda list

これでやっと環境の完成になります。

それでは、あらゆる言語のはじめの一歩であるHello worldを表示するWebアプリケーションを作っていきましょう。

初めてのFlaskアプリケーション

まずコードの全体を示します。

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

たったこれだけで、Webアプリケーションの完成です。これをhello.pyなどの名前で保存してください。

上から解説していきます。

1行目ではFlaskモジュールのインポートを行っています。

2行目でFlaskクラスのインスタンスを生成しています。引数の__name__には現在実行中のモジュールの完全修飾名が格納されます。ただし、実行時のトップレベルのモジュールの場合は"__main__"という文字列が格納されます。ここではhello.pyから実行するため、__name__には__main__が入ることになります。なぜここで__name__が必要かというと、後々出てくるtemplates(htmlを格納)やstatic(CSSやJSを格納)の位置をFlaskに知らせるためです。

4行目の@app.route('/')は、URLが'/'のリクエストを受けた場合にその下のhello_world()メソッドを実行させます。 hello_world()は、'Hello, World'という文字列を返すだけのメソッドです。

では、このアプリケーションを実行し、ブラウザで表示させてみましょう。

export FLASK_APP=hello.py
flask run --host=0.0.0.0

1行目で、実行するファイルを指定しています。

2行目でビルトインサーバが立ち上がり、hello.pyが実行された状態になります。 *1

この状態で、ホストOSのブラウザから、http://192.168.33.10:5000/ *2にアクセスしてみてください。Hello, World!と表示されれば成功です。

まとめ

今回はVagrantUbuntu上にAnacondaをインストールし、最初のFlaskアプリケーションを作成しました。

次回からいよいよ公式サイトのチュートリアルに入っていきます。

*1:--host=0.0.0.0を指定しているのは、外部(ホストOS)から接続するためです。Vagrantを使用せず、ローカルに環境を構築している方は、flask run だけでアクセスできます。

*2:Vagrantのセットアップの際にIPアドレスを変更した場合、ご自身の環境に合わせて変更してください。