Slide 1

Slide 1 text

技術的負債と向き合うカイゼン活動を1年続けて分かった “持続可能" なプロダクト開発 芹田 悠一郎 @株式会社ケップル KEPPLE CREATORS LAB

Slide 2

Slide 2 text

● 株式会社ケップル KEPPLE CREATORS LAB 所属 ● ケップルにジョインして2年半 ● フルスタック的に Web まわりのエンジニア をやっています ● とにかくコーヒーが好き 芹田 悠一郎 Yuichiro SERITA 2

Slide 3

Slide 3 text

⾰新的なテクノロジーを通じて、 持続可能でより良い未来を描くためのイノベーションに 挑戦し続けるスタートアップ。 彼らの成⻑に必要とされる事業開発を グローバルで⾏うことにより 世界のスタートアップエコシステムの発展を⽬指します。 イノベーションを促進する グローバルプラットフォームとなる Vision Mission これまでに無い価値を⽣み出そうと挑戦を続ける起業家。 彼らの成⻑をさまざまな⾯から⽀援する投資家。 そのエコシステムから⽣まれたスタートアップが発展し、 ⼀つの産業と呼べるような市場が創造される。 そんな未来をこの世界に実現することが KEPPLEのミッションです。 世界に新たな産業を

Slide 4

Slide 4 text

KEPPLE(メディア) KEPPLE DB KEPPLE CRM 株主総会クラウド Products ファンドサポート 株価算定・投資検討 人材紹介 投資事業 プロフェッショナル サービス 投資家とスタートアップのニーズに応える多様なサービスを展開しています。 ファンド運営

Slide 5

Slide 5 text

KEPPLE DB KEPPLE CRM KEPPLE (メディア) 株主総会クラウド Products KEPPLE アプリ

Slide 6

Slide 6 text

もくじ ● 前提: KEPPLE DB とは ● 「持続可能なプロダクト開発」とは ● 「カイゼン活動」とは ● 「カイゼン活動」の変遷 ● 「カイゼン活動」で得たもの ● 「カイゼン活動」でプロダクト開発を「持続可能」に 6

Slide 7

Slide 7 text

もくじ ● 前提: KEPPLE DB とは ● 「持続可能なプロダクト開発」とは ● 「カイゼン活動」とは ● 「カイゼン活動」の変遷 ● 「カイゼン活動」で得たもの ● 「カイゼン活動」でプロダクト開発を「持続可能」に 7

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

KEPPLE DB の性質 ● スタートアップと投資家のデータベース ● 「スタートアップ」 「投資家」 「ニュース」 「オリジナル記事」 などを検索・フィルタ ● スタートアップ・投資家は数万件

Slide 10

Slide 10 text

KEPPLE DB の性質 ● スタートアップ 1 社あたり、 表示プロパティは 100 以上

Slide 11

Slide 11 text

KEPPLE DB の性質 (ビジネス観点) ● ケップルのプロダクト部門の投資家向けサービスの主力 ● ほぼ毎週ユーザーに見えるアップデートをしたい ● でっかい機能追加もしたい ● その上、長期間無理なく運用したい 11

Slide 12

Slide 12 text

前提: KEPPLE DB 2023年12月リプレースしました 12

Slide 13

Slide 13 text

リプレースに至った課題 ● KEPPLE DB は高頻度でリリースしたい が…… ● 当初、KEPPLE DB は KEPPLE CRM の一機能だった ● KEPPLE CRM はリリース時にサービス停止が必要 ● KEPPLE CRM 固有の事情が絡むロジックが多い。 KEPPLE DB の開発にアサインされたら、 CRM のキャッチアップも必要 13

Slide 14

Slide 14 text

KEPPLE DB は CRM から独立させ リプレースしました 14

Slide 15

Slide 15 text

もくじ ● 前提: KEPPLE DB とは何か ● 「持続可能なプロダクト開発」とは ● 「カイゼン活動」とは ● 「カイゼン活動」の変遷 ● 「カイゼン活動」で得たもの ● 「カイゼン活動」でプロダクト開発を「持続可能」に 15

Slide 16

Slide 16 text

「持続可能」とは 16

Slide 17

Slide 17 text

