システムデザイン

読書感想シェア:「良いコード/悪いコードで学ぶ設計入門」

こんにちは。AMBLでWebエンジニアをしている、ぴきたです。
好きな色は、濃藍です。

普段は、保険会社のお客様のWeb申込みシステムの開発でLaravelを書いたり、フロントエンドの開発業務支援でVue3・TypeScriptを使ったアプリケーションの開発を担当しています。

既に読んでいる方も多いかもしれませんが、ITエンジニア本大賞2023技術書大賞を受賞した『良いコード/悪いコードで学ぶ設計入門 保守しやすい 成長し続けるコードの書き方』の読感を、さらっとAMBLのバックエンドエンジニアのチャンネルにシェアしたら、COLORSの記事を依頼されたので、私の感想をシェアします。

本書の紹介



タイトル:良いコード/悪いコードで学ぶ設計入門 保守しやすい 成長し続けるコードの書き方
発売日:2022年4月30日
価格:単行本¥3,278、Kindle版¥3,114
筆者:仙塲 大也
内容:Amazonの紹介文より
良いコードが書けるようになる、ソフトウェア設計の入門書
本書は、より成長させやすいコードの書き方と設計を学ぶ入門書です。
システム開発では、ソフトウェアの変更が難しくなる事態が頻発します。
コードの可読性が低く調査に時間がかかる、
コードの影響範囲が不明で変更すると動かなくなる、新機能を追加したいがどこに実装すればいいかわからない……。
変更しづらいコードは、成長できないコードです。
ビジネスの進化への追随や、機能の改善が難しくなります。
成長できないコードの問題を、設計で解決します。

(こんな方におすすめ)
・ コードの設計スキルに興味がある人
・ 日々、悪いコードと向き合っていて改善したい人
・より良いコードを書きたい人

Amazon

読書のきっかけと感想

ーー私がこの本を手に取ったきっかけ

エンジニアとして3年ほど経験を重ねてきたので、複雑なものでなければある程度実装ができるようになってきました。
この3年の間に、どこに何があるのかが分からないソースコードや、1つ修正したら予想外のところで影響が出るソースコード、なんかもう色々ひっくるめて可読性の低いソースコード、そういったものに多々遭遇してきました。
「どうすれば、そのようなソースコードを生み出さない仕組みを作れるのか?」
ぼんやりとそんなことを考えながら過ごしていた時に、本屋でこちらの書籍を目にして数ページパラパラとめくった私は、すぐに購入を決意しました。

カオスなソースコードを読むのは(誰でも)辛くなりますが、私はどう修正すればもっと良くなるのかと考えたり、実際に直したりすることに喜びを見出す人間です。そんな私にとって「悪いコードをこうしていけば良くなるよ」という本書は、そんなわくわくを思い出させてくれながら、エンジニアとしてもう一歩ステップアップする力をつけさせてくれるだろう、とそんな風に直感しました。

ーー良いコード/悪いコードとは

題名にある「良いコード」「悪いコード」を以下のように解釈しています。

  • 良いコード:保守しやすい。読みやすいソースコード。バグを生み出しにくい構造を持っている
  • 悪いコード:保守しにくい。読みにくいソースコード。バグを生み出しやすい構造を持っている。本文内では悪魔に例えられている



ーー読後の感想



本書「良いコード/悪いコードで学ぶ設計入門」は、「リーダブルコード」(Dustin Boswell (著), Trevor Foucher (著), 須藤 功平 (解説), 角 征典 (翻訳))ような、「読みやすいコードの書き方」という視点も含めた「設計」の話になっているので、実際にソースコードを書く人向けの書籍です。
プログラミング言語やフレームワークを利用して、ある程度の機能を実装できるようになった、そこからもう一歩成長していきたいと考えている人に読んでほしいなと思いました。

