長生村本郷Engineers'Blog

千葉県長生村本郷育ちのエンジニアが書いているブログ

Flask Python3 で 戸田市 tocoちゃんバスあと何分? Webアプリ作成♪

f:id:kenzo0107:20170707233203p:plain

Flask(フラスク) とは

Flask Official Site を参照すると冒頭に以下の文章があります。

Flask is a microframework for Python based on Werkzeug, Jinja 2 and good intentions

Flask は Python の小規模なフレームワークで、 Werkzug や Jinja 2 をベースとしています。

何がいいの?

最小限の構成で簡単な Web アプリケーションが作成できることです。
django, Rails でも簡単に出来なくもないですが、さらに手順は短く容易です。

チュートリアル

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

Flaskを利用する判断基準

  • 大規模なプロジェクトでない。(ファイル構成は自分 or チームで決定する必要がある為)
  • DB を使わない。使うにしても複雑なDB設計でない。
  • 利用するライブラリが Python 製でそのgatewayとして利用したい。

手始めに!

初心者向け記事は多数あるので割愛し
学習がてら Web アプリケーション作ったのでそちらをどうぞ♪

実際動くものとそのソースを見た方がイメージ湧くと思います。

tocoちゃんバス あと何分?

f:id:kenzo0107:20170707232036p:plain

戸田市のローカルバス toco ちゃんバスの停留所を指定しあと何分で来るかをカウントダウンするアプリです。
自分が使うので作ったら割と広まってきて嬉しい限り♪

※ちなみに戸田市役所に確認し非公式ではありますが公開許可をいただいております。  
※戸田市役所ご担当者様より「可能であれば最新の迂回情報なども載せていただけたら〜」という要望も頂きました♪

ソースはこちら♪

Github

ソースを参照頂けるとやってみたことがわかりやすいと思います。

やってみたこと

  • docker で flask ローカル開発環境作成
  • config ファイルからデータ呼び出し (config.py)
  • session 機能
  • Bootstrap 適用
  • superagent.js で非同期通信
  • flickity.js でフリッカブルに

本番動作環境

さくらVPSには CakePHP や SpringBoot のプロジェクトが乗っかっていたりとやりたい放題の環境として所持しています。

開発期間

ほぼほぼ 1週間。仕事の昼休みと日曜大工で 10時間足らずで公開出来ました。
どちらかというと js 側の学習コストが掛かった感じ。

総評

今回作成したユーザ情報を管理しない、
DBを持たないアプリにはうってつけでした。
構成が複雑になりすぎず丁度良かったです。

やはり大きな規模のプロジェクトには django が適しています。

個人的に戸田市役所に電話してWebアプリ公開の許可を頂く、
という承認申請が出来、地域貢献できる喜びが非常に大きかったです。

今後、バージョンアップしたいと思います。

Flask 利用に際して参考になれば何よりです。

以上です。

Flask Web Development: Developing Web Applications With Python

Flask Web Development: Developing Web Applications With Python