Lean Baseball

Engineering/Baseball/Python/Agile/SABR and more...

初心者がPythonを覚える為の本の選び方を体系化してみた(2017版)

こんにちは.野球(とグルメ)の人です.

会社と仕事はメッチャ楽しいのですが,今日はそれと関係なくPythonの話題を久々に.*1

昨年から,「AI(えーあい)」だの「でぃーぷらーにんぐ」だの「機械学習」といったワードとともにPythonを覚えようとしている方が多いらしく,

  • 何から学ぶべきか
  • 何の本がオススメか
  • 簡単に覚えて僕もいっちょ前に「えーあい」したいのだが!

みたいな質問を公私共々沢山いただく機会が多くなりました.*2

今まで学んだ・実践したPythonの学び方・本を整理するのにいい機会だ!

...ということで,

  • レベル別の本の選び方
  • オススメ書籍(三行レビュー付き)
  • イベントや勉強会との付き合いかた

について一筆書きたいと思います!

免責事項

前触れもなく書くとマサカリが飛んできそうなので一応書いときます.

  • あくまでも個人(shinyorke)の見解です,この内容が正解・銀の弾丸ではありません.
  • 世の中にある全てのPython本・イベントを網羅しているモノではありません.「取り上げられていない書籍/イベントがダメ」ということではないのであしからず!
  • 所属企業・組織および,参加している団体・組織は一切関係ありません.
  • その他書いてないことも私(shinyorke)個人の見解です.

基本的に私の経験で書いてるものなのでご意見・フィードバックお待ちしております.

初心者がPythonを覚える為の本の選び方を体系化してみた(2017版)

というわけで,体系化してみた絵がこちらになります.

中身は順を追って解説します.

f:id:shinyorke:20170115161603p:plain

学習のポイント(または避けられない選択)

PCの有無

言わずもがなですね.

環境は直接Pythonをインストールしたり,Cloud系の学習・開発環境サービスを用いるどちらでもOKかと思いますが,いずれにしてもPCが無いと始まりません.

会社や学校のPCを活用でも良いですが,個人的には本気で覚えてモノを作るならやっぱり自分で買っちゃったほうがいいと思います.

(たとえ中古であったとしても無いより334倍マシです)

プログラミング経験の有無

f:id:shinyorke:20170115163011p:plain

いちばん重要なポイントかもしれません

何人かご相談していて思うこととしては,

によって,オススメするべき本や学習の方法が異なるんじゃないかと言うことです.

何かしら言語を知っている場合は知っている言語の置き換えで読みやすい本や学び方を取るべきだし,「え,プログラミングって言語があるの?」レベルから始める方はそもそも「プログラミングis何?」から学ぶべきという感じになっちゃうのでアプローチが確実に異なります.

「今年は富士山に登るぞ!」という人だって,既に他の山(1000m級)で登山経験があるのかそれともピクニック程度なのかによって準備が異なりますよね?

それと同じです多分.

平たく言えば,

自分が今どの立ち位置・レベルにいるかを正確に把握することが重要となります!

プログラミング言語を覚えた後の目標・成し遂げたいイメージがついているかどうか

f:id:shinyorke:20170115163025p:plain

目的指向かどうか,というところになります.

これはいつも自分に言い聞かせているのですが,

  • 目標・成し遂げたいことをちゃんと言語化してから覚える(メモでもなんでもいい)
  • プログラミングはあくまでも手段
  • プログラミングする必要があればガッツリ覚える,そうでも無かったらやらない

Pythonの場合,データ分析や数理的な処理・分析に強いかつ作りやすい特性があるのでデータ指向の方は覚えたほうが良いというのがありますが,Webアプリやちょっとしたインフラ作業など,他に代替手段があるものについては「本当にPythonでやる必要あるかな?」を先に考えるのがいいのかなと思っています.

確かにPythonは学習コストが低い・アプリからデータまで一気通貫に作れる強みとエコシステムが揃っているのですが,言語そのものにフォーカスしすぎるのものね...ということです.*3

オススメ書籍(三行レビュー付き)

上記の体系表に載せた本の簡単なレビューです.

気になった本は是非手に取ってもらえると!

なお,手に入れる際には最新版がベストです!(リンクは最新版です)*4

プログラミングを学ぶ

独習Python入門――1日でプログラミングに強くなる!

独習Python入門――1日でプログラミングに強くなる!

ホントの本当にプログラミングを学んだことがない状態から始めるのにオススメです.

詳しくはこちらのエントリーを御覧ください(手前味噌ですがw).

「独習Python入門」は一生付き合える入門本だと334回言いたい - Lean Baseball

Pythonを学ぶ

みんなのPython 第4版

みんなのPython 第4版

私がPythonをはじめた時はこの本からスタートしました(第二版だったと記憶).

