📚

社内の輪読会で読んだ書籍3冊がとても良かったので紹介してみる

2020/09/20に公開

こんにちは!むらってぃーです。
Zenn初投稿は、ソフトウェアエンジニアが中心となって行われた輪読会で読んだ書籍のお話です。
なお、輪読会の進め方の話は今回は行いません。

輪読会をドライブしてくださったPMさん、そしてエンジニアの皆さん感謝感謝です😄

輪読会のきっかけ

社内で開発しているシステムの歴史がそこそこ長く、物によってはそれなりに負債がある状態でした。

そこで、今後くるべき新規サービスや大型の開発に向けて、エンジニア全体のレベルアップを図ろうといったことがきっかけです。

輪読会で解決する領域

クラウドインフラやミドルウェアのチューニングなど、バックエンドの中でも特定の技術に対するスペシャリストは社内に複数人いる状態だったので、その辺りは大きな問題はありませんでした。

日常的な会話の中で上がっていた目立った問題として、下記のものがあった状態です。

  • フレームワークに縛られてて言語のバージョンアップができず辛い
  • コンポーネントの分け方がうまくいっていない部分があり、機能追加やデータの持たせ方を考えるのが辛い
  • レイヤー分けがうまくいっていない部分があり、ビジネスロジック、またはインフラと通信する部分の処理を探すまでに膨大な時間がかかる

というのもあり、解決したい領域は社内エンジニアアンケートの結果も考慮し、ソフトウェア設計 となりました。

読んだ本たち

1. 現場で役立つシステム設計の原則


Amazon

良い設計とは何か を解決するための本です。
オブジェクト指向の言語を使う際、クラスを使って何を行うかや、散らばりがちなロジックの整理指針が書かれています。

400ページちょっとありますが、難しい単語をあまり使っておらず、かなり読みやすかったです。
私はオライリー本だと気合を入れて1週間くらいかけて読んだりしますが、こちらの本だと割とライトな気持ちで2日くらいで読めました。

ソフトウェア設計に関する入門書としても非常に読みやすいのではないでしょうか。

この本を1冊チーム全員で読んでおくだけでも、レイヤー分けやクラス設計に関してかなり整理して開発できるのかと思います。

2. Clean Architecture 達人に学ぶソフトウェアの構造と設計


Amazon

エンジニア界隈では非常に有名な例の書籍です。
システム設計の文脈で提唱された原則や、筆者の体験を交えて 良いソフトウェアはどんな設計であるべきか が記載されていました。

ソフトウェアにおけるコンポーネントの分け方から、レイヤーの分け方まで広く網羅されています。
そのため、こちらもチーム全員が1周さらっと読んでおくだけでも、ソフトウェア設計に関して共通認識を持ってスムーズに会話を進められるかと思います。
「現場で役立つシステム設計の原則」に比べて内容的にはヘビーでありますが、そちらを読んだ後だとかなり理解しやすい状態で読み進められます。

なお、設計という文脈において 目指すべき姿 の話が中心的に書かれており、リファクタリングの指針は載っていません。

3. レガシーコード改善ガイド


Amazon

こちらもご覧になったことがある方は多いのではないでしょうか。
上で紹介した2冊とは異なり、負債を抱えた(=レガシーな)システムをどう安全にリファクタリングしていくか の指針を教えてくれる書籍です。

良いソフトウェア設計を学んだ上で、「じゃあどう直していくのが良いの?」の疑問を解消するため、こちらの本を皆で選定しました。
開発でありがちな「編集して祈る」という道を辿ることなく、安全にリファクタリングを行う方法が書いてあります。

特に良かったポイントは、 よくある負債のパターンの紹介と共にそれを解決するアプローチを提示してくれている ところでした。
「そもそもロジックがクラスに閉じ込められていない」とかそういうやつです。

ページ数が多く、割とヘビーな書籍なので、複数人で役割分担をして読み進めるのがおすすめです。

最後に

今回は、ソフトウェアエンジニアが社内の輪読会で読んで3つの本を紹介しました。
ソフトウェア設計に関して悩みを抱えられている方がいましたら、参考にしてみてください。

Discussion

ログインするとコメントできます