この本から得られた、自分にとって大きな学びは「クラスの使い方」です。
クラスなどのオブジェクト指向プログラミングについては、エンジニアのキャリアを始めたばかりのころに一応基本を学び、その後も折に触れてインプットはしています。しかしながら、「結局この機能はいつ・どう使えばいいの?」ということを、なかなか実感として身につけられないままでいました。

さらにはLaravelなどのフレームワークを使っていると、クラスというものをよく分かっていなくても、クラスを有効活用できなくても、必要な機能を実装することができてしまいます(複雑さを一手に担ってくれるのがフレームワークの良さだと思うのでフレームワークを使うことが悪いと言っているわけではありません)。

しかしながら本書では悪魔のようなコードを退治するために、クラスなどのオブジェクト指向プログラミングの機能を活用します(主にクラス)。クラス・コンストラクタ・プロパティ・アクセス権の有効活用の方法を本書を通して学ぶことができました。
「どういう時にこの機能を使えばいいのか」ということを知れたことで、実践に耐えうる知識となったと思います。

本書はまず駄目なソースコードを提示し、次に何を使ってどう解決するのか、ということを示してくれるため、段階的にインプットすることができます。また、一つ一つのセクションが短いため、気軽に読み進めることができるのも良かったです。

読み進めるうちに、私は駄目なソースコード例で過去の自分のソースコードを想起し、この本を読みながら何度も「あの頃のソースコードを修正させてくれ…」と思ったものです。駄目な例が何故駄目か、ということを踏まえた上で改善案を提示してくれるため、納得感を持って改善に取り組む意欲が湧いてきました。

この本の面白い点は、先述のような技術的な話だけではなく、悪魔のようなコードを生み出してしまう「文化」にも触れられている点です。例えば設計の軽視、コミュニケーション不足、心理的安全の無い組織。こういった文化があるとソフトウェアの品質に悪影響を及ぼすとされています。

プログラミングの技術が不足しているから悪魔のようなコードを生み出しているのであれば、一人ひとりが技術を身につければいいだけです。でも事はそんなに単純ではありません。
多くのソフトウェアは使い続けられること、機能を追加・改修することが前提だと思います。また、最初に作った人が保守をしないことも珍しくないと思います。
だからこそ保守しやすい「良いコード」で作り続ける努力が必要なのです。

チームで良いコードを作るためには、どういうコードであれば保守がしやすく、バグを生み出しにくいのか、という共通の認識をチームに浸透させる必要があります。端的に言えば、周囲を巻き込むことなしに良いコードを設計し、作り上げることはできないということです。

本書に書かれているノウハウを一人だけで実践しても、それはソースコードの全体における一部に過ぎません。一人でやっているだけでは「良いコードを作る設計」に到達することは難しいのです。そんな現実もきちんと説明してくれるのがこの本の魅力だと思います。

このような考えから、AMBL全社で良いコード・悪いコードについて同じ認識を持てるようになれば、と社内のエンジニアに共有しました。
エンジニアの皆さんの参考になれたら嬉しいです。
最後までお読みいただき、ありがとうございました。



あなたも一緒にAMBLで働いてみませんか?

AMBLは事業拡大に伴い、一緒に働く仲間を通年で募集しています。
データサイエンティスト、Webアプリケーションエンジニア、AWSエンジニア、ITコンサルタント、サービス運用エンジニアなどさまざまな職種とポジションで、自分の色を出してくださる方をお待ちしています。ご興味のある方は、採用サイトもご覧ください。

●AMBL採用ページ
-メンバーインタビュー (1日の仕事の流れ/やりがい/仕事内容)
-プロジェクトストーリー (プロジェクトでの実績/苦労エピソード)

●募集ページ
プリセールスエンジニア/ クリエイターデータサイエンティスト /営業・コンサルタント /コーポレート /サービス企画 /教育担当

ABOUT ME
ぴきた
LaravelやVueを使ったアプリケーション開発などをしている人。最近はTypeScriptを勉強中。推しペンギンはコウテイペンギン