@kyanny's blog

My thoughts, my life. Views/opinions are my own.

書評: リーダブルコード

オライリー・ジャパン高様より献本いただきました。ありがとうございます。

「The Art of Readable Code」については過去にブログで二度触れたことがありますが*1、日本語訳の出版に際し改めて紹介すると、これはコーディングに上達したい人のための本です。良いコードとは読みやすいコードである、と明確な定義をまず述べて、具体的にどのようなコードが読みやすいのか、読みづらいコードのどこをどう改善すれば読みやすくなるのかを掘り下げていきます。

この本が素晴らしいのは、徹底して具体的かつ実践的なテクニックを取り扱っていることです。ともすれば抽象的で主観的な内容になりがちなコードの読みやすさという話題を扱っていながら、豊富なサンプルコードと的確な改善例を示すことで、誰もが日々のコーディングに取り入れて毎日のコードをより良くしていけるように配慮されています。

本書で紹介されている考え方やテクニックはどれも素晴らしいものですが、一つだけ「説明変数」を取り上げ、読んでみようか迷っている方の背中をそっと押したいと思います。

説明変数とは以下のようなもののことです。

if line.split(':')[0].strip() == "root":
  …
username = line.split(':')[0].strip()
if username == "root":
  …

長くて複雑な式の値をわかりやすい変数に代入して、条件判定部分には式そのものではなく変数を使い、条件部を読み下しやすくする、というテクニックは、すでに自然に利用している人も少なくないと思います。僕がこの部分をよいと思ったのは、テクニックの解説そのものではなく、この方法に「説明変数」という名前をつけたからです。デザインパターンと同じ理由で、共通のボキャブラリとして使える名前をつける意義は重要です。そして、二章で他のどのテクニックよりも名前の選び方を取り上げる本書らしく、「説明変数」という名前もまた、これ以上なく適切です。

本書は「ウェブオペレーション」や「メタプログラミングRuby」などの翻訳で有名な角征典さんの翻訳によるものです。角さんの訳書をまだご覧になっていない方のために紹介すると、まるで気さくな友人が語りかけてくれるような親しみの持てる文体で、本の内容ももちろんのこと、ただ文章を追うことが楽しくて先を読むのが止まらなくなってしまう、そんな文章を書く方です。僕は恥ずかしながら活字があまり得意ではなく、技術書も小説も三割も読めずに積ん読になっているものが少なくないのですが、角さんの訳書に限っては途中で読み飽きるということはありませんでした。

「リーダブルコード」はこの他にもさまざまなテクニックを紹介しています。どれも一行のコード、ひとかたまりのブロック、一つの関数といったごく小さい単位のコードに取り入れることができる、すぐに役立つものばかりです。コーディングに上達したいと思うすべてのプログラマに強くおすすめします。

*1:http://blog.kyanny.me/entry/2011/11/26/190740 http://blog.kyanny.me/entry/2012/04/19/022020