「VTuberサプーが教える! Python 初心者のコード/プロのコード」書籍レビュー
YouTubeで下記の動画が流れてきて
※独学クソリーマンの逆襲さんの動画、サムネ無断転載ごめんなさい
気になったので「VTuberサプーが教える! Python 初心者のコード/プロのコード」というサプーさんの本を読んで見ました。
骨太本は完読できてない日々を過ごしていますが、
逆にこういう表紙の本で良い本だった経験も少ない中、今回は結構な骨太本で良い本だったので記事を書いてみました。
本の概要
VTuberサプーさんがPythonのコードの書き方について初心者からプロレベルまでの知識とテクニックを解説するというコンセプトの本です。
コードの見た目の整え方から、読みやすさ、シンプルさ、安全性などを意識した「プロ」の視点でのコーディング手法がまとめられています。
予想外の骨太さ
正直に言うと表紙を見たときは「YouTuberの本か…」と思ってしまいました(ごめんなさい)。
ただ、見た目に反して結構な骨太本でした。
パラパラ読み流せる本じゃなくて、じっくり腰を据えて読むべき本でした。
半日くらいで読めるかなーと思ったら完全に騙され三連休の半分くらい溶けました…
本の構成は8章立てで、Pythonコーディングの基本から高度なテクニックまでカバーするコンセプトです。
- コードの質の重要性
- コードの見た目の整え方
- 読みやすいコードへの改善テクニック
- Python便利機能の活用
- 安全性の高いコードの書き方
- クラスとオブジェクト指向プログラミング
- テストコードの作成
- エラー解決のテクニック
個人的に刺さったポイント
正直10年くらいPythonで個人開発をしているので全く知らなかったという内容はなかったですが、もっと早くに出会えていれば、試行錯誤とか骨太本に手を出す時間とか短縮できたかもなーという感じでタイパ良い骨太本でした。
特に刺さったのは以下の2点です。
イミュータブルなオブジェクトの扱い
第5章の「5-2 ミュータブル/イミュータブルの違いに要注意」はPythonでのオブジェクトの変更可能性の違いが引き起こす問題について。
これにハマってバグ取りに時間を溶かした時間は、この本を読んだ時間より長そう…
特にJupyter Notebookで事故る率が高い気が…
# mutableオブジェクトなの忘れてる実装
def func(L=[]):
return L
X = func()
X.append(1)
Y = func()
print(Y) #=>[1] お前マジ何処から来たんだよ…😭
# とりあえずデフォルト引数で配列・辞書・集合は避けよう
def func(L=None):
if L is None:
L = []
return L
X = func()
X.append(1)
Y = func()
print(Y) #=>[] 若干めんどい、copy.deepcopy()を何も考えずやっちゃいそう
テストのフィクスチャ、自作関数をモックに置き換える
第7章の「7-2-2 fixtureを使って事前処理・事後処理を追加」もっと早く知りたかった…!
「7-2-3 自作関数をモックに置き換える」、普段はKaggleとかの機械学習なNotebookとか外部APIを叩く系のコードが多いのでテストコード書いてなかったけどモック関数が手軽に書けるなら書いても良いかなと思いました(本当に書くかは…)。
もう少し掘り下げて欲しかった
クラス定義すべき?
前書きとかでも触れてたような気がする、どこからクラス定義にするかは正解ないけど…なところ、もう少し掘り下げて欲しかった。
クラス定義の例が動物なのもレガシー感が若干ありました。
生成AIの活用関連
第8章「エラー解決のテクニック」でChatGPTとかチラッと出てきたけど、個人的に最近はClaude 3.5 Sonetにエラーメッセージとソースコードを突っ込めば概ね解決するし、リファクタも結構できてるので、もう少し触れてほしかった。
ただ自分が初学者の頃に生成AIあったら絶対生成AIガチャやり続けて何も身に付かなかった自信があるし、バランス難しそう。
まとめ
予想外の良書です。プロというよりは脱・初心者で中級者へって感じでしょうか。
あと個人開発で適当コードは書いてたけど今後仕事で使う方の第一歩にはなるかも。
「もっと早くこの本に出会いたかった」というのが正直な感想です。
Pythonのこと体系的に学びたいけど骨太本はなーっていう人は先にこれ読んでから骨太本を読むのが良いと思います。