webエンジニア2年目に読んだ技術書を振り返ってみる


はじめに

2019年にエンジニアとなり早2年が経ちました。
2年目の今年は、初めて上流工程を経験するなど多くの学びがあったと共に、実力不足を痛感した1年でありました。
そんな2021年も残りわずかとなったので今年読んだ技術書を振り返り、簡単に感想を残したいと思います。

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


何かおすすめの書籍を聞かれるとこちらを紹介しています。
私自身、この書籍をきっかけに設計に興味を持ちました。
仕様通りの機能を実装する事に必死だった1年目から一歩進み、機能追加や変更が容易なシステムを実現する為にはどうすればいいのか。そのような悩みを抱えていた時に一つの指標となった書籍です。
特にデータとロジックを同じクラスに閉じ込める事、ドメインモデルの考え方が記載されている3、4章が印象に残っています。
一度知人から借りて読んだのですが、手元に置いておきたいと再度自身で購入しました(笑)

オブジェクト指向でなぜつくるのか


現場で役立つシステム設計の原則を読んだ後、OOPについてより興味を持ったのでこの書籍を手に取りました。
アセンブリ言語から高級言語、構造化プログラミングへ歴史的な流れを追いながらOOPがどのような課題を解決する為に生み出されたのか、OOPの特徴であるクラス、ポリモーフィズム、継承の目的などが解説されています。
オブジェクト指向の輪郭を少し掴めた一冊でした。

ドメイン駆動設計入門


転職後、研修で社内システムをDDDで実装する機会があり、その時に読んだ書籍になります。
ドメイン駆動設計には戦略的設計と戦術的設計の2つのパターンがありますが、この書籍は後者の戦術的設計の視点からDDDを説明しています。
DDDを採用するのはいいが、実際にどのようにコードを書いていいのかわからないとなっていた時に、実際のコードを用いて書かれているこの書籍が非常に参考になりました。
戦術的設計パターンのみを取り入れる事を「軽量DDD」と揶揄される事がありますが、実装イメージがつきにくいDDD開発において実装パターンからアプローチする事でどうすればいいかわからないというモヤモヤを少し解消してくれました。
戦術設計を行うなかでモデリングなどは必須の作業になってくると思うのでそこまで2つに分断されるようなものではない気がしてます。

実践ドメイン駆動設計


IDDD本と呼ばれているドメイン駆動設計界隈では有名な書籍です。
エヴァンス本の内容を架空のプロジェクトを題材に具体的な実装方法が取り上げられています。
現場で役立つ→ドメイン駆動設計入門の次に読んだのですが一気に難易度が上がり8章のドメインイベントあたりで挫折しました。
ドメインイベントをもっと知りたいので拾い読みしていこうかと思います。

ドメイン駆動設計 モデリング/実装ガイド


DDDを導入する際の悩みどころであるモデリングの方法や、各レイヤーの責務を事例を交えながらシンプルに解説されており、DDD入門者におすすめできる書籍です。
初めてDDDでシステム開発に取り組んだ際に、迷いどころに対して明確な回答が記載されている本書が非常に頼りになりました。
社内のDDD開発未経験のメンバーと認識を合わせる材料にも利用しています。
後述するVer.2と合わせて読む事で理解も深まるかと思います。

ドメイン駆動設計 サンプルコード&FAQ


前述のドメイン駆動設計 モデリング/実装ガイドの続編。
こちらでは、より具体的な実装例がとりあげられています。また、筆者の運営する質問箱に投稿される質問に回答する形でコードの実例を出しながら説明されています。
youtubeにこの書籍を題材にしたモデリングから~実装までの動画があるのでそちらもあわせて参考になります。
弊社では、こちらで紹介されているモデリング手法を取り入れながら開発を実施しています。
まだまだ改善する必要はありますが、開発メンバーにもモデリングを広められたのはこの書籍のおかげだと思います。

テスト駆動開発


タイトルの通りTDDの手法がまとめられている書籍です。「動作するきれいなコード」を実現する為に自動テストを用いながらリファクタリングを進めていく方法が紹介されています。
DDDでシステム開発を進めると、ドメイン知識に詳しくなると共にその改修が必要になる事が多く、テストという動作を担保するものの存在は必須であると感じています。
理解しきれていない箇所も多いのでまた読み返したい思います。

アジャイルサムライ


所属しているチームの開発フロー改善の役に立てばと思い手に取りました。
書籍内で紹介されているインセプションデッキの一部を実際に新規プロダクトスタート時に導入し、メンバー間のイメージ共有に効果を感じる事ができました。

エンジニアの知的生産術


どのように学び,整理し,アウトプットするのかに関しての各手法が紹介されています。
学びたい分野がたくさんある中で、少しでも効率的に学びたいとの想いから本書を手に取りました。
漠然と行っていた学びのサイクルにを言語化し整理できた事がよかったです。
正直、内容に関してはあまり実践はできていませんが、、、(汗)

最後に

振り返ってみると動くものは作れるようになったが、どうすれば変更しやすいコードが書けるのか、良いシステムとは何かを模索した2年目でした。
とりあえず一年間お疲れ様でした!!