Pythonの中級~上級者に非常におすすめできる良書の「エキスパートPythonプログラミング」を紹介します。
Contents
エキスパートPythonプログラミング
「エキスパートPythonプログラミング」は、Pythonの中級から上級の開発者に向けての書籍です。Pythonの文法を一通り学んだ人が一歩先に進むために非常におすすめできます。
本書では、Pythonのより高度な側面や、より効果的なプログラミング手法といったコーディングのベストプラクティスに焦点を当てており、Pythonコードとしてよいとされるコードの書き方が紹介されている他、コードのデプロイ、管理、ドキュメント作成、テスト駆動開発、最適化手法等々の幅広い内容をカバーしており読みごたえがあります。
本記事執筆時点では第4版まで出ていますが、私は改訂版が出るたびに購入して読んでいます。Python入門者には正直難しい内容だと思いますが、実際の開発現場でPythonを使いたいという人だけでなく、趣味でプログラミングをしている人にもとても面白い内容です。
本記事では、エキスパートPythonプログラミングについて概要を紹介するとともに私の感想などについて紹介してみたいと思います。
目次と概要
「エキスパートPythonプログラミング」のコンテンツとしては以下のような構成となっています。
- 現在のPythonのステータス
- 現代的なPythonの開発環境
- Pythonの新しい要素
- Pythonとほかの言語の比較
- インターフェイス、パターン、モジュール化
- 並行処理
- イベント駆動プログラミング
- メタプログラミングの要素
- PythonとC/C++をつなぐ
- テストと品質保証の自動化
- Pythonパッケージの作成と配布
- アプリケーションの挙動とパフォーマンスの監視
- 最適化
- 付録A 型ヒントの書き方
「エキスパートPythonプログラミング」では、前半でPythonの現状や開発環境、新しい機能(例えば、構造的パターンマッチなど)の紹介がされます。4章の「Pythonとほかの言語との比較」では、Pythonの重要な機能のいくつかを見直しつつ他の言語との比較をして、Pythonのイディオムについて学ぶことができます。
第5章以降では「デザインパターン」「並行処理」「イベント駆動プログラミング」「メタプログラミング」「PythonとC/C++との橋渡し」といった高度な内容について説明があります。
第10章以降は、テスト駆動開発やパッケージ作成・配布、アプリケーション監視や最適化といった高品質なPythonプログラムと保守のために必要なトピックスが扱われています。
Pythonをある程度学んだあとに「パフォーマンスがよく」「安定性があり」「保守しやすい」ソースコードを書きたいと思った時に最適な1冊と言えるでしょう。
後半の章については、より高度な内容が触れられているため、初心者には難しく感じられる内容かもしれません。また、前の章が必ずしも前提の知識となっているわけではないため、上から順にではなく興味がある章をピックアップして読むというのもよいと思います。
「エキスパートPythonプログラミング」のおすすめポイント
Pythonらしくプログラミングする
Pythonには「Pythonらしくシンプルで読みやすくコーディンする」という考え方があります。「Pythonicなプログラムコーディング」という記事にまとめてみたことがありますので興味があれば参考にしてください。
Pythonプログラマは、他の言語(例えばC/C++やJavaなど)の経験が事前にある人も多いと思います。このように他の言語から移ってきたプログラマの場合、多くの場合他の言語でよく知られている方法(イディオム)でコーディングをしてしまいがちです。私も以前はCやJava等を経験していた中でPythonを学んだため、その感覚がよくわかります。
しかし、Pythonと他の言語は特性が異なるため、Pythonに他の言語のイディオムを用いると回りくどくなったり、パフォーマンスが悪化することになります。このことは、本書の第4章冒頭でも触れられています。
本書では、Pythonコミュニティにおける慣行やスタイルガイド等についても準拠して説明がされているため、Pythonらしく記載するということを意識することに非常に役立ちます。
高度な内容に触れることができる
「エキスパートPythonプログラミング」では、構造型パターンマッチや型ヒントなどの比較的最近追加された新しい技術についても学ぶことができます。Pythonは進化していっている言語であるため、最新の情報に触れる意識を持つことができます。
また、Pythonはマルチパラダイム言語であり、関数型プログラミングにも対応しているわけですが、関数型プログラミングに関連する「ラムダ関数」「ジェネレータ」「デコレータ」の実装方法についてもしっかりと説明がされています。私は、Pythonを学び始めたときにはこれらの内容がいまいち分からなかったのですが、本書を読むことで少しずつ理解を深めることができました。
さらに、上級レベルの高度なトピックスである「デザインパターン」「並行処理」「イベント駆動プログラミング」「メタプログラミング」「PythonとC/C++との橋渡し」といった内容についても説明がされているため、読者はより複雑で洗練されたプログラミング手法について学ぶことができます。
テスト駆動開発やアプリケーション監視、最適化といった品質に関わるような章についても、プログラム開発をする際にはとても重要な内容であり、学ぶことにはとても価値があります。
「エキスパートPythonプログラミング」の内容を理解することで初心者から一段階上のステップに進むことができることは確かです。
初心者の人は基礎を学んでからがおすすめ
上記で紹介した通り「エキスパートPythonプログラミング」は、中級~上級者のPythonプログラマにおすすめできる本です。まだ、Pythonの文法や考え方に慣れていない人が読むのは少しハードルが高いかと思います。
Pythonプログラミングをこれから学びたい人には、まずは以下のような書籍で全体的な文法等をしっかりと理解してから、本書を読み始めることがおすすめです。
私は最初、酒井さんのUdemy講座「現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル」でPythonを学びました。そのUdemy講座を書籍化した「シリコンバレー一流プログラマーが教える Pythonプロフェッショナル大全」は非常におすすめできます。
また、より広くプログラマーとしての仕事を把握したい場合、文法だけでなくプログラマーの仕事全体にも触れてくれている「独学プログラマー Pythonの基本から仕事のやり方まで」もおすすめできます。
まとめ
Pythonの中級~上級者に非常におすすめできる「エキスパートPythonプログラミング」について紹介してきました。
本書では、Pythonのより高度な側面や、より効果的なプログラミング手法といったコーディングのベストプラクティスに焦点を当てており、Pythonコードとしてよいとされるコードの書き方が紹介されている他、コードのデプロイ、管理、ドキュメントの作成、テスト駆動開発、最適化手法等々の幅広い内容をカバーしており読みごたえがあります。
入門書を読み終えた後に、Pythonをより深く理解して、Python技術者としてステップアップするためには非常におすすめできる書籍です。私としても折に触れて読み返したいと思っていますし、改訂版が出たらまた購入したいと思う書籍です。
ぜひ皆さんにも読んでみてほしいなと思います。