Slide 1

Slide 1 text

段階的なリプレイスを2年続けていたら、 ユーザーのことで悩めるようになっていた 話

Slide 2

Slide 2 text

自己紹介

Slide 3

Slide 3 text

3 名前:ディミトロフ チャブダール 所属:エンジニア・写真販売機能 国籍:ブルガリア 在留資格満了日まであと:1ヶ月 自己紹介

Slide 4

Slide 4 text

サービス紹介

Slide 5

Slide 5 text

すべての先生に 子どもと向き合う 時間と心のゆとりを こんなプロダクトを開発しています メインプロダクトは、こども施設職員の業務を支援するWebアプリケーション。 保護者と施設のやり取りを支えるモバイルアプリケーションや、施設職員向けモバイル版 アプリケーション、外部サービスと連携するAPIなども開発しています。 5

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

テーマ

Slide 10

Slide 10 text

10 ● 直近のリリースの事例から、2年のリプレイス活動で何が変わったかを振 り返ってみる 今日のお話

Slide 11

Slide 11 text

リプレイスの振り返り

Slide 12

Slide 12 text

段階的なリプレイスを数年続けた結果、

Slide 13

Slide 13 text

1番変わったのはコードベースではなく、 何に悩むかだった

Slide 14

Slide 14 text

14 ● リプレイスの戦略 ● エンジニアリングで悩める二種類の課題 ● 結局 what is 技術負債 ● 直近のリリースで振り返り 今日のお話

Slide 15

Slide 15 text

〜2年リプレイス戦略のおまとめ

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

*イメージ

Slide 20

Slide 20 text

集約単位でリプレイス

Slide 21

Slide 21 text

集約のおさらい

Slide 22

Slide 22 text

*イメージ

Slide 23

Slide 23 text

*イメージ 価格設定

Slide 24

Slide 24 text

*イメージ 価格設定 カート 注文

Slide 25

Slide 25 text

*イメージ 価格設定 カート 写真 注文

Slide 26

Slide 26 text

エンジニアリングで悩める二種類の課題

Slide 27

Slide 27 text

コアドメイン

Slide 28

Slide 28 text

軽い復習 https://lazebny.io/domain-driven-design-core-supporting-generic-subdomains/

Slide 29

Slide 29 text

軽い復習 複雑かつ優位性に関わる =コア https://lazebny.io/domain-driven-design-core-supporting-generic-subdomains/

Slide 30

Slide 30 text

軽い復習 複雑な割には競合優位 性あまり影響ない =非コア https://lazebny.io/domain-driven-design-core-supporting-generic-subdomains/

Slide 31

Slide 31 text

僕らのコアドメイン

Slide 32

Slide 32 text

コアに近い

Slide 33

Slide 33 text

コアに近い コドモンさん、保護者全 員にアンケート送れるよ うになったみたいよ あら、コドモン以外に乗り 換えは考えられないわね

Slide 34

Slide 34 text

コアに近い

Slide 35

Slide 35 text

あ、日々の連絡帳写真が買 えるようになってる! かわいい、買っちゃお❤ コアに近い

Slide 36

Slide 36 text

非コアドメイン

Slide 37

Slide 37 text

コアから遠い開発?

Slide 38

Slide 38 text

コアから遠い開発? コドモンさん、価格設定 を全箇所Repositoryから 参照するようリファクタ したらしいわよ

Slide 39

Slide 39 text

コアから遠い開発? コドモンさん、価格設定 を全箇所Repositoryから 参照するようリファクタ したらしいわよ あら、コドモン以外に乗り 換えは考えられないわね

Slide 40

Slide 40 text

Coreから遠い開発?

Slide 41

Slide 41 text

Coreから遠い開発? コドモンさん、リスクを考 慮して共通コンポーネント には手を出さず、新しく実 装することにしたのでね。 もう少し写真買っちゃおう かしら❤

Slide 42

Slide 42 text

42 ● コア・非コアどっちも難しいことがあるが、 ビジネス価値を生むのはコアだけ コア・非コア

Slide 43

Slide 43 text

what is 技術負債

Slide 44

Slide 44 text

44 ● 技術負債って、 ○ スパゲティコート ○ 人類の歴史より長い神スクリプト ○ なんでも搭載できるDBテーブル ○ あ、これ自作なんですね ○ メンテされてなさそうだけど、どうにか動いているライブラリ ○ これって、hogeを数人でやったらDDoS出来ちゃうってことですかね What is 技術負債

