各分野の専門家の方にお勧めの書籍を紹介していただいている本企画。今回は、株式会社はてな 取締役、グリー株式会社 統括部長などを務めた伊藤 直也さんに、プログラミングに関する書籍を選んでいただきました。お手軽なハウツー本ではなく、プログラミングの根底にある概念や価値観を知るための5冊を取り上げていますので、ぜひ参考にしてください。

関連記事 : スペシャリストの選書 - (1) セキュリティ 辻伸弘氏      
関連記事 : スペシャリストの選書 - (2) 要求定義 三輪一郎氏       
関連記事 : スペシャリストの選書 - (3) 開発プロセス 正木威寛氏     
関連記事 : スペシャリストの選書 - (4) プロジェクトマネジメント 岡大勝氏
関連記事 : スペシャリストの選書 - (5) モデリング 羽生田栄一氏     
関連記事 : スペシャリストの選書 - (6) プログラミング 伊藤直也氏    
関連記事 : スペシャリストの選書 - (7) クラウド 後藤和貴氏       
関連記事 : スペシャリストの選書 - (8) システム運用 原田旨一氏     
関連記事 : スペシャリストの選書 - (9) ネットワーク 藤田雄介氏     

プロフィール

伊藤 直也氏

ニフティ株式会社、株式会社はてな 取締役、グリー株式会社 統括部長を経て、現在フリーランス。ブログやソーシャルブックマークなど10年間、ソーシャルメディアの開発と運営に携わる。著書に『入門Chef Solo』(Kindle Direct Publishing)、『サーバ/インフラを支える技術』、『大規模サービス技術入門』(いずれも技術評論社)などがある。

『Java言語で学ぶデザインパターン入門』

『Java言語で学ぶデザインパターン入門』―― 著者:結城浩、発行:ソフトバンククリエイティブ

書籍は人に紹介されたものを読むのではなく、自分で「これは」と思ったものを読めばいいと思っています。ですから、ここに挙げる5冊を必ずしもすべて読む必要はありません。あくまでも自分の役に立った5冊を紹介します。その前提で、1番目に紹介するのが本書です。プログラムを設計する際、「こうすればよい」というが定石あります。その定石をデザインパターンと呼びます。このデザインパターンについてわかりやすく紹介しているのが本書です。デザインパターンを繰り返し読んでみると、プログラミングの際の美的感覚が身に付きます。つまり拡張性が高くメンテナンスしやすいプログラムを作るにはどういうコードを書けばよいかといったポイントがわかります。そのポイントがわかってくると、きれいなプログラムを書けるようになります。Webアプリケーションなどを自分で作れるけれど、今よりも良いコードの書き方を知りたいと思っている人にお勧めします。

『定本Cプログラマのためのアルゴリズムとデータ構造』

『定本Cプログラマのためのアルゴリズムとデータ構造』―― 著者:近藤嘉雪、発行:ソフトバンククリエイティブ

最近ではRubyでもJavaでもライブラリが揃っているので、自分でアルゴリズムを実装する必要はないかもしれません。プログラミングを始めたての人ほどアルゴリズムは必要ないと思うでしょう。有名なアルゴリズムとしてはクイックソートや巡回セールスマン問題などがあります。確かにこれらを一から実装したり解いたりする機会はないと思います。しかしアルゴリズムに従ったコードを書くことに慣れると、こういうコードは早いから書いてみようとか、こういうコードは遅いから避けようとか、プログラミングにおける価値観が身に付きます。先ほどのデザインパターンの書籍もそうですが、これらを勉強したからといって直ちにスキルが上がるというものではありません。時間がるときに読んでみることをお勧めします。

『Unixネットワークプログラミング 第2版 Vol.1』、『同 Vol.2』

『Unixネットワークプログラミング』―― 著者:W. Richard Stevens、発行:ピアソンエデュケーション

アプリケーションの下で動くネットワークプログラムの仕組みがわかると、「こういうコードを書くとネットワーク的に問題がありそうだ」といった勘が働くようになります。本書を読むと、TCP/IPがどうなっているか、ソケットでプログラムを書くときにどんな落とし穴があるか、あるいはWebサーバーの実装がどんなアーキテクチャなのかなどがわかるようになり、プログラマとしての知識の幅が広がります。例えばオープンソースのWebサーバーとしてApacheやnginxがあります。このどちらかを採用する際、nginxのほうが新しいから速そうだといった理解ではまったく不足で、両方のアーキテクチャの違いを知ったうえで選択する必要があります。とても分厚い書籍ですが、ネットワークプログラミングのアーキテクチャを解説した章を読むだけでも参考になります。

『Webを支える技術』

『Webを支える技術』―― 著者:山本陽平、発行:技術評論社

本書は、HTTPプロトコルやURLとはそもそも何なのかなど、Webに関するプロトコルについて詳しく説明しています。普段、Webアプリケーションを何気なく作っていると、HTTPがどんなアーキテクチャで、どんな設計思想の下に作られたのかなどは意識しませんが、本書を読むとそうしたことがわかります。Webアプリケーション開発に携わる人のなかで、Webプログラミングの裏側を知りたい人にお勧めします。より具体的に言うと、HTTPのステータスコードのそれぞれの番号がわからない人や、Web APIを見たときに、こっちのAPIのほうが設計としては正しいといった判断ができない人は読むと良いでしょう。Webにおけるより好ましい設計というものがわかります。

『UNIXという考え方』

『UNIXという考え方』―― 著者:Mike Gancarz、発行:オーム社

本書は読み物的な内容で、Unixではプログラムはこういう形をしているべきだといった哲学が学べる書籍です。例えばハードウェアに特化したチューニングをした高速のプログラムよりも、多少遅くても移植性の高いプログラムのほうがUnixの世界では重要だとか、プログラムを組み合わせて使ううえで、ひとつのプログラムではひとつの仕事しかしないことが重要だとか、Unixにおけるプログラムのあるべき姿が学べます。本書を含め、今回紹介した5冊はいずれもハウトゥ本ではなく、プログラミングの根底にある概念や価値観を知るうえ役に立つ書籍です。普段の仕事の中では得られない知識なので、時間を見つけて読んでみるとよいでしょう。