Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
エヴァンス本輪読会 お疲れ様会を楽しむために 2021/08/28 エヴァンス本輪読会お疲れ様会 Jun Nakajima
Slide 2
Slide 2 text
エヴァンス本輪読会 お疲れ様でした! 2
Slide 3
Slide 3 text
そもそもなんでLT会? 3
Slide 4
Slide 4 text
そもそもなんでLT会? 4
Slide 5
Slide 5 text
LT会を開く動機 ● みんなの学びを聴きたい、話したい ● いろんな立場の人が常時30〜40人で輪読会に参加していた ● 輪読会だけの時間では語れなかった何かが、それぞれある はず 5
Slide 6
Slide 6 text
設計技術の暗黙知と形式知 ● 設計の技術は(言語やFWと比べて)暗黙知が多い 6 暗黙知 形式知 形式知 形式知 それぞれ個人の経験 世の中に出ている情報(書籍・ネットな ど)
Slide 7
Slide 7 text
設計技術の暗黙知と形式知 ● 輪読会が目指していたもの 7 暗黙知 形式知 形式知 形式知 ①本の内容と経験を紐づけて話 したり感想を言う ②言語化できたものを 日常的に扱えるようになる 形式知 形式知 形式知 形式知 形式
Slide 8
Slide 8 text
ぜひ学んだことの言語化を ● LTでお話する登壇者はもちろんのこと、 話を聴いた参加者の皆さんも、感想だったりフィードバックを してください ● 登壇者のさらなる言語化に繋がりますし、 なにより自身の形式知にも繋がっていきます 8
Slide 9
Slide 9 text
前置きはここまで 9
Slide 10
Slide 10 text
DDD輪読会での差分と これから 2021/08/28 エヴァンス本輪読会お疲れ様会 Jun Nakajima
Slide 11
Slide 11 text
輪読会を行なう前後の 自身の差分 11
Slide 12
Slide 12 text
輪読会を行なう前 ● IDDD本を読んでみたが、結局のところDDDって…?という状態 ○ 現場はJavaじゃないし…(Pythonメインだった) ● 誰かがIDDD本読んだら、エヴァンス本でしょ! というノリで始まった(気がする) ● 現場ではモデリングもしなかったし、ドメインに沿った型を定義するということはし ていなかった ● 自身でコードに書いてたりはしたが、業務上複雑でもなかったので、導入するメ リットも薄かった 12
Slide 13
Slide 13 text
輪読会を行った後 ● あらためて読むと、第1部のモデルの話がすごく重要だと気づいた ○ 以前の自分は、読みやすさから第2部のテクニックを先に学んでた ○ モデルと実装を結びつける重要性 ○ モデルのリファクタリングという観点は新しかった ● 第4部の責務のレイヤは、モデリングに一つ別の視点が加わった ○ ただ現状をモデリングしていると複雑すぎるので、現場ではモデリングする 時に責務のレイヤを取り入れてみた 13
Slide 14
Slide 14 text
モデルと実装を結びつける 14
Slide 15
Slide 15 text
ソフトウェアシステムの一部を設計する際には、紐づけが明らかに なるように、ドメインモデルを文字通りの意味で忠実に反映させるこ と (中略) 強固なユビキタス言語を支えることに加えて、ドメインと実装両方 の目的に使える単一のモデルを要求すること 15 -- エリック・エヴァンスのドメイン駆動設計 P.47 モデルと実装を結びつける
Slide 16
Slide 16 text
モデルと実装を結びつける ● この結びつける感覚はなかなか難しかった ○ モデルを描いて満足していまい、その後参照しない ○ 日本語⇔英語変換の壁 ■ 日本語でモデル描いて、実装は英語で結びつきがわ かりづらくなる ○ 設計と実装を分けてしまう(設計書作って、実装) ■ 設計と実装を行き来するアジャイル的アプローチ 16
Slide 17
Slide 17 text
モデルと実装を結びつける ● 第1〜2部では結びつける重要性と方法論を述べている ● モデルと実装を結びつけるにはアジャイル開発が前提 ○ 設計と実装を同じチームでやる ● オブジェクト指向などのドメインのふるまいを表せるツールサ ポートが必要 ○ コードでモデルが表現できないと、結びつけられない 17
Slide 18
Slide 18 text
モデルを常に リファクタリングし続ける 18
Slide 19
Slide 19 text
Ericの経験から導き出される教訓は、真に強力なドメ インモデルは時間と共に進化するということであり、 偉大なベテランモデラであっても、最高のアイデアを 得られるのはシステムが初期リリースされた後のこと だ 19 -- マーチン・ファウラー エリック・エヴァンスのドメイン駆動設計 P.xi 序文 モデルは常にリファクタリングし続ける
Slide 20
Slide 20 text
忘れないで欲しいのだが、こうしたモデルに基づく設 計は一度に現れるものではない。 ドメインの重要な概念を蒸留して、シンプルで鋭いモ デルにするには、リファクタリングと知識のかみ砕き を何度か反復しなければならないのだ。 20 -- エリック・エヴァンスのドメイン駆動設計 P.55 モデルは常にリファクタリングし続ける
Slide 21
Slide 21 text
なぜモデルをリファクタリングするのか ● DDDは、的確なモデル(事業のコア)を見つけてそれをコード で表現できることが一つ目的としてある ○ 深いモデル ● 暗黙的な概念を明示したり、そのドメインにおいては周辺的 な些末な情報を省いていったり 21
Slide 22
Slide 22 text
なぜモデルをリファクタリングするのか ● リファクタリングと一口で言っても、容易ではない ● 絶えずやっていかないといけな部分 ● 今までの自分では、ただ現状をモデリングしていっただけ だったが、それを責務のレイヤなどを取り入れることで一つ 整理をする観点を手に入れることができた 22
Slide 23
Slide 23 text
今後の展望 23
Slide 24
Slide 24 text
ひたすら実践を続けていく ● 現場ではDDDを実践しているが、まだモデルへ常に行き来し ている状態ではない ○ それを促すようにしていきたい ● もっとモデルを忠実にコードに落とせるようにしていきたい ○ コードリーディング ○ 現場ベースでの相談だったり 24
Slide 25
Slide 25 text
Thank you! 25