Rのつく財団入り口

ITエンジニア関連の様々な話題を書いているはずのブログです。

【感想】みんなのPython 第4版

Python入門書の定番決定版

 通称「みんPy」。個人的にはこの本を最初に手に取ったのはまだPythonが日本であまり流行ってない頃、2版の白っぽい表紙の頃でした。
その当時はインデントが違うだけで動かなくなるオソロシイ言語ということを知った後、全部はちゃんと読まずに机の中に眠ってしまった記憶があります。(笑)
 その後2012年にPython3に対応した第3版が、シルクハットをかぶったニシキヘビのちょっとへぼい表紙で登場。そして第4版が2016年12月、一見プログラム言語の本に見えないえらくポップな表紙に全面改訂して登場。2017年現在で手に入りやすいPython3入門書の定番です。
 大きい本屋で技術書コーナーのPython特集を見ると平積みになっていることが多いですね。オライリー本なんかの隣にあったりすると表紙に落差があってちょっとフフッとなってしまいます。

 たぶん本選びにには皆さんぐぐったであろう、ブクマ多数の以下の記事でもプログラム経験者は迷ったらみんPy4版とオススメされています。実際、経験者には本書か、卵を抱えた蛇が表紙のオライリー本「入門Python3」とよく言われますね。

shinyorke.hatenablog.com shinyorke.hatenablog.com

みんなのPython 第4版

みんなのPython 第4版

  • 作者:柴田 淳
  • 発売日: 2016/12/22
  • メディア: 単行本
入門 Python 3

入門 Python 3

  • 作者:Bill Lubanovic
  • 発売日: 2015/12/01
  • メディア: 単行本(ソフトカバー)

 正誤表はサポートページに載っており、量はそれほどありません。何でも3版は誤植が多くてその批判が4版の原動力にもなったそうですが、4版は読んでいて理解に困るような間違いはほとんどなかった印象です。

みんなのPython第四版 正誤表

良かったところ

★こういう技術書は装丁や中身のデザインが地味で眠くなったりモチベーションが下がったりすることがあるのですが(よくオラ○リー本にある/笑)、本書は本文のデザインが2色刷り、というのだろうか黒以外にも色があって読みやすいです。
 重要なところや各種記号、サンプルコードの実行結果の背景は色がついていたり、メソッドの説明や見出しは蛇の形の枠見出しで囲われていたり、図表が比較的多かったり、見出しを多めにして文章が長くならないよう分割されていたり、読みやすく工夫されています。フォントもあまり他の本で見ないものを使っている感じです。

★文法だけでなくPython言語界隈の文化、根本や考え方、歴史、作法や流儀なども解説しているところ。
 随所にこういう話がちりばめてあり、特に他言語経験者だとPythonだとこうするのか~というカルチャーのようなものがなんとなくでも分かってきます。言語を体系的に学ぶ際にはこのへんも押さえておきたいのでありがたいです。

★最初はスクリプト言語としての説明を重視して文法などを一通り網羅し丁寧に説明し、関数型、オブジェクト指向……と順次、高度な内容にステップアップしていくところ。
 僕も最初は登場する種々の関数群を見てPHPの組み込み関数みたいなものか、組み込み型という特別扱いの型みたいのがあるのかな、面白い書き方をするんだなと思いながら読み進めて待望のクラス/メソッドの話になると、Python上ではすべてがオブジェクト、今まで登場した関数の幾つかは実はメソッドです……となり、なんだってー(AA略)、このために今までの説明があったのか~!となりました。
研究用途でグラフ用の短いスクリプトを書く等々、OOPでない使い方をする場合もあると思うので、段階を踏んで説明しているのはよいですね。

 個人的には、Pythonのクラスのアトリビュート(他言語でのメンバ変数)回りやメソッドにself.attr のように書くあたりがどうも腑に落ちなかったのですが、本書を読んでハラオチしてよく分かりました。
アトリビュートはそのオブジェクトの外側から幾らでも定義できてしまうんですね。そうか、PHPでDB検索の戻り値によく使うstdClassみたいなものだったのか……!