「持続可能な開発」 “「持続可能な開発」とは、  「環境と開発に関する世界委員会」(委員長:ブルントラント・ノルウェー首相(当 時))が1987年に公表した報告書「Our Common Future」の中心的な考え方として取り上げた概念で, 「将来の世代の欲求を満たしつつ,現在の世代の欲求も満足させるような開発」 のことを言う。 この概念は,環境と開発を互いに反するものではなく共存し得るものとしてとらえ,環境保全を考慮した節度 ある開発が重要であるという考えに立つものである。 ” https://www.mofa.go.jp/mofaj/gaiko/kankyo/sogo/kaihatsu.html より 17

Slide 18

Slide 18 text

「持続可能なプロダクト開発」がしたい 18

Slide 19

Slide 19 text

「持続可能なプロダクト開発」に 必要なもの 19

Slide 20

Slide 20 text

「持続可能なプロダクト開発」 に必要な要素 ● 速いリリース ● 少ないバグ ● 迅速なバグ修正 ● 迅速な脆弱性対応 ● 社会の変化に追従 (GDPR とか) ● 無理のない アーキテクチャ ● バグ出しづらい ● バグ直しやすい ● 脆弱性対応が楽 ● トレンドに追従 ● インフラ維持が容易 ● オブザーバビリティ ビジネス観点 開発観点 運用観点 20

Slide 21

Slide 21 text

負債の解消は 「持続可能」 を保つ要素のひとつ ● プロダクトのロードマップ、世の中のトレンドを見据えた設計をしたとしても、 プロダクトを取り巻く環境は変化し続ける ● そもそも、最初から完璧な設計になることはあまりない ● 想定のズレを軌道修正しつつ進めるのがベター 21

Slide 22

Slide 22 text

プロダクトの未来の姿を見据えて負債の解消を行う ● 「現時点で既に負債になっているもの」 よりも 「今後負債になりそうなもの」 に 対処するほうがコスパがいい ● 負債になりづらいように負債を解消する 22

Slide 23

Slide 23 text

(番外) エンジニア・エンジニア組織が持続可能 ● 負債がたまっている状態は減点法でじわじわ効いてくる ※個人の感想です ● 負債の解消はエンジニア・エンジニア組織を持続可能にするのにも重要 ○ モチベを阻害しない DX を保つ ○ エンジニアの成長を阻害しない技術スタックを維持する ○ 採用上不利にならない状態を保つ 23

Slide 24

Slide 24 text

もくじ ● 前提: KEPPLE DB とは何か ● 「持続可能なプロダクト開発」とは ● 「カイゼン活動」とは ● 「カイゼン活動」の変遷 ● 「カイゼン活動」で得たもの ● 「カイゼン活動」でプロダクト開発を「持続可能」に 24

Slide 25

Slide 25 text

「カイゼン活動」 ● 作業時間の 20% を負債の解消にあてる ○ 当初は金曜日に行なっていたが、今は1か月に1週間にしている ● 「カイゼン」したい内容を事前に積んでおき、エンジニアの裁量で進める ○ 「この部分をリファクタしたい」 「ESLint のこのルールを入れたい」 「Flaky なテストを修正したい」 「CI 改善したい」 「VSCode の推奨 extension を変えたい」 などなど 25

Slide 26

Slide 26 text

「カイゼン活動」 を立ち上げる前の課題感 ● 負債の解消を通常の開発と並行して進めるとうまくいかない ○ ボーイスカウト・ルール ○ 1週間に1人1つ RenovateBot の PR 片付けようキャンペーン ● あとまわしにされがち ● 負債の解消にどれくらい時間をかけていいか不明瞭 26

Slide 27

Slide 27 text

「カイゼン活動」 を立ち上げる前の課題感 ● 負債が可視化できていないので、膨れ上がっていく一方に感じる ● リプレースで爆上がりしたリリースペースを維持できるか ● リプレース以外の方法でちゃんと負債を解消できる体制にしたい 27

Slide 28

Slide 28 text

「カイゼン活動」 で課題を解消 ● あとまわしにされがち、負債の解消にどれくらい時間をかけていいか不明瞭 → 20% は使っていい ● 負債が可視化できていないので、膨れ上がっていく一方に感じる → タスクとして積み上げて可視化 ● ちゃんと負債を解消できる体制、リリースペースの維持 → 今のところうまくいっている 28

