Python FlaskによるWebアプリ開発入門 物体検知アプリ&機械学習APIの作り方(佐藤 昌基 平田 哲也 寺田 学)|翔泳社の本
  1. ホーム >
  2. 書籍 >
  3. Python FlaskによるWebアプリ開発入門 物体検知アプリ&機械学習APIの作り方

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



監修

形式:
書籍
発売日:
ISBN:
9784798166469
定価:
3,740(本体3,400円+税10%)
仕様:
B5変・480ページ
カテゴリ:
プログラミング・開発
キーワード:
#プログラミング,#開発環境,#開発手法,#Web・アプリ開発
紙の書籍

Webアプリの作り方からAPI化、デプロイメントまで
エンジニアとデータサイエンティストのためのFlask入門

Pythonのフレームワーク「Flask」によるWebアプリ開発の入門書です。
まずは、最小のアプリの作成から始め、問い合わせフォーム、データベースを使ったアプリ、
認証機能と段階的に作成しながら、Flaskによるアプリ開発の基礎を習得します。

その後、画像データ(写真)から物体を判別する物体検知アプリを作成しながら
実践的なアプリの作り方、その機能をWeb API化する方法について解説します。

また、物体検知機能(手書き文字認識をする分析コード)を題材に、
どのように機械学習をアプリに組み込んでいくかについても詳しく解説します。

【本書の主な内容】
●Flaskと開発の基礎
 ◯問い合わせフォーム/DBアプリの作成
 ◯認証機能の作成
 ◯物体検知アプリの作成
●API化/デプロイメント
 ◯物体検知アプリのWeb API化
 ◯Web APIとして外部公開
●機械学習APIの開発
 ◯分析コードから機械学習APIを開発する工程と方法

【主な対象読者】
●Pythonで簡単にWebアプリ開発を始めたいエンジニア
●機械学習に興味のあるWebエンジニア
●Pythonを分析用途でしか使ったことがない人
●自分でもアプリやWeb APIを作りたいデータサイエンティスト

【章構成】
●第0部 イントロダクション
 Flaskの概要と環境構築
●第1部 Flask入門
 最小限のアプリを作る――Flaskの基礎
 データベースを利用したアプリを作る
 認証機能を追加する
●第2部[Flask実践1]物体検知アプリの開発
 アプリの仕様と準備
 画像一覧画面を作る
 サインアップとログインの画面を作る
 画像アップロード画面を作る
 物体検知機能を作る
 検索機能を作る
 カスタムエラー画面を作る
 ユニットテストを作る
●第3部[Flask実践2]物体検知機能のAPI化/デプロイメント
 Web APIの概要
 物体検知APIの仕様
 物体検知APIの実装
 物体検知アプリのデプロイメント
●第4部機械学習APIの開発
 機械学習の概要
 機械学習APIの開発工程と実践

エンジニアとデータサイエンティストのためのFlask入門

本書の主な内容

Flaskと開発の基礎

API化/デプロイメント

機械学習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へ

本書は付属データの提供はございません。

お問い合わせ

内容についてのお問い合わせは、正誤表、追加情報をご確認後に、お送りいただくようお願いいたします。

正誤表、追加情報に掲載されていない書籍内容へのお問い合わせや
その他書籍に関するお問い合わせは、書籍のお問い合わせフォームからお送りください。

利用許諾に関するお問い合わせ

本書の書影(表紙画像)をご利用になりたい場合は書影許諾申請フォームから申請をお願いいたします。
書影(表紙画像)以外のご利用については、こちらからお問い合わせください。

追加情報はありません。

ご購入いただいた書籍の種類を選択してください。

書籍の刷数を選択してください。

刷数は奥付(書籍の最終ページ)に記載されています。

現在表示されている正誤表の対象書籍

書籍の種類:

書籍の刷数:

本書に誤りまたは不十分な記述がありました。下記のとおり訂正し、お詫び申し上げます。

対象の書籍は正誤表がありません。

最終更新日:2023年03月15日
発生刷 ページ数 書籍改訂刷 電子書籍訂正 内容 登録日
1刷 024
下から7行目のコードブロック
3刷
(venv) $ curl -L http://www.gitignore.io/api/python,flask,vscode > .gitignore
(venv) $ curl -L http://www.gitignore.io/api/python,flask,visualstudiocode > .gitignore

