こんにちは、データAI部Pythonエンジニアの工藤( id:irisuinwl )です。 今回は弊社Pythonエンジニアである平田さんが著者の一人であるPython FlaskによるWebアプリ開発入門のご紹介をいたします。
私もレビューに関わり献本頂いたので、その魅力をお伝えできればと思います。
目次
- 本の概要
- 内容紹介
- 誰向け?
- ここが嬉しい
- 各部の説明
- 第0部 イントロダクション
- 第1部 Flask入門
- 第2部[Flask実践1]物体検知アプリの開発
- 第3部[Flask実践2]物体検知機能のAPI化/デプロイメント
- 第4部 機械学習APIの開発
本の概要
内容紹介
「Python FlaskによるWebアプリ開発入門」はタイトルの通り、Webアプリケーションを作りながらPythonのAPIフレームワークであるFlaskを学んでいく本です。
Flaskの概要と使い方を紹介した後に実践的にWebアプリケーションを作成していきます。
この本で作るアプリケーションとしては以下になります。
- 認証機能のある簡単な問合せアプリケーション
- 物体検知アプリケーション
- アプリケーション実装
- 機械学習APIの実装
- テスト作成
- 機械学習モデルの検討、データ分析コードを移行したWebアプリケーション
様々な機能のアプリケーションを作ることで実践的なFlaskの使い方を学べる非常に良い本だと感じました。
誰向け?
この本を読む上で向いている読者は以下のように思いました
向いてる人
- Pythonの文法を抑えているが、アプリケーションを作るためのHTTPの知識やインフラの知識が薄く、アプリケーション開発をしてみたい人
- Pythonでモデル開発をしているが、プロトタイピングのためにAPIとWebアプリケーションを作成したいと思っているデータサイエンティスト
向いてない人
- Pythonを全く触ったことのない方
ここが嬉しい
この本を読んで嬉しいポイントを紹介します
- 様々なフレームワークと比較してFlaskを使う利点が紹介されている
- APIのコードだけでなく、APIを動かすインフラ、テスト、機械学習モデル開発といったWebアプリケーション開発に関連する項目を広範に扱っている
- 説明が丁寧
- APIを作る上で必要なHTTPの知識(Cookieやセッションなど)
- 関連するPEPの提示
- 関連するコードのディレクトリ構成が明示されていて分かりやすい
非常に説明が丁寧でアプリケーション開発に関わることをなるべく省略せず解説しているため、Pythonを使ってアプリケーション開発を始めようという人にとって非常に学びの深い本であると感じました。
各部の説明
第0部 イントロダクション
Flaskとは何か、Flaskの利点を説明し、他のPythonのWebフレームワーク(例えば、DjangoやFastAPI)の説明がされます。
Flaskだけでなく、様々なフレームワークを解説しているため、Flaskの特徴が分かりやすく、技術選定に有益だと感じました。
その次に環境構築があります。
環境はWindows、MacOS/Linux について設定され、またエディタ(Visual Studio Code)の設定、Flaskのインストール、 code formatterの設定についても記載されており、初学者にも親切だと思います。
第1部 Flask入門
第1部では、Flaskを使って簡単な問合せフォームを作っていきます。
1章では、Flaskの起動方法やFlaskでWebアプリケーションを作るための記述方法を問い合わせフォームを作りながら学んでいきます。
Flaskを使う上で欠かせないルーティングやアプリケーションコンテキストについて記載されており、これからFlaskを使っていく人にとっては非常にありがたい解説だと感じました。
2章では、問合せフォームを改良するためにユーザー一覧管理画面を作り、3章では認証機能を作っていきます。 FlaskのBlueprintによるアプリケーション分割とSQLAlchemyによるORMapperでのDBのCRUD、flask-loginを学べます。 単純なFlaskの使い方だけでなく、実践を意識したORMapperの使い方が言及されてます。
第2部[Flask実践1]物体検知アプリの開発
第2部ではPytorchを使った物体検知アプリケーションをFlaskで作っていきます。
この部で作るアプリケーションは、画像をアップロードして、物体検知を行い、タグで画像検索ができるようなアプリケーションを作っていきます。
下記の章で本格的な物体検知アプリケーションを作成していきます:
- 第5章 画像一覧画面を作る
- 第6章 サインアップとログインの画面を作る
- 第7章 画像アップロード画面を作る
- 第8章 物体検知機能を作る
- 第9章 検索機能を作る
- 第10章 カスタムエラー画面を作る
- 第11章 ユニットテストを作る
画面仕様の設計、実装、テストまで、本格的なアプリケーションをFlaskで開発する一連の流れを学ぶことができる実践的な部です。
コードの多い章ですが、DBのRelationshipや、pytorchについて、pytestの使い方などがされており、初めて使う人にも親切な解説だと思います。
また、ログイン画面は第1部3章の認証画面を流用しているので、3章を読んでいると理解が深まると感じました。
第3部[Flask実践2]物体検知機能のAPI化/デプロイメント
第2部で作った物体検知アプリケーションの物体検知する部分をAPI化し、Cloud Runにデプロイする部です。
APIとは何なのか、なぜAPIにする必要があるのかから始まり、Dockerとは何か、Cloud Runとは何かを解説し、API化した物体検知APIをCloud Runにデプロイを行います。
実際に作ったアプリケーションをデプロイするプロセスまで解説されており、アプリケーションを作って終わりだけでなく、開発する際に避けて通れないインフラストラクチャについても言及されている非常に面白い部です。
ここで学んだ内容を更に発展させて、以下を考えるとより深く学習できるのではないかと思います:
- Google Kubernetes Engineでデプロイするとしたらどうなるか
- アプリケーションが問題起きた際にどのように監視、ロギング、APMを設定すれば良いか
- デプロイやテストをCI/CDに組み込むにはどうすればよいか
- ユニットテスト以外にコンポーネントテスト、結合テスト、負荷テストなどはどうするか
第4部 機械学習APIの開発
それまでの部とは打って変わって機械学習についてフォーカスした部です。
Jupyter Notebookなどで書いた分析のコードを実際の機械学習アプリケーションにしていく一連の流れを解説します。
平田さんの講演であるHowto Transform Research Oriented Code into Machine Learning APIs w/ Pythonを詳細に解説した内容になります。
機械学習プロジェクトをどのように進めるのか、どうモデルを構築するのかといった根本的な話から始まり、分析コードをリファクタリングし、FlaskのAPIにするところまで書かれています。
機械学習プロジェクトを進めていく上で何が必要か、アプリケーションにする上で何を意識すべきかを実践を通して解説している類書に見られない内容です。
機械学習プロジェクトを始めたい人や、分析コードをプロダクションで動かせるようにしたいデータサイエンティストに向いていると感じました。
おわりに
Python FlaskによるWebアプリ開発入門 について紹介しました。
アプリケーション開発に関わる事項が幅広く、非常に丁寧に解説されており、これからFlaskを用いてアプリケーション開発をしたい人に最適な本だと考えてます。
ClassiではPythonを用いた機械学習アプリケーション開発を行うソフトウェアエンジニアであるPythonエンジニア募集してます。 この記事で記載したようなアプリケーション開発に興味を持った方は、ClassiのPythonエンジニア の応募まで!