Slide 1

Slide 1 text

Copyright©2021 Sukedachi Inc. All Right Reserved 開発生産性を計測し、技術的負債返済ができ る開発体制を作ったお話 株式会社助太刀 執行役員CTO 月澤拓哉

Slide 2

Slide 2 text

Copyright©2021 Sukedachi Inc. All Right Reserved 自己紹介

Slide 3

Slide 3 text

Copyright©2021 Sukedachi Inc. All Right Reserved 自己紹介 経歴 Career 01 グリー株式会社 2013.04- 仕事内容 Job 02 2017.03- 月澤 拓哉 Employee Introduction 助太刀の開発組織作り 業界を変えられるサービスを 生み出せる開発組織を作る仕事 Tsukisawa Takuya 執行役員 CTO  これからやりたいこと 技術負債の返済と開発サイクルの効 率化、社員旅行 1987年生まれ 秋田県出身 北海道大学大学院 情報科学研究科卒 激辛料理、お酒、格闘技、筋トレ Twitter @tksw_009 SNS 好きなこと Like 03 株式会社ジーニー  今やっていること 主にバックエンド開発、開発組織作りや開発の内製化などに従事 2020年11月 VPoEとして入社 2021年6月 執行役員就任 2022年11月 執行役員CTO就任 2020.11- 株式会社助太刀 

Slide 4

Slide 4 text

Copyright©2021 Sukedachi Inc. All Right Reserved 株式会社助太刀の紹介

Slide 5

Slide 5 text

Copyright©2021 Sukedachi Inc. All Right Reserved 建設業界の課題 1 業界内で高齢化が進み、 若年層の就業者が少ない 60代の割合が全体の4分の1を占めており、 今後深刻な労働者不足に陥る可能性がある 2 需要に対する慢性的な人手不足 直近の建設投資額は増加傾向にあるのに対し、 慢性的な人手不足となっている 建設業界の衰退を防ぐため 人手不足の解消が急務

Slide 6

Slide 6 text

Copyright©2021 Sukedachi Inc. All Right Reserved 建設業界の課題 6 1 2 職人を囲い込む慣習 全く同じスキルを持つ職人でも、元請けを超えた つながりを持てていない 仕事や人材の手配に ITが活用されていない 仕事や人材を探す時は仲間からの紹介のみ、 今だに電話連絡がメイン 繁忙月 閑散月 or 受・発注者の最適な マッチングができていない

Slide 7

Slide 7 text

Copyright©2021 Sukedachi Inc. All Right Reserved 助太刀の紹介 ❏ 提供サービス ○ 建設業特化の事業者マッチング ○ 建設業特化の求人サービス ❏ ユーザー数 ○ 累計約20万事業者 助太刀が提供するサービス 建設業界の人手不足や人材確保の難しさ をITで解決するサービス

Slide 8

Slide 8 text

Copyright©2021 Sukedachi Inc. All Right Reserved 助太刀の紹介 19万事業者突破! 緊急事態 宣言 登録事業者数 圧倒的No.1 40マッチング/年 応募率 87% 登録事業者数 マッチング(取引先) 採用サービス(正社員) 1社あたりマッチング実績 ビジネス会員平均

Slide 9

Slide 9 text

Copyright©2021 Sukedachi Inc. All Right Reserved 助太刀の紹介 行政との連携 国土交通省が主催する「令和2年度i-Construction大賞」 において国土交通大臣賞(最優秀賞)を受賞 国交省主導の建設キャリアアップシステム(CCUS)と連携 ESG経営の推進 サステナビリティサイトを公開 https://suke-dachi.jp/company/esg/index.html ESG・サステナビリティ投資家からの評価と参画 経済産業省が推進する「J-Startup企業」に選定

Slide 10

Slide 10 text

Copyright©2021 Sukedachi Inc. All Right Reserved ここから本題

Slide 11

Slide 11 text

Copyright©2021 Sukedachi Inc. All Right Reserved 本セッションで話すこと ○ 助太刀は今まで開発プロセスの改善に取り組んできた(前回デブサミ2023) ○ スクラムを導入し体系的に開発するサイクルは構築できた ○ エンジニア単体やチーム単位での生産性は可視化がイマイチだった ✓ SPとかSLOだけでなく、4keysも並行して測ってみた ✓ 4keysを最適化できるような動きをチームでやってみた ✓ 開発生産性をより解像度高く可視化できた ✓ 効率化することで技術負債返済に時間を使えるようになった 今年初めまでの取り組み 今回取り組んでみたこと

Slide 12

Slide 12 text

Copyright©2021 Sukedachi Inc. All Right Reserved 前回デブサミ振り返り