Slide 29

Slide 29 text

もくじ ● 前提: KEPPLE DB とは何か、なぜリプレースしたか ● 「持続可能なプロダクト開発」とは ● 「カイゼン活動」とは ● 「カイゼン活動」の変遷 ● 「カイゼン活動」で得たもの ● 「カイゼン活動」でプロダクト開発を「持続可能」に 29

Slide 30

Slide 30 text

「カイゼン活動」 立ち上げ期 ● 毎週金曜日はカイゼンデー ● 少しずつ負債を返済できてはいる ● そこそこうまくいっている ● 1日で終わらないカイゼンタスクの扱いに困り始める 30

Slide 31

Slide 31 text

転機: Mantine v7 移行 ● KEPPLE DB では Mantine という UI ライブラリを使っています ● カイゼンデーで、Mantine v6 から Mantine v7 移行作業を始める ● 破壊的変更が多すぎて、金曜日の作業だけだと永遠に終わらない! ● 通常の機能開発を一時的に止めて対応 ● 1ヶ月ほどで無事移行完了 (8月) 31

Slide 32

Slide 32 text

カイゼンデーからカイゼンウィークへ ● Mantine v7 移行作業が完了したタイミングで、カイゼン活動を見直すことに ● Mantine v7 移行に限らず、1日で終わらないカイゼンタスクは多かった ● 月に 1 回 1 週間に変更 ● 作業時間の 20% という割合は (ほぼ) 変化なし ● うまくいっている 32

Slide 33

Slide 33 text

もくじ ● 前提: KEPPLE DB とは何か、なぜリプレースしたか ● 「持続可能なプロダクト開発」とは ● 「カイゼン活動」とは ● 「カイゼン活動」の変遷 ● 「カイゼン活動」で得たもの ● 「カイゼン活動」でプロダクト開発を「持続可能」に 33

Slide 34

Slide 34 text

設計について議論する機会が自然と増えた ● 負債を解消する作業、その PR のレビューをしていくうちに、負債に敏感になる ● 局所的なリファクタリングではなくリアーキテクチャに意識が行くようになる ● 結果として、設計について議論する機会が自然と増えた ● 新たに機能開発するときの設計も以前より洗練されている 34

Slide 35

Slide 35 text

負債の総量がざっくりわかるように ● 認識している負債はタスクとして積み上がっている ● タスク化した負債のうち作業完了と新規追加が均衡状態にある ● 増えすぎていないか? 増え続けていないか? チェックできる 35

Slide 36

Slide 36 text

仮説検証段階での大胆な手抜き ● 仮説検証段階での大胆な手抜き (借り入れ) ● 負債の返済を続けると、返済の感覚が掴めてくる ● いい条件で借りられる負債が分かってくる ● より早い時期にリリースができる 36

Slide 37

Slide 37 text

もくじ ● 前提: KEPPLE DB とは何か、なぜリプレースしたか ● 「持続可能なプロダクト開発」とは ● 「カイゼン活動」とは ● 「カイゼン活動」の変遷 ● 「カイゼン活動」で得たもの ● 「カイゼン活動」でプロダクト開発を「持続可能」に 37

Slide 38

Slide 38 text

「カイゼン活動」でプロダクト開発を「持続可能」に ● 変化するプロダクトを取り巻く環境に適応し続け 「持続可能」 を実現する ● そのために、技術的負債とまっすぐ向き合い、見える状態にする ● 「カイゼン活動」で負債を一定のペースでコンスタントに解消し続ける ● 必要なときは負債を作ってでも大胆に早くリリースし、リリース後に返済する ● 負債を解消し続けることで知見が蓄積され、設計も改善していく 38

Slide 39

Slide 39 text

プロダクトエンジニア募集中! https://www.wantedly.com/projects/1294425

Slide 40

Slide 40 text

おまけ: 数値で見る 「カイゼン活動」 ● KEPPLE DB でカイゼン活動を始めてから11ヶ月 ● 起票したタスクの数は 113 ● won’t do にしたタスクの数は 13 (12%) ● 完了したタスクの数は 43 (38%) ● 未完了のタスクの数は 57 (50%) 40

Slide 41

Slide 41 text

おまけ: 数値で見る 「カイゼン活動」 41 サクッと上がらないやつだけタスク化してます