Python FlaskによるWebアプリ開発入門 物体検知アプリ&機械学習APIの作り方

書籍情報

発売日 : 2022年01月24日

著者/編集 : 佐藤 昌基/平田 哲也/寺田 学

出版社 : 翔泳社

発行形態 : 単行本

書籍説明

内容紹介

本書は、Pythonのフレームワーク「Flask」によるWebアプリ開発の入門書です。最小のアプリの作成から始め、問い合わせフォーム、データベースを使ったアプリ、認証機能と段階的に作成しながら、Flaskによるアプリ開発の基礎を習得します。その後、画像データ(写真)から物体を判別する物体検知アプリを作成しながら実践的なアプリの作り方、その機能をWeb API化する方法について解説します。また、物体検知機能(手書き文字認識をする分析コード)を題材に、どのように機械学習をアプリに組ん込んでいくかについても詳しく解説します。

目次

■第0部 イントロダクション

第0章 Flaskの概要と環境構築
0.1 Flaskの設計思想
0.2 なぜFlaskを使うのか
0.3 Python製Webフレームワークの比較
0.4 環境構築

■第1部 Flask入門

第1章 最小限のアプリを作る——Flask基礎の基礎
1.1 MVT(Model、View、Template)モデル
1.2 最小限のアプリを作成する
1.3 問い合わせフォームを作成する
1.4 クッキー(Cookie)
1.5 セッション
1.6 レスポンス

第2章 データベースを利用したアプリを作る
2.1 ディレクトリ構成
2.2 アプリを起動する―Blueprintの利用
2.3 SQLAlchemyをセットアップする
2,4 データベースを操作する
2.5 データベースを使ったCRUDアプリを作成する
2.6 テンプレートの共通化と継承
2.7 コンフィグを設定する

第3章 認証機能を作る
3.1 作成する認証機能とディレクトリ構成
3.2 アプリに認証機能を登録する
3.3 サインアップ機能を作成する
3.4 ログイン機能を作成する
3.5 ログアウト機能を作成する

■第2部 Flask実践(1) 物体検知アプリの開発

第4章 アプリの仕様と準備
4.1 物体検知アプリの仕様
4.2 ディレクトリ構成
4.3 物体検知アプリを登録する

第5章 画像一覧画面を作る
5.1 UserImageモデルを作成する
5.2 画像一覧画面のエンドポイントを作成する
5.3 画像一覧画面のテンプレートを作成する
5.4 SQLAlchemyのテーブル結合とリレーションシップ

第6章 サインアップとログインの画面を作る
6.1 サインアップ画面のエンドポイントを更新する
6.2 共通ヘッダを作成する
6.3 サインアップ画面のテンプレートを更新する
6.4 ログイン画面のエンドポイントを更新する
6.5 ログイン画面のテンプレートを更新する
6.6 サインアップ/ログイン画面の動作を確認する

第7章 画像アップロード画面を作る
7.1 画像アップロード先を指定する
7.2 画像を表示するエンドポイントを作成する
7.3 画像一覧画面に画像アップロード画面への導線と画像一覧を追加する
7.4 画像アップロード画面のフォームクラスを作成する
7.5 画像アップロード画面のエンドポイントを作成する
7.6 画像アップロード画面のテンプレートを作成する
7.7 画像アップロード画面の動作を確認する

第8章 物体検知機能を作る
8.1 UserImageTagsモデルを作成する
8.2 物体検知機能のフォームクラスを作成する
8.3 物体検知機能のライブラリをセットアップする
8.4 物体検知機能のエンドポイントを作成する
8.5 画像一覧画面にタグ情報を表示する
8.6 画像一覧画面に[検知]ボタンとタグ情報を表示する
8.7 物体検知機能の動作を確認する
8.8 画像削除機能を作成する

第9章 検索機能を作る
9.1 画像検索機能のエンドポイントを作成する
9.2 画像検索機能のテンプレートを作成する
9.3 画像検索機能の動作を確認する

第10章 カスタムエラー画面を作る
10.1 カスタムエラー画面のエンドポイントを作成する
10.2 カスタムエラー画面のテンプレートを作成する
10.3 カスタムエラー画面の表示を確認する

第11章 ユニットテストを作る
11.1 pytestを使ってみる―pytestの基礎
11.2 pytestのフィクスチャ
11.3 物体検知アプリのテストを作成する

■第3部 Flask実践(2)物体検知機能のAPI化/デプロイメント

第12章 Web APIの概要
12.1 World Wide Web(WWW)とAPIの意味
12.2 リソースの場所を示すURIの役割
12.3 HTTPメソッドによるリソースのCRUD操作

第13章 物体検知APIの仕様
13.1 物体検知APIの処理の流れ
13.2 PyTorchのインストールと学習済みモデルの保存

第14章 物体検知APIの実装
14.1 物体検知APIのディレクトリ構成とモジュール
14.2 実装の準備
14.3 [実装1]API起動コードの実装
14.4 [実装2]データの準備/前処理/後処理コードの実装
14.5 [実装3]学習済みモデルの実行コードの実装
14.6 [実装4]ルーティングの実装

第15章 物体検知アプリのデプロイメント
15.1 Dockerの概要
15.2 Cloud Runの概要
15.3 Dockerの利用準備
15.4 Cloud Runの利用準備
15.5 [手順1]Google Cloudのconfiguraionの初期設定
15.6 [手順2]Dockerfileの作成
15.7 [手順3]Dockerイメージをビルド
15.8 [手順4]DockerイメージをGCRにプッシュ
15.9 [手順5]Cloud Runにデプロイ

■第4部 機械学習APIの開発

第16章 機械学習の概要
16.1 機械学習にまつわる概念
16.2 機械学習で扱うデータ
16.3 機械学習が扱うタスク
16.4 数式とコードによるアルゴリズムの表現方法
16.5 機械学習で利用するPythonライブラリ
16.6 Pythonライブラリによるロジスティック回帰の表現方法

第17章 機械学習APIの開発工程と実践
17.1 最適な機械学習アルゴリズム/モデルの選定
17.2 機械学習アルゴリズム/モデルの実装
17.3 機械学習APIの仕様
17.4 開発の準備
17.5 [実装工程1]分析コードをプロダクションコードにする
17.6 [実装工程2]プロダクションコードをAPIにする
17.7 正常動作の挙動確認
17.8 [Future Work]機械学習APIから機械学習基盤とMLOpsへ

著者情報

佐藤 昌基
佐藤, 昌基
平田 哲也
平田, 哲也, pub. 2022
寺田 学
寺田, 学