Shelfy
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
初心者プログラミング

【要約・書評】『リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)』の評判・おすすめポイント

ダスティン・ボズウェル|オライリージャパン|2012-06-22|237ページ

5.0
(4件)

この本を一言で言うと

「コードは他の人が理解するのにかかる時間を最小化するように書く」——エンジニア必読のコーディング思想書

この本の概要

本書は2012年刊行にもかかわらず、今なお「エンジニア必読書」として挙げられ続けている名著です。「コードは動けばいい」から「コードは読まれるものだ」という意識転換を促し、他の人(数ヶ月後の自分を含む)が理解しやすいコードを書くための原則とテクニックを237ページにまとめています。 命名規則・コメントの書き方・制御フローのシンプル化・変数の使い方・コードの分割など、日常のコーディングで直面するテーマを具体的なBefore/After形式で解説しています。「なんでも1行にしてしまう」危険性や、「適切なコメントとは何か」という判断基準を、ユーモアある挿絵とともに平易な言葉で説明しています。 著者はDustin Boswell、Trevor Foucherの両名で、日本語版の翻訳は角征典氏が担当。Amazonレビューでは「今でも色褪せない内容」「エンジニアの共通言語・共通の話題としてお勧め」「全てのエンジニアに贈るコーディングのバイブル」という言葉が並びます。 言語に依存しない内容のため、Java・Python・C・JavaScriptどの言語を使っているエンジニアにも共通して適用できます。コードレビューの場で「リーダブルコードに書いてある」と引用される場面が多く、チームの共通言語として本書を導入する組織も多い。230ページ程度の薄さで、週末の読書で一気に読める手軽さも支持される理由のひとつです。

「なぜそのコードがダメなのか」を言語化できるようになった話

エンジニア3年目になって、コードレビューに参加するようになった。先輩のコードを見て「なんか読みにくい」と感じることがあっても、それをうまく言語化できずにいた。「変数名がわかりにくい」とは言えても、なぜわかりにくいのか、どうすればいいのかを具体的に伝えられない。 この本を読んで最初に思ったのは、「自分が漠然と感じていたことに全部名前と説明がついている」ということだった。 命名の章が特に刺さった。変数名や関数名に「どれだけの情報を詰め込むか」という問いに対して、「短ければいい」でも「長ければいい」でもなく、「意味が正確に伝わる最短の長さにする」という基準が示されている。`tmp`より`file_to_remove`、`get`より`fetchFromDatabase`——こういう具体的な対比が100例以上出てくる。 コメントの章も目から鱗だった。「コードから明らかなことをコメントで繰り返すな」「コメントは"なぜ"を書くためにある」という原則を読んだとき、自分の書いてきたコメントの大半が無意味だったと気づいた。`i = i + 1; // iを1増やす` みたいなやつ、全部消せる。 制御フローの章は実務で一番使っている。早期returnについての説明が特によかった。ネストが深くなっているコードは、早期returnやガード節を使うことでフラットにできる——この考え方を知ってから、自分のコードの見通しが明らかに良くなった。 三項演算子の話も面白かった。「ワンライナーはスマートに見えるが、後から読むと理解しがたい」という指摘は、自分も覚えがある。「for文を1行にまとめたコード」を書いて得意顔になっていたことを思い出すと、少し恥ずかしくなる。 2012年刊行でも色褪せない理由は、内容が特定の言語や技術スタックに依存していないからだと思う。命名・コメント・制御フローという問題はJavaでもPythonでもGoでも同じように存在する。実際、今の職場で使っているTypeScriptで読み返しても、全て適用できる内容だった。 気になる点が一つあるとすれば、挿絵のテイストが少し古く感じること。内容への影響はないが、「2012年の本だな」と感じる瞬間がある。それでも、内容の鮮度は全く落ちていない。 職場の後輩には入社したらまず読んでもらっている。「チームの共通言語」として本書を置いておくと、コードレビューのコメントに「3章の早期returnのパターン使えない?」みたいな引用ができて会話が効率化される。その意味でも、チームに1冊置いておきたい本です。

エンジニア歴3年・中堅Web開発者。コードは書けるが「なぜこれが読みにくいのか」を説明できず、コードレビューで漠然と「もう少し整理してほしい」と言われることが多い。

この本で学べること

「コードは読まれるために書く」という意識転換

コードは動けばいいという発想から、他の人が理解しやすいように書くという根本的な姿勢の転換を促す。

