dorapon2000’s diary

忘備録的な。セキュリティとかネットワークすきです。

最近読んだ本の感想

半年近くブログを更新していないせいで広告が出てしまったため、最近読んだ本をネタに更新しておく。

読んだ本一覧

開発系

  • ドメイン駆動設計入門
  • カイゼン・ジャーニー
  • Effective Python第2版
  • 達人に学ぶDB設計徹底指南書
  • 達人に学ぶSQL徹底指南書第2版
  • ソフトウェア技法練習帳
  • 最強のCSS設計

それ以外

  • 予想どおりに不合理
  • 「ついやってしまう」体験のつくりかた

ドメイン駆動設計入門

現実世界の注目している領域をドメインと呼び、それをコードへ落とし込むためにどういう思想や設計が必要かがわかりやすく記載されている。

ドメイン駆動設計入門 ボトムアップでわかる! ドメイン駆動設計の基本 | 成瀬 允宣 |本 | 通販 | Amazon

中規模なモジュールを1から作るにはどうすればいいのか、自分には皆目検討がつかないなぁと思い購入。自分はオブジェクト指向というメリットを活かしきれてなかったと痛感した。デザインパターンは勉強してきたけれど、設計とは目的が違う。自分の経験の中で、『最初はこれでうまくいくと思ってた設計は柔軟性がなく、拡張してたら似てるロジックがいたるところに、、、じゃあどうすればよかったかなんて考えてもわからない。』なんてことがあったけど、答えはこの本の中に。

個人的に好きだったのはリポジトリリポジトリでDB依存な実装を隠せば複数DB扱えるし、テストもしやすいというのはそのとおりだと思う。ただ、トランザクションまで設計で扱うのはやりすぎて逆に複雑になりそうだと思った。また、ドメイン駆動設計を取り入れるにはチームの同意も必要。

カイゼン・ジャーニー

ストーリー形式にアジャイル開発について学べる本。

カイゼン・ジャーニー たった1人からはじめて、「越境」するチームをつくるまで | 市谷 聡啓, 新井 剛 |本 | 通販 | Amazon

とても読みやすかった。主人公の江島がアジャイルのツールを使いながら問題解決していくのは臨場感あって、雰囲気でしか知らなかったアジャイル開発がどういうものなのか理解できた。

Effective Python第2版

Pythonの知られざるチップが90項目も書かれている。第2版でpython3.8対応。

Effective Python 第2版 ―Pythonプログラムを改良する90項目 | Brett Slatkin, 石本 敦夫, 黒川 利明 |本 | 通販 | Amazon

実は初版も昔読んでいる。掲載されている項目数も増えてpython3.8にも対応しているとのことで購入(並べてみると2.5倍くらい厚い)。自分が初版の内容を忘れてるor当時理解できなかったこともあり、2回目でも十分学びがあった。python3.8で追加されたwalrus演算子(:=)で不要に変数のスコープを広げないテクニックを見て、pythonっぽいと感じたり、特殊メソッド駆使してOOPをするテクニックはそんなに頑張るのかとも思いつつわくわくした。特に「並行性と並列性」の章は気合が入っているように感じて、pythonにはGILという制約がある中、いろいろな並列・並行処理のやり方を紹介している。家宝にします。

達人に学ぶDB設計徹底指南書

標準的なDBの、物理設計、正規形の説明からパフォーマンス設計、アンチパターン、グレーノウハウなどを説明している。

達人に学ぶDB設計 徹底指南書 | ミック | 工学 | Kindleストア | Amazon

特定のDBに依存しない部分で設計のノウハウ解いている。もともとMySQL関係の本を買うつもりだったが、DBの共通部分で一旦勉強しておいたほうが良いと思い購入。アンチパターンとグレーノウハウで著者がどれくらいの頻度で現実に存在するのか言及していたり、INDEXを貼るレコード数やカーディナリティの具体的な目安は、応用する際の助けになると思った。

達人に学ぶSQL徹底指南書第2版

標準的なSQLを駆使して複雑なことをクエリ一発で解決しようという本。

達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ | ミック | コンピュータ・IT | Kindleストア | Amazon

