paiza開発日誌

IT/Webエンジニア向け総合求人・学習サービス「paiza」(https://paiza.jp ギノ株式会社)の開発者が開発の事、プログラミングネタ、ITエンジニアの転職などについて書いています。

凄腕エンジニアが選ぶ【値段以上の価値があった良書26選】

f:id:paiza:20161209201535j:plain
Photo by Andy Lamb

f:id:paiza:20140916135428p:plainこんにちは。谷口です。

読書の秋ですが(既に冬並みに寒いですが……)、皆さんは最近何か本を読まれましたか?

ITエンジニアの皆さんは技術書を読まれることが多いかと思いますが、今回は弊社で私が特に凄腕だと思っているエンジニア達に読んで値段以上に価値があると感じた本を聞いてきましたので、ご紹介いたします。

■弊社エンジニアが選ぶ役に立った本26選

f:id:paiza:20140624194011j:plain 佐藤です。paizaの開発や分析などを担当しています。
今回はエンジニアとして、考え方の面で影響を受けた本をピックアップしてみました。

◆1.新C++言語入門 シニア編〈上〉基本機能 (C++言語実用マスターシリーズ)

◆2.新C++言語入門 シニア編〈下〉クラス機能 (C++言語実用マスターシリーズ)

「大学生だった頃(10年ほど前)に、教科書以外で初めて自分で買った技術書です。
当時、林晴比古さんの書籍は書店に行くと必ずプログラミング関連の棚にあったので、読んだ人も多いかと思います。
上巻はほぼC言語の内容で、事前知識があったので数週間で読めたのですが、下巻は全部読むのに3・4ヶ月かかったと記憶しています。かなり時間をかけて隅から隅まで読んだのですが、その分基礎がしっかり身につきました。
社会人になってからだとなかなかこういう読み方は出来ないので、時間に余裕のある学生時代には、何か1冊でも熟読する機会があると良いと思います。今回、これまでに読んだ本を色々思い返してみたのですが、やはり一番沢山本を読めたのは学生時代でした。」

◆3.C++ FAQ 第2版 - C++プログラミングをきわめるためのQ&A集

C++ FAQ 第2版 - C++プログラミングをきわめるためのQ&A集

C++ FAQ 第2版 - C++プログラミングをきわめるためのQ&A集

  • 作者: マーシャルクライン,マイクギルウ,グレッグロモウ,金沢典子
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2000/05/15
  • メディア: 単行本
  • 購入: 5人 クリック: 73回
  • この商品を含むブログ (22件) を見る

「大学生の頃に読んだ技術書です。C++の知らない機能やクラス設計のアプローチなど、参考になる事が沢山ありました。
C++の複雑さを思い知って、『C++の開発を大人数でやったら絶対に破綻するから、仕事では絶対にC++を使わないようにしよう』と強く心に決めた記憶があります。笑(個人で開発するC++は好きです)
C++の聖書といえば『Effective C++』の方が有名でこちらも読みましたが、自分にとっては本書の方が印象深く記憶に残っています(フレンド関数の扱い方には目からウロコでした)。現在はC++を使っていませんが、言語は変わっても設計のアプローチは流用できる事が多いので、自分の開発の原点になった書籍です。」

◆4.Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

「プログラミングの知識は学生時代にかなり習得したので、社会人になってから特に苦労することは無かったのですが、SQLやWebの知識は無かったので、その辺りの基礎知識は技術書を何冊か読んで勉強しました。
本書はWebの基礎となる知識が詳しく書かれているので、長く役立つ技術書になりました。やはり物事の基礎となる知識を得るには、Webより本の方が良いと思います。」

◆5.リファクタリング・ウェットウェア ―達人プログラマーの思考法と学習法

リファクタリング・ウェットウェア ―達人プログラマーの思考法と学習法

リファクタリング・ウェットウェア ―達人プログラマーの思考法と学習法

「『ウェットウェア』とは人間の思考方法の事で、コンピュータシステムと対比する場合に用いられる言葉です。本書は人間の思考方法をリファクタリングし、達人プログラマーになる為の学習法が解説されています。
非常にざっくりですが、人間の思考には意識的に物事を考える「Lモード」と無意識に直感で考える「Rモード」が存在しており、達人は「Rモード」の直感で瞬時に答えを導き出しているとの事です。普段、日常的に評価されるのは「Lモード」による思考ですが、この「Lモード」による思考はコンピュータの思考と非常に似通ったものであり、一足飛びに物事を判断するという事はありません。対して「Rモード」は、物事のパターンや構造から類推し、直感に基いて飛躍した洞察を導くようになります。
自分の経験則ですが、この「Rモード」は、最初は周囲から「当てずっぽう」「おおざっぱ」と見られるような全く役に立たないアイデアしか生まないのですが、頭の中にデータを蓄積する事で、徐々に精度の高いアイデアを生むようになるようになるのだと感じています。
また、人間には『認知バイアス』という先入観や性向があるため、時として正しい直感を働かせる事ができなくなるのですが、それらについても述べられているので、直感的に物事を考えるときの注意点についても学ぶことが出来ます。
人それぞれに得意な思考方法があるため、急に「Lモード」と「Rモード」を切り替えるというのは難しいと思いますが、今、自分がどちらのモードに基いて思考しているのかをメタ的に意識する事で、徐々に使い分けができるようになっていくのではないでしょうか。」


秋山です。paizaの開発や問題作成等を担当しています。
古くなりにくい内容の本を中心に選んでみました。

◆6.On Lisp

On Lisp

On Lisp

「大学の研究で、自分はC言語PHPJavaしかやっておらず、研究はC言語で進めていたのですが、同じ研究室の人がLispで研究をしていてバグに悩まされていたのを見て、自分の研究のプログラムは特に問題なく進んでいて暇だったので、勉強がてらLispもやってみようと思い、教授におすすめの本を聞いたら教えられた1冊です。
Lisp入門書にしては少しハードルが高かった印象でしたが、Lispのマクロの強力さなどを知ることが出来ました。同じ研究室の人のバグは自己解決されちゃいましたが、関数型言語に触れられたのはラッキーな出来事だったと思っています。」

◆7.マスタリングTCP/IP 入門編

マスタリングTCP/IP 入門編 第5版

マスタリングTCP/IP 入門編 第5版

◆8.マスタリングTCP/IP 応用編

マスタリングTCP/IP 応用編

マスタリングTCP/IP 応用編

「大学1年ぐらいのころに、ネットワーク関係の講義で『読むと理解が深まる』と聞いて読み、TCP/IPについて詳しく知ることができました。実際にどのようにネットワークが通信しているかというようなことが具体的に想像出来るようになりました。長期的に見てTCP/IPの仕様というのは、小さい変更はあるにしても大幅に変わることはないものなので、概念として知っておくと役に立ちます。」

◆9.Hacking 美しき策謀

Hacking: 美しき策謀 ―脆弱性攻撃の理論と実際

Hacking: 美しき策謀 ―脆弱性攻撃の理論と実際

「大学生~社会人1年目辺りで読んだと思います。セキュリティ周りを勉強したくて読んだ本の中の1冊です。実際の攻撃手法を交えて、脆弱性がどういった場合に表れて攻撃されるのか、またどのように攻撃を防げたのかが書かれていて面白かったです。
実際に脆弱性等が話題になった時に、あの辺はこうなっているんだろうな……というふうに、手持ちのカードが増えたことで色々な想定ができるようになりました。」

◆10.はじめて読む8086―16ビット・コンピュータをやさしく語る

はじめて読む8086―16ビット・コンピュータをやさしく語る (アスキーブックス)

はじめて読む8086―16ビット・コンピュータをやさしく語る (アスキーブックス)

「大学の図書館で見つけて、アセンブリ言語に関しては勉強したことなかったので、面白そうだと思って読み、マシン語等のローレベルな部分に触れることができました。
今、直接触れるようなことはあまりありませんが、頭の片隅にあると、CPUが今何をしているのか?といった想像する手助けになります。」

◆11.暗号技術入門 秘密の国のアリス

新版暗号技術入門 秘密の国のアリス

新版暗号技術入門 秘密の国のアリス

「大学時代に暗号や数学系の講義があり、面白そうだからもっと知りたいなと思って調べる中で、評判の良い本だったので読みました。
暗号技術について分かりやすく解説されています。図が多くて概念を理解しやすかったです。公開鍵暗号の流れや一方向性関数の仕組みについてを理解できました。」


paizaの開発を担当している伊藤です。
割とWebで情報収集してしまう事が多いのですが、記憶に残っていたものを挙げてみました。

◆12.Railsレシピブック 183の技

Railsレシピブック 183の技

Railsレシピブック 183の技

「初めて転職した時、Railsで開発を使用しているチームに配属されました。当時は、PHPmojaviを元にしたフレームワークなどの知識はあったものの、Rubyは未経験という状態だっだったのですが、最初にこの本を渡されて『明日までに読破しておいて』と言われたので、隅々まで読みました。
本当によく使う例が多く示されてたので実用的でした。
すごく分かりやすい単純な例が列挙されていて、見本のソース等も多かったので分かりやすかったです。『コピペすれば webページができる』といった感じが役立ちました。巻末の索引も充実しています。」

◆13.すべてがFになる

すべてがFになる (講談社文庫)

すべてがFになる (講談社文庫)

「ロジカルな考え方をする技術者たちの格好良さに惹かれました。
トリックにもプログラミングの知識が使われていて、これ読んでエンジニア凄いと思いました。
長い年月を経て現在ドラマ化もされてますし、
知名度はある本だとは思います。」


f:id:paiza:20140712194904j:plain paizaのバックエンド、ジャッジ開発をしている吉岡です。
自分の役に立った本を中心に選んだので少し古い本もいくつか有ります。

◆14.UNIX Cプログラミング

UNIX Cプログラミング (NUTSSHELL HANDBOOKS)

UNIX Cプログラミング (NUTSSHELL HANDBOOKS)

LinuxなどUNIX上でのシステムプログラミングについて詳しく書かれています。初めてUNIX系OSでネットワークプログラムを書いたときに読みました。UNIX系だと、結局はシステムコールを理解しないと書きにくいことが多いので役に立ちました。チャットなど、ネットワーク系のプログラムで遊んだりできます。」

◆15.プログラミングPerl

プログラミングPerl〈VOLUME1〉

プログラミングPerl〈VOLUME1〉

「『らくだ本』。初めて使ったLL系言語、Perlについて詳しく書かれています。ちょっとしたプログラムはLL系が書きやすいです。当時はPerlが主流で、最近になってRubyを使い始めるまで、ちょっとしたプログラムはPerlで書いていたので役に立ちました。」

◆16.The Art of Computer Programming Volume1 Fundamental Algorithms Third Edition

The Art of Computer Programming Volume1 Fundamental Algorithms Third Edition 日本語版 (ASCII Addison Wesley Programming Series)

The Art of Computer Programming Volume1 Fundamental Algorithms Third Edition 日本語版 (ASCII Addison Wesley Programming Series)


アルゴリズムについての本。Knuth先生が書いた有名な本で、競技プログラムに触れた後に読んでみました。
ぶ厚い本ですが、基本となるアルゴリズムについて、考え方も含めて丁寧に説明されていて参考になります。」

◆17.RailsによるアジャイルWebアプリケーション開発

RailsによるアジャイルWebアプリケーション開発 第4版

RailsによるアジャイルWebアプリケーション開発 第4版

Railsを初めて学んだ時に読んだ本。Railsが流行っているので使ってみたいと思い読みました。Railsについて一通り書かれていて、流していくとRailsについては一通りわかるので参考になりました。」

◆18.プログラミングコンテストチャレンジブック

プログラミングコンテストチャレンジブック [第2版] ?問題解決のアルゴリズム活用力とコーディングテクニックを鍛える?

プログラミングコンテストチャレンジブック [第2版] ?問題解決のアルゴリズム活用力とコーディングテクニックを鍛える?

競技プログラミングアルゴリズム問題に興味を持ち始めた頃に読んだ本です。
当時は“DPって何?"という状態でしたが、これを読めば競技プログラムに必要な武器は一通り揃います。」

◆19.プログラミング言語C 第2版 ANSI規格準拠

プログラミング言語C 第2版 ANSI規格準拠

プログラミング言語C 第2版 ANSI規格準拠

C言語について、開発者が書いた本C言語初級者の頃、ポインタがよくわかっていなかった時に読みました。古い本ですが、基本が丁寧に説明されており、ポインタの使い方が理解できたのは役に立ちました。」

◆20.Cocoa Programming for Mac OS X (4th Edition)

Cocoa Programming for Mac OS X

Cocoa Programming for Mac OS X

Mac OS X上でのObjective-Cを用いた開発方法について一通り網羅した本。Macで開発がしたいと思った時に読んだ本です。
一通り試しながら読むことで、Mac/iOS上でのObjective-Cによる開発のベースとなる知識がつきました。」

◆21.TCP/IP Illustrated, Volume 1: The Protocols (2nd Edition) (Addison-Wesley Professional Computing Series)

TCP/IP Illustrated, Volume 1: The Protocols (Addison-Wesley Professional Computing Series)

TCP/IP Illustrated, Volume 1: The Protocols (Addison-Wesley Professional Computing Series)

TCP/IPについてを詳しく説明した書籍。TCP/IPについて勉強したときに読んだ本です。TCP/IPプロトロルの詳細や実際の動作について詳しく書かれており、ネットワーク動作の解析をするためにtcpdump/Etherealの結果を読むときには特に役に立っています。」


paizaの開発リーダーをやっている植村です。
最近のテクニカルな分野の情報(Rails等)はやはりネットでの収集がメインとなるので、ちょっと古い本に偏ってしまいましたが、役に立った本を中心にセレクトしてみました。

◆22.J2EEパターン―明暗を分ける設計の戦略

J2EEパターン―明暗を分ける設計の戦略

J2EEパターン―明暗を分ける設計の戦略

  • 作者: ディーパック・アラー,ジョン・クルーピ,ダン・マークス,ウルシステムズ株式会社,中野明彦,佐野祐一郎,宮田泰宏,土屋総一郎
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2002/07
  • メディア: 単行本
  • クリック: 21回
  • この商品を含むブログ (16件) を見る

Javaの自社開発フレームワークが流行っていた頃、僕もとあるシステムのJavaフレームワーク開発に携わっていました。その時に手に取った本です。
この時この本を参考にし、J2EEパターンを意識して設計したことが、プロジェクトの成功に貢献できました(ような気がする……)。
また、様々なデザインパターンを理解するためUMLを学ぶきっかけにもなり、UMLを用いることにより、その他のパターンの理解が早くなりました。」

◆23.JBoss入門

JBoss入門 オープンソース Java・EJB

JBoss入門 オープンソース Java・EJB

オープンソースEJBコンテナの情報を探していた頃、この本を手に取り、Jbossの概要を知ることができました。また、EJB環境を自宅に作成して実際に動かすことができたため、EJBの知識を深めるきっかけとなりました。
実際の現場では開発環境と本番環境が別アプリケーションサーバーの開発環境下で、開発環境用にJbossEJBのモックAPIを作成することで、テストの効率を上げることができました。」

◆24.STRUTS・イン・アクション

STRUTS・イン・アクション

STRUTS・イン・アクション

Strutsでの開発中、机に置いていて役に立ちました。」

◆25.Apacheクックブック―Webサーバ管理者のためのレシピ集

Apacheクックブック―Webサーバ管理者のためのレシピ集

Apacheクックブック―Webサーバ管理者のためのレシピ集

Apacheでの設定のセオリーを教えくれました。」

◆26.Rグラフィックスクックブック ―ggplot2によるグラフ作成のレシピ集

Rグラフィックスクックブック ―ggplot2によるグラフ作成のレシピ集

Rグラフィックスクックブック ―ggplot2によるグラフ作成のレシピ集

「PVやDAUなど各数値を可視化するためには様々なツールが存在しますが、その中でもRを用いたグラフ生成はとっても便利です。ただ、グラフ生成時は普段使わないようなコードを書かなければならないことが多く、この本は図とコードのサンプルが多く、直感的に理解することができました。」

■まとめ

弊社の(私が思う)凄腕エンジニアが選んだ26冊、いかがだったでしょうか。

初心者でも使えそうな本から、かなり渋い本まで多種多様なチョイスとなりました。

役に立った本を聞きに行った時に、「一番役に立ったのはWebで読んだリファレンスだ」「技術は進歩していくからWeb上で最新技術の勉強をした方が良い」と言う人も多くいました。

捗る勉強方法は人それぞれですが、1冊の本を読み込んでじっくり知識を得るというのも良いのではないでしょうか。

ちなみに「本とか読みたくない、それよりコード書きたい」「そして書いたものをすぐ動かしたい」「勉強っぽい勉強は続けられない」などという方は、先日このブログで書きました記事を参考にしてみてください。ゲーム感覚で楽しくコーディングが学べる15サイトをご紹介しております。


初心者も楽しく勉強できる!ゲーム感覚でプログラミングが学べる15サイト - paiza開発日誌

またpaizaでも、オンラインでのラーニング問題を解いてコーディングの学習ができるコンテンツを用意しております。

プログラミングの学習にぜひご活用ください。


paizaは、技術を追い続けることが仕事につながり、スキルのある人がきちんと評価される場を作ることで、日本のITエンジニアの地位向上を目指したいと考えています。

自分のスキルを磨いていきたいと考えている方におすすめなのが「paizaラーニング」。オンラインでプログラミングしながらスキルアップできる入門学習コンテンツです。初心者でも楽しくプログラミングの基本を学ぶことができます。
paiza.jp
そして、paizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。
paiza.jp
スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。
ITプログラマ・エンジニア向け転職・就活・学習サービスのpaiza


プログラミング入門講座|paizaラーニング

PHP入門編Ruby入門編Python入門編Java入門編JavaScript入門編C言語入門編C#入門編アルゴリズム入門編