増田さんから Software Design 2023/2 を献本いただきました!
第1特集はドメイン駆動設計入門で、50ページとすごいボリュームで読み応えたっぷりでした!
アーキ部:強いて言えば「集約どう実装するのかな、を考える」会に参加してきた!
kawasimaさん主催のアーキ部に参加しました!
テーマの発端になったツイート
部門に社員を配属するとか、カートに商品追加するとか、コレクションを集約としてアイテムを追加する訳だが、件数多くいちいちコレクション全体をメモリにロードしてられないこともある(というかそういうケースの方が多いのでは?) 。そういう時にどういう設計パターンが考えうるか、まで論じて欲しい。
— kawasima (@kawasima) 2023年1月13日
これまでドメイン駆動設計やクリーンアーキテクチャとかを勉強してきましたが、このツイートを見て「実際に『性能』を意識してコードを書いていくってどうしたら良いんだろう?」と謎になりました。
この勉強会では、『性能』は重視しつつ、どうやってドメインをコードに表現していくのか、というお話をkawasimaさんからしていただきました!
🗒 ざっくりまとめ
わかりやすく設計を学べる『良いコード/悪いコードで学ぶ設計入門』を読んだ!
ミノ駆動さんから献本いただいた「良いコード/悪いコードで学ぶ設計入門」を読みました!既に何度も重版されているベストセラーで、読んでいてもとてもわかりやすかったのですごくオススメです!
(かなり前にいただいたのに、このタイミングになってしまった…!)
🙆♀️ こんな人にオススメ
「システム開発しているけど、可読性が低かったり変更しにくかったりと開発に課題がある。けど、レガシーコード改善ガイドを読むのはハードルが高い‥!明日からでも実践できるような、わかりやすく設計を改善できる方法が具体的に知りたい!」
という方に特にオススメです。もちろん、最初から良いコードを書きたいという人にもオススメ。
タイトルにもある通り、コードを読みながら設計を改善していく具体的な方法について学べます。
本全体を通して、
- 悪いコードが与える変更容易性への悪影響を確認
- 設計の改善方法について説明
- 良いコードの書き方を解説
という流れで整理されているので、なんでこのままのコードではいけないのかを納得しながら読み進めることが出来ると思います!
目次
- 1 悪しき構造の弊害を知覚する
- 2 設計の初歩
- 3 クラス設計 ―すべてにつながる設計の基盤―
- 4 不変の活用 ―安定動作を構築する―
- 5 低凝集 ―バラバラになったモノたち―
- 6 条件分岐 ―迷宮化した分岐処理を解きほぐす技法―
- 7 コレクション ―ネストを解消する構造化技法―
- 8 密結合 ―絡まって解きほぐせない構造―
- 9 設計の健全性をそこなうさまざまな悪魔たち
- 10 名前設計 ―あるべき構造を見破る名前―
- 11 コメント ―保守と変更の正確性を高める書き方―
- 12 メソッド(関数) ―良きクラスには良きメソッドあり―
- 13 モデリング ―クラス設計の土台―
- 14 リファクタリング ―既存コードを成長に導く技―
- 15 設計の意義と設計への向き合い方
- 16 設計を妨げる開発プロセスとの戦い
- 17 設計技術の理解の深め方
6 条件分岐 ―迷宮化した分岐処理を解きほぐす技法―
この本は「設計」のための本なんだなと特に認識できる章だなと思いました。細かいコードの書き方だけではなく、クラス図なども使いながらどうやってクラスを設計していくのかの解決方法を提示してくれています。
条件分岐について取り扱っている6章では、コードが複雑になりがちな条件分岐に対してストラテジーパターンやポリシーパターンを用いた解決方法が説明されています。
(私が読んだ本はそんなに多くないですが)ストラテジーパターンをとてもわかりやすく説明してくれていて、「こういう風に書けば良いのか!」と理解ができる内容だと感じました。
10 名前設計 ―あるべき構造を見破る名前―
10章の名前設計についても、「名前設計」だけ聞くと「メソッド名やクラス名、変数名について注意していきましょう」というよく言われる指摘を思い浮かべる人もいると思います。
この本では、そこから更にもう一段階問題に踏み込んで、「関心事を意識した名前設計をする」ことが大切だと書かれています。
「商品」という名前を付けるのではなく、関心事が何かを意識してビジネスの目的に合った名前にする。例えば「予約」が関心事であれば「商品」よりも「予約品」、「在庫」が関心事であれば「商品」よりも「在庫品」にする、と解説されています。
これはドメイン駆動設計(そしてマイクロサービス)にも繋がる境界づけられたコンテキストとも深く関わるプラクティスだと思います。
名前という切り口でシステムを疎結合にしていく方法を学べました。
16 設計を妨げる開発プロセスとの戦い
16章では実際にコードを改善していく際に起こりうる、心理的問題やコミュニケーション、組織の課題と対処法について書かれています。
読んでいて「自分の組織も確かにそうだな」と思う人も多いのではないでしょうか。
大事なことはスモールステップで始めていく、そして、自分から始めて少しずつ広げていくことです。そういったアプローチについても丁寧に説明されています。
💬 まとめ
読みやすくサクサク学んでいきながらも大切なプラクティスをたくさん学べました!
チームメンバーと一緒に読み進めていきながら、少しずつプラクティスを適用していく、その時のヒントとして利用できる本だと思います。
一緒に「現場で役立つシステム設計の原則」を読むと、理解を更に深められると思いました!
ミノ駆動さん、素敵な本をありがとうございました!
エクストリームプログラミングを読み返した+イベントの座談会に出ました!
増田さん主催のコチラのイベントに、座談会パートで出していただくことになり、改めてケントベックのエクストリームプログラミング(2nd Edition)の本を読み直しました!
エクストリームプログラミングも、読書メモをまとめて毎日ツイートしながら読んでいきました。
modeling-how-to-learn.connpass.com
福井さんの勉強会資料はこちら!👇
speakerdeck.com
読みながらまとめたツイートのモーメントはコチラ↓
今回はイベントの1週間前から本を読み始めました!
ノートは私の理解で書いているので、何よりも原書を読んでいただくのが一番です。
ただ、読書会での意見交換のように、他の人の解釈を参考にしたいときや、原書を読んでみる前にどんなことが書いているのさっくりと雰囲気を掴んでいただくとか、そういった感じで皆さんのお役に立てると嬉しいです!
- 💡 特に面白かったところ
- 第1章:XPとは何か?
- 第4章:価値
- 📖 ノートをPDFとして公開します
- 本をまとめながら読んだ他の記事はこちら
ドメイン駆動設計の入門にオススメ!「現場で役立つシステム設計の原則」読んだ
エリック・エヴァンスのドメイン駆動設計の本を読みまして、たくさんのプラクティスを知れました。ただ、実際にどうやって開発を進めていけばいいんだろうというのは、この本ではあまりイメージするのが難しいと感じていました。
そんなときに、「現場で役立つシステム設計の原則」を改めて読み返してみよう!と、読んでみて、めちゃくちゃ読みやすかったし丁寧だったので感動しました…!
🙆♀️ こんな人にオススメ
ドメイン駆動設計に興味がある人・オブジェクト指向を始めたい人・より良いコードを書きたいと思っている人にオススメです。
エリック・エヴァンスのドメイン駆動設計は初心者向けではないので、まずこの本で取っ付き始めるのがいいのではないでしょうか。
また、エヴァンス本を読んだ後も、実際にどうやって開発していけばいいんだろう?に応えてくれる内容ですし、書籍の中で使われているドメイン駆動設計の言葉の理解度も深まると思うので、そんな人にもオススメ。
📖 目次
- 第1章 小さくまとめてわかりやすくする
- 第2章 場合分けのロジックを整理する
- 第3章 業務ロジックをわかりやすく整理する
- 第4章 ドメインモデルの考え方で設計する
- 第5章 アプリケーション機能を組み立てる
- 第6章 データベースの設計とドメインオブジェクト
- 第7章 画面とドメインオブジェクトの設計を連動させる
- 第8章 アプリケーション間の連携
- 第9章 オブジェクト指向の開発プロセス
- 第10章 オブジェクト指向設計の学び方と教え方
📖 どんなことが書いてあるか
各章で書かれていることをざっくりと。書籍の中ではコードも交えつつ、丁寧に解説されています。
テック系スライドを少しおしゃれ可愛くするTIPS
最近スライドを作るときに使っている、スライドをちょっとだけおしゃれ可愛くするTIPがあります。
それを社内で共有したら意外と知られてなかったので、折角なのでまとめます。
Microsoft 365のサブスクリプションか最新版のライセンスなら、どの機能も使えると思います!
- ✨ 文字と画像がシュッと動く
- 作り方
- ✨ かわいい人を入れる
- 作り方
- ✨ 手書き風に見せる
- 作り方
- ✨ 図形を結合する
- 作り方
- ✨ (おまけ) 絵文字を使う
- 終わり
Atmoph Window 2 がとても良い
Atmoph Windows 2 を在宅勤務の環境に導入しました。
チェスナットのフレームも使っています。
自宅が良いも悪いも防音性能が良くて、全然外の音が聞こえない。
そんな中四角い部屋で作業をしていると、静かで脳に刺激がなくて狂いそうになる。
そしてリラックスもできない。
ということで、窓を導入しました。
自然音が薄く聞こえてくるのも、集中するのにとても良いです。
逆に、Atmoph Windowを切ってしまうと「こんなに無音だったんだ・・・」となってしまうくらいです。
景色はオートにしていて、勝手に流れているので、気分転換にチラ見したりできます。
また、室内の猫の景色もあって、まるで隣の部屋に猫がいるような感覚も味わえて最高。
オートにすると、なんとなく夜には夜の風景を流してくれている気がします。(これは八瀬のホタルとのこと。写真だと見えにくい。)
あとは、壁に吊るすと窓感が5倍増したので、勇気を持って吊るすのがおすすめです。
Atmoph Window 2 のサイトでも吊り下げる用のフックを販売してますが、Amazonで買うと半額くらいになります。
あとは、窓からぶら下がる紐を隠したい。
何かオシャレな洋書でも置くか、マスキングテープ使うか・・・。他の人のアイデアも調べてみようっと。
窓だけの役割のデバイスなんていらないだろという気持ちもあったけど、結果的にはかなり満足してます。