Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

XP祭り2020で発表した資料です。
https://confengine.com/conferences/xp2020

ローンチからマザーズへ上場し、HRTechをリードするまでになった7年は、カオナビにとってカイゼンの歴史でもありました。

外注開発から、内製化へ。
職能型組織から、マトリクス型組織へ。
レガシーな技術から、モダンな技術へ。
従来型の開発プロセスから、アジャイルな開発へ。

開発組織がない状態から、直面した様々な課題をどう乗り越えていったのか、そしてその先の未来を見据えた取り組みについて紹介しています。

D6b7aaaec7e911cf7657153c9bbc5c53?s=128

株式会社カオナビ

February 10, 2021
Tweet

Transcript

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

  2. 2020/09/19 © kaonavi Inc. 登壇者紹介 尾張部 佑亮
 グループマネージャー/EM 
 2

    松下 雅和 (@matsukaz)
 CTO
 小松 史明
 スクラムマスター/EM

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

    カオナビの描く未来像
 3
  4. 2020/09/19 サービス成長の裏側

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


  6. 2020/09/19 © kaonavi Inc. 2012年4月〜:カオナビのサービス開始 6 • 開発はーーーーー 外注100%
 


    • 顧客ごとにーーー 機能をカスタマイズ
 
 • 運用はーーーーー 現地作業あり

  7. 2020/09/19 © kaonavi Inc. 2012年4月〜:カオナビのサービス開始 7 • 創業者が自ら仕様を作り、自ら営業に行く
 • 顧客のオフィスに出向いてのリリース作業(オンプレ時代)


    • 顧客ごとにサービスをカスタマイズ
 • etc・・・
 カオナビを軌道に乗せる為に一生懸命!

  8. 2020/09/19 © kaonavi Inc. 2015年:運用の安定化を目指し、リプレイスプロジェクト始動 8 • 売上重視の時代が続く
       ↓
 •

    技術負債が溜まる
       ↓
 • 運用の不安定さを無視できなくなる
       ↓
 • サービスのリプレイス開始
 

  9. 2020/09/19 © kaonavi Inc. 2017年:組織化への動き 9 • 現行バージョン(3.0)へ移行開始
 • 新規の利用企業が更に増加(2017年度は約450社)


    • 組織体制の強化に乗り出す
 職能別の組織が誕生する!

  10. 2020/09/19 2017年からの開発体制 PM/企画職のグループ エンジニアのグループ QAのグループ 10 © kaonavi Inc. リリース

    実装 仕様作成/リリースコントロール 品質担保
  11. 2020/09/19 組織化によって生産力が増加!!

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


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

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

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

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

    2019/4時点でこの状態… © kaonavi Inc. アジャイルソフトウェア開発宣言の 真逆をいく開発をしていることがよく分かる 個人と対話よりも、プロセスやツールを 動くソフトウェアよりも、包括的なドキュメントを 顧客との協調よりも、契約交渉を 変化への対応よりも、計画に従うことを
  17. 2020/09/19 17 これで顧客に素早く価値を届けられる? 持続可能な開発ができる? © kaonavi Inc.

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

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

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

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

  22. 2020/09/19 22 当時の様子 これ、〇〇までにお願いします ! はい! すみません、ここ仕様変えてい いですか? そこを変更すると色々と影響が …

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

    (仕様について質問したいけど、 話しかけ辛いな…) (実装について確認したいけ ど、話しかけ辛いな…) 順調ですか? はい…!(実はギリギリ…) 引き続きお願いします! (よし、順調なんだ) © kaonavi Inc. • 自分の担当を終わらせることで必死 • 納期に間にあわせることが目的 • 意思疎通不全 • 謎のコミュニケーションのハードル
  24. 2020/09/19 24 カイゼンのヒント • 壁があるなら壁を取り払う • グループからチームへ © kaonavi Inc.

  25. 2020/09/19 〇〇チーム 25 壁を取り払う 仕様・スケジュール 開発 エンジニアリング グループ プロダクトデザイン グループ

    〇〇チーム 〇〇チーム ミッションベース グループ リリースまでの全行程の責任 © kaonavi Inc.
  26. 2020/09/19 26 グループからチームへ 関係の質 行動の質 思考の質 結果の質 星取表
 ドラッカー風エクササイズ
 インセプションデッキ


    チーム名
 チーム飲み会・お茶会
 ふりかえり
 アジャイルコーチによるワークショップ
 デリゲーションポーカー
 © kaonavi Inc.
  27. 2020/09/19 27 その結果 グループ開発 ➡ チーム開発 何のために開発しているのか分からない ➡ Whyを理解した上で開発 やらされ仕事

    ➡ 自分たちで成し遂げる仕事 個人で成果を出す ➡ チームで成果を出す 自分の仕事が終わるかどうか ➡ チームとしての仕事が終わるかどうか 企画職と開発者のコミュニケーション不足 ➡ 疑問・相談は直接その場で速攻で 認識のすれ違い ➡ 同じ質で同じ情報量 生じた変化 © kaonavi Inc.
  28. 2020/09/19 28 カイゼンのポイント トップダウンとボトムアップの使い分け 組織 チーム 組織構造といった大きな変化はトップダウンで 現場のカイゼンはボトムアップで © kaonavi

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

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

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

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

    Inc.
  33. 2020/09/19 33 当時の開発の一例 工程A 工程B あっ… もしかしてすでに… 工程C 状況が変わったから仕様を …

    それどころじゃないか。 © kaonavi Inc.
  34. 2020/09/19 34 当時の開発の一例 工程A 工程B 工程C © kaonavi Inc.

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

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

  37. 2020/09/19 37 型にハマることで学ぶ STEP1 スクラムガイド原理主義 違う違うそうじゃない! スクラムガイドには ウンタラカンタラ! なんでか分からないけど ルールを守らないなんだ

    … 何のためにやってるんだろ … 実践する価値を感じられない … スクラムマスター
 PO・開発チーム
 © kaonavi Inc.
  38. 2020/09/19 38 型にハマることで学ぶ スクラムの導入 スクラムの実践と学習 © kaonavi Inc.

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

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

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

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

  43. 2020/09/19 なるほど…? (理解はできるけど腹落ちで きない感じ) 43 型にハマることで学ぶ STEP2 スクラムを理解 スクラムはこういう設計になっていて、 提供されるイベントやロールや成果物には

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

    こういう背景や狙いがあるんだよ だから、こういう風に実践してみよう! スクラムマスター
 PO・開発チーム
 © kaonavi Inc. スクラム自体の理解は深まったかも しかし、スクラムを通じての 学習と変化が進んでいなかった
  45. 2020/09/19 45 型にハマることで学ぶ そうだ スクラムじゃなくて、 何かを解決したかったんだ © kaonavi Inc.

  46. 2020/09/19 〇〇だからですよ 1スプリントだけ試してみ ませんか? スプリントバックログ作成はタスクまで 分解してみるといいですよ スプリントバックログが いつも残っちゃう 当たり前になってる… 46

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

    STEP3 スクラムの実践と学習 どうして? 試してみたら変化が生まれた! そうか、プランニングってこういう風にやる と効果的なんだ。 PO・開発チーム
 スクラムマスター
 チームの関心事と紐づけて スクラムの実践と学習を行うスタイル その結果、徐々に変化が生まれた © kaonavi Inc.
  48. 2020/09/19 48 その結果 プロジェクトの終盤まで不確実性が残る ➡ アジャイルな見積もりと計画の実践 スケジュールもスコープも変えられない …? ➡ 自分たちでプロジェクトのハンドルを握る

    QA・デプロイは他のグループがするもの ➡ チームで完結できるようコラボレーション 手を動かすまで開発の難易度は分からない ➡ プランニング終了時点で把握、対策を打つ プロジェクトが終わってからのふりかえり ➡ 毎スプリント小さなカイゼンを試す 全て開発し終わるまでリリースできない ➡ α,βリリースでフィードバックループを回す 生じた変化 © kaonavi Inc.
  49. 2020/09/19 49 おまけ 全社スプリントレビュー 毎週木曜日に全社から参加者を募ってスプリント レビューを実施。 各チームの成果物に対して営業・事業戦略・サ ポートチームなど、多角的なフィーバックがなされ る。 開発だけでは思いつかないようなアイデアや

    フィードバックをプロダクトに反映! © kaonavi Inc.
  50. 2020/09/19 50 カイゼンのポイント 仲間
 根気
 分析
 © kaonavi Inc.

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

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

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

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

    技術的課題による 諦めや計画の変更が多発 これでは スピードもアジリティも出せない © kaonavi Inc.
  55. 2020/09/19 55 カイゼンのヒント • 攻守のバランス • 土壌作り © kaonavi Inc.

  56. 2020/09/19 56 攻守のバランス • React移行プロジェクト • Goによる外部公開API開発 • PHP/Laravelバージョンアップ •

    FlowからTypeScript移行 • 着実なリファクタリング © kaonavi Inc.
  57. 2020/09/19 技術課題の一覧可視化 & テックリードのサポート 57 土壌作り 技術スタックは 現場メンバーで決定して OK 週に2時間の

    技術品質カイゼン推奨 ナレッジ共有の場としての エンジニア勉強会を定期開催 © kaonavi Inc.
  58. 2020/09/19 58 結果 再利用性 可読性 保守性 変更容易性の 向上 属人性の 解消

    関心毎の 削減 小回りの効く 開発 実装以外にかける 時間の削減 アジリティ & スピード © kaonavi Inc.
  59. 2020/09/19 59 カイゼンのポイント 技術革新は エンジニアの 好奇心から生まれる 技術的カイゼンの 種を育むための 環境と文化 小さく試す

    実験を繰り返す © kaonavi Inc.
  60. 2020/09/19 3本のカイゼンの矢 60 開発体制 カイゼン 開発プロセス カイゼン 開発技術 カイゼン ©

    kaonavi Inc.
  61. 2020/09/19 61 Before © kaonavi Inc.

  62. 2020/09/19 62 After チーム開発 Whyを理解した上で開発 自分たちで成し遂げる仕事 チームで成果を出す チームとしての仕事が終わるかどうか 疑問・相談は直接その場で速攻で アジャイルな見積もりと計画の実践

    チームでプロジェクトのハンドルを握る リリースまでチームで完結 スクラムによる現状把握で不確実性を排除 毎スプリント小さなカイゼンを試す α,βリリースでフィードバックループを回す 全社スプリントレビュー アジリティとスピードを支える開発技術 © kaonavi Inc.
  63. 2020/09/19 63 1本の矢は簡単に折れるが、 3本束ねると簡単には折れない それはアジャイルな開発組織作りも同じ!

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

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

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

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

    kaonavi Inc. Design Systemの導入 67
  68. 2020/09/19 • 独自形式のAPI → RESTful形式 • Reactへの完全移行 • Swaggerの網羅性を95%以上で維持 •

    パフォーマンス改善 © kaonavi Inc. 技術負債との戦い 68
  69. 2020/09/19 開発プロセスカイゼン © kaonavi Inc. 69

  70. 2020/09/19 © kaonavi Inc. アジャイルテストの導入 70 参加者 • すべてのメンバー •

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

    レビュー レトロ スペクティブ リリース(テスト)計画更新 リグレッションテスト 受け入れ条件 チェック テストケース 設計&作成 テスト実施 テストレベル 定義 テスト観点 テスト見積り レポート プランニング1 プランニング2 テストケース レビュー 開発 スクラム イベント アジャイル テスト
  72. 2020/09/19 © kaonavi Inc. アジャイルテスト導入後のふりかえり 72 Problem Keep リグレッションテスト による安心感がある

    バグを早期発見 テスト設計時点で 仕様や例外の考慮漏れを指摘 リグレッションテストが 回るまで時間がかかる テストデータの 準備が大変 QAチームと どう連携しよう…
  73. 2020/09/19 © kaonavi Inc. ポストモーテム運用 73 主に失敗に対するふりかえり、学習、再発防止活動 • 実施対象(クリティカルな失敗からの学びを優先) ◦

    一定深刻度のインシデント ◦ リリース後の巻き戻し
  74. 2020/09/19 • E2Eテスト ◦ 一部プロジェクトでTestCafeを導入 ◦ CI連携準備中 • モブプログラミング ◦

    一部プロジェクトで実施中 © kaonavi Inc. 他にも 74
  75. 2020/09/19 75 開発体制カイゼン © kaonavi Inc.

  76. 2020/09/19 • 目的 ◦ 権限と責任の委譲 ◦ 責任者を明確化 © kaonavi Inc.

    新たなロールを設置 76 ロール 役割 エンジニアリングマネージャー 文化醸成、採用援助、エンジニアメンター サービスリード サービスの受け入れジャッジ、技術育成、人 材採用 テックリード フロントエンド 技術ジャッジ、技術育成、人材採用 バックエンド(API、機能実装) サーバサイド(インフラ寄り)
  77. 2020/09/19 © kaonavi Inc. 組織力のさらなる強化 77 2020.07.01 CDO(最高デザイン責任者)に玉木穣太就任 2020.07.15 技術顧問に森正弥氏就任

    2020.09.01 CTO(最高技術責任者)に松下雅和就任 • 「デザイン」の力を経営や事業に組み込む ◦ コーポレートブランディング ◦ コミュニケーションデザイン ◦ デザインガイドライン • 元楽天技術研究所代表 • 組織戦略、研究開発 (AI, ビッグデータ)相談 • プロダクトの開発体制強化
  78. 2020/09/19 とはいえ、 まだ大きな課題が… 78 © kaonavi Inc.

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

  80. 2020/09/19 © kaonavi Inc. モノリシックなシステムによる弊害 80 開発スピードが 上がらない 生産性が スケールしない

    リリースにかかる 工数が大きい 障害発生時の 影響度が大きい 複雑度が高いため、 影響範囲の把握が困難 機能開発が相互に影響し合う 可能性があり、同時開発が困難 1つの障害がシステム全体の 停止につながる可能性がある リリース対象が大きいため、 影響調査やQAの工数が大きくなる
  81. 2020/09/19 カイゼンの 成果は出てきた 81 © kaonavi Inc.

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

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

  84. 2020/09/19 © kaonavi Inc. マイクロサービス化の狙い 84 適切な技術と 体制で開発スピードを 上げたい 開発人数に応じて

    生産性を上げたい 細かく安全に リリースしたい 障害に対する 影響を減らしたい
  85. 2020/09/19 © kaonavi Inc. マイクロサービス化プロジェクト発足にいたるまで 85 ボトムアップ でチームが発足 • 個別最適になってしまいそう

    • 開発組織全体を巻き込むのが難しい • オーナーシップが発揮し辛い このままでは うまくいかないかも…
  86. 2020/09/19 © kaonavi Inc. マイクロサービス化プロジェクト発足にいたるまで 86 経営層の合意の元、トップダウン でプロジェクト化 • 全体最適の視点

    • 開発組織全体を巻き込む ◦ 第2言語としてGoを正式採用 ◦ DevOpsチームを目指す • オーナーシップをCTOが持つ 本格始動!
  87. 2020/09/19 マイクロサービス化は 始まったばかり © kaonavi Inc. 87

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

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

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

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