Slide 13

Slide 13 text

Copyright©2021 Sukedachi Inc. All Right Reserved 助太刀開発部にあった課題 ❌ 不具合が多い ○ クリティカルなバグが本番で起きる ❌ 開発のリードタイムが長い ○ 開発終わるまで大きいと数ヶ月とか ❌ デプロイ頻度が少ない ○ 数ヶ月に1度程度 ❌ プロダクトロードマップがない ○ 次の優先順位がわからない

Slide 14

Slide 14 text

Copyright©2021 Sukedachi Inc. All Right Reserved 開発生産性 ➢ 物的生産性 ○ 物理的にどれだけの労働力でアウトプットを出したかの指標 ○ 物的生産性(量/人)= アウトプット量/エンジニア数 ➢ 付加価値生産性 ○ どれだけの労働力でどれだけの売上総利益が出たかを測る指標 ○ 付加価値生産性(円/人)= 売上総利益/エンジニア数

Slide 15

Slide 15 text

Copyright©2021 Sukedachi Inc. All Right Reserved 開発生産性 ➢ 物的生産性 ○ 物理的にどれだけの労働力でアウトプットを出したかの指標 ○ 物的生産性(量/人)= アウトプット量/エンジニア数 ➢ 付加価値生産性 ○ どれだけの労働力でどれだけの売上総利益が出たかを測る指標 ○ 付加価値生産性(円/人)= 売上総利益/エンジニア数 エンジニアチームで解決した課題の数

Slide 16

Slide 16 text

Copyright©2021 Sukedachi Inc. All Right Reserved 開発生産性 ➢ 物的生産性 ○ 物理的にどれだけの労働力でアウトプットを出したかの指標 ○ 物的生産性(量/人)= アウトプット量/エンジニア数 ➢ 付加価値生産性 ○ どれだけの労働力でどれだけの売上総利益が出たかを測る指標 ○ 付加価値生産性(円/人)= 売上総利益/エンジニア数 現実 理想 2~3ヶ月 2~3ヶ月 要件定義 設計
 開発
 テスト
 要件定義
 設計
 開発
 テスト
 1~2週間 要件定義
 設計/開発
 テスト
 要件定義
 設計/開発
 テスト
 要件定義
 設計/開発
 テスト
 要件定義
 設計/開発
 テスト
 1~2週間 1~2週間 1~2週間

Slide 17

Slide 17 text

Copyright©2021 Sukedachi Inc. All Right Reserved 目指すサービス

Slide 18

Slide 18 text

Copyright©2021 Sukedachi Inc. All Right Reserved 目指すサービス 人と人の繋がりを軸に 建設業の抱えるさまざまな課題を 多角的に解決していく ワンストッププラットフォームを目指す

Slide 19

Slide 19 text

Copyright©2021 Sukedachi Inc. All Right Reserved 助太刀にあった課題 ❌ 不具合が多い ○ クリティカルなバグが本番で起きる ❌ 開発のリードタイムが長い ○ 開発終わるまで大きいと数ヶ月とか ❌ デプロイ頻度が少ない ○ 数ヶ月に1度程度 ❌ プロダクトロードマップがない ○ 次の優先順位がわからない 開発生産性UP 目指す 不具合↓ リードタイム↓ デプロイ頻度↑ =

Slide 20

Slide 20 text

Copyright©2021 Sukedachi Inc. All Right Reserved 開発組織の改善 品質 Quality 作業量 Velocity 改善速度 Delivery ❏ コミット量 ❏ チケット数 ❏ ストーリーポイント ❏ 不具合チケット数
 
 ❏ サービス稼働率
 
 ❏ SLA / SLO
 ❏ チケット数 ❏ デプロイ時間 ❏ リリース頻度 開発プロセスにおいて以下の3つの観点に分け、それぞれを最大化 開発の生産性を最大化しプロダクト品質上げてリリース早くしたい

Slide 21

Slide 21 text

Copyright©2021 Sukedachi Inc. All Right Reserved 助太刀の開発組織変遷 開発手法 ウォーターフォール アジャイル(独自スクラム) スクラム 社内人数 規模 2名 4名 10名 24名 社内開発 チケット数 0 34 439 962 2168 テスト リリース頻度 1人 エンジニア エンジニア デザイナー エンジニア デザイナー エンジニア ビジネス デザイナー QAチーム 2~3ヶ月に1度 不定期 2週間~2ヶ月に1度 不定期 2週間~2ヶ月に1度 不定期 1ヶ月に1度程度 不定期 2週間に1度 6名

Slide 22

Slide 22 text

