'sqr'atch-note

ちりはつもれど ちりぬるを

「Python FlaskによるWebアプリ開発入門」読了

Python FlaskによるWebアプリ開発入門」を読んだ(実装し終えた)ので、簡単にレビューをば。

内容を一言で

  • Flaskを使ってWebアプリケーション開発というテーマで、物体検知アプリの作成、テスト、Web APIの実装、そしてサーバレスアプリケーションとしてのデプロイ方法まで学べる盛り沢山な入門書
  • さらには、機械学習の概念、モデル選定の考え方、選定したモデルのWeb API開発までも学べる
  • Webアプリの開発工程を学べる優れた入門書だと思う

読む前のバックグラウンド

どういう人間が読んでレビューを書いているのか知ってもらうためのバックグラウンドの軽いサマリ。

  • TCP/IPといったネットワーク周り、仮想環境(VMware, KVM)、Azure, AWSとかのインフラレイヤーをやってきた
  • プログラミングは文法を学ぶ程度で、本格的に開発はしたこと無い
  • Flaskの公式チュートリアルはやったことがある

本の内容について

  • 画像から物体を検知するWebアプリを作ろうというテーマで、Flaskを使ってCRUDなWebアプリを作っていく本。CRUD操作は、DBへのデータの読み書き・修正・削除といった基本的な操作を意味する(Create、Read、Update、Deleteの頭文字)。
    • CRUD操作は、O/R Mapper(ORM)を使った実装なので、SQL文を知らなくても大丈夫。
  • 「入門」とタイトルにあるように、説明は平易に書かれている印象。ただし、Pythonの文法については触れられていないので、一通り文法は学習し終えた人向けではあると思う。また、詳細までは踏み込まず、必要最小限の情報を厳選して書いてくれているように思う。ただ、ちょっと淡々と進んでいく授業のような印象も受ける。それは、本書に内容をたくさん盛り込んだから故だとは思う。説明がサラッと書いてあるのに、詰め込まれている内容は多いので、450ページくらいの本になっている。

感想

  • 自分の手を動かしてプログラミングして、実際にアプリが動くのを見るとやっぱり楽しい。
  • Flaskの公式チュートリアル(ブログを作る話)をやったときは、Djangoと明確に違って、Flaskはなるほど軽量Webフレームワークだなという印象だったけど、そうではなくてDjangoが色々と標準で機能が入っているのに対して、Flaskは必要な機能をライブラリとしてインポートして使えるという意味で軽量って言われているのだなと理解した。
  • 入門書が故に、「この機能を作るためにこのライブラリと使います」という書きっぷりで、エンドポイントやDBテーブルの設計に相当する「なぜこうするか?」といった肝心な部分は書かれていないので、自分が独自のアプリをつくとなると悩みポイントになりそうという印象。
    • 料理で言えば、すでに下ごしらえがされている素材があって、あとはレシピに沿って進めるという感じ。なので、そもそもその下ごしらえとか、なぜそういう形で切るのか?っていう部分が抜けている感じ。
  • 同じく入門書なので、CRUD操作をORMで実装するのは仕方ないと思いつつも、ORMを使うのは移植性が高まるなどのようなメリットはありつつも、複雑なSQL文を作ったり、SQL文の実行時間が長かったりして、結局本格的なアプリを作ろうとするとSQL文を直接操作したほうが良いという話らしいので、そこはFlaskのチュートリアルを参考にしたほうが良さそう。

なんで読んだか?

ちょっと蛇足で、なぜぼくがこの本を読もうとしたかを書いておく。

  • Webアプリケーションについて知りたかったから
    • 過去4年ほどOSやTCP/IP、仮想化技術といった低レイヤー周りばかり触ってきたが行き詰まり感を感じて、より低レイヤーの理解を深めるためにも、アプリケーションレイヤーついても知っておいたほうがいいだろうと漠然と思っていた。というのも、結局低レイヤーを触るにあたってもHTTPなどのプロトコルは知っておく必要があるし、それならばWebアプリ開発に触れておいて、Webアプリがどういう仕組で動くのかを理解するのは今後にも有益だと思った。
    • そして、アプリケーションを知るなら、そもそもプログラミング言語の知識をつけねばと思い、2021年にはPython入門を読んで、基本的な文法やPygameDjangoといったライブラリを使ったプログラミングをちょっとだけやった。ただ、この試みは2021年には途中で挫折をしてしまった。
    • 2022年になってFlask本が新しく出るというのを知って、発売後に一度、この本を本屋でパラパラと立ち読みした時には、文章量が少なそうに見えたため、初心者の自分には説明が足りないかもしれないから微妙かなあと思ってはいた。そうは言ってもFlaskの本は少ない上に、初心者の自分が仕組みを知りたいくらいのモチベーションで、玉石混交な情報があふれるWebでそれらの中から何が正しい情報かを取捨選択するのは難しく、調べながらやるには相当な根気が必要なので、途中で諦めるのは必至と思うし(2021年の二の舞いになるのは容易に想像がつく)、本だと著者と編集者のチェックが入って、体系立って整理されているし、内容もある程度の正確性も担保されているので、そういった意味では貴重だろうなと思って、購入を決めた。
    • ただ、Flaskは公式ガイドが有志によって日本語に翻訳されており、公式情報にアクセスしやすいと思うが、どちらかというと困ったときに参照する情報だと思うので、初学者向けの情報としては、結構細かい枝葉まで含まれており、難しいかなと思った。
  • 自分用のWebアプリが作りたかったから
    • 世の中には非常に優れたWebアプリはたくさんあって、探せば自分がほしいと思うようなアプリは見つかるとは思うが、ローカル環境で完結しつつ、細々とした処理をやるツールを作りたいと思っていた。ただし、これはわざわざWebアプリにするのではなく、CLIでやればいいレベルの話かもしれないとも薄々は感じている。

参考情報