はじめに
僕はWebアプリケーションエンジニアとして新卒入社してからもうすぐ2年になります。フロントエンドやバックエンドの開発経験を通じて、求められた要件を満たす実装はある程度できるようになってきました。ですが、それが 良い設計 かどうかはまだ自分だけでは判断できない部分があり、課題に感じていました。以前「オブジェクト指向設計実践ガイド」を読んだことがあるのですが、途中で断念し、設計に対して苦手意識がありました。そこで、もしかしたら前提となる背景や知識が足りないのでは?と思い、もっと基礎的な「設計の入門書」を読んでみることにしました。
実際に読んだのは以下の3冊です。
- リーダブルコード
- プリンシプルオブプログラミング
- 良いコード/悪いコードで学ぶ設計入門
これらの本を読むことで、良い設計・良いコードとは何なのか、そしてそれを実現するためには何を意識する必要があるかといった設計の入門的な重要な概念について学ぶことができたので紹介します。それぞれの本について、概要と感想を少しずつ書いていきます。
1. リーダブルコード
この本はエンジニアなら一度は聞いたことがあるであろうくらい有名な本だと思います。僕が通っていた大学の研究室にも置いてあり、少し読んだことはありましたが、全部通して読んだことはなかったので、これを機に読んでみました。
この本のテーマは本のタイトルの通り、「読みやすいコード」です。変数名の付け方や、ロジックの書き方、データ構造など、どうしたら読みやすくなるのかそれぞれ書かれています。サンプルコードなどもわかりやすく、読みやすい本だと思いました。また、仕事で開発をするようになった今だからこそ「読みやすいコード」の重要性が共感でき、とても参考になりました。
1.5 節のタイトル「でもやるんだよ」がお気に入りです。
2. プリンシプルオブプログラミング
この本のサブタイトルは「3年目までに身につけたい一生役立つ101の原理原則」となっており、もうすぐ3年目になる自分にぴったりだと思い、読んでみることにしました。この本はプログラミングにおいて重要な様々な原則(プリンシプル)について、それはどんな原則か、なぜ必要なのか、どうすればそれをじつげんできるのか、をそれぞれ簡潔に記載されている本です。DRYのような有名な原則から、UNIX思考、プログラマの3大美徳など、様々な原則が書かれています。
まだ一通り軽く読んだだけなので、これからまた少しずつ読み返し、普段の開発業務に活かしていけるようになりたいと思いました。
3. 良いコード/悪いコードで学ぶ設計入門
最後に読んだのは「ミノ駆動本」とも呼ばれるこの本です。著者は Qiita でも有名な ミノ駆動さん(@MinoDriven
) です。悪いコードがどんな悪影響を及ぼし、それを防ぐためにどうすればいいか、Javaで書かれたサンプルコードを中心に書かれている本です。
ミノ駆動さんの Twitter で投稿されている「クソコード動画」シリーズの解説が途中で出てきたり、クラスの例として「魔法によるヒットポイント回復をカプセル化したクラス」のようなゲームを題材とした説明が書かれていて、わかりやすく、読んでいて楽しかったです。
おわりに
3冊を読み、コードの読みやすさ、変更しやすさなど、チーム開発での重要さを改めてすることができました。これから「読みやすい」「変更しやすい」コードを書くためのより具体的なテクニックとして、「オブジェクト指向設計」や「ドメイン駆動設計」、「クリーンアーキテクチャ」等を学んでいきたいと思います。
また、今回紹介した3冊は、僕のように「いきなりオブジェクト指向実践ガイドは難しい...」という方でも読みやすく、さらにそこから発展していけると思うので、これから設計の勉強をしていきたいと考えている方におすすめしたいです。