Findy Engineer Lab

エンジニアの"ちょい先"を考えるメディア

あなたのキャリアに影響を与えた本は何ですか? 著名エンジニアの方々に聞いてみた【第三弾】

書籍には、特定領域の専門家たちが習得してきた知識のエッセンスが詰まっています。だからこそ「本を読むこと」は、ITエンジニアがスキルを向上させるうえで効果的な取り組みと言えます。では、著名エンジニアたちはこれまでどのような書籍を読み、そこから何を学んできたのでしょうか。今回は8人の著名なエンジニアのキャリアに影響を与えた“珠玉の書籍”を、ご本人にまつわるエピソードとともに紹介してもらいました。


*…人名の50音順に掲載。回答者は敬称略。

遠藤侑介が紹介『あなたの知らない超絶技巧プログラミングの世界』

自分のキャリアを変えた本というと、『マイコンBASICマガジン』(電波新聞社)と『Rubyソースコード完全解説 Ruby Hacking Guide』(インプレス)が浮かびました。前者でプログラミングを習得し、後者でインタプリタ実装を学んだので、人生に大きな影響を受けました。ただ、どちらも時代背景と強く結びついているので、今から同じような体験を得るならより良い類書がありそうな気もします。

そこで今回はあえて、自著を紹介します。
『あなたの知らない超絶技巧プログラミングの世界』(技術評論社)は、著者(私です)がIOCCCTRICKといったコンテストなどに向けて書いてきた「ジョークプログラム」をたくさん紹介・解説しています。

たとえば、プログラムサイズが80x25に収まっている流体シミュレータASCII fluid dynamicsや、コード中に埋め込まれた地球儀が実行のたびに回転するQlobe 、128のプログラミング言語を一周して元のプログラムを出力するQuineリレーなど。 なんとなく楽しそうと思った方は気楽にお読みください。読んでも実利は得られませんが、他にはない体験ができることだけは自信があります。

役に立たないニッチな趣味でも突き詰めていけば本を書くような機会が得られること、また、本を書くことで多くの新たな出会いに恵まれることを学びました。特に若いうちは、短期的な効率や実利ばかりにこだわらず、周囲の意見に流され過ぎず、自分が面白いと思えることにこだわり続けると良いことがあるかもしれません(ないかもしれません)。

【プロフィール】
STORES株式会社で働くフルタイムRubyコミッター。OSSであるプログラミング言語Rubyの開発運営に業務として取り組んでいる。これまでの主な貢献は、キーワード引数の設計と実装(Ruby 2.0、Ruby 3.0)、コードカバレッジ測定機能(Ruby 1.9)、型推論器TypeProf(Ruby 3.0)など。
GitHub:mame X:@mametter

笹田耕一が紹介『Rubyソースコード完全解説 Ruby Hacking Guide』

『Rubyソースコード完全解説 Ruby Hacking Guide』(インプレス)は2002年に出版された、Ruby 1.7.3のソースコードをタイトル通り完全に解説する書籍です。実際に利用される言語処理系のソースコードを500ページ以上のボリュームで丁寧に説明するというのは、20年たった今でも稀有な書籍だと思います。また、すべての行を解説するには500ページでも足りないので、大切なところを絞りながら読む、いわゆるソースコードを読む技術も紹介しています。

本書が発売されると、「これは面白い本が出版されたぞ」ということで、有志による読書会が企画され、「これは面白そうな読書会だな」と参加したのが、私のRubyインタプリタ開発者というキャリアのきっかけでした。1人ではくじけそうな分厚さですが、読書会のおかげで完読できました。そして、これならもっといいものができそう、と思ったことが、Ruby 1.9で採用されたRuby用仮想マシンを作り始めたきっかけになりました。20年もたつと、Rubyを取り巻く環境もだいぶ変わりましたが、Rubyインタプリタの奥深いところでは、今もこのころのソースコードが多く動いています(評価器は全部変えちゃったけど)。

『Rubyソースコード完全解説』サポートページにて、本書の全文が公開されています。

【プロフィール】
大学在学時からRuby向け仮想マシンYARVを開発し、2007年に「Ruby 1.9」に採用される。以降、Rubyコミッターとして、言語処理系の高速化に従事し、仮想マシンやガベージコレクションの性能改善、並行並列処理機能の実装などを行う。Rubyアソシエーション理事(2012年〜現任)。博士(情報理工学)。
GitHub:ko1 X:@_ko1

竹迫良範が紹介『ハッカー・プログラミング大全』

この本が発刊された2001年9月は忘れもしない9.11と、Code RedやNimdaというWindowsサーバーに感染するコンピューターウイルスが社会問題になっていたときでした。当時、私は地方のWebアプリケーションプログラマーで、出張中の新幹線の中でこの本を読みました。ニュースでは報道されない、リモートからOSをクラッキングする攻撃技術と原理が日本語で丁寧に詳しく書かれていて衝撃を受け、セキュリティ業界に興味を持つきっかけとなった本です。