上の作者のSQLの本。DB設計の本は2012年発売と少し古いが、こちらは2018年なため新しい。基本的にORMを使うため生のSQLをコードに埋め込むことはあまりないが、複雑なSQLに興味があったため購入。この本のおかげで、どこまでがDBの一般的な機能なのかという線引きができた。例えば、複合インデックスを使う場合、WHERE句にはインデックスに定義した順番でカラムを指定する必要があるというのはMySQLの機能だと勝手に思っていたが、この本に書かれており、DB共通のやり方だと知った。また、ある程度、排中律や述語などの論理学をベースにすすめるため、厳密性もあっていい。

SQLを構築するのはパズルのようで面白かったが、そこまで複雑なことはSQLではなくプログラムにやらせそうとは思った。

ソフトウェア技法練習帳

ソフトウェアテストの演習を、同値分割法・境界値分析、デシジョンテーブル、状態遷移テストなどの方法を用いてこなしていく。

ソフトウェアテスト技法練習帳 ~知識を経験に変える40問~ | 梅津 正洋, 竹内 亜未, 伊藤 由貴, 浦山 さつき, 佐々木 千絵美, 高橋 理, 武田 春恵, 根本 紀之, 藤沢 耕助, 真鍋 俊之, 山岡 悠, 吉田 直史 | コンピュータ・IT | Kindleストア | Amazon

境界値を選んで終わりという雑なテストの知識しかなかったため、新しい知識を取り込んで行きたいと思い購入。それぞれの手法の説明は一切ないが、ググりながらで十分演習ができた。ただ、組み合わせテストのためにPictMasterというツールを紹介しているが、当方Excelが使えないためできる問題だけこなした。要件を確認することが答えに含まれていたり、実践的で経験になった。

最強のCSS設計

OOCSS、SMACSS、BEMなどのCSS設計をケーススタディ形式で学べる。

Amazon.co.jp: 最強のCSS設計 チーム開発を成功に導くケーススタディ eBook: 堀口 誠人: Kindleストア

本棚に積まれていた本をようやく読んだ。ストーリー形式で読みやすいしレイアウトもわかりやすい。ストーリーの若手役の人がする失敗は自分もしそうで、文量抑えめなのに良いポイントを抑えてくれてると思った。自分のCSSはBootstrapの構造を真似ているだけだったため、ここでいったんOOCSSの知識を学べてよかった。BEMを使う機会はおそらく当分ないが、知識として持っておきたかった。さくっとCSS分野を学べる自分にあっている本だった。

予想どおりに不合理

大量の実験(多くは著者自身が行った)や例をもとに、人間が以下に不合理な行動を繰り返しているかを説明する行動経済学の本。

予想どおりに不合理 行動経済学が明かす「あなたがそれを選ぶわけ」 | ダン アリエリー, 熊谷 淳子 | 産業研究 | Kindleストア | Amazon

この記事に列挙したなかで一番読んでよかった。この本は以下の広告から始まる。

  1. 59ドルのオンライン新聞購読
  2. 125ドルの印刷版新聞購読
  3. 125ドルのオンラインと印刷版新聞購読

2が意味不明と思いながら買うなら3つ目を選ぶ人は多いと思う。実際に学生を対象にした実験では多かった。しかし

  1. 59ドルのオンライン新聞購読
  2. 125ドルのオンラインと印刷版新聞購読

この2つだけになった途端に1を選ぶ人が多くなる。マーケティングの知識がまったくない自分にとっては冒頭からドキリとさせられた。こういう例が大量にあり、ビジネスに限らず様々なことに応用できそうだと感じた。各実験に対する参考文献がしっかり記載されている点もうれしい。

「ついやってしまう」体験のつくりかた

任天堂wiiの企画担当を務められていた方なりにUXを体系的にまとめた本。

「ついやってしまう」体験のつくりかた――人を動かす「直感・驚き・物語」のしくみ | 玉樹 真一郎 | 産業研究 | Kindleストア | Amazon

予想通りに不合理もそうだが、分厚い技術書ばかりだとモチベーションが保てないので息抜きに購入。UXについての知識は皆無なので手始めに良さそうだと思った。そして、スーパーマリオブラザーズのマリオにはヒゲがあるのか、帽子をかぶっているのか、ステージ1-1のマリオの初期位置が中央ではないのか、などはすべて理由があることを知った。この本の中で一番印象的だったのは、ゲームにギャンブル要素とユーザーの性格が出てしまう選択肢を入れることがユーザーの飽きない・成長する体験につながること。特にギャンブルは予想通りに不合理でも触れられている。