命名・コメント・制御フロー・変数をBefore/After形式で解説

日常のコーディングで直面するテーマを具体的な対比形式で説明し、「なぜこの書き方がいいのか」を明確に示す。

言語非依存の普遍的なコーディング原則

Java・Python・C・JavaScriptなど言語問わず適用できる内容で、どの技術スタックを使うエンジニアにも共通して役立つ。

237ページの読みやすい分量と豊富な具体例

週末で読み切れるボリュームに100以上の具体例を凝縮しており、すぐに実践できる知識が身につく。

良い点・気になる点

良い点

  • 2012年刊行ながら今も色褪せない普遍的なコーディング原則が詰まっている
  • 言語依存しない内容でどのエンジニアにも適用できる
  • 237ページと薄く、週末で一気に読める手軽さ
  • チームのコードレビューの共通言語として導入しやすい

気になる点

  • Kindleなどの電子書籍版がなく紙書籍のみ
  • 2012年刊行のため一部サンプルコードに古さを感じる箇所がある

みんなの評判・口コミ

ゆうと

EC企業マーケター

5.0

今でも色褪せない内容。エンジニアを始めて3年経って読み返しても、毎回新しい発見がある。命名規則の章は特に読むたびに実務に活かせる気づきがある。

t
taro

MLエンジニア

4.0

エンジニアの共通言語・共通の話題として職場全員に読んでもらいたい本。コードレビューの際に本書を引用することで会話がスムーズになった。挿絵もユーモアがあって楽しく読める。

n
nao

バックエンドエンジニア

5.0

全てのエンジニアに贈るコーディングのバイブル。これを読んでからコードの書き方が根本的に変わった。早期returnと適切なコメントの原則は今も毎日実践している。

y
yui

フロントエンドエンジニア

5.0

初心者必須の本として紹介されていたが、3年目の今読んでも新たな発見がある。挿絵もユーモアがあって初学者でも楽しめる。言語非依存の内容が本書の最大の強みだと思う。

こんな人におすすめ

コードレビューで「読みにくい」と言われても理由がわからない人

命名・コメント・制御フローの観点で「なぜ読みにくいのか」を言語化するための語彙と基準が身につく。

チームのコーディング品質を上げたいテックリード

本書をチームの共通言語として導入することで、コードレビューのフィードバックの質と効率が上がる。

プログラミングを始めたばかりで「良いコードの書き方」を学びたい初心者

技術的に難しい内容はなく、コーディングの姿勢として早い段階で身につけるべき原則が平易に書かれている。

複数言語をまたいで使うエンジニア

言語に依存しない原則が中心のため、Pythonを書く日もJavaScriptを書く日も同じ考え方を適用できる。

よくある質問

Q. どの言語向けの本ですか?
A. 特定の言語に依存しない内容です。Python・Java・C・JavaScript・Rubyなどどの言語でも共通して適用できる原則を扱っています。
Q. プログラミング初心者でも読めますか?
A. はい。難しい技術的な内容はなく、コードの書き方の「思想」を説明した本なので、プログラミングを始めたばかりの方でも読めます。ただし、ある程度コードを書いた経験があると内容がより具体的に刺さります。
Q. Kindle版は入手できますか?
A. 現時点では電子書籍版は提供されていません。紙書籍のみとなっています。
Q. 2012年刊行ですが内容は古くないですか?
A. 命名・コメント・制御フローという問題は言語や時代を超えた普遍的な課題であるため、2012年刊行でも内容の価値は変わりません。多くの現役エンジニアが「今でも色褪せない」と評価しています。
Q. チームで導入するには何冊必要ですか?
A. 各自が手元に1冊持つことでコードレビュー時に引用しやすくなります。チームでの読書会に使うという活用事例も多く報告されています。
Q. この本の次に読むべき本は何ですか?
A. コーディング原則をさらに深めたい方には『Clean Code』(Robert C. Martin著)、設計レベルに踏み込みたい方には『リファクタリング』(Martin Fowler著)がよく読まれています。
Q. コードレビューの改善に役立ちますか?
A. 非常に役立ちます。本書はチームのコードレビューの共通言語として導入している組織も多く、「〇章のパターンを使えないか」という形でレビューコメントの質が上がります。

プログラミング学習ロードマップ

効率的な学習順序がわかるロードマップを無料でダウンロード

※ 登録いただいたメールアドレスは資料送付にのみ使用します