msksgm’s blog

msksgm’s blog

Webエンジニアです。日々の勉強記録、技術書感想、美術観賞感想を投稿します。

「ユースケース駆動開発実践ガイド」感想

ユースケース駆動開発実践ガイド」[ダグ・ローゼンバーグ (著), マット・ステファン (著), 三河淳一 (翻訳), 佐藤竜一 (翻訳), 船木健児 (翻訳) , 2007]を読みました(第2部、第6章まで)。

知り合いと「ユースケース駆動開発実践ガイド」の勉強会をすることになり、読むことにしました。

感想

ICONIX プロセスと呼ばれるモデリング手法をテーマにした本です。 DDD 界隈では、ICONIX プロセスを戦略的 DDD に位置付けられています(多分...)。 よく DDD の文脈で紹介される、戦略的 DDD(バリューオブジェクト、エンティティ、リポジトリ、ファクトリー)の話はまったくでてきませんが、戦略的 DDD をどのように実装するかの意思決定や、それにより軽量 DDD を回避することができる内容となっています。

第6章までだと、ドメインモデリングユースケース記述の作成、要求レビュー、ロバストネス分析、予備設計レビュー、などといった内容となっており、一人でも実践しやすくなりました。 勉強会では、最後に RealWorld を元に ICONIX プロセスのロバストネス分析までやってみました。

ロバストネス分析までを勉強会の範囲にした理由は2つあります。 1つ目は、ひろどらチャンネルの動画でも、connpass の「ユ=スケース駆動開発やってみた」というイベントの資料でも、ロバストネス分析までおこなわれていた(紹介されていた)ことです。 2つ目は、フローチャートや詳細設計以降は実装依存に感じられ、戦術的 DDD を学ぶ方が有意義だと考えたためです。

www.youtube.com

modeling-how-to-learn.connpass.com

よかった点、気になった点についてそれぞれ述べていきます。

よかった点

よかった点は、モデリングの実践的な内容となっていることです。 また、ICONIX プロセスは「プロセス」となっているため、取り入れやすい内容であり、加えて練習問題があるため要点をつかみやすかったです。 それぞれの章には、書き方がパターン化(上空 3000 メートルからの眺め、理論、実践、さらなる練習、まとめ)されていたことも、読みすすめやすい理由の一つです。

DDD やアーキテクチャを学んでも、いざ実践しようとすると、振る舞いや要求がよくわからないまま実装しようとすることが多々ありました。 本書を読むことによって、振る舞いの明確化、ドメインオブジェクトを見つけ出すことの重要性を理解し、個人開発レベルでの実践はもちろんのこと、普段の業務でも、なんとなくリファクタリングするのではなく、振る舞いを意識するようになりました。

気になった点

気になった点は、一度読んだだけだと解釈しにくい抽象的な文章が散見された点です。 そもそも、抽象的な文章は DDD の本の共通点か 15 年ぐらい前に翻訳されたせいかもしれません。

また、理論の箇所では、10個の理論を毎回記述されていますが、割と内容が重複されていたり、心構えとして薄かったりしたりします。 特に、10個の理論の1つに、「実践するための6ステップ」が記述されていたりするため、その箇所だけでよかった場合もあります。 なので、実践可能な知識は答え付きの練習問題だけで十分だったりします。

他には、答えがない練習問題(「さらなる練習」)についても気になりました。 練習問題の選択肢が曖昧な日本語訳のせいか、答えを出しにくく感じました。

感想まとめ

DDD のモデリングについて実践的に学べる本でした。 戦術的 DDD の本では説明が省略されがちな部分であるユースケース(振る舞い)とドメインモデルの導き出し方を明確化し、意思決定しやすくなったと思います(いまだに難しくは感じますが。。。)。 抽象的な文章に対する対策方法としては、複数人で読んで認識合わせしたり、ひろどらチャンネルの動画で概要を掴んで、わからなかったら読み飛ばすと良いと思います。

「How Google Works」感想

「How Google Works」[エリック・シュミット (著), ジョナサン・ローゼンバーグ (著), アラン・イーグル (著), ラリー・ペイジ (著) , 2014]を読みました。

IT エンジニア本大賞で紹介されていたので読むことにしました。

感想

Google がどのようにして、今(2014 年時点)にいたるか、そのマインドや企業文化について書かれた本です。 例えば、以下のようなものがあります。

  • 検索エンジンという領域ですら後発であった Google が、どうして世界シェア No.1 になったのか、それは「技術的アイデア」にかけていたからである。「技術的アイデア」がなかった欠如していた場合、Google のブランドを使っても、撤退したサービスがある。
  • 「邪悪になるな」という共通認識のもと、中国の検索エンジン市場からの撤退は間違いではなかった
  • 採用は一番大切な仕事なので、「採用の質を犠牲にしてまで埋めるべきポストはない」
  • イノベーションを生み出すために、勤務時間の 20%は自分の時間にあてて良い。だけど、その時間に対して追加で給料が払われることはない。重要なのはおカネじゃない、仕事そのものに対して意欲を見出す環境を作る

