Slide 1

Slide 1 text

カオナビのカイゼン・ストーリー 〜どうやってアジャイルな開発組織を 作り上げたのか?〜 © kaonavi Inc.

Slide 2

Slide 2 text

2020/09/19 © kaonavi Inc. 登壇者紹介 尾張部 佑亮
 グループマネージャー/EM 
 2 松下 雅和 (@matsukaz)
 CTO
 小松 史明
 スクラムマスター/EM


Slide 3

Slide 3 text

2020/09/19 © kaonavi Inc. このセッションでお話すること ● サービス成長の裏側
 ● 1年半におよぶカイゼン活動
 ● カオナビの描く未来像
 3

Slide 4

Slide 4 text

2020/09/19 サービス成長の裏側

Slide 5

Slide 5 text

2020/09/19 © kaonavi Inc. 5 この6年間に
 どのような出来事があったのか? 


Slide 6

Slide 6 text

2020/09/19 © kaonavi Inc. 2012年4月〜:カオナビのサービス開始 6 ● 開発はーーーーー 外注100%
 
 ● 顧客ごとにーーー 機能をカスタマイズ
 
 ● 運用はーーーーー 現地作業あり


Slide 7

Slide 7 text

2020/09/19 © kaonavi Inc. 2012年4月〜:カオナビのサービス開始 7 ● 創業者が自ら仕様を作り、自ら営業に行く
 ● 顧客のオフィスに出向いてのリリース作業(オンプレ時代)
 ● 顧客ごとにサービスをカスタマイズ
 ● etc・・・
 カオナビを軌道に乗せる為に一生懸命!


Slide 8

Slide 8 text

2020/09/19 © kaonavi Inc. 2015年:運用の安定化を目指し、リプレイスプロジェクト始動 8 ● 売上重視の時代が続く
       ↓
 ● 技術負債が溜まる
       ↓
 ● 運用の不安定さを無視できなくなる
       ↓
 ● サービスのリプレイス開始
 


Slide 9

Slide 9 text

2020/09/19 © kaonavi Inc. 2017年:組織化への動き 9 ● 現行バージョン(3.0)へ移行開始
 ● 新規の利用企業が更に増加(2017年度は約450社)
 ● 組織体制の強化に乗り出す
 職能別の組織が誕生する!


Slide 10

Slide 10 text

2020/09/19 2017年からの開発体制 PM/企画職のグループ エンジニアのグループ QAのグループ 10 © kaonavi Inc. リリース 実装 仕様作成/リリースコントロール 品質担保

Slide 11

Slide 11 text

2020/09/19 組織化によって生産力が増加!!

Slide 12

Slide 12 text

2020/09/19 © kaonavi Inc. 12 黎明期
 急速な組織化
 様々な歴史の末にサービスの利用企業数は増加していった リプレイス


Slide 13

Slide 13 text

2020/09/19 しかし、良いことだけではなかった(; Δ ;)

Slide 14

Slide 14 text

2020/09/19 カオナビ 大カイゼン時代

Slide 15

Slide 15 text

2020/09/19 15 ● 深刻化したセクショナリズム ● 仕様書を読み込むのに時間がかかる ● 期日コミットすることがゴールになっている ● 積み重ねた技術負債による鈍化 2019/4時点でこの状態… © kaonavi Inc.

Slide 16

Slide 16 text

2020/09/19 16 ● 深刻化したセクショナリズム ● 仕様書を読み込むのに時間がかかる ● 期日コミットすることがゴールになっている ● 積み重ねた技術負債による鈍化 2019/4時点でこの状態… © kaonavi Inc. アジャイルソフトウェア開発宣言の 真逆をいく開発をしていることがよく分かる 個人と対話よりも、プロセスやツールを 動くソフトウェアよりも、包括的なドキュメントを 顧客との協調よりも、契約交渉を 変化への対応よりも、計画に従うことを

Slide 17

Slide 17 text