※リフローEPUBの場合、図0.15の下にある小見出し「.gitignore」のコード例(1行)が該当箇所になります。
2022.05.26
1刷 047
リスト1.10 下から2行目
2刷
# /name/ichiro?page=ichiro
# /name/ichiro?page=1
2022.02.16
1刷 063
リスト1.20 の(5)
2刷
# 問い合わせ完了エンドポイントへリダイレクトする flash("問い合わせありがとうございました。")
# 問い合わせ完了エンドポイントへリダイレクトする flash("問い合わせ内容はメールにて送信しました。問い合わせありがとうございます。")
2022.02.22
1刷 097
リスト2.7 下から9~8行目
2刷
SQLALCHEMY_DATABASE_URI= f"sqlite:///{Path(__file__).parent.parent / 'local.sqlite'}"
SQLALCHEMY_DATABASE_URI= f"sqlite:///{Path(__file__).parent.parent / 'local.sqlite'}",

末尾に「,」を追加しました。
2022.02.10
1刷 104
リスト2.10 上から8行目
SQLALCHEMY_DATABASE_URI="sqlite:////" +
SQLALCHEMY_DATABASE_URI="sqlite:///" +
2023.03.15
1刷 114
リスト2.14(3)と(5)
(3)from wtforms.validators import DataRequired, Email, length (5)length(max=30, message="30文字以内で入力してください。"),
(3)from wtforms.validators import DataRequired, Email, Length (5)Length(max=30, message="30文字以内で入力してください。"),
2022.10.17
1刷 122
リスト2.18 見出しのカッコ内
2刷
(apps/crud/templates/index.html)
(apps/crud/templates/crud/index.html)

以下も同様に修正します。
・126ページ リスト2.22の見出しのカッコ内を(apps/crud/templates/crud/index.html)に
・128ページ 「ユーザー編集画面にユーザー削除フォームのテンプレートを追加する」1行目を「apps/crud/templates/crud/edit.html」に
・128ページ リスト2.24の見出しのカッコ内を(apps/crud/templates/crud/edit.html)に
2022.03.04
1刷 131
リスト2.26の見出しのカッコ内
2刷
(apps/crud/templates/cutd/index.html)
(apps/crud/templates/crud/index.html)
2022.04.21
1刷 148
ページ上部のコード例
3刷
def create_app(config_key):   app = Flask(__name__)     ...省略...   # login_managerをアプリケーションと連携する   login_manager.init_app(app)  from apps.crud import views as crud_views
def create_app(config_key):   app = Flask(__name__)     ...省略...   # login_managerをアプリケーションと連携する   login_manager.init_app(app)    from apps.crud import views as crud_views

最終行「from apps.crud~」のインデントをその上の行と揃えます。

※リフローEPUBの場合、リスト3.5の最下行が該当箇所になります。
2022.04.04
1刷 176
下から2行目
ここからコピーしてapps/static/style.cssに追加してください。
ここからコピーしてapps/static/css/style.cssに追加してください。
2022.09.16
1刷 177
リスト4.6 見出し
(apps/static/style.css)
(apps/static/css/style.css)
2022.09.16
1刷 202
リスト6.4 2行目
def login()
def login():

末尾に「:(コロン)」をつけました。
2022.10.17
1刷 320
本文3行目
2刷
また、$ export FLASK_APP=development をし忘れると
また、$ export FLASK_ENV=development をし忘れると

※リフローEPUBの場合、「14.3 [実装1]API起動コードの実装」の3つ目の見出し「動作確認」の2つ目の実行例の下にある段落が該当箇所になります。
2022.03.04
1刷 323
「後処理」上から1行目
preprocess.pyでは、学習済みモデルが
postprocess.pyでは、学習済みモデルが

※リフローEPUBの場合、リスト14.8のすぐ上の段落が該当箇所になります
2022.08.17
1刷 326
リスト14.9 下から4行目
2刷
dir_image = str(basedir / "data" / "original" / filename)
dir_image = str(basedir / "data" / "output" /filename)
2022.02.16
1刷 328
最終行
Windowsご利用の方は、ダブルクォーテーションの前にスラッシュを追記してエスケープする必要があります。 上記文章を追加します。
2022.09.16

感想・レビュー

wwb さん

2022-04-15

割と説明が淡々としている印象があり、webの知識はある程度ないと難しそう。 日本語で書かれたFlaskの本は多くないので、貴重な一冊だと思う。