Copyright©2021 Sukedachi Inc. All Right Reserved 開発プロセス(2023年初) 社内24名 開発組織規模 オフショア 2~4名 ➢ 開発プロジェクトを完全に内製化 ○ オフショアは基本サポート ➢ スクラム開発を導入 ○ 2週間のSprintでアウトプットを出せるように ○ 全員がSprintイベントに参加することで事業理解UP ➢ ストーリーポイントを導入 ○ 各チケットを見積もる際にストーリーポイントを使用 ➢ QAチームの結成 + 戦力増強 ○ Sprintの開発サイクルに合わせて高品質なQAを実施 ○ 社内の不具合率の可視化やSLOの策定なども可能に ➢ ユニットテストをしっかり書く文化に ○ バックエンドから始め、フロント側にも波及 開発手法 主なリリース スクラム

Slide 23

Slide 23 text

Copyright©2021 Sukedachi Inc. All Right Reserved 今回のメインのお話

Slide 24

Slide 24 text

Copyright©2021 Sukedachi Inc. All Right Reserved 今回のお話 ✓ 色々経てちゃんとしたスクラム開発に移行 → 安定したリリースができるように ✓ エンジニアのタスクを定量化 → ストーリーポイントで計測 ✓ QAチームの組成とユニットテスト → プロダクト品質が保てるように これまで ❏ さらに開発生産性を上げていきた ❏ 組織の拡大に耐えられるように ❏ 他の可視化/定量化手法は?

Slide 25

Slide 25 text

Copyright©2021 Sukedachi Inc. All Right Reserved 今回のお話 ✓ 色々経てちゃんとしたスクラム開発に移行 → 安定したリリースができるように ✓ エンジニアのタスクを定量化 → ストーリーポイントで計測 ✓ QAチームの組成とユニットテスト → プロダクト品質が保てるように ■ 4keysを可視化してみた これまで

Slide 26

Slide 26 text

Copyright©2021 Sukedachi Inc. All Right Reserved 今回のお話 4keys デプロイの頻度 変更のリードタイム 変更障害率 サービス復元時間

Slide 27

Slide 27 text

Copyright©2021 Sukedachi Inc. All Right Reserved 今回のお話 4keys デプロイの頻度 変更のリードタイム 変更障害率 サービス復元時間 リードタイム上がるとデプロイ頻度も上げることが可能 デプロイ頻度上げると小さいPRにする必要 お互い相関

Slide 28

Slide 28 text

Copyright©2021 Sukedachi Inc. All Right Reserved 今回のお話 4keys デプロイの頻度 変更のリードタイム 変更障害率 サービス復元時間 リードタイム上がるとデプロイ頻度も上げることが可能 デプロイ頻度上げると小さいPRにする必要 お互い相関 リードタイム減らすと復元時間も減りそう 細かくリリースできれば障害率減りそう

Slide 29

Slide 29 text

Copyright©2021 Sukedachi Inc. All Right Reserved 4keys可視化してみた

Slide 30

Slide 30 text

Copyright©2021 Sukedachi Inc. All Right Reserved 実際に計測してみた (2023/03/01 - 2023/03/31) よくない

Slide 31

Slide 31 text

Copyright©2021 Sukedachi Inc. All Right Reserved 実際に計測してみた 結果 ✓ Backend チーム 改善の余地はあるが、そこまでの課題感はなかった(そもそも)ユニットテストがあるので、不具合の可能性を考慮して ロジックを追うケースが少なくレビュー工数が低い。設計やコードの書き方にフォーカスしたレビューが実現できてい る。 ✓ iOS / Android チーム よくなかった テストもないし … すぐテストを入れられるかというと、リアーキテクチャが必要...どうしよう → 今回はアプリにフォーカスして話します


Slide 32

Slide 32 text

Copyright©2021 Sukedachi Inc. All Right Reserved 現場の課題感 タスクの割り方が大きいのでは? タスクが大きいので ・実装も時間かかる ・レビューの時間かかる ・レビューもすべては見きれない → 品質下がる → タスクを 意味のある最小単位にする必要がある

Slide 33

Slide 33 text

Copyright©2021 Sukedachi Inc. All Right Reserved 仮説 レビューの しやすさ レビューの 適切さ 品質 SP ↑ 私達がアクションすること 
 サイクルタイム分析 フィードバック の速さ 実装の速度 PRの粒度 ↓ モニタリングすること 
 PRを小さくすることにより、サイクルタイムを改善できる

Slide 34

Slide 34 text

