KIOICHO Eng.

株式会社イーウェルのエンジニアが社内エンジニア系イベント等の情報を発信するブログです。

最近読んだ技術書

## はじめに

今回は開発第1部開発1Gよりお届けします。
約2年半ぶり2回目のブログ記事となります。(前回担当したのはこちら⇒ http://kioichoeng.hatenablog.com/entry/2017/08/01/142728

以前のブログを改めて読んでみると「技術者として学びに終わりはありません」と2年半前の自分が偉そうに発言しておりましたが最近の私はというと相変わらず地道なインプットを続けておりまして、なんとか有言実行できているのかなあというところ。

ということで今回は最近のインプットの一部のご紹介として、最近読んでよかった技術書3冊を簡単に触れて記事としたいと思います。

 ## 『現場で役立つシステム設計の原則 -変更を楽で安全にするオブジェクト指向の実践技法-』
著:増田亨さん
誰かのコードをレビューする際に自分に確固たる「良いコード」像がないなあ、って悩んでいました。
この本はその悩みにわかりやすく回答してくれた本です。
今の私は良いコードとは「高凝集」「疎結合」を実現できているコードではないかと考えています。
それを実現するプログラミング言語としてイーウェルでメイン言語としているC#はうってつけの言語です。
ValueObjectパターン、抽象クラス・インタフェースの活用、継承と集約の使い分けなど高凝集・疎結合を目指すためのノウハウが詰まっています。
ドメイン駆動設計に繋がる基本的な知識が身につく良書です。
実際にこの本で学んだ知識がテスト駆動開発ドメイン駆動設計の実践につながりました。

## 『リファクタリング -プログラムの体質改善テクニック-』
著:Martin Fowlerさん
新装版も出ているのですが古いほうをAmazonでゲットしました。
たしか2005年とかの本ですがまったく色あせていません。
システム開発をするにあたりQCDすべての満足はなかなか難しい、というのがほとんどの開発現場の実情ではないかと思います。
そんな中で(きっとビジネスのスピードを落とさないために敢えて選択して)生まれる「技術的負債」をいかに料理するか、というサンプルがJAVAのコード例とともに紹介されています。
ちゃんと順を追ってBadコードをGoodコードにリファクタリングしていく過程がわかります。
既存のコードが良いコードにしろ悪いコードにしろ、目にする段階では開発者があーでもないこーでもないと弄り倒した結果を目にすることが殆どですが、
どういう過程・考え方を経てそうなったのか、というのが見えるのがこの本のいいところかなあと思います。
すごく分厚くて大きいですが、一度通読しておくことで自分やほかのメンバーが開発しているコードをレビューする際のモノサシの精度が良くなるような効果もあります。

## 『ベタープログラマ
著:Pete Goodliffeさん
タイトルの通り「優れたエンジニア」ってこんな人、というのが具体的に語られている本です。
漠然とエンジニアとしてレベルアップしたい、という思いを抱えていたもののそれがどういう人物像なのかよくわかっていませんでした。
この本はエンジニアとしての姿勢、コードとの向き合い方、守るべき原則を教えてくれます。
この本が、今のところ私のベストテック系ブックランキング1位です。
はじめに読んで半年ほど経ったので、初心に帰るべくまた読み返そうと思います。

## まとめ
良質なアウトプットは良質なインプットから生まれるとよく言われます。
どちらが不足してもいけないのですが、最近の私といえばちょっとインプット過多だったかもしれません。
この記事に自分の考えをアウトプットしてみて、ちょっと頭がすっきり整理されたような気がします。
次のマイテーマはもっとアウトプットを増やす!、としてみようと思います。

f:id:KIOICHOEng:20191227141811j:plain