2020/09/19 17 これで顧客に素早く価値を届けられる? 持続可能な開発ができる? © kaonavi Inc.

Slide 18

Slide 18 text

2020/09/19 18 これで顧客に素早く価値を届けられる? 持続可能な開発ができる? © kaonavi Inc. そして始まる カオナビのカイゼン

Slide 19

Slide 19 text

2020/09/19 19 期間としては この1年半の間の話です! © kaonavi Inc.

Slide 20

Slide 20 text

2020/09/19 3本のカイゼンの矢 20 開発体制 カイゼン 開発プロセス カイゼン 開発技術 カイゼン © kaonavi Inc.

Slide 21

Slide 21 text

2020/09/19 21 開発体制カイゼン © kaonavi Inc.

Slide 22

Slide 22 text

2020/09/19 22 当時の様子 これ、〇〇までにお願いします ! はい! すみません、ここ仕様変えてい いですか? そこを変更すると色々と影響が … (仕様について質問したいけど、 話しかけ辛いな…) (実装について確認したいけ ど、話しかけ辛いな…) 順調ですか? はい…!(実はギリギリ…) 引き続きお願いします! (よし、順調なんだ) © kaonavi Inc.

Slide 23

Slide 23 text

2020/09/19 23 当時の様子 これ、〇〇までにお願いします ! はい! すみません、ここ仕様変えてい いですか? そこを変更すると色々と影響が … (仕様について質問したいけど、 話しかけ辛いな…) (実装について確認したいけ ど、話しかけ辛いな…) 順調ですか? はい…!(実はギリギリ…) 引き続きお願いします! (よし、順調なんだ) © kaonavi Inc. ● 自分の担当を終わらせることで必死 ● 納期に間にあわせることが目的 ● 意思疎通不全 ● 謎のコミュニケーションのハードル

Slide 24

Slide 24 text

2020/09/19 24 カイゼンのヒント ● 壁があるなら壁を取り払う ● グループからチームへ © kaonavi Inc.

Slide 25

Slide 25 text

2020/09/19 〇〇チーム 25 壁を取り払う 仕様・スケジュール 開発 エンジニアリング グループ プロダクトデザイン グループ 〇〇チーム 〇〇チーム ミッションベース グループ リリースまでの全行程の責任 © kaonavi Inc.

Slide 26

Slide 26 text

2020/09/19 26 グループからチームへ 関係の質 行動の質 思考の質 結果の質 星取表
 ドラッカー風エクササイズ
 インセプションデッキ
 チーム名
 チーム飲み会・お茶会
 ふりかえり
 アジャイルコーチによるワークショップ
 デリゲーションポーカー
 © kaonavi Inc.

Slide 27

Slide 27 text

2020/09/19 27 その結果 グループ開発 ➡ チーム開発 何のために開発しているのか分からない ➡ Whyを理解した上で開発 やらされ仕事 ➡ 自分たちで成し遂げる仕事 個人で成果を出す ➡ チームで成果を出す 自分の仕事が終わるかどうか ➡ チームとしての仕事が終わるかどうか 企画職と開発者のコミュニケーション不足 ➡ 疑問・相談は直接その場で速攻で 認識のすれ違い ➡ 同じ質で同じ情報量 生じた変化 © kaonavi Inc.

Slide 28

Slide 28 text

2020/09/19 28 カイゼンのポイント トップダウンとボトムアップの使い分け 組織 チーム 組織構造といった大きな変化はトップダウンで 現場のカイゼンはボトムアップで © kaonavi Inc.

Slide 29

Slide 29 text

2020/09/19 29 開発プロセスカイゼン © kaonavi Inc.

Slide 30

Slide 30 text

2020/09/19 30 当時の開発の一例 工程A 順調です!!!! © kaonavi Inc.

Slide 31

Slide 31 text

2020/09/19 31 当時の開発の一例 工程A 工程B 今さらだけど 気が付いたことが… © kaonavi Inc.

Slide 32

Slide 32 text

