パーフェクトPython読んだ

発売からしばらく時間経ってしまってアレですが、パーフェクトPython読んだのでCG屋的観点で簡単な書評などしたいと思います。

パーフェクトPython (PERFECT SERIES 5)
Pythonサポーターズ
技術評論社
売り上げランキング: 41,046

長々書く前に結論から言うと、良い!!
間違いなく良書です。

この本はその名の通りPythonの本で、Python3を用いてPythonの解説を行なっています。
この記事を書いている時点で、ほとんどのCGソフトはPython2系しか対応していないため、CG屋さん的にはちょっとどうなの?と思われるかもしれません。
ですがこの本にもある通り、いずれは全てが3系に統一されます。
現在2系は2.7が最新バージョンですが、同時にこれは2系の最終バージョンと確定しているため、今後2系は保守などのために存続されるのみとなります。
遅かれ早かれいずれはCGソフトも3系に移行されると思うので、予習も兼ねて読んでみるのもいいかもしれません。

個人的には、3系が出てしばらく経つのに全くのノータッチだったので少しもぞもぞしていたところで、個人的には非常にナイスタイミングでした。

この本の対象は、Pythonのエキスパートというわけではなく、他の言語がある程度わかっていてPythonを覚えたい人、またはある程度Pythonが使えるけどもっとキッチリやりたい人、という感じのようです。
なので個人的には後者に当たるため、内容も興味深いものが多いと感じました。
ほとんどのCG屋さんなんかは後者に当たるんじゃないでしょうかね。

詳しい内容は本のページに飛んでもらうとして、僕からは僕が面白いと感じたことなどを中心に紹介したいと思います。

第1章からつらつら行きます。

この章ではPythonの禅の和訳。これがなかなかでした。
これはPythonで

import this

とすると表示されるPythonの設計思想を紹介したものです。
そもそもそんなモジュールがあるのも知らなかったのですがw、更に和訳して一言コメントも付いているということでとてもありがたかったです。

これはあくまでも個人的な意見なのですが、プログラミング言語はその設計思想に沿った使い方をするのが一番使いやすく、かつパフォーマンスも出ると思っています。なのでこういう考え方を知るのは言語を深く理解する第一歩としてとても興味深いです。

第2章では、Pythonの言語仕様に関してガッツリと解説されています。
これも今まで全く考えてなかったような細かいところまで解説が及んでいてとても興味深く読むことが出来ました。関数やらクラスに関してはかなり怪しい理解のまま使ってましたし、、、
こういう点に細かく言及している本は今まであまりなかったのではないでしょうか。
入門書だとさらっと流してしまいがちですし、もっと突っ込んだものだとこういう点はわかっている前提という事が多いような気がします。
非常に細かく書いてあってすごく参考になるのですが、ただひとつ注意する必要があるのはやはりPython3系であるという点。3系は2系とは異なる点が多々あるので要注意です。ここに書いてあることの全てが2系で使えるものではないということは念頭に置いておくべきだと思います。

そして次の3章、すみません、ここはちょっとまだちゃんと読めてません。。
一応読んだのですが、かなりあれこれ突っ込んで書いてあるので、通勤時間の短い時間にざっくり読んだだけでは理解に至ることが出来なかったと言いますか。。脳が老化してきたかな、、、
個人的には特にテストに絡む部分を再度熟読せねばいかんなと思っています。
テストというのは個人的には本当にただただ七面倒臭いだけのものなのですが(←クソ)、スクリプトやプラグインを書く際の信頼度を上げるための手段として今後は絶対に意識して行わないといけないものだと感じています。ただしょうもないスクリプトを量産するだけではなく、そろそろちゃんとまともなものが作りたいなーと思っていて。。今更って感じですが、、
なのでここはじっくり時間をとって読むために流し読みしたままおいてあります。GW中には一度ちゃんと読んでおきたいです。

他には、チャットアプリの作り方など興味深い例もあったのですが、ただCGソフト内で使いたいというだけであればあまりピンと来ないものも多いのかもしれません。
ただPython自体をもっと使いたい、会社のパイプライン整備をしたいなどと考えている方に関しては得るものも大きいのではないかと思います。
Webプログラミングの項なんかは、オレオレShotgunを作りたい人なんかにはまず読むべきところなのではないでしょうか。
僕もいずれまた小さな所でパイプライン組むような未来があればこういうところもがっちり抑えたいものですが、今はとりあえず個人的に美味しいところだけ頂くことにします:p

