Salesforce記事タイトルとURLをコピーするこんにちはサーバーワークスのコーポレートエンジニアリング部にてSalesforceの保守をしている中村です。サーバーワークスのSalesforceチームは少しずつ人が増えてきて、攻めの活動に時間を割くことが段々とできるようになってきました。今回、その攻めの活動の一つとしてモブコードリーディングを行い、良い結果を得ることができました。この記事では、モブコードリーディングを行うに至った経緯、やりかた、得られた結果を紹介します。背景サーバーワークスではSalesforceを2012年ころから導入しているため、Salesforce上のオブジェクトやApexコードにはその年数分の歴史が積み重なっています。開発チームに新しいメンバーを迎え入れる際、その方がチームの文化に馴染み、迅速にプロジェクトへの貢献を始めることは、プロジェクトの推力を上げるためには重要です。既存の大量のコードや歴史の積み重ねをドキュメント・コードから理解していくことは、かなりハードで、時間もかかります。このハードな工程を少しでも楽にするために、今回はチームで「モブコードリーディング」をやってみました。モブコードリーディングとは実はモブコードリーディングには明確な定義はありません。「モブプログラミングのようなスタイルで進めるコードリーディング」として、私がそう勝手に呼んでいます。インターネットで検索すると、似たようなことをしている方がいるようです。モブプログラミングとは複数人ーが一緒に同じタスクを行う開発手法で、一人がドライバー(キーボードを操作する人)、その他がナビゲーター(ドライバーに指示を出す人)となり、一定間隔で役割を交代しながら進めます。これに倣い、私たちはモブコードリーディングを「複数人で一つのコード(の流れ)を読み解いていき、一人がドライバー(メインで説明する人)、その他がナビゲーター(質問・補足・口出しする人)となり、一定間隔(7分)で役割を交代しながら進める」といったコードリーディング手法と定義しました。それでは、次のセクションから進め方、ルールを紹介していきます。進め方・ルールお題決め進めるにあたり、まずはお題を決めることが大切です。今回のお題は「請求処理の一連の流れを理解すること」としました。後続システムへの連携ルール決め次に、進行する上でのルールを決め、メンバーと共有します。私たちのチームでは以下のようなルールとしました。話し手(ドライバー)が担当箇所のコードを理解できなければ人(ナビゲーター)に振ってOK聞き手(ナビゲーター)が話し手(ドライバー)の説明理解できなければ進行を止めてOK関数の実装は細かく見過ぎない。聞きながらヘッダコメントの過不足を感じたら手を入れてOK。実装は触らない実装を触りたくなったらTODOコメントを残すコメントは日本語で書く。全てを読み終わったら、コードリーディング中に書いたコメントを清書してPushし、PullRequestを出す参加者でレビューの上、マージする結果・得られたもの上記の進め方で請求処理を一通り読んだところ、3人で5時間程度で完走することができました。最初は実装を細かく見過ぎてしまって進みが悪いこともありましたが、徐々に関数の中身を見る前に入出力を見る癖が各々についてきたことで、スムーズに進むようになりました。5時間の計15時間は決して少なくない時間ですが、その時間に見合った価値は得られたのではないかと思います。具体的には、以下のようなものが得られました。超密度のオンボーディングこれが今回の主目的であり、効果としても大きかったものです。今回のモブコードリーディングのおかげ(?)で、その後の改修にもスムーズに入れていると思います。ロジックの流れを追いながら自社の歴史や商材を理解していくことで、コード上の理解だけではなく、会社の歴史・ビジネスドメインに対する共通認識を深めることができました。私自身曖昧な理解となっている部分もありましたが、今回の「他人に説明する」という機会を通して改めて正しく理解し、説明することができました。今後の新規メンバーのためのコメント・ドキュメント今回の活動を通して、日本語のコメントを多く追加しました。これまでは必要最低限のコメントでしたが、日本語で読めるコメントが大幅に増えたことで、今後来るであろう新規メンバーのオンボーディング・コードリーディングも加速するのではないかと思います。まとめ今回の記事では、モブコードリーディングの進め方、それによって得られたことを紹介しました。複数人の時間を使うため一見非効率に見えますが、うまく進めることで消費する時間に負けない価値を生むことができると思います。寿命の長いプロダクトを保守している方、ぜひ新規メンバー参加の際にお試しください。2009-引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。