コミュニケーションアプリ"LINE"のクライアント開発を担当している石川宗寿が執筆した書籍が10月に発売されますのでお知らせいたします。コードの読みやすさの本質を学び、実践するための考え方をマスターできる一冊となっています。
著者である石川に、本書について簡単にインタビューをいたしましたので書籍情報とあわせてご覧ください。
書籍情報
- タイトル:読みやすいコードのガイドライン -持続可能なソフトウェア開発のために
- 出版社:技術評論社
- 発売日:2022/10/22
- 購入サイト:
書籍概要
開発が大規模化・長期化するほど、コードを「読む」コストは増大していきます。そのため「読みやすさ」の向上は、生産性を改善し、プロダクトの成長限界を引き上げる重要な手段と言えるでしょう。
本書は、読みやすさの本質を学び、実践するための考え方をマスターできる一冊です。体系的な理解を実現するため、あらゆる角度から、豊富な例を交えて解説しています。表面的なテクニックではなく、いま目の前にあるコードに最適な改良方法を選び取る力が身に付きます。
- 第1章 可読性の高いコードを書くために
- 第2章 命名
- 第3章 コメント
- 第4章 状態
- 第5章 関数
- 第6章 依存関係
- 第7章 コードレビュー
「このコード、何をしているのかさっぱり分からない...」「仕様を変更しなくてはならないけれど、いったいどこから手を付ければよいのだろうか?」
ソフトウェア開発において、ほとんどの開発者はこのような経験をしたことがあると思います。仕様としてはそこまで複雑でないはずなのに、難解で、罠が多く、少しでも変更を加えると壊れてしまうコードと対峙してきた人も多いでしょう。あるいは、完璧で美しいコードが書けたと思った数ヶ月後に、「なんでこんなコードを書いてしまったのか」と自責の念に駆られたことがあるかもしれません。筆者も同じような経験を何度もしてきました。
どのようなコードが読みやすいのか、開発者はどのような読みにくいコードを書いてしまいがちなのか、また、読みやすいコードを書くためにどんな工夫ができるのか。これらの疑問に対する筆者の答えとして、2019年に「Code readability」というプレゼンテーションを公開しました。このプレゼンテーションには、大規模開発でのコードレビューやリファクタリングを通じて筆者が得た知見がまとめられており、通常はこれをベースに8時間の講義を行っています。本書は、このプレゼンテーションに文脈や具体例を補足し、講義を聞かずとも同じ内容を理解できることを目指したものです。
本書が、ほんの少しでも開発者の助けになるのであれば幸いです。
本書の内容
本書は、読みやすいコードの書き方について、次のような順序と構成でお話しします。
まず、このあとの第一章では読みやすいコードが必要な理由とプログラミング原則について、そして、続く第二章と三章ではコードの中に現れる自然言語としての観点から、名前のつけ方とコメントについて述べます。第四章と五章では、クラスの内部の構造である状態と関数について、第六章でクラス間の構造である依存関係について説明します。そして最後の第七章で、可読性の観点からレビューについて解説します。
※該当書籍の「はじめに」部分の内容を、著者・出版社許諾の上引用しています
著者インタビュー
LINE株式会社 LINE Platform Developmentセンター2 モバイルエクスペリエンス開発室 ディベロッパーエクスペリエンス開発チーム 所属。シニアソフトウェアエンジニアとして、コミュニケーションアプリ"LINE"のAndroid版の開発に従事。"LINE"のソースコードの可読性向上のため、自らリファクタリング・コードレビューをする他、可読性にかかわる開発文化や基盤の構築、教育・採用プロセスの改善なども行う。
――執筆お疲れさまでした。元々はブログシリーズとして、このLINE Engineering Blogでも掲載をしていましたよね。書籍として出版されることとなった経緯を教えてもらえますか?
はい、元々は個人で「読みやすいコードの書き方」を説明するスライドを2019年に作成して、当時の上長に相談をしLINE Engineering Blogで掲載するということになりました。このブログがはてなブックマークで話題になり、結果スライドの閲覧回数もかなり増えました。
※2022年9月現在でスライドは49万ビュー、コードの可読性についてのプレゼンテーションシリーズはこちらです
その後、2020年の夏頃に社内のエンジニアが集う雑談チャネルで「本が勝手にできてほしい」と呟いてみたところ何名か協力者があらわれ、一緒に執筆してくれる協力者が見つかりました。それと同時に、DevRelのメンバーが「よかったら出版社を紹介しますよ」と言ってくれて、本格的に企画がスタートしました。
――ブログを見た方からは「とんでもない量」というコメントもありました。この量を書ききるモチベーションはどこから沸いてきたんですか?最初から英語でスライドが作成されていることにも当時驚きました。
モチベーションでいうと、コードレビューをする時に「まとまった資料があったほうが便利だろう」という考えがあったからです。レビューコメントはある程度パターンが限られているので、まとまった資料を作っておけば、それを参照する形でコメントを簡略化できます。しかも、資料の方には例なども載せやすいので、意図もより正確に伝わりやくすなると考えました。
英語にしたのは、世界中の人に見てほしいと思ったのと、当時の上長が「スライドは英語で作ったほうが沢山の人に読んでもらえるのでは」とアドバイスをしてくれたのがきっかけです。その時に「日本語で読んでもらうためには本という選択肢もあるんじゃない?」と冗談で言われたんですが、現実になるとは思いませんでした。
――元々はスライドだったものを書籍化するにあたり、なにか気づいたことなどありますか?
スライドでは発表時間の都合上、トピック毎の分量を揃えないといけないですが、書籍の場合はそのあたりの自由度が高いという違いがあります。
スライドでは泣く泣く省略した説明も、書籍では思う存分詰め込むことができました。あとは、エンジニアとしては、エッジケースのせいで表現が不正確になるのはすごく気になるので、余談となるコラムやエッジケースを補足する脚注が書けることが楽しかったです。
気をつけたという点では、書籍はスライドと比べて気軽にアップデートできない分、調査は丁寧に行いました。特に、1975年出版の本を入手するのは数ヶ月かかり、非常に苦労しました。
――では最後に、この本を手にとってみたいと感じた方へメッセージをお願いします
この本では、読者が「読みやすいコードを書くための考え方」を身につけることを目指しています。
コードを読みやすくするテクニックを紹介するときは、そのテクニックがどういうケースでどう有効なのかや、逆にどういう場面でどうして使ってはいけないのかを説明し、単なるテクニック集にならないように気をつけています。
プログラミングパラダイムの変遷に伴って、有効なテクニックも形を変えていくというのが私の考えです。
もし、テクニックの表面的な把握でなく、その根底にどういう理屈があるかを理解していれば、新しい情報に対しても適切に取捨選択を行えると思います。
この本のそれぞれの項目が時代遅れなものになったとしても、考え方そのものは応用していけることを目標に執筆しました。
ぜひ、お手にとっていただけると幸いです。