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
ドメイン駆動設計に 挫折をしないで 一歩目を歩く 鈴木まー 東葛.dev in 柏 LT交流会【第2回】
Slide 2
Slide 2 text
鈴木まー(suzuki_mar) RubyでDDDや モジュラーモノリスなど のソフトウェアアーキテクチャ の導入、定着を している プロレス団体のCMSをメインとした システムの開発中 プロレス団体のDX 直近の仕事 最近していること PHP Sessionless Conferenceの コアスタッフ 設計などについて 設計界隈やPHP界隈の コミュニティで情報発信中 コミュニティ活動 @suzuki_mar
Slide 3
Slide 3 text
このLTで おこないたいこと @suzuki_mar
Slide 4
Slide 4 text
ドメイン駆動設計につ いてなんとなく興味を もってもらいたい @suzuki_mar
Slide 5
Slide 5 text
興味を持つと言っても ドメイン駆動設計って よくわからなくて 難しそう @suzuki_mar
Slide 6
Slide 6 text
難しいと感じること @suzuki_mar 定番書を読んで挫折をしてしまう 用語が多すぎる
Slide 7
Slide 7 text
定番書を読んで挫折をしてしまう DDDを勉強しようと思った人を 挫折させてきた本 @suzuki_mar
Slide 8
Slide 8 text
デザインパターンでいうと @suzuki_mar
Slide 9
Slide 9 text
@suzuki_mar 挫折しない本 挫折する本
Slide 10
Slide 10 text
原典となる本はものすごい勉強になるけど、 初心者が読むと挫折してしまう 先に初心者向けの本をよんで 理解してから必要であれば原典を読む @suzuki_mar
Slide 11
Slide 11 text
学び始めた段階で 挫折しないのが一番大切 @suzuki_mar
Slide 12
Slide 12 text
ドメイン駆動設計で 挫折しない本 @suzuki_mar
Slide 13
Slide 13 text
@suzuki_mar
Slide 14
Slide 14 text
難しいと感じること @suzuki_mar 定番書を読んで挫折をしてしまう 用語が多すぎる
Slide 15
Slide 15 text
@suzuki_mar ドメイン駆動設計はエンティティや バリューオブジェクトや集約。。。 などたくさんの用語があるけど、 ドメイン駆動設計の目的について理解 するまでは覚えなくてよい
Slide 16
Slide 16 text
@suzuki_mar 最初に理解する用語 ドメイン 事業活動または事業領域 サブドメイン 業務領域 同じことば 開発者だけでなくシステム開発に 関する人全員が話す言葉
Slide 17
Slide 17 text
難しいと感じること @suzuki_mar 定番書を読んで挫折をしてしまう 用語が多すぎる 最初は、ドメイン、サブドメイ ン、同じ言葉だけを理解する
Slide 18
Slide 18 text
ドメイン駆動設計の勉強で 挫折しないために @suzuki_mar 入門者をメインターゲット層にもしている “ドメイン駆動設計をはじめよう”を読む ドメイン駆動設計の実装周りの用語は最初は覚えなくて、 そのかわりドメイン駆動設計にとって 大切な “ドメイン”、”サブドメイン”、”同じ言葉”に をさきに理解する
Slide 19
Slide 19 text
ドメイン駆動設計についての 挫折しそうな イメージはなくなった @suzuki_mar
Slide 20
Slide 20 text
ドメイン駆動設計は自分に関係あるの? 事業活動や業務領域 とかプログラミングと関係なさそう @suzuki_mar
Slide 21
Slide 21 text
鈴木にとってのプログラマーの仕事は 事業活動をエンジニアリングの 視点で理解をしていき、 重要な業務領域の開発に 集中して時間をつかっていく @suzuki_mar
Slide 22
Slide 22 text
3種類の業務領域 @suzuki_mar コアサブドメイン 一般的な業務領域 補完的な業務領域
Slide 23
Slide 23 text
@suzuki_mar コアサブドメイン その事業活動において大切なことで このサブドメインがあることで ビジネスとして成立したり競合優位性になるもの ECサイトの場合 ・ ・
Slide 24
Slide 24 text
@suzuki_mar コアサブドメイン その事業活動において大切なことで このサブドメインがあることで ビジネスとして成立したり競合優位性になるもの ECサイトの場合 ・商品の検索 ・商品のレコメンド
Slide 25
Slide 25 text
@suzuki_mar 一般的な業務領域 コアサブドメインをおこなうために 必要だがすでにそれは 専門のSaaSが存在しているので それを使用すると良いため 他の同じようなプロダクトとは競合差別化にはならないもの ECサイトの場合 ・ ・
Slide 26
Slide 26 text
@suzuki_mar 一般的な業務領域 コアサブドメインをおこなうために 必要だがすでにそれは 専門のSaaSが存在しているので それを使用すると良いため 他の同じようなプロダクトとは競合差別化にはならないもの ECサイトの場合 ・商品の販売方法 ・商品の在庫管理
Slide 27
Slide 27 text
@suzuki_mar 補完的な業務領域 コアサブドメインをおこなうために 必要だけどでそれをおこなうSaaSが存在しない ので自分たちで実装をする必要があるが できるだけ楽をしたいもの ECサイトの場合 ・ ・
Slide 28
Slide 28 text
@suzuki_mar 補完的な業務領域 コアサブドメインをおこなうために 必要だけどでそれをおこなうSaaSが存在しない ので自分たちで実装をする必要があるが できるだけ楽をしたいもの ECサイトの場合 ・売上レポート ・ユーザープロフィール
Slide 29
Slide 29 text
@suzuki_mar コアサブドメイン 補完的な業務領域 一般的な業務領域
Slide 30
Slide 30 text
@suzuki_mar コアサブドメイン 補完的な業務領域 一般的な業務領域 競合差別化をするために最も力をかけるべきもの
Slide 31
Slide 31 text
@suzuki_mar コアサブドメイン 補完的な業務領域 一般的な業務領域 競合差別化をするために最も力をかけるべきもの コアサブドメインのために必要だけど、すでにその業務を 専門でおこなうためのSaaSが存在するので それを使用したほうがいい
Slide 32
Slide 32 text
@suzuki_mar コアサブドメイン 補完的な業務領域 一般的な業務領域 競合差別化をするために最も力をかけるべきもの コアサブドメインのために必要だけど、すでにその業務を 専門でおこなうためのSaaSが存在するので それを使用したほうがいい コアサブドメインのために必要であるが、外部の SaaSを使う必要までではなかったり、存在しな いため自分たちで実装をするができるだけ楽にし たい
Slide 33
Slide 33 text
@suzuki_mar 事業活動を3種類にわけていて 競合差別となる最も大切な コアドメインに対して集中して 時間をつかっていき、それ以外は 外部のサービスをしようしたり、 良い意味で手を抜く つまり
Slide 34
Slide 34 text
@suzuki_mar コアドメインを 考えてみよう
Slide 35
Slide 35 text
@suzuki_mar XとかのSNSについての コアドメイン
Slide 36
Slide 36 text
@suzuki_mar 投稿する 他のユーザーとの繋がる
Slide 37
Slide 37 text
@suzuki_mar SNSで投稿をしやすくなり いろんな人が投稿してくれる それを他のたくさんの ユーザーも投稿してそれをもとに ユーザー同士のやりとり がしやすくなる コアドメインに集中していくことにより
Slide 38
Slide 38 text
@suzuki_mar Spotifyとかの 音楽配信サービス
Slide 39
Slide 39 text
@suzuki_mar どこでも音楽をきける (車、スマートウォッチにも対応) 優秀なレコメンド機能
Slide 40
Slide 40 text
@suzuki_mar 好きな場所、タイミングでアプリを 起動したらレコメンドされたその人 にあった音楽をきくことができる コアドメインに集中していくことにより
Slide 41
Slide 41 text
@suzuki_mar 同じ言葉
Slide 42
Slide 42 text
@suzuki_mar コアドメインに対していくには コアドメインに対する理解が欠かせない また、コアドメインはビジネスの中心なのでコア ドメインの開発が会社の成長につながる そのため、開発チーム以外のセールスやカスタ マーサクセスなどの全員でコアドメインに対して 理解をしていく必要がある
Slide 43
Slide 43 text
@suzuki_mar 全員の共通認識を持てる 同じことばでプロダクトに ついて議論をしていく必要がある
Slide 44
Slide 44 text
@suzuki_mar おこなっていることは 役割ごとに違うので おなじことばを使うには 意識して使う必要がある
Slide 45
Slide 45 text
@suzuki_mar それぞれの役割ごとに 見る視点が違う バックエンド エンジニアは DBを見ている デザイナーや フロントエンド エンジニアは UIをみている カスタマーサクセス は一人ひとりのユー ザーをみている セールスは お客さんをみている
Slide 46
Slide 46 text
@suzuki_mar 見ている視点が違うので 使っている言葉が違う
Slide 47
Slide 47 text
@suzuki_mar ECサイトを開発している場合の 違う言葉を使用している例 セールス 新しい契約をするためにTOPページに表示されている商品一覧を最新 の商品を多く表示するようにしてほしい エンジニア TOPページに表示されている商品はレコメンドされている商品のこと だから、レコメンドエンジンを改良しよう セールス TOPページに表示されている商品一覧が最新のものになっていな い!!
Slide 48
Slide 48 text
レコメンドした商品一覧 レビューが高 い商品一覧 セールスが 修正して ほしいと思った ところ エンジニアが 修正しようと 勘違いしたもの 同じ言葉を使用していないので誤解が発生してしまった
Slide 49
Slide 49 text
@suzuki_mar ECサイトを開発している場合の 同じ言葉を使用している例 セールス 新しい契約をするためにTOPページのレビューが高い商品に表示され ている商品一覧を最新の商品を多く表示するようにしてほしい エンジニア レビューの高い商品のなかでも最新のものを表示するために、アルゴ リズムを変更しよう セールス レビューの高い商品一覧に最新のもの表示されている!! 新しい契約を結べそう
Slide 50
Slide 50 text
同じ言葉を使用しているので システムに関わる関係者が 同じ視点をみることができるので スムーズに会話をすることができる @suzuki_mar 同じ言葉
Slide 51
Slide 51 text
@suzuki_mar まとめ
Slide 52
Slide 52 text
挫折しづらい初心者も対象 にしている本を読んで、 一気にいろんな用語 を理解しない @suzuki_mar
Slide 53
Slide 53 text
ドメイン駆動設計をするために必要となる 事業活動とそれを三部類した コアサブドメイン、一般的な業務領域、補完的な業務領域を 理解してそれに応じた実装方針をとる 役割に関係なく全員が同じ言葉をつかって事業活動や コアサブドメインについて理解をしていく @suzuki_mar
Slide 54
Slide 54 text
いままでの説明でドメイン駆動設計について 挫折をしないやりかたを理解して ドメイン駆動設計についての必須の用語を理解したけど ドメイン駆動設計を実際の開発を するためにはまだまだ理解する事が必要 そのために挫折をしないために次の本を読む @suzuki_mar
Slide 55
Slide 55 text
@suzuki_mar この登壇でいままで話してきたことを詳細に わかりやすく書かれている ドメイン駆動の業務領域についての理解をし ていく方法、実装方法など幅広く学習するこ とができるので、この本をチームで読んで実 践をしていくとチームではじめていくことが できる
Slide 56
Slide 56 text
最後に
Slide 57
Slide 57 text
鈴木はドメイン駆動設計を理解していくことで、 品質の低い設計がなくなりプロダクトが 作っていきたい価値を発揮できる様になると思っています このセッションを通して ドメイン駆動設計を挫折しないで 少しずつ理解していくための第1歩と 思ってもらえれば幸です @suzuki_mar
Slide 58
Slide 58 text
終わり