2020/09/19 32 当時の開発の一例 工程A 工程B 再開だ!! 多分間に合う!! 本当に? © kaonavi Inc.

Slide 33

Slide 33 text

2020/09/19 33 当時の開発の一例 工程A 工程B あっ… もしかしてすでに… 工程C 状況が変わったから仕様を … それどころじゃないか。 © kaonavi Inc.

Slide 34

Slide 34 text

2020/09/19 34 当時の開発の一例 工程A 工程B 工程C © kaonavi Inc.

Slide 35

Slide 35 text

2020/09/19 35 カイゼンのヒント ● 最適化されていない開発プロセス ● 不確実性とのお付き合い © kaonavi Inc.

Slide 36

Slide 36 text

2020/09/19 36 型にハマることで学ぶ スクラムの導入 © kaonavi Inc.

Slide 37

Slide 37 text

2020/09/19 37 型にハマることで学ぶ STEP1 スクラムガイド原理主義 違う違うそうじゃない! スクラムガイドには ウンタラカンタラ! なんでか分からないけど ルールを守らないなんだ … 何のためにやってるんだろ … 実践する価値を感じられない … スクラムマスター
 PO・開発チーム
 © kaonavi Inc.

Slide 38

Slide 38 text

2020/09/19 38 型にハマることで学ぶ スクラムの導入 スクラムの実践と学習 © kaonavi Inc.

Slide 39

Slide 39 text

2020/09/19 39 型にハマることで学ぶ 守
 破
 離
 © kaonavi Inc.

Slide 40

Slide 40 text

2020/09/19 40 型にハマることで学ぶ 守
 破
 離
 スクラムを通じて実践と学習し、 自身も組織も変化させていく そのためには、 スクラムをきちんと理解する必要 © kaonavi Inc.

Slide 41

Slide 41 text

2020/09/19 41 型にハマることで学ぶ Core Scrum © kaonavi Inc.

Slide 42

Slide 42 text

2020/09/19 42 よし、今度こそ スクラムを乗りこなしてみせる! © kaonavi Inc.

Slide 43

Slide 43 text

2020/09/19 なるほど…? (理解はできるけど腹落ちで きない感じ) 43 型にハマることで学ぶ STEP2 スクラムを理解 スクラムはこういう設計になっていて、 提供されるイベントやロールや成果物には こういう背景や狙いがあるんだよ だから、こういう風に実践してみよう! スクラムマスター
 PO・開発チーム
 © kaonavi Inc.

Slide 44

Slide 44 text

2020/09/19 なるほど…? (理解はできるけど腹落ちで きない感じ) 44 型にハマることで学ぶ STEP2 スクラムを理解 スクラムはこういう設計になっていて、 提供されるイベントやロールや成果物には こういう背景や狙いがあるんだよ だから、こういう風に実践してみよう! スクラムマスター
 PO・開発チーム
 © kaonavi Inc. スクラム自体の理解は深まったかも しかし、スクラムを通じての 学習と変化が進んでいなかった

Slide 45

Slide 45 text

2020/09/19 45 型にハマることで学ぶ そうだ スクラムじゃなくて、 何かを解決したかったんだ © kaonavi Inc.

Slide 46

Slide 46 text

2020/09/19 〇〇だからですよ 1スプリントだけ試してみ ませんか? スプリントバックログ作成はタスクまで 分解してみるといいですよ スプリントバックログが いつも残っちゃう 当たり前になってる… 46 型にハマることで学ぶ STEP3 スクラムの実践と学習 どうして? 試してみたら変化が生まれた! そうか、スプリントプランニングってこうい う風にやると効果的なんだ。 PO・開発チーム
 スクラムマスター
 © kaonavi Inc.

Slide 47

Slide 47 text