最後の4章では、個人的にとても気になるライブラリのNumPy, SciPy, Matplotlibに関する紹介がありました。
NumPyは大量の配列や行列などを高速に扱うためのライブラリで、僕はこれを会社のR&Dの人に勧められました。彼はMayaのジオメトリ操作系のプラグインをPythonで開発していたのですが、これがPythonとは思えないほど高速に動作していたため、どうやってるのか聞いたところ、NumPy最高ですよという話をされまして。それ以降とても気になるライブラリです。なかなか使用する機会に恵まれないのですが:p
SciPyは高次元の科学技術計算を行うライブラリとのことで、本の中では関数の積分を行ったり、スプラインで関数の補間をしたりしています。数学コンプレックスある人間としては、何やら燃えますww
Matplotlibはデータをグラフにプロットするためのライブラリで、僕もBlackbodyToolの開発を行った際に正しい値が出ているかを検証するために使用しました。その時はとりあえずグラフにプロットしただけなのですが、かなり気軽に使えたのでもう少し突っ込んで使ってみたいなと思っていました。
この3つが自由に使えるようになれば、ツールやパイプライン作るためだけにPythonを使うのではなく、C++で実装する前にざっくりデータの検証を行うであるとか、そういう方向にも使えるようになるので、ぜひとも挑戦したいところです。

あとCGツールでの応用として、Blenderの紹介があります。
これ見て知ったんですが、Blenderってもう3系に対応してるんですね。さすがのオープンソース、動きが速いぜ。

他にも4章ではネットワークやデータストアに絡めてDBの話などなど、今の僕には捌き切れないほどの情報がてんこ盛りです。なので美味しいところだけ読んで、あとは必要になった時に細かく突っ込んで読みたいと思っています。

 
と、以上簡単ではありますが書評でした。
再度結論を述べると、CGツール内で簡単にツール作りたいだけの人にはちょっと重たいかなという気もしますが、その先に行きたい人にとっては間違いなく買いの一冊かと思います。

僕個人としてはとても興味深く読めたのであまり不満というのはないのですが、CG屋的な観点であえて不満を述べるなら、やはりPython3系を念頭に書かれていることが一番の懸念点でしょうかね。
主要CGソフトがPython3系に移行するのはいつのことになるんでしょうね。
そのうち2系と3系が切り替えられるようになって、それが数年続いた後に3系に一本化、って感じになりそうな気もしてますが、はてさて。

 
余談ですがこちらの著者の一人である保坂くんは以前、今の職場のR&Dチームに所属していた同僚です。
今はCG業界を離れソフトウェア開発を行なっているプログラマです。
今回は彼の初執筆ということで、僭越ながら書評をさせて頂いています。

これがしょうもない本だったらどうしようと思っていたのですがw、期待以上のクオリティで安心しましたww
GJ保坂くん。

(・・)ノシ

“パーフェクトPython読んだ” への2件のフィードバック

  1. ブログいつも見ています。直接記事とは関係無いんですが、mem logさんの方で知っていたら教えてください。mayaを勉強してもうすぐ5ヶ月目です。9月にcgプロダクションへの就活をしようと思っています。学校に行っており、学校の無い日は家で勉強しています。全く伸びていないのが現状です。ライティングと質感が特にわかりません。diffuseやspecularなど、意味はわかります。でもそれらのパラメーターを上げ下げしたり、ライトの位置を変えたりなどしても全然思った通りになりません。もし何か良い本を、わかりやすい本、本当に初心者でもわかる本を知っていたら教えてください!

  2. >吉田さん
    はじめまして。いつもご覧いただきありがとうございます。
    ライティングはあまり詳しくないのですが、本ならこの辺が有名かなと思います。
    http://www.amazon.co.jp/digital-LIGHTING-RENDERING-%E7%AC%AC2%E7%89%88/dp/4862460186
    あとは作りたいものを決めたらリファレンスの画像などを見て、ひたすらレンダリングを繰り返して想定した質感に近づけていくだけしかないと思います。細かいところでのコツなどはあるかもしれませんが、そういうのは後回しでも大丈夫かなと思います。
    Twitterなどを使って上手い人から作品を見て意見を貰うのも良いと思います。

    あと、他にももし何かあれば今後はメールでお願いします。
    一応コメント欄は記事へのコメントとして使いたいと思っているので、、すみません、、
    メアドはAboutのページに載せてあるので、そちらを参照してください。

    頑張って良い作品作ってください!

コメントを残す

メールアドレスが公開されることはありません。