Copyright©2021 Sukedachi Inc. All Right Reserved 実際にやったこと UI層 ✓ アーキテクチャのレイヤーごとにPRを分けるようにした ✓ CI/CD ○ PRが大きくなっている場合警告を出す ○ 放置されているPRを定期的にSlack通知 ✓ モニタリング → 週ごとの振り返り ロジック層 API層 それぞれの層で1PR (最低3PR)

Slide 35

Slide 35 text

Copyright©2021 Sukedachi Inc. All Right Reserved 発生した課題 1. 心理的ハードル(管理されている感...)があり浸透しない → 実際に数字を共有して早くなっている(=改善している)ことを示す → これはあくまで指標の1つであり、健康診断として使うこと(大事) → 全体的に背景をちゃんと説明し、心理的に腹落ちしてもらう

Slide 36

Slide 36 text

Copyright©2021 Sukedachi Inc. All Right Reserved 発生した課題 2. PRを小さくし始めたはいいが、SPの1が増えすぎてベロシティが急増してしまう → 基準を適宜見直し

Slide 37

Slide 37 text

Copyright©2021 Sukedachi Inc. All Right Reserved 発生した課題 2. PRを小さくし始めたはいいが、SPの1が増えすぎてベロシティが急増してしまう → 基準を適宜見直し

Slide 38

Slide 38 text

Copyright©2021 Sukedachi Inc. All Right Reserved 発生した課題 3. タスクの性質や仕組み上、小さく出来ないPRが存在する → タグを付けて除外。小さくすることにこだわりすぎない。 ・ライブラリのアップデートなど影響範囲が大きいPR ・チームでやったことがない、根本に影響するリアーキテクチャ 例:SwaggerからModelを自動生成する ・リリースブランチ

Slide 39

Slide 39 text

Copyright©2021 Sukedachi Inc. All Right Reserved 結果:サイクルタイム分析 (2023/06/01 - 2023/06/30) 良くなった!

Slide 40

Slide 40 text

Copyright©2021 Sukedachi Inc. All Right Reserved 比較 1PRがマージされる時間が、200時間以上削減された

Slide 41

Slide 41 text

Copyright©2021 Sukedachi Inc. All Right Reserved PRを小さくした結果わかったこと ✓ レビュー自体のクオリティも上がっている → PRが小さいので、普段指摘しないことも指摘でき、細かいミスに気づ ける。仮説が実感に変わった。 ✓ アーキテクチャの課題に気づける → 依存関係が大きいと変更も大きくなる。毎週大きくなったPRを振り返 ることによって、アーキテクチャ上の課題がチームで共有される。

Slide 42

Slide 42 text

Copyright©2021 Sukedachi Inc. All Right Reserved 生産性上がったので 技術的負債に取り組んでみた

Slide 43

Slide 43 text

Copyright©2021 Sukedachi Inc. All Right Reserved 助太刀のサービス構造 ✓ 助太刀は2C向けのアプリや2B向けのwebサービスを展開 ✓ ビジネス的にもコード的にもモノリシックな構造 ✓ チーム構成は職能型チーム iOSチーム Androidチーム Web Frontチーム Backendチーム 助太刀アプリ 助太刀法人向けマッチング 助太刀求人サービス BtoC BtoB CTO

Slide 44

Slide 44 text

Copyright©2021 Sukedachi Inc. All Right Reserved 今回のお話(再掲) 4keys デプロイの頻度 変更のリードタイム 変更障害率 サービス復元時間 リードタイム上がるとデプロイ頻度も上げることが可能 デプロイ頻度上げると小さいPRにする必要 お互い相関 リードタイム減らすと復元時間も減りそう 細かくリリースできれば障害率減りそう

Slide 45

Slide 45 text

Copyright©2021 Sukedachi Inc. All Right Reserved 助太刀の開発プロセス ✓ 開発生産性を上げるためにプロセスの改善をしてきた ✓ 結果として各チームで負債について考える時間が生まれた プロダクトバックログ iOSチーム Androidチーム Web Front チーム Backendチーム スプリント1 スプリント2 機能A 機能B 機能C ・ ・ ・ 機能A 機能A 機能B 機能A 機能B 機能A’ 機能A’ 負債返済 負債返済 負債返済 負債返済 機能C

Slide 46

Slide 46 text

Copyright©2021 Sukedachi Inc. All Right Reserved 技術的負債への取り組み As is Fat View Controller Front側に多数のロジック 規約のない自由なコード 複雑なテーブル設計 機能の責務があいまい 意図しないモノリシック 古いversionのFW/DB

Slide 47

Slide 47 text

