はじめに
プレスうううううううううう!! nikkieです
よく触るのはFastAPIなのですが、「Flaskだとどうなんだろう」と気になることが出てきました。
ところがFlaskは全然分かりません(テヘペロ😉
分かるところまで立ち戻ろうと、過去のみんなのPython勉強会の登壇資料を見返しました。
目次
- はじめに
- 目次
- 2022年4月 みんなのPython勉強会#80
- 「Python FlaskによるWebアプリ開発入門 物体検知アプリ&機械学習APIの作り方」を通して伝えたいFlaskのプラクティス
- Flaskは開発が簡単に済むよう色々気を回してくれている!
- 終わりに
2022年4月 みんなのPython勉強会#80
時はおよそ1年前に遡ります。
「Python FlaskによるWebアプリ開発入門 物体検知アプリ&機械学習APIの作り方」を通して伝えたいFlaskのプラクティス
翔泳社さんより2022年1月発売、『Python FlaskによるWebアプリ開発入門』2。
その著者のお一人、taisaさんによる発表です!
「Python FlaskによるWebアプリ開発入門 物体検知アプリ&機械学習APIの作り方」を通して伝えたいFlaskのプラクティス
この資料を見返して思ったのは「Flaskは開発が簡単に済むよう色々気を回してくれていたんだね。でもそれを知らなかった当時の私は初見殺しされてたんだ...」ということです。
私はFlaskを実務で使いこなせるレベルまで理解できていない3ですが、過去チュートリアルから背伸びしてハマった経験は、Flaskが気を回している部分の理解不足だった(わからん殺しされてた)んだなと思いました。
Flaskは開発が簡単に済むよう色々気を回してくれている!
FLASK_APP
4やFLASK_ENV
5などの環境変数の設定- 👉python-dotenvをインストールして
.env
に書こう - flask本体の動きとして、
.env
があればdotenv.load_dotenv
してくれる!
- 👉python-dotenvをインストールして
- 2つのコンテキスト
- application factory8
Flask
インスタンス(変数名はapp
が多い)を返す関数はcreate_app
やmake_app
という名前で定義すると楽ができるFLASK_APP
にモジュールを指定するとその中のcreate_app
やmake_app
をflaskが勝手に実行FLASK_APP=<モジュール名>:create_app
のコロン以降を省略できる- もちろんfactoryの名前を変えてコロン以降を指定してもいい
- config
- 各環境用の
.env
を用意するだけでよいらしい(TODO:検証したい).env.dev
、.env.prd
など
- application factoryの引数に環境を表す文字列を受け取れるようにする9
FLASK_APP=<モジュール名>:create_app("dev")
- 各環境用の
- Blueprint10
- 番外編:flask(ライブラリ)が用意してくれているコマンド
終わりに
過去に聞いたFlask本著者トークを資料を見返して思い出しました。
Flaskは開発が簡単になるよう、色々気を回してくれています!
過去の私はそれに気づかずなかば喧嘩別れとなりましたが、taisaさんのトークやFlask本によって、使いこなせる知識を得られそうです。
また、今回のアウトプットを機にFlaskのドキュメントにインデックスを作り始められたようにも思います。
- アーカイブはなさそうでした。 https://www.youtube.com/@startpythonclub9441/videos にはありません↩
- ソースコードは https://github.com/ml-flaskbook/flaskbook で公開されています↩
- 使用経験的にはDjangoのほうが理解していそうです。PyCon JPスタッフ向けにプロポーザルレビューアプリを作ったりもしたので↩
- https://flask.palletsprojects.com/en/2.3.x/cli/#environment-variables-from-virtualenv↩
-
なんとv2.3.x以降、
FLASK_ENV
は削除されたようです。ref: https://flask.palletsprojects.com/en/2.3.x/changes/#version-2-3-0↩ - https://flask.palletsprojects.com/en/2.3.x/appcontext/↩
- https://flask.palletsprojects.com/en/2.3.x/appcontext/#storing-data↩
- https://flask.palletsprojects.com/en/2.3.x/patterns/appfactories/↩
- 類例 https://flask.palletsprojects.com/en/2.3.x/patterns/appfactories/#using-applications↩
- https://flask.palletsprojects.com/en/2.3.x/blueprints/↩
- 思い出したのは、DjangoCongress JP 2022の「Djangoのアプリはどういう単位で作るべきか?」 ref:イベントレポート | DjangoCongress JP 2022に参加しました! #djangocongress - nikkie-ftnextの日記↩
- https://flask.palletsprojects.com/en/2.3.x/api/#flask.cli.run_command↩