Photo by GoToVan
秋山です。Pythonエンジニアです。
皆さんPythonは好きですか?私はブロックインデントや条件文の構文などが好きで、趣味や仕事で6・7年ぐらいPythonを使ってきました。
Pythonエンジニアをやっていると、機械学習人気などもあってか「Pythonを勉強したいんですけど、おすすめの本とかありますか?」という質問を受けることがよくあります。
そこで今回は、実際に私が読んでPythonを学ぶのに役に立った書籍をレベル別に6冊ご紹介します。
「自分のPythonレベルを上げたい」「いい感じのPython本を探している」みたいな人の参考になればと思います。
初心者(プログラミング初心者~Python公式チュートリアルに手を出せるくらい)
世界標準MIT教科書 Python言語によるプログラミングイントロダクション第2版: データサイエンスとアプリケーション

世界標準MIT教科書 Python言語によるプログラミングイントロダクション第2版: データサイエンスとアプリケーション
- 作者: ジョン・V.グッターグ,John V. Guttag,久保幹雄
- 出版社/メーカー: 近代科学社
- 発売日: 2017/09/01
- メディア: 単行本
- この商品を含むブログを見る
MITの教科書の翻訳版。そのままですが、大学の授業で「Pythonを使ってプログラミングを学ぶ」ための書籍という感じです。
序盤~8章では、プログラミングの概念から始まってクラスの使い方など、Pythonに限定されないプログラミングの基本について書かれています。
9章以降は少しコンピュータサイエンスの要素も追加されて、ナップサック問題(ナップサック問題 - Wikipedia)を題材にした探索アルゴリズムや動的計画法、モンテカルロ法のシュミレーションで円周率を出す方法、有意性、条件付き確率などの統計寄りの話、機械学習にも触れてクラスタリングなどの話などが出てきます。
どちらかと言えば実践よりは学問感が強いです。大学の授業と言うとハードル高く感じるかもしれませんが、入門から応用まで、広範囲に渡ってわかりやすく抑えられていて、ためになる書籍です。プログラミングを使いつつアルゴリズムや統計、機械学習などを学びたい人が準備として使うにはちょうどよいかと思います。
Kindle版は半額なのでありがたい。
Pythonチュートリアル 第3版

- 作者: Guido van Rossum,鴨澤眞夫
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/03/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (2件) を見る
これはまあPythonの公式リファレンスのチュートリアルそのままの感じの書籍です。そもそもPythonは公式チュートリアルが超わかりやすいから見てみてください。で、紙でほしい~って人はこれですね。(付録で少しサイトにはない内容も書かれていますが)
中級者(初心者向けコンテンツやチュートリアルが問題なく理解できるくらい)
退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング
- 作者: Al Sweigart,相川愛三
- 出版社/メーカー: オライリージャパン
- 発売日: 2017/06/03
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (6件) を見る
これはpaizaラーニングのPython入門編や公式チュートリアルなどをやったうえで「実際にPythonでいろいろやってみたい」「Pythonの使い道を知りたい」って人によさそうです。いわゆる自動化処理に特化した書籍ですね。
Pythonの基本についても書かれているので、多少プログラミング経験があって早く実践したい人は、ここから始めるのもありかなとは思います。「実際に手を動かしながらPythonの実践を学ぶ」ことができます。
Pythonチュートリアルとしては、やや足りない部分もあるため、「ちゃんと体系的に学びたい」という人は、もっと網羅されているMIT教科書やエキスパートPythonをあわせて読んだほうがいいかも。
あと、すでにPythonを使いまくっていたり、自分でpipとかでパッケージを探して自動化できちゃう人にとっては物足りなさそうなので、それよりはもう少し初心者向けになるかと思います。
問題解決のPythonプログラミング ―数学パズルで鍛えるアルゴリズム

