kmuto’s blog

はてな社でMackerel CREをやっています。料理と旅行といろんなIT技術

コードリーディングが好きだ

昔からコンピュータプログラミングは好きだけど、「作る」ことよりも、「コードを読む」ことのほうが好きだ。

もともと『マイコンBASICマガジン』を愛読して育った世代で、かつマイナーで市販ゲームの少ないマイコンのユーザーだったため、ほかの機種のBASICコードを見て学びながら移植を試みたりしていた(機能が違いすぎて、たいていは挫折するのだが)。

フリーソフトウェアOSSの世界は圧倒的な広がりだった。最初は猿のようにconfigure、make、make installをひたすら実行するだけだったのから、徐々に不具合の調査・修正やカスタマイズをしてみたり、何か自分が作るときに参考になりそうなアルゴリズムを読み学んで役立てたりするようになった。

技術書を書いたり監修したりするにあたっても、裏付けのためにコードをよく読んでいた。難しいところはコードでもやっぱり難しげだったり、とても技巧的だったりする。

いろいろな言語を学ぶのは楽しいけれども、入門書を見てもなかなか血肉にはならない体質だ。誰かが作ったコードを自分自身が扱う立場になることで、読み解きながら言語の本質を掴んでいく。Ruby言語はRe:VIEWを通して学んでいった。

コードリーディングの分野では『Code Reading』『Write Great Code』といった名著の翻訳編集制作にも関わった。もうずいぶん古い本だが、思い出深い仕事のひとつだ。

tatsu-zine.com tatsu-zine.com

今の仕事は自社サービスの利用ユーザーの成功を支援することで、コードリーディングは必須要件ではない。

でも、Scala、Go、TypeScript/Reactといったこれまで自分がなじんでこなかった言語で作られたコードを読み解くときは、いつもわくわくする。

それに、ユーザーとの会話の中で、公開ドキュメントに書かれているものだけでは読み取れない機能詳細や制限事項を想起したり、あるいは「おそらくあの辺をちょっと拡張すれば実現できるのではないか」という勘を働かせたりといった活用場面はそれなりにあるものだ。

今の仕事で自分が最も楽しく感じていることってなんだろうね、ということを考えつつ、つらつらと。