2020/09/19 〇〇だからですよ 1スプリントだけ試してみ て! スプリントバックログ作成はタスクまで 分解してみるといいですよ スプリントをDoneにで きない… 47 型にハマることで学ぶ STEP3 スクラムの実践と学習 どうして? 試してみたら変化が生まれた! そうか、プランニングってこういう風にやる と効果的なんだ。 PO・開発チーム
 スクラムマスター
 チームの関心事と紐づけて スクラムの実践と学習を行うスタイル その結果、徐々に変化が生まれた © kaonavi Inc.

Slide 48

Slide 48 text

2020/09/19 48 その結果 プロジェクトの終盤まで不確実性が残る ➡ アジャイルな見積もりと計画の実践 スケジュールもスコープも変えられない …? ➡ 自分たちでプロジェクトのハンドルを握る QA・デプロイは他のグループがするもの ➡ チームで完結できるようコラボレーション 手を動かすまで開発の難易度は分からない ➡ プランニング終了時点で把握、対策を打つ プロジェクトが終わってからのふりかえり ➡ 毎スプリント小さなカイゼンを試す 全て開発し終わるまでリリースできない ➡ α,βリリースでフィードバックループを回す 生じた変化 © kaonavi Inc.

Slide 49

Slide 49 text

2020/09/19 49 おまけ 全社スプリントレビュー 毎週木曜日に全社から参加者を募ってスプリント レビューを実施。 各チームの成果物に対して営業・事業戦略・サ ポートチームなど、多角的なフィーバックがなされ る。 開発だけでは思いつかないようなアイデアや フィードバックをプロダクトに反映! © kaonavi Inc.

Slide 50

Slide 50 text

2020/09/19 50 カイゼンのポイント 仲間
 根気
 分析
 © kaonavi Inc.

Slide 51

Slide 51 text

2020/09/19 51 開発技術カイゼン © kaonavi Inc.

Slide 52

Slide 52 text

2020/09/19 52 当時の開発課題のイメージ © kaonavi Inc.

Slide 53

Slide 53 text

2020/09/19 53 当時の開発課題のイメージ 足回りの悪い 技術スタック 属人化 スパゲッティコード 触ったら どこかで不具合が起きる © kaonavi Inc.

Slide 54

Slide 54 text

2020/09/19 54 当時の開発課題のイメージ 足回りの悪い 技術スタック 属人化 秘伝の スパゲッティコード 触ったら どこかで不具合が起きる 技術的課題による 諦めや計画の変更が多発 これでは スピードもアジリティも出せない © kaonavi Inc.

Slide 55

Slide 55 text

2020/09/19 55 カイゼンのヒント ● 攻守のバランス ● 土壌作り © kaonavi Inc.

Slide 56

Slide 56 text

2020/09/19 56 攻守のバランス ● React移行プロジェクト ● Goによる外部公開API開発 ● PHP/Laravelバージョンアップ ● FlowからTypeScript移行 ● 着実なリファクタリング © kaonavi Inc.

Slide 57

Slide 57 text

2020/09/19 技術課題の一覧可視化 & テックリードのサポート 57 土壌作り 技術スタックは 現場メンバーで決定して OK 週に2時間の 技術品質カイゼン推奨 ナレッジ共有の場としての エンジニア勉強会を定期開催 © kaonavi Inc.

Slide 58

Slide 58 text

2020/09/19 58 結果 再利用性 可読性 保守性 変更容易性の 向上 属人性の 解消 関心毎の 削減 小回りの効く 開発 実装以外にかける 時間の削減 アジリティ & スピード © kaonavi Inc.

Slide 59

Slide 59 text

2020/09/19 59 カイゼンのポイント 技術革新は エンジニアの 好奇心から生まれる 技術的カイゼンの 種を育むための 環境と文化 小さく試す 実験を繰り返す © kaonavi Inc.

Slide 60

Slide 60 text

2020/09/19 3本のカイゼンの矢 60 開発体制 カイゼン 開発プロセス カイゼン 開発技術 カイゼン © kaonavi Inc.

Slide 61

Slide 61 text

2020/09/19 61 Before © kaonavi Inc.

Slide 62

