2021 年 9 月に発売された書籍『セキュア・バイ・デザイン』を読みました。
事前になんとなく耳にしていた通り非常に素晴らしい本でしたので、感想や学びになったポイントをまとめます。
書籍『セキュア・バイ・デザイン』とは
『セキュア・バイ・デザイン』は、タイトル通りセキュリティの観点からソフトウェア設計について解説した書籍です。
しかし、いわゆるセキュリティに関心がある人に向けたものというよりも、アプリケーションエンジニアに向けた内容となっています。
特に、ドメイン駆動設計 (DDD) に大きく影響を受けた内容となっており、DDD に関心がある方には是非手にとっていただきたい一冊です。
感想
一言で言えば、DDD のメリットを理解するうえで、この上ない良著でした。
サンプルコードも豊富ですし、状況設定も現実的で想像しやすい例が多く、非常に理解しやすかったです。
今まで DDD やアプリケーション設計について色々な本を読み、自分でもあれこれ考え、実装したりしてきましたが、この本を読むことでさらに知見を深められたと思います。
DDD などの設計手法に興味を持っている全ての方に強くおすすめできる一冊でした。
学びになったポイント
ここから、特に学びになったポイントを 2 つほど書いていきます。
Value Object のメリットについて
この書籍では DDD における Value Object をさらに工夫した手法として、「ドメイン・プリミティブ」が紹介されます。
ドメイン・プリミティブは書籍の中で終始重要な手法として扱われており、この書籍の解説を読むことで、Value Object という手法のメリットを深く理解できます。
DDD の文脈で Value Object のメリットがあまりピンときていないという方は、この本を読んでみるのが一番だと思います。
セキュリティをドメインの関心事とする
この書籍では、「セキュリティは、セキュリティの専門家が外部から付け加えるものではなく、アプリケーションエンジニアが常に考えるべきものとする」というような、発送の逆転的な考え方で解説されています。
この言葉だけ聞くとよくある説教のようですが、それをアプリケーションエンジニアにとって興味深い手法で取り入れているのが大きな特徴です。
ビジネスロジックを逆手に取った攻撃の例なども書かれており、非常に参考になりました。
難易度について
DDD に関する書籍として最も有名なのは
の 2 冊だと思います。
『セキュア・バイ・デザイン』は、これら 2 冊と比較するとかなり読みやすいので、まずは『セキュア・バイ・デザイン』で DDD のメリットを理解して、その後これら 2 冊に進むという流れも良いかもしれません。
ただし、『セキュア・バイ・デザイン』は、DDD 全体の解説ではなく、Value Object や境界づけられたコンテキストといった、一部のプラクティスの解説になっています。
DDD に関する書籍については、難易度別に こちらの記事 にまとめていますので、よろしければ参考にしてください。
おわりに
最後に、印象的だったフレーズを引用させていただきます。
システムについてさらに広い視野で見るようにし、システムを、ソフトウェア、本番環境、開発チームで構築されるものとして見ていきます
――『セキュア・バイ・デザイン』p526
システム開発というものが開発チームを作ることも含んでいることを表現した言葉として、個人的にとても印象に残りました。