バッファオーバーフローで任意コードが実行されるという現象の理解にはCPUの機械語の知識が必要でしたが、高校生の頃に『月刊Oh! FM TOWNS』(日本ソフトバンク、1991年-1996年)と、赤本と呼ばれていた『FM TOWNSテクニカルデータブック』(アスキー、1989年)を購読して隅から隅まで読み込んで、富士通独自のハードウェアを直接叩くゲームプログラミングに熱中していたので、そのときの知識と経験が10年越しで役に立ったのです。

20年以上前に読んだ本で今でも役に立っている本は、『80386プログラミング』(工学社、1988年)、『プログラミング言語C 第2版』(共立出版、1989年)、『UNIXネットワークプログラミング Vol.1』(トッパン、1999年)、『詳解TCP/IP〈Vol.2〉実装』(ピアソンエデュケーション、2002年)です。今は最新のツールやトレンド・技術の変化がとても速い時代ですが、CPUやOS・ネットワークの基本的な動作原理はあまり変わっていないと言えるでしょう。

【プロフィール】
広島市立大学情報科学部卒業。日本語検索エンジンNamazu for Win32のオープンソース開発に参加し、独立系ITベンチャーにて大企業向けパッケージソフトの開発を経て、サイボウズ・ラボに入社、Shibuya.pm二代目リーダー、SECCON初代実行委員長を務める。2015年、株式会社リクルートに入社し、新規プロダクト開発と内製エンジニア組織の強化に携わる。高知工業高等専門学校客員教授、IPA未踏IT人材発掘・育成事業プロジェクトマネージャー、セキュリティ・キャンプ講師総合主査として若手IT人材育成に従事。
GitHub:takesako X:@takesako

鳥井雪が紹介『Rubyのしくみ -Ruby Under a Microscope-』

Rubyという言語が解釈されて実際にコンピューター上で動くための仕組みを、C言語にはあまり触れず、豊富な図を使って解説する本です。

原著で読んで面白かったのでさわりをスライドにまとめて社内で発表し、資料を公開したところ、ちょうどオーム社で翻訳プロジェクトが進んでいたため、翻訳レビューとして携わることになりました。初めての翻訳レビューでしたが、それ以降クセに(?)なって志願したり依頼されたりといくつか引き受けています。

いつもRuby/Railsプログラマーとして使っているRubyという言語そのものへの興味を刺激し、内部の仕組みを知ることの楽しさの扉を開いてくれた一冊です。

【プロフィール】
株式会社万葉所属プログラマー。自著に『ユウと魔法のプログラミング・ノート』(オライリー・ジャパン)。翻訳書にリンダ・リウカス著『ルビィのぼうけん』シリーズ(翔泳社)、レシュマ・サウジャニ著『Girls Who Code 女の子の未来をひらくプログラミング』(日経BP)、デイブ・トーマス著『プログラミングElixir』(オーム社、笹田耕一と共訳)など。
X:@yotii23

廣戸裕大(hiroppy)が紹介『プログラミングコンテストチャレンジブック』

競技プログラミング界のバイブルである『プログラミングコンテストチャレンジブック』(マイナビ、通称:蟻本)は自分のキャリアに影響を与えた一冊です。初版発行が2010年の私が大学に入学した年で、本の難易度が高く必死に勉強したのを覚えています。この本はプログラミングコンテストでよく利用するアルゴリズムを難易度順に紹介しています。

この本との出会いは、大学1年生の頃に入った研究室の先輩がTopcoderなどでとても強く、そこで競技プログラミングという存在を教えてもらったことでした。最初はすんなり進めたのですが、動的計画法のバリエーションの多さに苦戦しつつ、この本を横に置きながらAOJやPOJにある問題を何問も解いていました。その後に競技プログラミング部に入り、ICPCに出たりオンラインコンテストに参加したりしていました。

もう10年以上競技プログラミングから離れてしまっているので、アルゴリズムを何も見ずに書ける自信はないですが、それでも名前とどういうものなのかを知っていることに価値があります。競技プログラミングに熱中できたおかげで、特にグラフをはじめとしたアルゴリズムの知識は未だにOSSや仕事でとても役に立っています。

今は昔よりも多くの競技プログラミングの本が出版されているので、興味があればぜひ読んでコンテストに参加してみてください。

【プロフィール】
株式会社Yuimedi VPoE、webpackコミッター。
Webパフォーマンスと画像処理に興味がある。
GitHub:hiroppy X:@about_hiroppy

ミノ駆動が紹介『リファクタリング』

マーティン・ファウラー氏の『リファクタリング』(オーム社)は、私がアプリケーションアーキテクトとしての道を歩むきっかけとなり、劇的に運命を変えた書籍です。

今から十数年前、とある開発プロジェクトに従事した際、複雑で混乱したコードに苦しめられていました。現場では、バグを修正すると全く別の箇所でバグが発生する、連鎖的にバグが複数発生するなど、とにかくバグが頻発するありさまでした。プロジェクトは炎上し、メンバー全員の長時間残業が常態化していました。

