MIXI TECH CONFERENCE 2023 にてお話したジ ワンジョンの資料です。
動画:https://youtu.be/83VWlNCtS2Q
https://techcon.mixi.co.jp/d3-7
©MIXIエンジニアの心も繋ごう、グループアサイン新しい人がコードレビューに参加しやすい環境を作ってみませんか?モンスト事業本部 ゲーム運用部 モンストサーバ1グループJEE WONJUNG
View Slide
©MIXI自己紹介● 他3社を渡って2020年に株式会社ミクシィ(現: 株式会社MIXI)入社● 現在モンストサーバ1グループのリーダー● どこにいても春風のような人になりたい!2
©MIXIはじめに3
©MIXI良いコードレビュー良くないコードレビュー4
©MIXI良いコードレビュー● 技術的負債を最小限にできる● 設計などの技術情報が共有される● 不具合発生を事前に防ぐ● メンバーのスキルが向上する○ チーム全体の質が上がる○ サービス向上に向けて対応スピード・開発速度が上がる● 会社のコードとして意識が高くなる● コミュニケーションが円滑になる5
©MIXI良くないコードレビュー● 時にはレビューする人の時間を消費してしまう○ 大きな作業、難しい作業● レビューの遅延○ 再作業、再設計の原因● 一部メンバーの無関心○ 指名されたレビュアー、または作業者の依存関係6
©MIXIモンストサーバチーム既存のコードレビュー7
©MIXIモンストサーバチームの既存のコードレビュー8働き方 基本リモート人数 10~15名開発言語 Rubyタイトル歴史 2023年10周年を迎えます。バージョン開発期間 (QA期間含め) 1〜1.5ヶ月1案件の開発参加人数 1~2名レビューの対象コード ツール、テストコードも含むマージ条件 最低限3名のApprove必須コードレビュー 自由参加
©MIXIチームのレビューの課題9PullRequest作成コードレビューレビュー反映PullRequestマージバージョン開発開始 コード締め切りみんな開発案件で忙しい
©MIXIリーダーの悩み10● 新しく配属した人をチームに、チームのコードになじませたい○ コードレビュー参加に自然と繋がって欲しい● コードレビューの参加率を高めたい● 良いコードレビューで共に成長に繋がって欲しい● 締め切り直前にレビューコメントが集中するなどのレビューの課題を解決したいもっと早く気づいていたら ...締め切りなのにまだ残ってる!今回全然レビューに参加してないけどなんかあったか?
©MIXI新人の悩み11● モンストサーバコードの難しいところa. コンテンツの専門用語が多いb. DB負荷を避けるため色んな種類のキャッシュを使うc. ジョブキューを使うd. 分散DB構造今のコードでいいの?相談したいけど...締め切りもうすぐなのにレビューのコメントが ...!レビュアーとして参加したいけど、自信がない
©MIXIモンストサーバの育成ポイント12● 開発経験・知識について自分の言葉で共有できるようにすること● 興味がある技術に対して、構造まで理解しようとする好奇心を持つようにすること● 向上心、向学心を持って成長できるようにすること● 個人の成長がプロジェクトのユーザーサプライズに繋がること詳しくはhttps://mixil.mixi.co.jp/culture/13107
©MIXIコードレビューするのなら、もっと良いサイクルにしたい!13
©MIXIグループアサインとは?● 案件の担当を決める際に担当者をグループ分けする● グループ内での相互レビューを義務付ける● 2022/09/13からチームで導入○ 1グループ作って検証✓ 1回目: 2022/09/13~2022/10/27✓ 2回目: 2022/10/27~2022/12/13● 3人で1グループ○ リーダー1名、ベテラン、新卒14
©MIXIグループアサインで期待される効果15● 密着仕様把握、設計、デバッグの効果● 普段レビューに難しさを感じる部分のハードルを下げる● お互いのコードを知ることで不在の時にお互い対応できる● 成果物だけではなく、開発過程も共有する(悩みポイント、設計の方法、デバッグ記録など)
©MIXIグループアサイン実行期間と流れ16アイスブレイク開発振り返り改善点反映開発振り返り改善点反映…
©MIXI1回目のグループアサイン17
©MIXI1回目で得られたもの18● メンバーのやる気○ reviewのコメントが増加○ 全員締め切り前に余裕持って終わった● 気軽に相談できる雰囲気● 難しさを感じる部分のハードル下げ○ 質問のコメントが増えた● メンバーの責任感● メンバーのコミュニケーション力
©MIXI第1回目のグループアサインの改善点19もっと忙しい時で試したい声を出して設計意図とコード読む機会があるといいかも
©MIXI2回目のグループアサイン20
©MIXI1回目と違う状況21● アサインの量、難易度(増やしました)● お互いの案件チャンネルに入った○ 原則、担当者以外は案件チャンネルに入ってない○ 案件の結果だけではなく、コミュニケーション過程から結論まで共有できるようにした● 口頭レビューを導入
©MIXI口頭レビューの効果-Production Effect22● 声を出して読んだ本が記憶に良く残るという心理学の言葉○ どういう意図で設計したかをもう一度考えるようになる○ 説明しながら、コードの目的が整理される● さらに、質問と答えのやりとりでコード作成意図が深まる
©MIXI口頭レビューの効果-Rubber duck debugging23プログラマーがラバー・ダック(アヒルちゃん)を持ち歩きアヒルちゃんに向かってコードを1行ずつ説明することによりデバッグを行うという話が由来である。
©MIXI2回目で得られたもの24● お互いのコード知ることで不在の時にお互い対応できた● 成果物だけではなく、開発過程も共有した○ 悩みポイント○ 設計の過程と方向性○ デバッグ記録● 口頭レビューの効果が確認できた○ 設計の整理○ PRの意図の整理○ デバッグ効果
©MIXI新たな課題25
©MIXI忙しい時の義務26作業スケジュール反省メンバーのメンタルケア
©MIXIメンバーのロール27スポーツと同じロール分担は必要- 作業進捗管理- レビュー状態管理- メンタルケア- 設計レビュアー- パフォーマンスレビュアー
©MIXIもしあなたのチームにグループアサインを導入することになったら?28
©MIXI考慮すること...● グループの目的● グループメンバーのロール● 開発プロセス● アサインの量● グループの人数 (🌟)● 絆を作れるコミュニケーション方法29
©MIXI終わりに30