問題解決のPythonプログラミング ―数学パズルで鍛えるアルゴリズム的思考
- 作者: Srini Devadas,黒川利明
- 出版社/メーカー: オライリージャパン
- 発売日: 2018/09/22
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (3件) を見る
基本はプログラミング問題が出題されて、それをPythonで解く方法を考える…という流れの構成になっています。課題に対して「解決するにはどうすればいいんだろう?」といった考え方を学ぶ書籍ですね。
なお、似たような書籍に「アルゴリズムパズル」があります。

- 作者: Anany Levitin,Maria Levitin,黒川洋,松崎公紀
- 出版社/メーカー: オライリージャパン
- 発売日: 2014/04/26
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (12件) を見る
こちらは答えがPythonではなく式や文章を使って書かれています。(Pythonの書籍ではないので…)「いろいろな問題を解いてみたい!」って人は、続けて読むと理解が深まるかと思います。
エキスパートPythonプログラミング改訂2版

- 作者: Michal Jaworski,Tarek Ziade,稲田直哉,芝田将,渋川よしき,清水川貴之,森本哲也
- 出版社/メーカー: KADOKAWA
- 発売日: 2018/02/26
- メディア: 単行本
- この商品を含むブログを見る
具体的には、序盤では構文のベストプラクティス、よいクラスの書き方、命名規則などコーディング規約的な内容がメインとなっています。
中盤以降はPythonを使ったパッケージの作り方やデプロイ方法、コードの管理の仕方、ドキュメントの書き方やテスト駆動開発などに関する実践的な解説があります。
あとは細かい最適化周りや並列処理、C言語やC++のコードをPythonから呼び出す方法など、結構コアな部分まで抑えているので、Pythonでできることを網羅したい人におすすめできる一冊です。
逆に、初心者がいきなりこの書籍に手を出すとちょっとハードルが高いかと思います。paizaラーニングのPython入門編や公式チュートリアルなどをやったうえで、ある程度初歩的な内容を理解して「もう入門編は抜け出せるかな?」という状態になった人が、さらに実践的な内容に踏み込むために読むといいと思います。
改定2版からはPython3.6に対応していて、内容も大幅に追加されているので、初版しか読んでいない人は2版もさらっておいたほうがいいかも。
上級者(Pythonを使いこなして実務やプロダクト開発をしている)
Pythonではじめるデータラングリング

Pythonではじめるデータラングリング ―データの入手、準備、分析、プレゼンテーション
- 作者: Jacqueline Kazil,Katharine Jarmul,嶋田健志,長尾高弘
- 出版社/メーカー: オライリージャパン
- 発売日: 2017/04/26
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
WebスクレイプやTwitterのAPIを例に取った実践や、自動化などについても触れられています。(ただ、今はTwitterのAPI制限が変更されているので現実的に真似するのはちょっと難しいかもしれません。Streamingについても書かれていますけど、これは今はなくなっているし…)
機械学習などのためにPythonを使ったデータの取り扱い方を学びたい人には大変有用な書籍です。データの一部が壊れている場合や外れ値にはどう対処するか…などといった内容も書かれています。
ただ、内容的には「Pythonではじめるデータラングリング」というより「はじめてのデータラングリング(※使用言語はPythonです)」と思っといたほうがいいです。
まとめ
というわけで、自分が読んでみて役に立ったPython関連書籍を紹介しました。Pythonに興味ある人の参考になれば幸いです。
プログラミングが動画で学べるpaizaラーニングでは、「Python入門編」を全編無料で公開しています。プログラミング初心者の人は、まずこちらのPython入門編などで基礎を学んでおくと、今回紹介したような書籍の内容も理解しやすくなると思います。
paizaラーニングの「Python入門編について、こちら
また、paizaが公開しているプログラミングが学べるゲーム型学習コンテンツ「コードガールこれくしょん」略して「ガルこれ」に、Pythonコースのハードモードが追加されました。ハードモードでは、従来のノーマルモードよりも少し難しめの問題が出題されますので、「簡単すぎる問題は物足りない」「ノーマルモードをクリアしてしまった」「Pythonを使えるようになりたい」という方におすすめです。
コードガールこれくしょんについて、詳しくはこちら
「paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。
詳しくはこちら
そしてpaizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。
スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。
詳しくはこちら