疲れ果て、悩みながらも、「バグ頻発の原因はなんだろう」「技術的に何か問題があるのでは」と、当時の私は考えるようになっていました。ある日、何か良い技術書はないかなと、職場の奥の誰も触らなさそうな本棚をあさっていたところ、一冊の本を偶然手にしました。『リファクタリング』です。

リファクタリングとは、外から見た挙動を変えずに、ロジック構造を整理することです。コードが理解しやすくなる、バグを埋め込みにくくなる効果があります。リファクタリングのさまざまなテクニックを私はこの本で学びました。

リファクタリングによってコードがきれいに整頓されていくさまがあまりに面白く、ドメイン駆動設計などさまざまな設計関連の知見を広げ深める契機にもなりました。

この本を手に取るより前は、突出したスキルなど私にはなく、「凡庸なプログラマーで一生終わるんだろうな」と諦観していました。しかしこの本との出会いによって設計スキルが一気に開花。近年は『良いコード/悪いコードで学ぶ設計入門』(技術評論社)の執筆機会に恵まれ、さらにITエンジニア本大賞受賞にまで至りました。

皆さんもキャリアを変える一冊に出会えることを願っています。

【プロフィール】
大手電機からWeb業界へ転身し、アプリケーションアーキテクトとしてリファクタリングや設計全般を推進する業務に従事。暇さえあれば脳内でリファクタリングしている。ITエンジニア本大賞2023技術書部門大賞を受賞した『良いコード/悪いコードで学ぶ設計入門』著者。登壇実績多数。Developers Summitベストスピーカー賞など受賞多数。悪しきコードによる凄惨な弊害を風刺した『クソコード動画』シリーズの作者。
X :@MinoDriven

めもりーが紹介『ブラック・ジャック』

多くの方がご存じの『ブラック・ジャック』(手塚プロダクション)。医師免許を持たないブラック・ジャックは、高額な医療費を患者に請求しつつも、見事なメスさばきで難治と言われるものでも治してしまうほどの腕前を持つ闇医者です。

私が小学生の時くらいにアニメが放映されており、そこからブラック・ジャックのことを知りました。中学に進学した頃でしょうか。もともと漫画や本などを読むのが極度に苦手だったのですが、たまたま学校の図書室に『ブラック・ジャック』の原作漫画が置いてあったのです。どうしても読みたいと思い、親や友人たちに漫画の読み方を教えてもらいました。

ブラック・ジャックは肩書やルールに縛られず、自分の技術を信じて患者を治そうとするのが当時の私には刺さりました。エンジニアとして生きていく覚悟というのは当時はまだそこまで明確ではなかったものの「ブラック・ジャックが人を救うなら、私は技術を磨いてコンピューターを救いたい」とふんわり思っていました。

技術に分け隔てなくもっともっと強くなりたい。もっともっと自分の知識を増やしたい。そういうハッカー心のようなものが芽生えてきたのです。こういった背景もあったからこそ、高校に進学した先に待ち受ける過酷なエンジニアバイトを乗り越えられたのかもしれません。

今ではフロントエンドもバックエンドもインフラもマネジメント業も分け隔てなくやっていて、趣味でJVMやRubyVMを実装できるようにもなりました。今の私は技術者としての「ブラック・ジャック」に一歩でも近づけているでしょうか…。

【プロフィール】
複数のベンチャー企業やスタートアップ企業、株式会社GameWithやBASE株式会社といった上場企業でソフトウエアエンジニアとしてサービス開発を経験。2020年4月に知育玩具サブスクリプションサービスを提供する会社にエンジニア正社員1人目として入社。2022年1月に執行役員CTOに就任し、エンジニア20人ほどの組織を作り上げる。2023年7月より株式会社エンペイにソフトウエアエンジニアとして入社し、同年10月よりエンジニアリングマネージャーを担う。
GitHub:m3m0r7 X:@m3m0r7

motemenが紹介『インターフェイス指向設計』

インターフェイスの観点からプログラムの設計について解説する本です。技術書にしては薄いほう。概念的な話というよりは実践的な話が中心で読みやすかった覚えがあります。

職業プログラマーとして駆け出しだったころは、ただひたすらに実装にのめり込むことがプログラミングだと思っていました。そうして作り上げたものは、実際に設計として見ればお粗末で、一緒に開発するメンバーを苦しめていたことに気づいたとき、この本に出会いました。

実装のテクニックうんぬんではなく、インターフェイスが果たすべき契約やそのトレードオフについての議論をなぞることで、プログラムの設計をうまくやっていく、少なくとも考えていくための手掛かりを得ることができました。何度も読む本ではありませんが、エンジニアとしての階段を一段上る手助けをしてくれた本だと思っています。

余談ですが、この本は会社の本棚にあったもので、先に読んでいた先輩の書き込みがあったのもとても良い体験でした。

【プロフィール】
2008年、アプリケーションエンジニアとして株式会社はてなに新卒入社。うごメモはてな、Mackerelをはじめ、はてなの新サービス開発に数多く携わる。2012年より技術グループ チーフエンジニア、2016年にCTOに就任。 現在は技術組織のマネジメントに携わっている。
GitHub: motemen X: @motemen

編集:中薗昴