「良いコード／悪いコードで学ぶ設計入門」はSNS時代の冒険活劇ゲーム攻略本だと思った

話題の [良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方 | 仙塲 大也 |本 | 通販 | Amazon](https://www.amazon.co.jp/dp/4297127830) の読書感想文です。

## SNS時代ならではの本だと感じた

まず驚いたのがこの本冒頭、`#ミノ駆動本` とハッシュタグのガイドが書かれています。

> 本書のSNSでのハッシュタグは #ミノ駆動本 です。本書の感想などを投稿するとき、ぜひお使いください。

なるほどこうして体験を共有することを最初から想定しているのだな～、と (本筋と少々ズレたところで) 感服しました。ということでお祭りに参加するつもりで書き留めています。


## リファクタリングを勧善懲悪で、ゲーミフィケーションした痛快な攻略本だと思った

「クソコード動画」やゲームがむしろアイディアの核にあり、技術的根拠詳細が語られている本と考えると、余計なるほどな、腹落ちするところ多数でした。誤解を恐れず書くならば、むしろゲーム攻略本の気分で読んで正しい気がしています。リファクタリングとは、素直な少年の心で嗜む勧善懲悪なバグ退治ゲーム、痛快冒険活劇、英雄譚なのだななど。

## 「悪魔」を再知覚できた

[リファクタリング(第2版): 既存のコードを安全に改善する (OBJECT TECHNOLOGY SERIES) | Fowler,Martin, 公信, 児玉, 晶夫, 友野, 章, 平澤, 真史, 梅澤 |本 | 通販 - Amazon.co.jp](https://www.amazon.co.jp/dp/4274224546)
で出てくるのが「不吉な臭い」。

- [「不吉なにおい」考 - 「不吉なにおい」の構造について](https://zenn.dev/philomagi/articles/bad_smells-structure)
- [コードの不吉な臭い - Qiita](https://qiita.com/NagaokaKenichi/items/22972e6ba698c7f2978a)
- [リファクタリング【第２版】- 第3章：コードの不吉な臭い - The King's Museum](https://thekingsmuseum.info/entry/2021/03/12/210000)

あるいは「巨大な泥団子」などのアンチパターン。

- [Category:ソフトウェア工学のフォークロア - Wikipedia](https://ja.wikipedia.org/wiki/Category:%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E5%B7%A5%E5%AD%A6%E3%81%AE%E3%83%95%E3%82%A9%E3%83%BC%E3%82%AF%E3%83%AD%E3%82%A2)
- [Category:アンチパターン - Wikipedia](https://ja.wikipedia.org/wiki/Category:%E3%82%A2%E3%83%B3%E3%83%81%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3)

「悪魔」はそれらと対比しつつ読むと良いのかもしれません。設計には意思疎通、コミュニケーションも大事な要素と考えます。ということで「お祭りに乗じる」のはただの口実だとしても、本を通じて楽しく、再知覚できました。

- 「技術駆動命名」
    - [関心の分離を意識した名前設計で巨大クラスを爆殺する - Qiita](https://qiita.com/MinoDriven/items/37599172b2cd27c38a33)
- 「連番命名」
- 単一責任原則
    - [単一責任原則で無責任な多目的クラスを爆殺する - Qiita](https://qiita.com/MinoDriven/items/76307b1b066467cbfd6a)
- switch文
<script async class="speakerdeck-embed" data-id="dd6e690a01cd4ceea16518e6e50dede7" data-ratio="1.77777777777778" src="//speakerdeck.com/assets/embed.js"></script>
- 継承

https://twitter.com/minodriven/status/1353251239237095430

- アンチパターン: 技術駆動パッケージング

https://twitter.com/MinoDriven/status/1148960876201836546?s=20&t=Gu814vCCKtzxCb2n9fvzAw

- アンチパターン: Managerクラス

https://twitter.com/MinoDriven/status/1157554468201746432?s=20

多く紹介してしまうともったいないので以上で。


## 個人的には、電子書籍版で買って良かった

技術書は物理本、というこだわりのある方も多いと思います。一方で私の場合はこの本は断然電子書籍版のほうが「らしい」気がしました。

> ゲームにおける魔法には、攻撃魔法や味方の防御力を上げる魔法など、それぞれさまざまな効果がありますね。設計パターンもそれぞれ違った効果を発揮します。
> (本文に戻る)

など注釈と本文を行ったり来たりしやすいです。また注釈にも

> https://twitter.com/minodriven/status/1228896043435094016

などとTweetへのリンクそのものが貼られていたりします。その点電子書籍のほうが、とりわけ記事やSNS上のやり取りをサクサク読むような感覚そのままで読書できる体験がうれしく、爽快でした。


## 個人的には、ちゃんと売れてほしい

OSSへの貢献、技術記事やゲーム作成、登壇だけではビタ一文にもならないことのほうが多いです。
開発者の貢献に対価を払う意味でも、本として正式リリースされた知識には応援、尊敬の念を込めてしっかりお金を投げたいなとおもい、購入しました。

以下記事も好きです。
[ゲームで学ぶ「役に立つ」ドメインモデルの考え方 - Qiita](https://qiita.com/MinoDriven/items/7b4609d0bc6717769060)


## 「悪魔」と戦う旅に出よう

最後に、共感したTweetです。

https://twitter.com/magnolia_k_/status/1520348143790952448?s=20

注意深く使いたいのは、悪魔、クソコード、爆殺、、いずれも過激なワーディングです。敢えて書くならばそれは間違っても「特定の誰か」「人」そのものではありません。それは人格攻撃を意味した言葉では決してなく、組織文化かもしれないし、誰にも、どこにも、もしかしたら自分自身のなかにあるかもしれない至らぬソフトスキルだと理解することが必要だと思います（コードレビュー等で話題になったらここを念頭におかねばです）。事実「悪魔」は世界に跋扈しています、Managerクラスって一体どうしてどこのプロジェクトでもお目にかかれるんだろう...。「悪魔」と戦う旅に出よう！！！

2022年残りのゴールデンウィークも楽しく過ごせますように。以上です