書籍はこちら。
元々WEB+DB PRESS plus で連載されていた内容をまとめた本。連載期間は2020年6月〜2023年8月のものだったらしいけど、書籍化にあたって加筆されているらしい。
初版の発行は2024年9月と最近である。
この本を読もうと思った経緯
仕事で少しだけPythonを使うことになったから。作るものは簡単なツールだったんだけど、それにあたって環境周りやらLinter、Formatterとかは最近は何を使うといんだろう?っていうのをキャッチアップしたかった。
こればっかりはとっかかりがないことにはドキュメントを見に行くこともできないので、いい感じにまとめられてる情報を求めた結果辿り着いたのがきっかけ。
自分はWebのエンジニアなので、ついでに「PythonでWebアプリ作るなら何がいいんだろう?」っていうのもキャッチできそうなこの本を選んだ。
Pythonというかコード自体はずっと競プロをPythonでやってるから、実装とかの段階に入れば手は全然動く感じ。
逆にそこから入門したいよって人はこの本が最初の一歩だと少ししんどいかも。
読んでみた感想
目的を十分すぎるくらいに達成することができた。本の構成的に環境作るところから実際にREST APIでHTTPを喋るアプリを作るところまでもチュートリアル付きであるので、ハンズオンまでしたい人にはぴったりだと思う。
紹介されていたライブラリなどを適当に挙げていく
DjangoとかFast APIとかFlaskみたいなPythonあんま触ったことなくても知ってるようなものは除く。*1この書籍でWeb作るならってところでは、DjangoとFastAPIが紹介されてた。*2
要は以下で紹介してるのは自分の主観で挙げてるだけなので、「あれがない!」「これも知らんのか」ではなく、いいものを優しく教えてほしい。
ライブラリの詳細とか使い方が気になる人は是非本を買って読んでみることをおすすめする。
Poetry
パッケージマネージャー。自分のように「pip
があるのでは?」という方もいるかもだけど、pip
だとnpm
でいうところの--save-dev
みたいに開発用とかでうまく依存が切り分けるのに一手間かかるので、その辺を楽にするためにこのライブラリが存在するらしい。
black
フォーマッター。読み落としてるかもなんだけどこれ以外には出てこなかったので、もし他の選択肢があれば是非教えてほしい。
mypy
linter。他にもMicrosoft製のpyright
やMeta製のpyre-check
なるものがあるらしい。違いとかはまだ見れてないので、この辺も製品ごとにトレードオフとかあれば是非教えてほしい。
tox
lint, format, unit testのコマンドとかを一律で管理してくれるツール。
ドキュメントには、
automate and standardize testing in Python
とあるんだけど書籍ではlintとか込みで紹介されてた。
sentry-python
監視ツール。アプリケーションのエラー監視やパフォーマンス監視を行うためのプラットフォームである Sentry を Python で利用できるようになる。
struct-log
ロガー。文字通り構造化ログを出すためのライブラリ。
towncrier
CHANGELOG
をいい感じに楽に生成するためのツール。
Strawberry
GraphQLを使うためのライブラリ。GraphQLサーバーは作ったことがないけど、他にも競合ライブラリはあるのかな?引き出しとして知っておきたいので、これも教えてほしい。
uvicorn
開発用のWebサーバー。あくまで開発用なので本番はGunicornなるものを使えと公式が言っている。*3
sqlalchemy
ORM。ググってみると、FastAPIと使うならコレっていうのが多いっぽい(?)
Djangoは最初からORMがいるらしいので、使わない(剥がさない)限りは特に考えなくてもいいっぽい。
pytest-cov
カバレッジ測定ツール。
factory-boy
テストデータをいい感じに生成してくれるツール。
freezegun
テストコードで時刻をモックするためのライブラリ。
おわり
「PythonでWeb作って!!」って突然言われたとしてもとりあえず動かしてリリースする分には困らない程度に必要なものが揃ってる気はする。
…と思ったけどDIしたいってなった時に困るなと思って調べたら、こういうのがあるらしい。
このくらい選択肢が揃えば、あとはドキュメント見たりでどうとでもできるので非常にありがたい書籍だった。