A presentation at Cookpad Tech Kitchen #11 and #12 https://cookpad.connpass.com/event/64837/ https://cookpad.connpass.com/event/64844/
巨大アプリにおける新規開発とチームビルディングCookpad Tech Kitchen #11 & #12 クックパッド株式会社サービス開発部部長勝間 亮
View Slide
自己紹介•勝間 亮(かつま りょう)‣ ! @ryo_katsuma katsuma•2009.05~ Cookpad Inc.‣ サービス開発エンジニア•2014.05~ レシピ投稿領域 マネージャー•2017.01~ サービス開発部 マネージャー
今日の話
今日の話•歴史があるユーザー数も多いクックパッドアプリで、•新規開発がとにかくムズくて課題溢れまくりの中、•課題を整理してチームをなんとか立ち直した話。
今日の流れ•開発の戦略と計画•発生した問題•課題の整理•チームのリビルド•現状
開発の戦略と計画
サービス上の課題•投稿コミュニティの活性化‣ ここ数年ユーザーは順調に増加‣ 一方で大半はレシピをさがすユーザー
サービス上の課題•レシピ投稿を活性化させる仕組みを構築できないか?‣ 当たり前のようにみんなで今日の料理を投稿し合う‣ 日々の料理の記録からレシピの種が生まれる
タイムライン•自分と親しい人、趣味嗜好が近い人の料理の記録•検索では気にしない料理も関心が湧きやすい(はず)•場が活性化すれば投稿に対する抵抗も下がる(はず)
新規サービス開発
大きめの新規開発•素直なCRUDのアプリケーションにはならなそう•バックエンドのアーキテクチャもゼロから検討•それなりの開発規模になりそう。。
おおまかなマイルストーン•1月末に構想がほぼ固まった•上期(=6月末)までにはできればリリース•下期(=7月以降)に継続的な改善を実施
開発上のスタンス•「目指す世界」を一通り実現できるもの‣ フィードの表示, 投稿, リアクション, 通知‣ 中途半端な形だと描いてた世界が実現できるか測れない
開発上のスタンス•β版をまず形にしてみる‣ 今までにCookpadには存在しない形のもの‣ どんな影響を起こしうるか形を見ないと分からない‣ 自信を持って進めるためにも、動くもので確認
開発上のスタンス•多めの人員配置‣ iOS x2, Android x2, バックエンド x2, デザイナ x3‣ デザイナの1人はサービス全体の体験設計のリード‣ バックエンドの1人は開発全体のリード•立ち上げ時にこの人数は初めての規模
発生した問題
3月頃
by エンジニア“6月、今のままだと無理です”
by エンジニア“6月公開を目指すなら、 βの振り返りの期間は無理です。”
by エンジニア“そうなると何のためのβか 目的も不明確です。。”
かなり厳しい
仕切り直しが必要
•なかなか物事が進みづらい•なのでチームの空気も良くない•ここ数年で最も「厳しい」状況であることが明確状況を確認
課題の整理
2つの観点の課題•巨大アプリならではの課題•チーム構造の課題
巨大アプリならではの課題•大人数で「Cookpad」1アプリ開発‣ 好き勝手にリリースは当然できない•リリースサイクルは1月毎‣ キックオフ / PR締切 / コードフリーズ / QAなどが毎回‣ リリース後の改善リリースも1月以上後になる‣ (当然) パフォーマンスも問題ない状態に
状況•バックエンドは実質1人(もう1人はリーダー)•バックエンドは最初から作り込みが必要•クライアントはバックエンドに依存•厳しい
チーム構造の課題•デザイナーは十分な数がいる‣ 完成形として高品質のプロトタイプが実現‣ 当初に狙っていた世界の「触れるプロトタイプ」
チーム構造の課題•デザイナーはタイムラインの中でも分業制‣ フィードのUIそのものや仕様 / 投稿周り … etc‣ プロトタイプは各要素もどんどんリッチに
状況•十分にリッチに発想を膨らませることができる•サービス開発に慣れているメンバーも 「検証すべき最小の仮説は?」を考えられなくなる•エンジニアは「とにかく実現しなきゃ」の発想に•厳しい
チームのリビルド
やることを見直し•開発フェーズの再定義•アーキテクチャ決定を早くできる体制に
開発フェーズの再定義•「いつ、どの状態を目指すの?」を完璧に合わせる•この感覚が少しでもズレるとやることが無限に膨らむ
http://lean-trenches.com/how-spotify-builds-products/
検証したい最小の仮説は?
検証したい最小の仮説•自分と親しい人の料理の情報が流れることの影響は?‣ 良い影響まで出るとよいけど、そこは望まない‣ 少なくともサービスに悪い影響が出ていない?
検証に必要な最小のものは?•表示 / 投稿 / リアクション / 通知 ?
検証に必要な最小のものは?•表示 だけで良い‣ Readだけ‣ Write系のものは最小の仮説検証には全部不要
自分たちはどこのフェーズ?
今ココ
ここを目指す
開発フェーズの再定義の結果•「フォローされてる人の情報を表示する」だけを形に‣ レシピやつくれぽを流すだけ‣ 仮説検証できる最小サイズをShip itすることに集中‣ 投稿や通知はその後のTweak itのフェーズで実施
開発フェーズの再定義の結果•βフェーズの廃止‣ 表示のみのテストはWebで実施済‣ アプリでβテストすることの実質的な意味は無いので廃止
開発の根幹•クライアント, APIエンドポイントなど開発の根幹‣ インフラチームも協力‣ エンドポイントを開発できる人も増やす•パフォーマンステストのために必要な開発に集中‣ 開発項目をRead Onlyにしたのでテストのポイントも絞れた
アーキテクチャ決定を早めた結果•キャパシティの見極め‣ フォローは1000人が当面の限度 ➜ 仕様上は上限100人•開発すべきものにより集中できる体制に‣ テストを充実
それによって、
•全体として進み始めた‣ やるべきことを絞ってコミュニケーションも活発化•スケジュールがようやく現実的なものに‣ 7月から段階的リリース体制
リリース後
大振り返り大会
大振り返り大会•チームの中+他の部とも合同•開発プロセス / レビュープロセス / テスト … etc‣ とにかく関係者全員の思いを全部棚卸し•すぐ動けるものからどんどん導入
体制変更•1チーム ➜ 2チーム + 統括的なリーダーに分割‣ スモールチームの中で意志決定• 1月に1度のリリース ➜ 2週間に1度のリリース‣ 小回りが効く改善体制に
現状
リリース状況•Tweak it中‣ 8月: ゲストユーザー含めて全体リリース完了‣ 9月: リアクション, フォロー促進, 投稿のリリース‣ 10月頭: 通知のリリース(予定)•やっと仮説が形に‣ 今後は、継続的にどんどん改善
チーム状況•自分たちで意志決定して進められる体制に‣ 課題の定義、解決策の立案、リリース… etc•「雰囲気」も良いものに
サービスとしての影響•まだまだこれから…‣ 利用者は更なる拡大が必要‣ 期待する1/10ほど
まとめ
新規開発のポイント•仮説を絞ることで検証するものをとにかく絞る•大きい構想を立てたときこそ小さく進める‣ 油断すると、慣れていてもやることは膨らむ•自分たちの立ち位置と方向性を常に意識合わせ‣ 最終的に狙いたいこと、今やるべきこと‣ 少しの意識のズレが大きな問題に
依存関係を考える•何より最初に解決すべきものは何か‣ 開発上の観点‣ 開発サイクルの観点
問題発生時は•状況を落ち着いて見極め‣ 問題の根底になっているところは何?•「止める」ことも躊躇しない‣ 「ここまで進めていたから」は考えない•目線を揃えてやるべきことを集中させるのがとにかく重要
ご清聴ありがとうございました