Pythonを取り巻くツールや周辺技術、モジュールも大体一通り触れているところ。
主な標準ライブラリはChapter11で触れていますし、Chapter12でデータサイエンス回りも触りではありますがPython自体とどう繋がるのか、大枠が理解できます。
 たとえば数値計算ライブラリのNumPyはよく名前は聞くのですが何が凄いのかよく分からなかったのですが、読んでよくわかりました。ndarrayは確かに便利そうです。大量データの扱いの例に日本人口のデータを使っているのも身近で分かりやすいですね。機械学習についても触りが分かります。

★そしてPython3対応であること。
Python2は2020年にサポート終了確定、2017年現在で初学者が新たに学ぶとしたら、もう3からでしょう。最後のChapter13にPython2との違いも述べてあります。

 というようにPython言語の根底から、周辺技術の入口部分まで一通り網羅している感じです。紙の本の厚さは500Pでそれなりですが、縦横のサイズがよくある大判の技術書より一回り小さいので取り回しもしやすいです。

足りないところ

 読んでみて、そういえばなかったなと思ったのは以下の当たりです。

  • Chapter05~07で高階関数やクラスや継承、オブジェクト指向開発など本格的にテクニカルな面に踏み込みつつ、おっこの流れでメタプログラミングとかフレームワーク的なところとかさらに高度なパイソニスタの次元に踏み込んでくれるのかな……とワナビーの期待を高まらせつつ、踏み込まずに終わる(笑)
  • 第3版は最後の方に実際にGUIアプリを実装してみる章があったようですが、4版にはない。演習問題的なものもない。
  • 有名なNumPyやエータサイエンス、機械学習との繋がりは章がありますが、Python界隈で使われるWebサーバやWebアプリの解説はない。
  • 主なライブラリの紹介などでも、メソッドでオプションの第X引数はこんな風な指定もできる……と書きつつ実際の例はなく省略されていたりする。
  • ライブラリやモジュール、周辺ツール回りでも、xxxについては本書では触れません・取り扱いません~と但し書きで名前だけに留めているのが幾つか。

 しかしこの辺りは記述が不足しているわけではなく、本書はPythonの根底の思想や考え方含め一通り網羅しつつも、位置づけとしてはこれから学ぶ人向けの入門書になるからでしょう。
ここから先は更にリファレンスが充実した本なり、上級者向けの本なり、ガッツリ機械学習する本に進んでくれということですね。

 なおWebアプリ周りについては、以前の版の続編で絶版だった『みんなのPython Webアプリ編』が、作者さんのサポートページでHTMLで無料公開されています。RSSリーダーを作ったり、特定のWebアプリケーションフレームワークではない形で、テンプレートエンジン+O/RマッパーでWebアプリを作ったりする方法を読むことができます。こちらはPython3でなく2.7対応のようですがそこは仕方ないですね。

PythonでWeb開発入門 みんなのPython Webアプリ編 HTML版(無料)

強力なももクロガルパン推し

 さてこの本、知らない方は気付かずにそのまま読み終わったり戦車の話の意味がよく分からなかったとかの感想が書評に残るだけでそれほどネタになっていないようですが、前半~中盤にかけてのサンプルコードと説明に、かなりネタが仕込んであります。( ´∀`)
 賢明なる読者諸氏ならばプログラミング入門の体裁を取った文章の裏側に潜む、不吉なコードの匂いならぬナニかの匂いに気づくことでしょう……Chapter02でリスト操作の例で全角文字列で女の子の名前を並べたリストの変数名がなぜかmczであることに。アルファベット大文字小文字が区別されるというプログラム言語では一般的な言語仕様の説明の例が、英語とドイツ語が混ざった謎のgirlsundpanzergirlsUndPanzerという文字列であることに。
 そしてその疑惑は、何の変哲もないint型の3桁整数が並ぶリストが入った変数monk_fish_teamに平均値算出などの処理を手軽に加え、plt.plot() に渡すだけで簡単にグラフが書けるPythonの素晴らしさに驚嘆させる傍らで、グラフのタイトルが何の前振りも説明もなく

あんこうチームの身長グラフ」

と振ってあるのを目撃した時に確信に変わりまする。
 そう……アイドルグループの「ももいろクローバーZ」と地上波アニメ&ロングラン劇場アニメ&メディアミックス各種の「ガールズ&パンツァー」ネタがかなり隠されています。作者の方はかなりの戦車道を嗜んでおられるようです。w

 アニメで町おこしの模範例ともなったガルパン、2017年末開始の最終章全6章で遂に終わらせるそうですがどうなるのでしょうねえ。僕は極上爆音の某所の映画館で劇場版を見たんですが、確かに音響が素晴らしかった。


『ガールズ&パンツァー 劇場版』本編序盤 大洗市街戦 一部配信

 ほかにも、str型文字列「いっぱい」をreplaceで変換して「おっぱお」とか、サンプル変数の文字列が「まず君が落ち着け」など、あちこちで笑いを取りにきている印象です。
 本件については読んでいる折にうっかりツイートしたところ、ちょうどエゴサーチでもしていたのか作者ご本人様から反応をいただきました。 (´∀`*)b