Slide 62 text

2020/09/19 62 After チーム開発 Whyを理解した上で開発 自分たちで成し遂げる仕事 チームで成果を出す チームとしての仕事が終わるかどうか 疑問・相談は直接その場で速攻で アジャイルな見積もりと計画の実践 チームでプロジェクトのハンドルを握る リリースまでチームで完結 スクラムによる現状把握で不確実性を排除 毎スプリント小さなカイゼンを試す α,βリリースでフィードバックループを回す 全社スプリントレビュー アジリティとスピードを支える開発技術 © kaonavi Inc.

Slide 63

Slide 63 text

2020/09/19 63 1本の矢は簡単に折れるが、 3本束ねると簡単には折れない それはアジャイルな開発組織作りも同じ!

Slide 64

Slide 64 text

2020/09/19 © kaonavi Inc. カオナビ 未来への一歩

Slide 65

Slide 65 text

2020/09/19 カイゼンの手は緩めない! 65 © kaonavi Inc.

Slide 66

Slide 66 text

2020/09/19 開発技術カイゼン 66 © kaonavi Inc.

Slide 67

Slide 67 text

2020/09/19 ● KDS(Kaonavi Design System)によるUI/UX改善 ○ 共通コンポーネントとして専用リポジトリで管理 ○ カオナビ全体を置き換え中 © kaonavi Inc. Design Systemの導入 67

Slide 68

Slide 68 text

2020/09/19 ● 独自形式のAPI → RESTful形式 ● Reactへの完全移行 ● Swaggerの網羅性を95%以上で維持 ● パフォーマンス改善 © kaonavi Inc. 技術負債との戦い 68

Slide 69

Slide 69 text

2020/09/19 開発プロセスカイゼン © kaonavi Inc. 69

Slide 70

Slide 70 text

2020/09/19 © kaonavi Inc. アジャイルテストの導入 70 参加者 ● すべてのメンバー ● テスターが特別な専門知識を提供 ● テストは、要件/設計/実装などすべての開発フェーズに織り込まれる ● テストは、開発ライフサイクルを通じて同時に実施 ● テスターから開発チームへの修正フィードバックが、開発ライフサイクルの中で 行われる → より良い設計と実装へ 特徴 アジャイルソフトウェア開発の原則に従うソフトウェアテスト方法

Slide 71

Slide 71 text

2020/09/19 © kaonavi Inc. アジャイルテストのスプリント内の流れ 71 1スプリント デイリースクラム バックログリファインメント スプリント レビュー レトロ スペクティブ リリース(テスト)計画更新 リグレッションテスト 受け入れ条件 チェック テストケース 設計&作成 テスト実施 テストレベル 定義 テスト観点 テスト見積り レポート プランニング1 プランニング2 テストケース レビュー 開発 スクラム イベント アジャイル テスト

Slide 72

Slide 72 text

2020/09/19 © kaonavi Inc. アジャイルテスト導入後のふりかえり 72 Problem Keep リグレッションテスト による安心感がある バグを早期発見 テスト設計時点で 仕様や例外の考慮漏れを指摘 リグレッションテストが 回るまで時間がかかる テストデータの 準備が大変 QAチームと どう連携しよう…

Slide 73

Slide 73 text

2020/09/19 © kaonavi Inc. ポストモーテム運用 73 主に失敗に対するふりかえり、学習、再発防止活動 ● 実施対象(クリティカルな失敗からの学びを優先) ○ 一定深刻度のインシデント ○ リリース後の巻き戻し

Slide 74

Slide 74 text

2020/09/19 ● E2Eテスト ○ 一部プロジェクトでTestCafeを導入 ○ CI連携準備中 ● モブプログラミング ○ 一部プロジェクトで実施中 © kaonavi Inc. 他にも 74

Slide 75

Slide 75 text

2020/09/19 75 開発体制カイゼン © kaonavi Inc.

Slide 76

Slide 76 text