Slide 45

Slide 45 text

ではなく

Slide 46

Slide 46 text

46 ● 技術負債って、 ○ エンジニアリングをユーザーの課題ではなく システムを守ることに時間を使うほうがい多い状態 What is 技術負債

Slide 47

Slide 47 text

47 ● リプレイスをしていて一番変わったことは リプレイスを進めて変わったこと

Slide 48

Slide 48 text

48 ● リプレイスをしていて一番変わったことは、 ○ ユーザー課題にフォーカスできるようになったことだった リプレイスを進めて変わったこと

Slide 49

Slide 49 text

技術負債 is 非コアの課題で頭を抱える回数 >コアの課題で頭を抱える回数の状態

Slide 50

Slide 50 text

変更に想定外な副 作用ないかな。。 膨大なテーブル DDL発行で障害お こきないかな どうやってテスタ ブルにしていくと いいんだ

Slide 51

Slide 51 text

51 ユーザーの課題よりシステムを壊さないことに時間を多く使用 リプレイス前

Slide 52

Slide 52 text

どうしたら写真の 公開期限にもっと 気づいてもらえる のか どうすればコドモ ンに乗り換えてく れるのか まだ購入したこと のない保護者に対 してキャンペーン などで、、

Slide 53

Slide 53 text

53 システムを安全性→ユーザー課題に時間を多く使用 リプレイス後

Slide 54

Slide 54 text

直近のリリースでみるbefore after

Slide 55

Slide 55 text

*イメージ 価格設定 カート 写真 注文

Slide 56

Slide 56 text

連絡帳写真アルバム

Slide 57

Slide 57 text

連絡帳写真

Slide 58

Slide 58 text

連絡帳写真 ● before ○ システム都合の議論 ■ 連絡帳の写真をどう表示してあげる? ■ 表示はできたとして、どうやってカート、注文とインテグレーション させる? ■ 10箇所ぐらいif文書く。。?リファクタしてからする?どの程度リ ファクタする? ■ 仮に10箇所if文書いたとしたら負債の増加許容できる。。?

Slide 59

Slide 59 text

連絡帳写真 ● after ○ 集まってきた集約等をコラボさせるだけ 価格設定 カート 写真 注文

Slide 60

Slide 60 text

連絡帳写真 ● after ○ コアドメインに集中 ■ 連絡帳写真はどう表示する?アルバムとして表示する、月単位? ■ 表示期間どうする? ■ 公開は月単位で一気にする、それとも都度公開する?

Slide 61

Slide 61 text

カート内調整

Slide 62

Slide 62 text

カート内調整

Slide 63

Slide 63 text

● before ○ システム都合の議論 ■ 写真の種類が一緒にカートで追加される前提になっている、カート追 加の際は種類なしにした場合は影響範囲はどこ ■ カートの内容を更新するにはこの箇所だけで成立するのか、想定外の 副作用はないのか、どうテストする? ■ このスクリプトにこうすればいけれるとして、負債がどれほど増え る、許容できる?リファクタする? カート内調整

Slide 64

Slide 64 text

● after ○ コアドメインに集中 ■ カート集約を変更するだけ ■ どういう調整ができるといい? カート内調整 カート

Slide 65

Slide 65 text

キャンペーン (coming soon?)

Slide 66

Slide 66 text

coming soon? キャンペーン

Slide 67

Slide 67 text

● before ○ システム都合の議論 ■ 神クラス、神スクリプトのコラボ、どこをどうすれば実現するか取り 替えず調査から。。 ■ 。。Aキャンペーンならできそうです、Bは結構難しいです キャンペーン

Slide 68

Slide 68 text

● after ○ コアドメインに集中 ■ カート・注文集約を変更 キャンペーン カート 注文

Slide 69

Slide 69 text

● after ○ コアドメインに集中 ■ どういうキャンペーンがしたい? 配送料無料?初回限定?割引?最低購入額?カモンカモンカモン キャンペーン

Slide 70

Slide 70 text

70 ● 負債は、非コア課題に時間を費やさなければいけない状況 ● リプレイスを続けたら ○ どうシステムを壊さずに済むか→どうユーザー課題を解決するか に向き合う時間が増えた🎉 まとめ

Slide 71

Slide 71 text

71 ● リプレイス後のポジティブな話にフォーカしましたがたくさんつまづきが あったり、新しい課題も😇 まとめ

Slide 72

Slide 72 text

ご清聴ありがとうございます