Copyright©2021 Sukedachi Inc. All Right Reserved 技術的負債への取り組み As is Fat View Controller Front側に多数のロジック 規約のない自由なコード 複雑なテーブル設計 機能の責務があいまい 意図しないモノリシック 古いversionのFW/DB 責務毎に整理された テーブル構造 ドメイン毎に整った MS / Module 責務毎に整理された テーブル構造 ドメイン毎に整った MS / Module 依存関係が限定的 最低限のロジック unitテスト To be

Slide 48

Slide 48 text

Copyright©2021 Sukedachi Inc. All Right Reserved 技術的負債への取り組み 長期的な リアーキテクチャ 短期的な リアーキテクチャ タスク内容 ゴール タイムライン MSAやモジュラーモノリスなど アーキテクチャを刷新しスケーラブルな サービス基盤を構築 今後の大掛かりなアーキテクチャ刷新や リファクタリングができるようにサービス 毎の責務を明確にし、コードに反映 サービスドメインを再定義し 各ドメイン毎にマイクロサービス (or モジュール)にしていく 各チームで課題を洗い出し、 コードの可読性や保守性を向上 させるためのリファクタリング 2~3年 ~1年

Slide 49

Slide 49 text

Copyright©2021 Sukedachi Inc. All Right Reserved 技術的負債への取り組み 長期的な リアーキテクチャ 短期的な リアーキテクチャ タスク内容 ゴール タイムライン MSAやモジュラーモノリスなど アーキテクチャを刷新しスケーラブルな サービス基盤を構築 今後の大掛かりなアーキテクチャ刷新や リファクタリングができるようにサービス 毎の責務を明確にし、コードに反映 サービスドメインを再定義し 各ドメイン毎にマイクロサービス (or モジュール)にしていく 各チームで課題を洗い出し、 コードの可読性や保守性を向上 させるためのリファクタリング 2~3年 ~1年

Slide 50

Slide 50 text

Copyright©2021 Sukedachi Inc. All Right Reserved 技術的負債への取り組み 各チーム毎の課題の洗い出し/整理 ✓ クラス設計だったり使用するライブラリだったりいろんな観点でとりあえず 出してもらう ✓ 各チーム内で優先度を決めてロードマップ(仮)に落とし込んでいく ✓ 一旦自分たちのチームでやりたいことだけ書く

Slide 51

Slide 51 text

Copyright©2021 Sukedachi Inc. All Right Reserved 技術的負債への取り組み 開発部全体で負債返済のロードマップを作成 ✓ 他のチームの開発や機能自体に影響がある項目は関連するチームで議論 ✓ すごくざっくりと着手する順番だけ決める(チーム単位、タスク単位) ✓ 全チームで重要度などの認識合わせ

Slide 52

Slide 52 text

Copyright©2021 Sukedachi Inc. All Right Reserved 技術的負債への取り組み 組み込むルールとスプリントのやり方 - 開発部の負債返済ロードマップに従って順番に開発スプリントに負債返済タスク入れる - 開発スプリントの中で、各チームで30%以上のストーリーポイントを負債返済に割り振る - スプリント内で予定より早く終わった場合、負債返済か次のタスク進めるかはPMと都度相談 ✓ 基本ルール ✓ やらないこと - 緊急のバグ対応とかじゃない限り必ず負債返済に工数を使うこと(忙しいからやらないはダメ) - 振り返らないはダメ - 自由にやって良いが、自由を履き違えないこと(やる項目変えるときはロードマップ変えて共有し ましょう)

Slide 53

Slide 53 text

Copyright©2021 Sukedachi Inc. All Right Reserved 技術的負債への取り組み

Slide 54

Slide 54 text

Copyright©2021 Sukedachi Inc. All Right Reserved まとめ

Slide 55

Slide 55 text

Copyright©2021 Sukedachi Inc. All Right Reserved まとめ ✓ ここ2年くらいで開発プロセスをちゃんと整えていったらエンジニアのア ウトプットが徐々に見える化 ✓ チーム構成がプロダクト別にしづらいからこそ余った工数を使えるように ✓ 余った工数で各チーム毎に技術的負債に向き合うことを開発部で決めた ✓ 負債返済ロードマップを作成し、それに沿ってリファクタなど進められる 体制に ✓ CTOだけでなく開発部全体で開発生産性に向き合うことができた ✓ CTOだけでなく開発部全体で技術的負債に向き合うことができた ✓ チーム同士で思ってることや問題点などの相互理解につながった ✓ エンジニアの精神衛生的にも良い取り組み これまでの流れ 結果どうなったか

Slide 56

Slide 56 text

Copyright©2021 Sukedachi Inc. All Right Reserved ちょっとした告知 エンジニア向けのMeetupを開催予定です! 日時:9月7日(木)19:00~20:30 「CTOが語る、プロダクト開発と組織づくり」 お申し込みはこちら