コンサルでデータサイエンティスト

仕事でPythonを書いてます。機械学習、Webマーケティングに興味があります。趣味は旅です。

PythonのおすすめWebフレームワーク flask 入門

初心者向けに、おすすめのPythonのWeb開発フレームワークのひとつである flask の概要と簡単な実装例についてご紹介します。
 
目次

PythonのWebフレームワーク

Web開発というと RubyRuby on RailsPHP の Cake PHPや Laravel などが有名で、Pythonはあまり聞く機会が多くないかもしれません。しかし、PythonにもInstagramなどで使用されているDjangoという強力なWeb開発フレームワークや、Djangoと比べて軽量なフレームワークであるflaskなどがあります。今回の記事ではよりシンプルに実装ができるflaskについてご紹介します。

Django と flask の違い

簡単に Django と flask の用途の違いについて説明します。

Django

  • 多くの機能を備えており、大規模なウェブ開発が可能。
  • 実際のサービスでも多く使われている。

flask

  • 1つのpythonファイルで完結させることができ、スピーディな開発が可能。 
  • 覚えることも少なく、初心者向き。

簡単なデモシングルページアプリケーションを開発するのであれば、flaskのほうが適していると考えられます。

flaskはDjangoほどの人気はないものの、近年の機械学習の流行にともなって、Djangoとともに伸びていくフレームワークであると思います。

 

flask で Webサイトを作る

flaskを使うと、実にさまざまなウェブアプリケーションを開発することができます。今回はそのようなウェブアプリケーションを開発するための型を用意し、今後の開発の土台を作成していきたいと思います。

準備

まずは flask をインストールします。

pip install flask

ファイル構成

適当なディレクトリを作成し、ウェブサイトに必要なファイルを用意していきます。
flaskでは、基本的に以下のようなファイルの置き方に従います。

  • ルートディレクトリ(メインのフォルダ)下にメインのpythonファイルを直接配置します。
  • cssやjsファイルは、staticフォルダの下に配置します。
  • htmlファイルは、templates フォルダの下に配置します。
├ app.py
├ static
│   ├ css
│   │  ∟style.css
│   ├ js
├ templates
     ∟index.html

Python ファイル

pythonプログラムをwebアプリケーションのサーバーとして動かします。
@app.route('/') 以下の index 関数では、ウェブサイトのルートディレクトリにアクセスしたときの挙動について記述します。今回は、index.htmlを表示するように記述しています。

from flask import Flask, request, render_template

app = Flask(__name__)
 
@app.route('/')
def index():
    return render_template('index.html')
 
if __name__ == "__main__":
    app.debug = True
    app.run(host='0.0.0.0', port=8080)

html ファイル

htmlファイルを用意します。cssやjsファイルも、通常と同じように読み込みます。

<html>
    <head>
      <link rel='stylesheet' type='text/css' href='static/css/style.css'>
      <script src="http://code.jquery.com/jquery-latest.js"></script>
    </head>
    <body>
      <div id='header'>
        <h1>デモサイト</h1>
      </div>
      <div id='contents'>
      ここにコンテンツを作成していきましょう!
      </div>
    </body>
</html>

css ファイル

見た目を変更するためのcssファイルも用意します。

#header{
  height: 90px;
  width:100%;
  padding: 20px 20px 0 20px;
  background-color: #007bff;
  color: #fff;
}
 
#contents {
  width: 100%;
  height: 90%;
  padding: 20px 0 0 0;
  display: flex;
}

 

Webサイトを立ち上げる

pythonプログラムを実行する

app.pyが置かれたルートディレクトリへ移動し、pythonスクリプトを実行します。

python app.py

下記のような表示が出ていれば成功です。

 * Running on http://0.0.0.0:8080/ (Press CTRL+C to quit)
 * Restarting with stat

サーバーにアクセスしてwebサイトを確認する

ブラウザを開き、下記のURLにアクセスしましょう。

http://0.0.0.0:8080/

このようにサイトが表示されていれば、flaskでWeb開発を行う土台は完成です。
f:id:hktech:20180911225606p:plain

まとめ

PythonのWeb開発フレームワークであるflaskについて紹介しました。今回はウェブサイトの型だけを作成したので、次回はこの土台を使ってflaskおよびpythonの強みを活かしたウェブアプリケーションを開発していきます。