nikkie-ftnextの日記

イベントレポートや読書メモを発信

みんなのPython勉強会#80より Flask本著者によるプラクティス共有トークの思い出し

はじめに

プレスうううううううううう!! nikkieです

よく触るのはFastAPIなのですが、「Flaskだとどうなんだろう」と気になることが出てきました。
ところがFlaskは全然分かりません(テヘペロ😉
分かるところまで立ち戻ろうと、過去のみんなのPython勉強会の登壇資料を見返しました。

目次

2022年4月 みんなのPython勉強会#80

時はおよそ1年前に遡ります。

3本のトークの中にFlaskについてのトークがあります1

Python FlaskによるWebアプリ開発入門 物体検知アプリ&機械学習APIの作り方」を通して伝えたいFlaskのプラクティス

翔泳社さんより2022年1月発売、『Python FlaskによるWebアプリ開発入門』2

その著者のお一人、taisaさんによる発表です!

Python FlaskによるWebアプリ開発入門 物体検知アプリ&機械学習APIの作り方」を通して伝えたいFlaskのプラクティス

この資料を見返して思ったのは「Flaskは開発が簡単に済むよう色々気を回してくれていたんだね。でもそれを知らなかった当時の私は初見殺しされてたんだ...」ということです。
私はFlaskを実務で使いこなせるレベルまで理解できていない3ですが、過去チュートリアルから背伸びしてハマった経験は、Flaskが気を回している部分の理解不足だった(わからん殺しされてた)んだなと思いました。

Flaskは開発が簡単に済むよう色々気を回してくれている!

  • FLASK_APP4FLASK_ENV5などの環境変数の設定
  • 2つのコンテキスト
    • アプリケーションコンテキストにはappFlaskインスタンス)の代わりにcurrent_app6でアクセス
    • リクエストコンテキスト g7
  • application factory8
    • Flaskインスタンス(変数名はappが多い)を返す関数はcreate_appmake_appという名前で定義すると楽ができる
    • FLASK_APPにモジュールを指定するとその中のcreate_appmake_appflaskが勝手に実行
      • FLASK_APP=<モジュール名>:create_appのコロン以降を省略できる
      • もちろんfactoryの名前を変えてコロン以降を指定してもいい
  • config
    • 各環境用の.envを用意するだけでよいらしい(TODO:検証したい)
      • .env.dev.env.prdなど
    • application factoryの引数に環境を表す文字列を受け取れるようにする9
      • FLASK_APP=<モジュール名>:create_app("dev")
  • Blueprint10
    • アプリケーションを分割するための機能
    • 感想:なんだかDjangoっぽいぞ
      • Django:プロジェクトを複数のアプリケーションから構築11
      • Flask:アプリケーションを複数のBlueprintから構築
  • 番外編:flask(ライブラリ)が用意してくれているコマンド
    • flask run12
    • flask routes(Blueprintの設定確認)
    • 感想:flaskの開発元palletsclickも開発しているからな〜

終わりに

過去に聞いたFlask本著者トークを資料を見返して思い出しました。
Flaskは開発が簡単になるよう、色々気を回してくれています!
過去の私はそれに気づかずなかば喧嘩別れとなりましたが、taisaさんのトークやFlask本によって、使いこなせる知識を得られそうです。
また、今回のアウトプットを機にFlaskのドキュメントにインデックスを作り始められたようにも思います。