言語仕様から勘どころまでわかりやすく書いており,最新版(第四版)ではデータ分析についても触れています.

(レベルを問わず)プログラミング経験者は迷ったらみんPyがベストかと思います.

Pythonチュートリアル 第3版

Pythonチュートリアル 第3版

オライリー本かつ,Pythonの生みの親(Guidoさん)の本です.

導入部から解説までガッツリかいてます.

みんPyと比べ堅い作りでプロユース(仕事目的)な方には一冊あったほうが良い感じです.

やりたいことが決まってる/決まってない

やりたいこと別のオススメ本です.

決まってない方にも決まってないなりに読める本があるので紹介します.

やりたいことがわからない

Pythonエンジニア養成読本[いまどきの開発ノウハウ満載!] (Software Design plus)

Pythonエンジニア養成読本[いまどきの開発ノウハウ満載!] (Software Design plus)

Pythonそのものの歴史やコミュニティーのことに軽く触れつつ,

データやWebアプリ,インフラ(Ansible)など網羅的に触れている本です.

まずはこの本で一通り試してやりたい方向性の本を買ってみる!という使い方が良いかと思います.

Web開発・お仕事など

Pythonプロフェッショナルプログラミング第2版

Pythonプロフェッショナルプログラミング第2版

Pythonを使ってWebアプリケーションを作る!というお仕事をする方には必読の一冊です!

単にWebアプリを作るだけでなく,テストやコードレビューに自動化,オススメのライブラリなど痒い所の情報が手に入る一冊です.

個人的には無いと仕事にならない一冊です.

Effective Python ―Pythonプログラムを改良する59項目

Effective Python ―Pythonプログラムを改良する59項目

コードレビューをしたり,「もっときれいなコードを書きたい!」という時にオススメです.

私は辞書的な使い方をしていますが読む度に知らないことに気がつきます.

書くのに慣れてきたら手元にあるといいですね.

データ分析・機械学習ほか

この分野は恐ろしく本がたくさん出ているので絞って紹介します.*5

Webスクレイピング以外の話題は網羅的に載っています.

IPython(Jupyter)の使い方から可視化(matplotlib)やデータ処理(pandas)など必要なものがほぼ揃います.

この一冊でPyData(Pythonでデータを扱う営みの総称)の3割いや半分くらいはわかりそうです.

機械学習系はこの二冊が人気かつ内容もしっかりしている印象です.

基礎から載ってる「ゼロから〜」は数学弱い自分としては助かってます(真顔)

Python機械学習〜」は導入部から可視化・分析に必要なノウハウをほぼ網羅していてお得感と深さがあります.

Webスクレイピング(データの取得と前処理)

PythonによるWebスクレイピング

PythonによるWebスクレイピング

Pythonを元にしたWebスクレイピングの教科書です.

Beautifulsoup4(Pythonスクレイピングライブラリ)の使い方をベースにノウハウが満載です.

特に法令的なところや「人間らしく振る舞う」所は忘れがちなので助かります.

最近出た本でこれも評判いいですね.

最近はやりつつあるscrapyの解説ががっつりあります.

体系的にも読みやすくていい本かと思います.

イベントや勉強会との付き合いかた

学ぶのに本をよむ・写経するのも良いですが,

一番手っ取り早いのはイベント・勉強会に参加して経験者にもまれてくることです!

...という経験談・ノウハウはこちらをご参照ください(手前味噌パート2)

www.slideshare.net

本を読む・写経する以外のポイントはたった3つで,

  • Get out of the building(家や会社の中だけでなく,外に出て交流しよう)
  • Output & Feedback(覚えたこと・成果は外に出す,フィードバックをもらう)
  • Networking(詳しい人・面白い人・同じ勉強をしている人でつながろう)

覚えやすいでしょ?

なぜそういう結びなのか,についてはスライドを読んでもらえると幸いです.

というわけで,素敵なPythonライフを!

*1:JOINして一週間ですがチームとサービスのエネルギーに圧倒されそうでヤバイです(真顔)いずれブログか何かに書きます.

*2:会社や外部の勉強会だけでなく,(前職の)ビザスクMatcher(マッチャー)を通じて問い合わせも幾つかあり,嬉しい悲鳴を上げております(震え声)

*3:余談ですが,個人的に相談を受けた内容で「これはPythonじゃなくていい」「Python覚える云々以前の問題」というときには情報の探り方や目標の立て方・ストーリー作りに時間を費やしています.たまに「Pythonの話まったくなかった」というフィードバックも貰いますがw

*4:たまに古本屋で買ってやる方もいますがバージョンが古くて現状と合わなかったりして学習と本質的に異なる部分でハマる&時間損失をするので古い本は絶対オススメしません

*5:本当に大杉だし玉石混交で困る