度々、インターネットで聞くような Google の文化が一つの本に纏まっているので、興味がある人にはおもしろいと思います。

他にも、会議をどのようにして有意義なものにするのかだったり、テレワークによってイノベーションがおきないことを考えて著書ではあまり良いことだと書かれていなかったり、普通の会社にも議論になっているようなことを上げられていて、興味深かったです。 出版されたのが 2014 年だったので、コロナ禍以降の状況と照らし合わせながら読めるとさらに面白いのではないかと思いました。

「UMLモデリングレッスン」感想

UML モデリングレッスン」[平澤 章(著) , 2008]を読みました(途中から斜め読みですが。。。)。

知り合いのエンジニアにすすめられたのと、DDD のモデリングUML を記述する際に適切な知識を持っていない気がしたので読むことにしました。

感想

UML の書き方について、体系的にまとめられた本でした。 UML の記述方法について網羅的に学びたいのなら、この本で十分すぎると思います。 抽象的な概念を UML に落とし込もうとしたり、木構造UML で表現したりと、幅広いので、個人開発から業務までマッチしない UML は紹介されていないとおもいます。

普段、何(What)を UML に落とし込みたいか思いついても、どのように(How)描くかは思いつかないことが多かったので、要望にマッチしました。 UML を 21 パターンで紹介されますが、単純に紹介して終わりではなく、例題と共に掲載してくれているので、参考になります。 ただ、この一冊を機械的に読み終えるのは時間がかかり、忍耐力も必要そう(「本当に使うのか?」という疑念を抱き始めた)なので、一度斜め読みして、本格的に記述するときや途中で悩んだりした際に思い起こせるように、手元に持っておくことをおすすめします。

「リユース革命」感想

リユース革命」[木暮康雄 (著) , 2020]を読みました。

社員の人に勧められたのと、普段の業務的に二次流通に関わる機会が多いので業界理解のために購入しました。 リユースの本って「メルカリでの勝ち方」、「絶対にヤフオクで儲ける方法」みたいなタイトルの本が多いので、この本は貴重に感じられたのも理由の一つです。

感想

感想を簡潔に書くと、近年のリユースについての知識を得られるが、タイトルの割には著者のポジショントークが多い印象です。

この本の内容を大別すると、「日本のリユース事情、文化」、「国際的なリユース事情」、「著者がウリドキを立ち上げるまで」、「リユース企業の紹介」となっています。

「日本のリユース事情、文化」と「国際的なリユース事情」については、タイトルに欲しかった内容が得られます。

例えば、日本のリユース事情、文化を解説するパートでは、以下のことがわかったり

- 年間7・6兆円のリユース品が生み出されている
- しかし、年間に流通しているリユース品は2兆円ほどにとどまっている
- 実際にモノを売っている人は年間 40%程度に過ぎない
- その結果、貯まってしまっているリユース品の累計総額は約37兆円にも上る

日本は世界でも有数の「リユース大国」であること、「ユーズド・イン・ジャパン」という言葉があるぐらい、日本の中古品は優れているなどを知識として得ることができます。 また、国際的なリユース事情としては、日本にはあまりない寄付の文化だったり、イーベイの誕生、メルカリがイギリスから撤退した文化的な背景などを知ることができます。

しかし、この本の3〜4割が、著者が起業した経緯や、全巻読破.com を立ち上げて売却するまでだったり、リユース品の価格透明化を目指したウリドキ(著者が立ち上げて現在も経営)などと、「リユース革命」のタイトルとは乖離している内容も書いてあります。 それらの体験談があってこそのリユース事情を理解していると思うのですが、転勤した話や事業の苦労話やマインドなどは、この本のスコープから外れている印象です。 ただ、経験から導き出されたリユース事業の今後の3つのフェーズ(「潜在的な退職資産を日本で掘り起こす」、「越境 EC」、「リユースの取引データを生かす仕組みを構築する」)は参考になりました。

最後の、リユース企業の紹介もないよりはある方が良かったのですが、唐突にインタビュー形式ではじまるので、なぜこれらの企業を選んだのか気になりました。

感想を再掲すると、近年のリユース事業について豊富にまとめらた本です。 ただし、作者の体験談が長いのが気になりました。 しかし、リユース事情についてのパートは、豊富に調査された内容と、経験から成り立つ今後のリユース産業はとても興味深い内容でした。 リユース業界、二次流通業界に興味がある人には一読してみる価値があると思います。

「体系的に学ぶ 安全な Web アプリケーションの作り方 第 2 版(徳丸本)」感想

「体系的に学ぶ安全な Web アプリケーションの作り方第 2 版」[徳丸浩 (著) , 2018]を読みました(7章「脆弱性診断入門」以外)。

著名なセキュリティ関連の書籍であること、セキュリティに興味があったことから読むことにしました。

感想