2020/09/19 ● 目的 ○ 権限と責任の委譲 ○ 責任者を明確化 © kaonavi Inc. 新たなロールを設置 76 ロール 役割 エンジニアリングマネージャー 文化醸成、採用援助、エンジニアメンター サービスリード サービスの受け入れジャッジ、技術育成、人 材採用 テックリード フロントエンド 技術ジャッジ、技術育成、人材採用 バックエンド(API、機能実装) サーバサイド(インフラ寄り)

Slide 77

Slide 77 text

2020/09/19 © kaonavi Inc. 組織力のさらなる強化 77 2020.07.01 CDO(最高デザイン責任者)に玉木穣太就任 2020.07.15 技術顧問に森正弥氏就任 2020.09.01 CTO(最高技術責任者)に松下雅和就任 ● 「デザイン」の力を経営や事業に組み込む ○ コーポレートブランディング ○ コミュニケーションデザイン ○ デザインガイドライン ● 元楽天技術研究所代表 ● 組織戦略、研究開発 (AI, ビッグデータ)相談 ● プロダクトの開発体制強化

Slide 78

Slide 78 text

2020/09/19 とはいえ、 まだ大きな課題が… 78 © kaonavi Inc.

Slide 79

Slide 79 text

2020/09/19 モノリス © kaonavi Inc. 79

Slide 80

Slide 80 text

2020/09/19 © kaonavi Inc. モノリシックなシステムによる弊害 80 開発スピードが 上がらない 生産性が スケールしない リリースにかかる 工数が大きい 障害発生時の 影響度が大きい 複雑度が高いため、 影響範囲の把握が困難 機能開発が相互に影響し合う 可能性があり、同時開発が困難 1つの障害がシステム全体の 停止につながる可能性がある リリース対象が大きいため、 影響調査やQAの工数が大きくなる

Slide 81

Slide 81 text

2020/09/19 カイゼンの 成果は出てきた 81 © kaonavi Inc.

Slide 82

Slide 82 text

2020/09/19 いまこそ モノリスからの脱却へ © kaonavi Inc. 82

Slide 83

Slide 83 text

2020/09/19 マイクロサービス化 プロジェクト始動! 83 © kaonavi Inc.

Slide 84

Slide 84 text

2020/09/19 © kaonavi Inc. マイクロサービス化の狙い 84 適切な技術と 体制で開発スピードを 上げたい 開発人数に応じて 生産性を上げたい 細かく安全に リリースしたい 障害に対する 影響を減らしたい

Slide 85

Slide 85 text

2020/09/19 © kaonavi Inc. マイクロサービス化プロジェクト発足にいたるまで 85 ボトムアップ でチームが発足 ● 個別最適になってしまいそう ● 開発組織全体を巻き込むのが難しい ● オーナーシップが発揮し辛い このままでは うまくいかないかも…

Slide 86

Slide 86 text

2020/09/19 © kaonavi Inc. マイクロサービス化プロジェクト発足にいたるまで 86 経営層の合意の元、トップダウン でプロジェクト化 ● 全体最適の視点 ● 開発組織全体を巻き込む ○ 第2言語としてGoを正式採用 ○ DevOpsチームを目指す ● オーナーシップをCTOが持つ 本格始動!

Slide 87

Slide 87 text

2020/09/19 マイクロサービス化は 始まったばかり © kaonavi Inc. 87

Slide 88

Slide 88 text

2020/09/19 新規事業もやりたい 研究開発もやっていく © kaonavi Inc. 88

Slide 89

Slide 89 text

2020/09/19 © kaonavi Inc. 89 カオナビの カイゼン・ストーリーは まだまだ続く!

Slide 90

Slide 90 text

2020/09/19 to be continued... 90 © kaonavi Inc.

Slide 91

Slide 91 text

2020/09/19 91 エンジニア募集中!!! 少しでもカオナビに 興味を持ってくださった方、 https://corp.kaonavi.jp/recruit/list.html © kaonavi Inc.