まとめ:みんPyはいいぞ

 よくプログラミング初心者にもお勧めされています。ただ個人的には(想像ですが)、プログラミングとは一体なんぞやというレベルの人、パソコンの使い方からの人には完全初心者や非プログラマをターゲットに絞ったPython本が最近いくつか出ているので、まずは1冊試しにそちら、2冊目ぐらいに本書で本格的に……という流れもいいんじゃないかなあと思います。
 そしてある程度わかる人には……「経験者は迷ったらみんPy」というのは間違いなしでした。少しでもプログラミング道を嗜んでいる方、そして戦車道を嗜んでいる方にも「みんPyはいいぞ」ということで間違いなくオススメな入門書です。

おまけ:Python入門書籍

 よく話題になりますが、最近の本をまとめてみました。

●概要を知る

広く浅くですが、概要やキーワードを知るにはよいムックです。僕も最初に読みました。

●プログラム完全初心者向け

基礎を一通り固め、アプリの作り方も入っているクジラ本。2016年10月刊行。Python3対応。

こちらも未経験者向け。2016年3月刊行、Python3対応。

2017年8月刊行。話題のオンライン学習サービス「PyQ」ともコラボしています。中も字が大きく図表も多め、初心者向けに丁寧に解説しています。

ゼロから始める初学者にお勧めの本。2016年4月刊行、ネックはPython2系ということ。

Pythonスタートブック

Pythonスタートブック

  • 作者:辻 真吾
  • 発売日: 2010/04/24
  • メディア: 大型本

2017年8月刊行の新しい本。Python3対応。完全初心者がスラスラ理解していくように構成が工夫されているそうです。

スラスラわかるPython

スラスラわかるPython

2017年9月刊行の最新。土日の2日で学ぶ短期集中の本。DockerやDjangoまで出てきて題材は本格的です。イラストにある女性二人組が学んでいくというキャラ対話形式になっています。

プログラム自体の入門書で、題材がPythonという本。2016年8月でPython3.5。要点は丁寧ですが、Python自体についてはボリュームが少なめのようです。この本どうも評価が分かれてますね。

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

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

  • 作者:湯本 堅隆
  • 発売日: 2016/08/05
  • メディア: 単行本(ソフトカバー)

●みんPyと同程度の位置?と思われるプログラム経験者向け

 みんPyと並んでよくお勧めされています。より堅めでプロユース寄り、後半のライブラリ関連が充実しています。2015年12月刊、タイトル通りPython3対応。

入門 Python 3

入門 Python 3

  • 作者:Bill Lubanovic
  • 発売日: 2015/12/01
  • メディア: 単行本(ソフトカバー)

以前は第2版がよく経験者向けにお勧めされていましたが、今だと上の「入門Python3」と被るかな?2016年3月、Python3対応。

Pythonチュートリアル 第3版

Pythonチュートリアル 第3版

  • 作者:Guido van Rossum
  • 発売日: 2016/03/24
  • メディア: 単行本(ソフトカバー)

プログラムがある程度わかる非プログラマが、ExcelからのCSV処理や定型メール自動送信やPDF処理などなど、日々の業務を自動化したいという目的にフォーカスしたオライリー本。最近の本で2017年3月、Python3対応。けっこう分厚いです。