本書の構成は、9つの章にわかれており、脆弱性の定義や、Web ブラウザ間のリソース共有、脆弱性とその対策、セキュリティを向上させる機能、セキュリティ診断などが体系的に解説されています。 VirtualBox で動作する実習環境が用意されており、手を動かしながら、学ぶことができます。 言語は PHP を用いて解説されていますが、他の言語で簡単な Web アプリを作成した知識あれば、PHP の知識がなくても問題なく読むことができる内容と解説になっております。 第1版と第2版がありますが、動作環境の観点や、モダンな脆弱性の観点から第2版を買うことは必須です。

実際に手を動かしながら読んだので、3カ月ぐらいかかりました。 ただ、それぐらいに時間をかけても十分なリターンがある書籍だと思いました。

よかった点と気になった点についてまとめていきます。

よかった点

よかった点は3点あります。

1. 脆弱性を体系的に網羅的に学ぶことができる

タイトルの「体系的に学ぶ」に偽りはなく、本書の半分を使って世の中で紹介される脆弱性を学ぶことができます。 普段の勉強のなかで、書籍や動画で「〜の脆弱性があるので対策をします」とあっても、実際に攻撃することは稀です。 本書は、教科書でしか聞いたことがない知識を学ぶことができ流という点で非常にすぐれています。

2. Web の基本的な知識の解説からはじまる

4章の脆弱性の解説の前に3章で Web の基礎知識(HTTP リクエスト、リソース共有など)について解説をしてくれます。 Web アプリの勉強をするときに、当たり前のように使っている箇所なのに、今まで学んだことがなく、目から鱗でした。 CORS をなんとなくの設定で許可したり、実はプリフライトリクエストが飛んでいるのを知らなかったりと、Web アプリを作っていたのに理解していなかったことを痛感しました。 また、6章で解説される文字コードの歴史なども知らなかった(文字コード、文字エンコーディングの違いを理解していなかった)ので、そのような点においても知識の整理に役に立ちました。

3. セキュリティ対策の観点がソースコードに止まらない

「Web アプリケーションの作り方」とありますが、それ以外に「Web サーバーへの攻撃経路」「なりすまし」「盗聴改ざん」「認証・認可」「ログ」などと管理者側からの視点も書いてあります。 とりあえず動く以上の観点を書籍から学ぶことができるの、個人開発だけでは知り得ない知識を得ることができます。

気になった点

気になった点は2点あります。

1. 実環境では再現が難しいであろう脆弱性がある

XSSCSRFSQL インジェクションなどの、頻繁に報告される脆弱性はもちろん紹介されますが、eval インジェクション(JS 以外)、ファイルインクルード攻撃などは、現在の主な実装方法ではほとんど起こり得なさそうに感じられました。 動作環境も PHPCGI の使い方をしていることから再現できるのであって、あまりにも環境が古い気がします。 ここらへんは、過去にそういう事例があったという理解、そういう現場になったときのこと、 WordPress を触るとき、思い出せればいいかと思って流し読みしてしまいました

2022/01/27 追記。

以下の記事を踏まえて、考え方が変わりました。WordPress だけでなく、EC-CUBE という PHP で動く OSS を使用していたことによる被害が増えているとのことです。 2022 年 1 月 27 日という徳丸本第 2 版が出版されてから 4 年経過してからのことでした。 被害が起こってからでは遅いので、脆弱性が起きやすいパターンは新旧問わず把握しておくべきだと考えました。

カード被害額、最悪更新 (略) ジーアールは、誰でも無料で利用・改変できる EC サイト構築システム「EC-CUBE」の旧バージョンを利用していた。

www.nikkei.com

2. 動作環境が VirtualBox で用意されており、M1Mac は VirtualBox が動作しない

VirtualBox 自体は簡単に良いできることから問題ないです。しかし、今後 M1Mac に乗り換えたとき際には動作しなくなってしまいます。 仮想環境は Docker が主流なので、できれば早くだしてほしいです。

2022/12/06 追記。

徳丸先生より、コメントをいただきました。 M1/M2Mac 向けに Docker 対応されました。 今後は、Docker 版を利用しましょう。

wasbook.org

まとめ

体系的にセキュリティについて学ぶことができるだけでなく、Web の基礎知識や管理者側の観点も学ぶことができる、神本でした。 この本の知識を持たずして、Web アプリの開発を作っていた自分が悲しくなるレベルです。 非常に分厚いので、読み始めるのに躊躇しますが、図と文章による非常にわかりやすい解説をしてくれるので、想定よりも読み進めることは容易です。

2022/12/06 追記。

M1/M2 Mac 向けに Docker 対応もされているので、M1 Mac ユーザーも安心して本書を購入しましょう。 以下に貼られていたリンクは、Docker 対応される前のリンクだったので、削除しました

気になった点においても、徳丸先生が対策のツイートや動画を出してくれているので、とりあえずは安心かつ期待です。

2022/12/06 追記終わり。

この本を読んで次のアクションは、個人開発で活かす、ウェブセキュリティ基礎試験を受ける、他のセキュリティ本を読むを実行しようと考えています。 個人開発は普段から意識することとして、ウェブセキュリティ基礎試験はせっかく頑張ったので絶対に受かりたいです。

他のセキュリティ本は、「Web ブラウザセキュリティ」「セキュア・バイ・デザイン」を考えており、復習&挑戦をしていきます。