この先 Python を使ってがっつりコードを書くことになりそうで、おすすめされたので読んでみた。自分は他の言語の知識を流用しながら、Pythonのことはあまりしっかり学ばずに雰囲気で書いているエンジニア。
Effective Python 第2版 Pythonプログラムを改良する90項目目次
- 1章 Pythonic思考
- 2章 リストと辞書
- 3章 関数
- 4章 内包表記とジェネレータ
- 5章 クラスと継承
- 6章 メタクラスと属性
- 7章 並行性と並列性
- 8章 頑健性と性能
- 9章 テストとデバッグ
- 10章 協働作業(コラボレーション)
感想
Pythonらしいシンプルで読みやすいコード(=Pythonicなコード)を書くための90のTipsが紹介されている。Pythonのバージョンは3.8までをサポート
それぞれのTipsでは、まずは愚直に実装したサンプルコードが紹介されている。その上でサンプルコードの問題点を指摘した後に、Pythonが提供する文法や言語機能、標準ライブラリを用いてPythonicなコードにリファクタリングしていくような構成で開設が進んでいく。
これまで、「雰囲気」でPythonコードを書いていた自分にとっては、「こんな文法もあるのか、知らなかった」「確かにこういう書き方した方がシンプルで読みやすいね」と学びになる内容が多かった。これからPythonのコードを実装する時には、これまでよりもPythonicなコードが書けるようになりそう。
メタプログラミングに関する内容の解説にそれなりの分量が割かれているので、そのあたりにあまり興味がない、必要としていない人とにっては退屈に感じる内容もあるかもしれない。ただ、本書の構成としては「90のTips集」なので、自分の興味がある部分や必要に迫られた部分のみをピックアップする辞書的な読み方もできるので、Pythonのコードを書く人ならどんな人でも一度は読んでみるといいと思う。
「シンプルで読みやすいコードを書く」というのは、これまで長らく言われてきたことではあるけど、当たり前のようで意識しないと難しい。意識していても言語が提供する文法や機能、標準ライブラリの知識がないと、本当はもっとシンプルに読みやすく書けるのに、その改善の余地に気づけないということもある。
昨今は AI・LLM を使ったVibe Codingと呼ばれる開発スタイルがどんどん盛り上がってきている。そういう環境下では、人間だけでなくLLMにとっても、シンプルで読みやすく、どういう状況で何を実現しようとしているのかが伝わりやすいコードを書くことが大切。
以下の記事のように、Vibe Coding においては、少ないトークン数で多くのコンテキストが伝わる「トークン効率が高い」コードを書くこと、そしてそれができる言語を選ぶことの重要性を主張する人がいたりもする。
Ruby’s Unexpected Comeback: How AI Coding Tools Give Ruby an Edge
近い将来LLMが扱えるコンテキストの量がどんどん増えていくことで、トークン効率なんて気にしなくても良くなるかもしれない。少なくとも現状はある程度コンテキストの節約を意識しないと、LLMが意図しないコードを書いてくるリスクがある。
そんな中、言語が持っている機能について知らないことが要因となって、本来もっとシンプルに読みやすく書けるロジックを、とても冗長に書いてしまうのはもったいない。
Python に限らず、他の言語でも「Effective」シリーズはあるようなので、がっつり別の言語を扱おうとするときは、あらかじめ読んでおき、どの言語でもその言語の特性を活かしたシンプルで読みやすいコードを描けるようになりたいなと思った。