Pythonについて「これから学習を始めようと思っている人」「既に勉強している人」へ個人的におすすめの本を紹介します。
Python入門におすすめな本
Pythonを学習におすすめな本について「Python入門におすすめな本」「Python応用におすすめな本」「Pythonによるデータ分析におすすめな本」に分けて紹介します。また、Pythonの他にも参考になる「その他おすすめな本」についても紹介しています。
各書籍の特徴やどういった人におすすめかについて私の意見を交えて紹介していきますので、Pythonを勉強する際の参考にしてみてもらえるとよいかと思います。
シリコンバレー一流プログラマーが教える Pythonプロフェッショナル大全
Pythonをこれから勉強する方の入門書としては「シリコンバレー一流プログラマーが教える Pythonプロフェッショナル大全」がおすすめです。
著者の酒井潤さんは、現役でシリコンバレーのSplunkという有名企業でソフトウェアエンジニアとして活躍されいる方です。
本書は、Udemyのベストセラーにもなっている人気講座「現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル」をもとにしてさらにパワーアップした内容の書籍として発売されました。私が一番最初にPythonを勉強したのはUdemy講座の方で、私のコードの書き方は酒井さんの講座で学んだことが基礎となっています。
書籍は基本部分と応用部分で分かれており、Pythonで重要な内容を十分に学ぶことができます。ただし、Udemy講座の方にはあるデータベースやテスト等の一部内容は書籍には含まれていないため、+αで学びたい人はUdemy講座の受講も検討してみてください。
プログラミング学習の最初はまずうまく書ける人のコードを真似することから始まります。そういった意味では、シリコンバレーの有名企業で現役で働かれている酒井さんのコードは良いお手本となるでしょう。
本書のレビュー記事はこちら:「【シリコンバレー一流プログラマーが教える Pythonプロフェッショナル大全】Pythonの勉強におすすめの良書」
Udemyは様々なタイミングでセールを頻繁に行っています。セール中は通常数万円する講座が書籍1冊分ぐらいの値段まで下がることが多いため、高い時に購入しないようにタイミングを見計らって購入するのがおすすめです。
独学プログラマー Python言語の基本から仕事のやり方まで
Pythonのプログラミング言語の使い方だけではなく、プログラマーの仕事の全体像やチーム開発などについても知りたい人には「独学プログラマー Python言語の基本から仕事のやり方まで」がおすすめです。
Pythonの文法についてはもちろんですが、オブジェクト指向プログラミングの概念や、Bash等のCUIの使い方、Git、Githubでのバージョン管理等、ただPythonでプログラミングをできるだけではなく仕事でプログラミングをするときに役にたつ知識についても学ぶことができます。
本書のレビュー記事はこちら:【独学プログラマー Python言語の基本から仕事のやり方まで】Pythonの基本だけでなく幅広くプログラマーの知識を学べる良書
独習Python
サンプルコードや例題、練習問題もたくさん記載されていて読みやすい入門本としては、「独習Python」がおすすめです。
プログラミング言語では有名な独習シリーズのPython版です。2020年6月出版のため、Python3.8で動作検証された内容となっており、本記事作成時点では比較的新しいバージョンの内容になっています。
Pythonプログラミングの基本的な文法を学ぶ上ではおすすめな本です。もし、プログラミング文法だけではなくプログラマーとしての仕事の全体像やチーム開発等も把握したい場合は、「独学プログラマー Python言語の基本から仕事のやり方まで」の方がおすすめできるかと思います。
入門Python3
広範囲にPythonの技術をサポートしており、非常に情報量が多い本としては「入門Python3」がおすすめです。
他ではあまり扱われないような複素数に関する情報などの記載もあるため、本書に記載されているようなキーワードをベースにいろいろインターネットで調べながら勉強すると広い知識を学べると思います。ただし、プログラミング自体を初めて勉強するような人にはあまりおすすめしません。
これまでにC言語やJava等ほかの言語の経験がある等、プログラミングの前提知識がある程度あり、書籍で不足する部分は自分でインターネットで調べられるような方には、豊富な情報であるため辞書的な意味合いも含めて役に立つかと思います。
Python応用におすすめな本
上記の入門書を読んだ後に応用編として読むとよいおすすめな本について紹介します。
エキスパートPythonプログラミング
Pythonプログラミングの文法が理解できるようになってくると、「パフォーマンスがよく」「安定性があり」「保守しやすい」ソースコードが書けるようになりたいと考えるようになってきます。Pythonをもっと深く学びたいという方には「エキスパートPythonプログラミング」がおすすめです。
この書籍には構文ベストプラクティスとして、Pythonコードとしてよいとされるコードの書き方が紹介されている他、コードのデプロイ、管理、ドキュメントの作成、テスト駆動開発、最適化手法等々の幅広い内容をカバーしており読みごたえがあります。
書籍内の「本書はだれのために書かれたのか?」というところにも記載がありますが、Pythonの上級向けの概念や最新の機能を学びたいエキスパートのプログラマ向けの書籍です。そのため、Python入門者には正直難しい内容だと思いますが、実際の開発現場でPythonを使いたいという人だけでなく、趣味でプログラミングをしている人にもとても面白い内容だと思います。
Pythonによるデータ分析におすすめな本
Pythonは、機械学習等のデータ分析のためのライブラリが豊富であることが特徴であるプログラミング言語として有用です。有名なライブラリにNumpy、Pandas、Matplotlib、scikit-learn等のライブラリがあります。他にもディープラーニングのライブラリとしてはTensorFlow/Kears等が有名です。以降では、Pythonによるデータ分析について勉強するのにおすすめな本について紹介します。
Pythonデータサイエンスハンドブック
機械学習等のデータ分析を行う場合には、Pythonではデータを処理するためのNumpyやPandas、可視化のためのMatplotlib、機械学習エンジンのscikit-learnといったライブラリがよく利用されます。
それぞれのライブラリの基本の考え方や使い方の入門書として、そして手元に置いておくハンドブックとして「Pythonデータサイエンスハンドブック」をおすすめします。
NumpyやPandasについて細かな内容を説明してくれていたり、Matplotlibの使い方がサンプルを例に具体的に紹介されていて非常に分かりやすいです。ただし、Pythonの文法については説明されていないため、Pythonの文法を全く知らないような人は、まずは上記で紹介したような入門書でPythonをある程度理解してから読むとよいでしょう。
本書のレビュー記事はこちら:【Pythonデータサイエンスハンドブック】Numpy, pandas, matplotlib, scikit-learnの学習に最適な良書
Pythonによるデータ分析入門
NumPy、Pandas、Matplotlib、scikit-learnの書籍としては上記で紹介した「Pythonデータサイエンスハンドブック」で十分な範囲をカバーできるかなと個人的には思います。
pandasについてより詳しく学びたいという方には「Pythonによるデータ分析入門」がおすすめできます。ファイル入出力等、データサイエンスハンドブックよりもより詳しく説明されています。
Pythonによるディープラーニング
ディープラーニングを実装する場合には、ディープラーニングのフレームワークの使い方を覚えるのが近道です。ディープラーニングのフレームワークとして有名なところとしてはGoogleのTensorFlowやFacebook(改めMeta)製のPyTorchが有名です。
世界的にも広く使われているTensorFlow/Kerasに関する書籍としては以下の「Pythonによるディープラーニング」がおすすめです。
レベルとしては中~上級者向けの内容ですが、本書ではTensorFlow/Kerasにおける実装のワークフローから各種API(Sequential/Functional/Subclassing)の使い分けまで丁寧に記載されているので、TensorFlow/Kerasの本質的な部分まで理解するのに役立ちます。
また、内容的にもCNN、RNN、Transformer、GAN等の高度な内容も扱っており技術の理解を深めることができるでしょう。TensorFlowのディベロッパー試験の参考書籍としても役に立つかと思います。
参考記事:深層学習ライブラリ TensorFlow、Kerasの概要
scikit-learn、Keras、TensorFlowによる実践機械学習
TensorFlow/Kerasを用いたディープラーニングの学習としては上記の「Pythonによるディープラーニング」が個人的に最もおすすめなのですが、加えてscikit-learnやTensorFlow/Kerasを用いた機械学習を学ぶ本として「scikit-learn、Keras、TensorFlowによる実践機械学習」もおすすめです。
10章~17章あたりの内容はTensorFlowのディベロッパー試験の参考になるかと思います。800ページほどあるかなりボリューム感のある書籍です。
ゼロから作るDeep Learningシリーズ
Pythonに興味を持った人の中には、近年注目されているディープラーニング等に活用されているからという人も少なくないと思います。
ディープラーニングについては、様々なフレームワーク(TensorFlow/Keras、PyTorch、Chainer等)が世の中にありますが、そういったフレームワークをただ使うだけではなく、理論的な部分を学びたいという人もいるのではないでしょうか。
そういった方には、「ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装」がおすすめです。
Deep Learningのベースになってくるニューラルネットワークについて、最も基本なパーセプトロンから順番にしっかりと解説されています。ゼロから作るの名の通り、実際にソースを作りながら理解を深めていけます。
また、シリーズとして「ゼロから作るDeep Learning 2―自然言語処理 」「ゼロから作るDeep Learning 3 ―フレームワーク編」「ゼロから作るDeep Learning 4―強化学習編」もあります。
2は、音声などの自然言語処理を取り扱うものになっていて、3は、ディープラーニングのフレームワークで使われている技術の共通的項目について自分でミニマムなフレームワークを実装して理解しようというものです。また、4では強化学習に関する技術を扱っています。
まずは、1でDeepLearningとは何なのかを学んだうえで、興味に合わせて2、 3、4と読み進めていくのがよいのではないかと思います。
また、E資格(JDLA Deep Learning for ENGINEER)のコード穴埋め問題に類似する問題が結構出るのでE資格取得を目指す人の参考書としてもおすすめできます。
その他おすすめな本
Python入門書という位置づけではありませんが、関連知識を学習する際におすすめな本を紹介します。
オブジェクト指向でなぜつくるのか
Pythonを理解していくためにオブジェクト指向を勉強していくのは非常に有効だと思っています。オブジェクト指向の考え方を学びたい人には「オブジェクト指向でなぜ作るのか」がおすすめできます。
Pythonのただ使う分には、intやstrといったものを無意識に使うことができますが、intやstrもクラスとして定義されています。使用する際にはオブジェクト化し、クラス内に定義された関数を使ってプログラミングをしているわけで、オブジェクト指向の考えが組み込まれているわけです。
オブジェクト指向は初めての人には理解しにくい内容であると言われます。本書ではどうして理解しにくいのかといった点も含めてオブジェクト指向について説明されています。
私も新入社員の子などにオブジェクト指向に関して話しているときに、誤解されるような説明になっていないか、うまく伝えられているのか不安になることがあります。オブジェクト指向についてはもう分かっているという人も一度読んでみると自分の知識を見直すよい機会になるかと思います。
達人に学ぶDB設計 徹底指南書/達人に学ぶSQL 徹底指南書
Pythonを学んでいる人はデータ分析に興味がある方も多いのではないでしょうか。企業で働いているとデータ分析対象となるシステムではリレーショナルデータベース(Relational DataBase: RDB)で管理されているところがほとんどかと思います。
データサイエンティストといった職業の人はデータ分析に関する機械学習や統計の知識があってPython等を使えればよく、DB設計やデータ抽出のためのSQLについてはデータエンジニアに任せておけばよいと思っている人もいるかもしれませんがそんなことはありません。分析が主な仕事だとしても、データエンジニアとうまく会話するためにDB設計について学んでおくことは非常に有益です。
DB設計やSQLについてとても良い知見を学べる良書としておすすめなのが「達人に学ぶDB設計徹底指南書」と「達人に学ぶSQL徹底指南書」です。
DB設計指南書の方では、重要な正規化やER図等の説明に加え、DB設計のバッドノウハウやグレーノウハウ(はっきりとバッドノウハウとは断定できないが無神経に使うと支障が出るような設計を示す著者の造語)について例を用いて紹介してくれます。バッドノウハウやグレーノウハウは、私自身がこれまでに関わったシステム設計で見たことのあるものもありました。是非一度読んでみてもらえると面白い書籍です。
SQL徹底指南書の方は、コンセプトとしては中級SQLプログラミング入門ということなので、SQLを半年から1年ぐらい扱ったことがある人が対象にはなりますが、データをうまく抽出するために正しい書き方や考え方など、SQLを本質的に理解するためのよい知見を与えてくれるでしょう。
GitHub実践入門
プログラムのソースコード管理は、特に企業などの開発現場では非常に重要な意味を持ちます。世界的に使用されているソースコード管理のためのGitHubについて勉強しておくことは非常にためになりますです。GitHubの入門としては「GitHub実践入門」がおすすめできます。
GitとGitHubを区別できていない人もいるかもしれませんが、Gitはソースコードなどのデータをリポジトリというデータの保管場所に入れて管理するソフトウェアです。GitHubはこのGitリポジトリをインターネット上に提供するためのサービスのことを言います。そのため、GitHubにはPull RequestやIssueといったインターネット上で多くの人が協調してコード開発をするための色々な機能が備わっています。
企業によっては、Subversion等の他のソフトを利用していたりといったことがあると思いますが、仕事で必要などということがなければGit、GitHubから勉強するのがおすすめです。GitやGitHubの考え方が理解できていればSubversion等の他のソフトでも十分対応ができます。
Pythonドキュメント
Python3の最新ドキュメントについては「Python3 ドキュメント」を参照するようにしてください。こちらは書籍ではありませんが、Pythonを学習し、知識をアップデートしていくうえではPythonのドキュメントを必要に応じて参照するということが重要です。
本記事更新時点での安定板(stable)となっているのはPython3.11で、開発中(in development)が3.12になっています。リンク先の左側に各バージョンごとのドキュメントリンクがあるので、お使いの環境のバージョンにあわせて参照するようにしてください。
特にPython標準ライブラリーのページには、各種標準ライブラリーの使い方が記載されていますので、標準ライブラリーの使い方に困ったらまず一度ドキュメントを見てみるようにするとよいかと思います。