カーキ色はヒンディー語らしい

技術記事は https://zenn.dev/notrogue

Expert Python Programming(4版)読んだ

tl;dr

  • Expert Python Programmingの4版が英語だと出ているよ
  • mutation testingとか分散トレーシングとかナウい話が追加されてるよ
  • 一部削除された話もあるよ
    • ドキュメント、良い名前の付け方

Expert Python Programming(エキスパートPython)とは

英語版の説明ページいわく

Complete with best practices, useful tools, and standards implemented by professional Python developers, this fourth edition has been extensively updated. Become familiar with the latest Python improvements, syntax elements, and interesting tools to boost your development efficiency.

日本語版の説明ページいわく

本書は、Pythonを使って仕事をしている開発者が普段どのようなツールやテクニックを用いて仕事をしているのか、また開発者が実際に現場で用いているベストプラクティスについて解説した書籍です。本書を読むことで、先進的なPythonプログラマが日常的に使用している開発ノウハウを学ぶことができます。

要するに、言語そのものだけでなく、プラクティスやツールも紹介してくれるクールな本です。

版の歴史

英語 O'reillyのSafari経由のサブスクリプションで読めます。

  • 2008年に1版
  • 2016年に2版
  • 2019年に3版
  • 2021年に4版

日本語版

なお、私は日本語版の2版を昔読みました。3版は読んでないです(違いの確認は目次とO'reilly safariでの流し読み)。

過去の版との違い

以下の章が増えてる・他の章から独立した章になっています。

  • 「New Things in Python」(3章)
    • 3.8, 3.9で追加された機能の紹介の章です
    • assignment expression とかtype hintingの拡張、新しい標準ライブラリ(zoneinfo, graphlib)
  • Python in Comparison with Other Languages」(4章)
    • 他の言語と比較しつつ、多重継承、プライベート化、duck typingあたりの紹介です
  • 「Interfaces, Patterns, and Modularity」(5章)
    • 抽象クラス(ABC)、Inversion of Controlあたりの紹介です
  • 「Observing Application Behavior and Performance」(12章)
    • ログ、モニタリング(Sentry)、メトリクス(Prometheus)、分散トレーシング(Jaeger)の章です

一方、2版・3版から削除されている章もあります。章を削除した意図は特に書いていない?と思います。

  • 「良い名前を選ぶ」
    • PEP8とか変数名・クラス名の章
  • 「構文ベストプラクティス クラス以外」
  • 「構文ベストプラクティス: クラスの世界」
  • 「コードをデプロイする」
  • 「コードの管理」
    • GitとかCI/CDの章
  • 「プロジェクトのドキュメント作成」
    • 技術文書とかreStrcuturedTextの章
    • (reStrcuturedTextは3版では独立した章に)
  • Pythonのためのデザインパターン

なお、削除された章の一部は、4版では(内容・タイトルが追加・変更の上)別の章に対応する気もしています(明言はされていないです)。

  • 「構文ベストプラクティス: クラスの世界」 -> 「Python in Comparison with Other Languages」
  • Pythonのためのデザインパターン」->「Interfaces, Patterns, and Modularity」
  • 「コードをデプロイする」-> 「Observing Application Behavior and Performance」

その他増えてそうな内容(過去の版で見落としただけかも)

  • Poetry
  • mutation testing
    • コードの方を変更してテストの品質測るやつ
    • mutmutによるテストが紹介されています

(補足)2版と3版の違い

訳者の清水川さんのブログが詳しいです

  • 「イベント駆動形プログラミング」(Event-Driven Programming)の章が追加
  • 「現代的なPython開発環境」・「メタプログラミングの要素」「reStrcturedText入門」の章が他の章から分離

したのが大きな点でしょうか

www.freia.jp