挨拶
お久しぶりです。ORASもうすぐ発売ですね。僕はとりあえずメガタブンネを軸にしたパーティーを組んでみるつもりです。ポケモントレーナー兼プログラマの石田です。様々な没稿を経て、こんな内容になりました。振り返ってみれば、職業プログラマとしては、もう13年になり限界説の35歳に差しかかったタイミングです。技術そのものに貪欲なタイプのエンジニアからすると読んできた技術文書の数は少いんじゃないかなと思うのですが、棚卸しの意味も込めて13冊を短評付けて選定してみようと思います。中には絶版になっていて、マーケットプレイスでないと手に入らないような古い本も有ります。また、ひょっとすると現代的な環境に似わないものも有るかも知れません。その場合、おっさんの棚卸しが目的だということで、大目に見てください。
プログラミング言語Perl
VOLUME1, 2 と実質2冊なのですが1冊としてカウントしています。これからPerlで何かを作ろうとする人は少いとは思うのですが、是非読んでもらいたいと思います。Perl界隈の人でなくともプログラマの三大美徳が「怠惰、短気、傲慢」だというのを聞いたことはあるのではないでしょうか?この本の作者でありPerlの父であるラリー・ウォールの言葉です。文化としてのPerl、思想としてのPerlというのを、この本によって触れたことが、プログラマとしての僕のプリミティブな部分を形成してくれたのだと考えています。現在では様々な言語に存在しているパッケージ管理ツール、例えばRubyで言えばgem等は、PerlのCPANを範にとっています。そして、パッケージ管理ツールというプラットフォームを通じてのユーザーコミュニティが、その言語を盛り上げるという好循環などもそうです。これらの源流を作ったのがPerlであり、この本の意義のひとつでもあります。また、この本でPerlを身に付けておけば、PerlでWebを作ることが無かったとしても、色々役立つことが有るかも知れません。具体的にはPerlワンライナー講座をご覧ください。
ハッカーと画家
著名なLISPハッカーであり、Viawebを開発してYahooに買収させ、巨万の富を築き、Y Comibnatorの創始者となったベンチャードリームの体現者「ポール・グレアム」のエッセイ集です。ハッカーとは何か?プログラマはいかにして生きるべきか?等、プログラマとしての僕の思想形成に強い影響を及ぼしてくれた本です。駆け出しのプログラマは勿論、自由にプログラムを書きこなせるようになって、次のステップに進みたいと考えているプログラマも、ベテランのプログラマも、読んだ人のステージや、読んだタイミングによって学べるものや感じ方が違う本だと思います。是非、読んでみてください。
プログラムはなぜ動くのか-第2版-知っておきたいプログラムの基礎知識-矢沢久雄
言わずと知れた名著ですね。タイトルの通りプログラムはなぜ動くのか?をとても丁寧に説明している本です。このブログを読んでいる人の多くはWebプログラマだと思います。Webと言えばLLで、LLをメインで取り扱っていると「ソースコード」を書けば動くという体験が始まりに有って、そのままハードウェアのレイヤーに目を向けないで進んできた人も多いのではないでしょうか?この本を読んでも普段の業務にはあまり役に立つ場面の無い知識かも知れませんが、より深みを感じながらソースコードと向き合えるようになるかも知れません。
30日でできる-OS自作入門-川合-秀実
断言します。普通にやったら30日では出来ません。しかし、それでも本書に取り組む価値は有ります。プログラマの業界では「車輪の再発明」というのは悪徳であるという扱いを受けますが「その車輪について一番知っているのは発明者」です。OSというレイヤーについて知ろうとするならば、一度作りながら学ぶのもひとつの手段だし、割と近道なのだと思います。本書で扱う「OS」は実用する「OS」には不足するものも有りますが、コンピュータの正体について実感を持って触れる機会を与えてくれるという意味において大変有意義な書です。
マスタリングTCP-IP-入門編-第5版-竹下
ネットワークについて知りましょう
Javaの格言
この本を読んだ当時、オブジェクト指向というものに悩み尽くしていました。それは言語の型システムなのか基本設計の思想なのか、分析手法なのか、なんなのか言葉と概念ばかりが先行して混沌としていました。そんな時、「Javaでプログラミングするならば、こうやって作れば良いよ!」と本書がひとつの道筋を照らしてくれました。まあ、しつこく「具象クラスとインターフェースを切り離せ。操作はインターフェースに対して行うんだ」ということを言ってるだけの本だったような気もしますが。現代においてはJavaの環境も大きく変わってしまっていますが、プリミティブな思想の部分は現代のJavaにも、オブジェクト指向言語であるならば他の言語にも適用出来る部分なんじゃないかと思います。
増補改訂版Java言語で学ぶデザインパターン入門-結城-浩
現代においては、既に有るフレームの中にアプリケーションロジックを書いていくばかりで、デザインパターンをそのまま適用するレベルの構造を考えることは少いかも知れません。しかし、アプリケーションが育ってきて大きくなってきた時「構造化して再利用性を高めるのだ」というのは避けて通れません。Webアプリは育っていく一方です。ひたすらレガシーになっていきます。そこで、さあ、「再利用性を高めよう」「コピペダメ!絶対ダメ!」となった、その時「みんなの共通認識」であり「共通言語」としてのデザインパターンというのは必要になります。デザインパターンをそのまま適用することはあまり無いでしょう。そして、何年前の設計パターンだよって話です。もっと良い構造も有るかも知れません。しかし、ここが「故郷」であり「共通言語」であり「共通認識」であり「出発点」となるはずです。オブジェクト指向言語に触れていて、今苦しんでいる方には必読の書だと思います。
体験オブジェクト指向-はじめるUMLモデリング-山田-正樹
Javaの格言の項でも書きましたが、当時、オブジェクト指向という言葉が混沌としていたのです。UMLなんていう謎のツールまで現れました。いっぱいUMLの本も読んだのですが、どれもピンっと来なかったのです。しかし、この本を読みながら実際にアクティビティ図とクラス図を書いている時に「UMLは何に使うのか?」が実にピンと来たのです。今思えば「UMLは何に使うのか?」を伝えたい本だったのだろうと思います。なので、既にピンっと来てる方には必要無いかも知れません。「ダイアグラムの説明だけされても、よく分からないよー」という方には、是非お勧め致します。
【改訂第3版】-SQLポケットリファレンス-POCKET-REFERENCE-朝井
SQL文を書く時にめっちゃ使いました。今思えば、VBでアプリを作っていたはずなのに一日の半分位はこの本と睨めっ子しながらSQL文を書いていたような気がします。
Excelで学ぶテキストマイニング入門-林-俊克
一番易しいテキストマイニングの本だと思います。どうやって分析するのか?を実際に、分ち書きしてExcelで分析して身体で覚えていきます。この手のプログラミングしている時、コードは書けているのに自分が何をしているのか分からなくなってくるというのは「あるある」でしょう。そんな時、この本を思い出して、本でやってるようにサンプルテキストを分かち書きしてExcelに流し込んで実際に結果を見てみました。すると、不思議と、自分が何をしたかったのかがハッキリするという経験を得ることが出来ました。この経験はプログラマならテキストマイニングに限らず、色々なシーンで役に立ってくるだろうことは想像に難くないでしょう。そんな経験をしてみたい方は是非。
プログラマの数学-結城-浩
プログラマに数学が必要なのは間違いないのだろうけど、その「数学」ってなんだろう?オイラーの最終定理フェルマーの最終定理の証明をスラスラ書けるとか、そういうのではないよな?と。では、改めて「プログラマにとって必要な数学」ってなんだろう?というところに着目して、数学問題を出題してくれます。いかにも「数学」っていう感じの数式やら記号やらが飛び交う世界ではなくて数学的な思考パターンがテーマになっているので安心です。もし、あなたがプログラマなら夢中になって解いて気付いたら読破していて@hyukiに続編を求めるTweetを飛ばしたくなるんじゃないかと思います。数式に苦手意識があった僕に勇気をくれた本でした。
論理学-野矢-茂樹
プログラミングってつまるところ、データ構造を作って、値を計算出来る単位に揃えて、四則演算と論理を駆使して複雑なことを実現するという作業ですね。避けて通るのは無理じゃないでしょうか?
結城浩のPerlクイズ-結城-浩
元は結城さんが出していたメルマガです。Perlで妙な出題をして、Perlプログラマがそれに回答するというもの。しかし、言語がPerlであるということ、そして回答するのがPerlプログラマということで行儀の良い回答ばかりではありません。ベンチマークの出題で、ベンチマーク用ライブラリのシンボルテーブルを書き換えちゃって自分の回答の時だけ、最速の結果が出るようにしちゃったり等となんでもアリな世界。プログラミングの楽しさを教えてくれて、解決方法はひとつじゃない(そう、例えば斜め上にも有るかも知れない)という視野を広げてくれた一冊でした
最後に
長かった…… 13冊に短評付ければ、そりゃ長くなるのは当たり前なんですが、思ったよりも長かった。これでは、仕事する時間が(ryこれだけの本を自腹で買うのは大変ですよね?アライドアーキテクツでは技術図書購入補助があります。僕は補助制度の申請を上げ忘れるので、あまり使ったことないけど。アライドアーキテクツでは技術書をたっぷり読みたいエンジニアと、技術書を買ったものの補助制度を使い忘れても穏やかな顔で居られる、心の広いエンジニアを募集しています。
なるべく他のメンバーは書かないであろう流行りとは程遠いところや、 枯れたキーワードについて書いていこうと思います。 Perl / Java / PHP 及び周辺技術に興味があります。