キャリアを支えた本たちを語る 第1回 今すぐにわからなくても、いい本
「エンジニアとしての転機になった本、印象に残っている本」を挙げてもらいながら、当時のキャリアについてもたずねました。第1回目は、CodeGridのシステム開発も手掛けているフロントエンド・エンジニアの宇野です。
はじめに
ピクセルグリッドのフロントエンド・エンジニアの宇野は、編集部にとって「理路整然と、筋道立てて説明できるエンジニア」という印象です。コードレビューの丁寧で的確なフィードバックは社内でも定評があり、物事を進めるときも、やるべきことを一つひとつ確認しながら着実に取り組む姿が見られます。一方で、仕事の困りごとを相談すれば、親身に耳を傾け、ともに考えてくれる一面もあります。
今回はそんな宇野に、「エンジニアとしての転機になった本、印象に残っている本」をテーマに、話を聞いてみました。
(取材、文:編集部)
わからなかった本との再会で感じた成長
まず宇野が挙げてくれたのは『リーダブルコード』でした。技術書の名著ともいえるこの本は、読んだことがある人も多いのではないでしょうか。この本が発売されたのは2012年で、当時からエンジニア界隈の中では話題になっていました。そんな情報を耳にした宇野も、発売されてからわりとすぐ手に取り読んだそうです。
この本は、大まかに言うと「読みやすく理解しやすいコードを書くための具体的なテクニック」が詰まった本です。宇野は、この本のおもしろさを、「書く人のためのコード」ではなく「読む人のためのコードを書こう」と言っているところだと言います。誰か他の人が読むことを前提にコード書くとなると、きれいに書く必要がある。じゃあ「きれいなコード」って何なんだ? ということを考えざるを得ません。
しかし、購入して読んだ当時は、正直、内容にピンと来ていなかったそうです。
「当時、まだピクセルグリッドに入社する前で、ソーシャルゲームの制作会社で、フロントエンド、それもプレゼンテーション層だけを担当していました。どちらかといえばアニメーションとかの泥臭い実装のほうが多くて。そうなっていると、なかなかキチンとした設計みたいなのをするのが難しかったりするんですよね。
今なら、たとえばそういうコードはコンポーネントに閉じ込めて、それ以外の部分に影響が出ないようにする、みたいな工夫をするんでしょうけど、当時はまだそこまで考えが及ばなかった。他の人のコードを読む機会も多くはなかったし。だからリーダブルコードを読んでも、『読みやすいようにって言われても……そういうことを実践できる環境もあるのかぁ』みたいな、どこか他人事みたいな気持ちになっていたと思います」
本に書かれた内容と、自分の仕事とのギャップに気持ちが追いつかなかった宇野。しかし、それからピクセルグリッドに入社し、携わるプロジェクトの内容が、大規模なWebアプリケーションにシフトしていきます。そうすると、これまでとは異なる設計の考え方をする必要がありました。人に教えてもらい、そして自分で学んでいく必要に迫られ、闇雲に学んでいきます。そうして数年経って改めて『リーダブルコード』を読み返してみたとき、その内容が、腑に落ちたと言います。
「読み返してみたら、今までのことってここに全部書いてあったじゃん。もうだいぶ早い段階から知っていたじゃん、みたいな(笑)」
何のためにコードをきれいに書かなければいけないのかと言ったら、それは「読む」から。だから、読みづらかったら、そもそもコードの理解にかかる時間が増えて無駄。だから、読みやすいものを最初から書くようにしましょうよ、ということが身にしみました。
これまでと作るものも変わって、作り方も変わったから、考え方や見え方が違ってきた。振り返ってみると、わからなかった本がわかるようになったというのは、それはもう成長と言えるのではないかと宇野は思いました。これまでやってきたことの断片を繋ぎ合わせるには、時間と経験が必要だったのかもしれません。
- リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック:Dustin Boswell、Trevor Foucher 著 オライリー・ジャパン
苦しさの中で出会った「原則」という共通言語
宇野はピクセルグリッドに入社したあと、これまでのキャリアとは違った内容の案件をいくつも担当します。たとえば、既存プロジェクトのフロントエンドのフレームワークを新しいものに替え、さらにバックエンド担当の会社もバックエンドをリプレースする、いわゆるビッグバンリリースという大掛かりな案件もありました。そのリリースは4年ほどかかり、一言で「大変」とは言えないほど大変だったそうです。
膨大な仕事量に忙殺されると同時に、自分の知識不足も痛感します。ほかのエンジニアに「なんでここ、何回も同じこと書いてんの?」と聞かれても、「いや何でって言われても……」と、何でそれを聞かれるのかがわからないとさえ感じてしまいます。自分が書くコードにも自信がなく、レビューで突っ込まれてもその質問の意図がつかめずに「直します」としか言えない日々。現在の、社内でも的確なコードレビューができるエンジニアとして周囲に頼りにされている宇野と同一人物は思えません。
やらなきゃいけないのに、わからない。そうすると、案件の会話でも日常的な会話でも、自信がなくて控えめな発言になってしまうということが続きます。チームとしては、他のメンバーと対等な立場で動き、マネジメント的な役割を宇野が担っている案件もある中、苦しい状態でした。
そんなとき、宇野が関わっていた案件に同僚がリードエンジニアとしてジョインし、「方針を決めるときには2人で相談して決める」という形になります。これまで実装部分では自分だけが中心で動いてきた宇野にとって、一緒に考えられる相談相手の存在はうれしいものでした。しかし、そのエンジニアと話していると、プログラミングの原理原則がさらっと会話中に出てきます。それは、当時の宇野の知識にはあまりなかったものでした。
「その同僚にそういう知識ってどこで知ったの?、って聞いたときに、いくつか本を教えてもらったんです。『プリンシプル オブ プログラミング』もその一つで、これが多分、一番自分の考え方が変わった本かな。細かい個々の原則がどうこうより、世の中にはこういう原則とか法則っていうものがあるんだっていうことを知った、っていうのが一番大きかったです」
『プリンシプル オブ プログラミング』は、プログラミング世界の原則、視点、習慣、手法、法則などがまとまった本です。SOLID原則やDRY原則、KISS原則など、ある程度のエンジニアなら知っていて当然の普遍的な内容が並びます。それを読んで学ぶにつれ、宇野は「原則」や「法則」というのは、技術の世界において大事な共通言語だと気づきました。DRY原則に反するコードを指摘されても理由がわからなかったのが、原則を知ってからは説明できるようになっていきます。
紹介されている原理原則はうまいネーミングがされていて、それが自然と意識されるように作られているから覚えやすいというのも、宇野の知識の吸収を助けます。そうしてさまざまなプログラミングの原理原則を覚えていくと、エンジニア同士での会話もスムーズに進むようになってきました。
この時期、他にも『新装版 リファクタリング』『レガシーコード改善ガイド』も同僚に勧められました。宇野は、これらで具体的な方法を調べるというより、一通り読んでおき、困ったときに「あの本に書いていないかな?」と読み返したといいます。大規模アプリ開発に挑む宇野にとって、手元にあると安心だったお守り的な存在だったのかもしれません。
- プリンシプル オブ プログラミング 3年目までに身につけたい一生役立つ101の原理原則:上田勲 著 秀和システム
- 新装版 リファクタリング―既存のコードを安全に改善する―: Martin Fowler 著 オーム社
- レガシーコード改善ガイド:マイケル・C・フェザーズ 著
技術書との新しい向き合い方
ピクセルグリッドに入社して数年が経過し、さまざまな案件に関わって経験を積んで「ベテランエンジニア」としてすっかり定着した宇野ですが、これまではなにか目的があって技術書を読むことが多かったと言います。それは、新しい知識を得るというより、今やっていることが正しいかどうかを確認するために技術書を読むことでもありました。
しかし、最近は内容自体に興味を持って読むことも増えてきたそうです。
「最近読んだ本では『プログラマー脳』があります。これは、認知科学に基づいた内容なんですが、そこに興味をもって読んだ本です。読む前は、プログラマー的な考え方とは、みたいな、いわば精神論的な内容なのかと思っていたけど、もっとずっとアカデミックな内容でしたね。コードを書く/読むという行動に対して、脳がどういう働きをしているか、というのが説明されています。
たとえば、コードリーディングの認知プロセスが説明されていたり、初心者とベテランエンジニアでコードを読む速さが違う理由なんかも紹介していて。なんだろう、雑学本に近いといえば近いんですけど、自分としては、考え方を変えるきっかけになりそうな本だなと思っています」
経験を積んできた宇野は、これまでとはまた違ったきっかけで、新しい本と出会うのかもしれません。
しかし、その読み方は変わらなそうです。宇野の読書スタイルを聞いていると、本は一度で完璧に理解しなくてもいいのだと気づかされます。いまはピンとこなくても、頭の片隅に残っていれば、あるとき自然につながり、内容が理解できる。そんな風に、時間をかけて付き合っていける存在として、本は宇野のそばにあり続けていくのではないでしょうか。
- プログラマー脳 ~優れたプログラマーになるための認知科学に基づくアプローチ:Felienne Hermans 著 秀和システム
宇野の読み方スタイル
宇野の読書スタイルの特徴は、「とりあえず一通り読む」こと。最初の時点で内容が腑に落ちなくても、そのまま読み切っておく。そうしておくことで、後になって経験が積み重なったとき、「あの内容ってこれか」とつながる瞬間がやってくるのだそうです。
また、本は基本的に電子書籍ではなく紙の書籍で購入し、読み返すことを前提に手元に置いておきます。気になったところには書き込みもするなど、自分の中で育てていくような読み方をしています。
読んだ内容を定着させるために、「読書記録」を残すのも宇野の習慣のひとつ。気づきや印象に残ったことを記録することで、読んだだけで終わらせず、あとから振り返る助けにもなるといいます。