ブログ

ryuzeeによるブログ記事。不定期更新

スクラムではコードレビューをどうやっているか?

みなさんこんにちは。@ryuzeeです。

よく一緒に議論したり大学行ってワークショップをしたりしている原田さんが、スクラムでのコードレビューについて書かれましたので、僕も過去数年コーチとして色々な現場に行った際のことや、自分で受託開発をスクラムでやった際のことを踏まえてスクラムにおけるコードレビューのやり方を書いてみます。

レビューのやり方

早期から頻繁に

僕自身は小規模で頻度の高いインクリメンタルなレビューを好んでいます。 かつて大きなSIerにいてウォーターフォール型の開発をしていた際に、パートナーさんから出てきたソースコードを見ると、コピーペーストの嵐だったり、変数名がデタラメすぎたり、インデントがぐちゃぐちゃだったり(以下思いつく全ての「えーーー」を適当に想像してください)して、かつ工程の後半にレビューしていたので、直すに直せないというような悲惨なことも経験しました。 (注)ウォーターフォールが悪いわけではなく、レビューを工程の後半にやってもムダが多いということです。

ですので、

とにかくソースコードが少量のうちから頻繁に実施するのが基本思想です。 問題は小さいうちに解決した方が解決コストが安いというのは常識です。

早期から頻繁にレビューすることによって、後から大量に似たようなことを修正したりすることも避けられますし、問題の複雑化を避けることが可能になります。

完成の定義に含めるが、公式の会議にはしない

原田さんの例では、チーム全員がレビューに参加していましたが、僕は必ずしもそうである必要はないかなと思っています。 レビューを行うこと自体については、スクラムにおける完成の定義に含め、タスクボードにもレビューを実施するという項目を貼ります。 その際は最低チームの3人以上で行うというくらいにしています。 また開催の時間も決めておらず、必要な時に周りに声をかけて実施します。 不安に思ったら即レビューすればいい、という感覚ですね。 XPのペアプログラミングの良いところは、常に複数の目を通る(しかも途中でペア変えます)ことによって常時レビューが行われているのに近い状態になることです。 ペアプロができなくても、常に頻繁にレビューすることによって効果を得られると思います。

レビューでの観点

このあたりはあんまり特殊なことはしていないことが多いです。 クラス名や変数名や関数名、データベース名、カラム名など、「名前」が適切かは重視します。 名前が分かりにくソースコードは多くの場合良いソースコードではないです。 名前のまずさをコメントでカバーするようなコードにならないように初期の段階から名前にはこだわります。

構造の確認としては、僕はWebアプリケーションが多いので、Model, View, Controllerのそれぞれが、本来それぞれでやるべきことをやっているのか、という点も確認ポイントです。 経験上あまりレビューを行わないで進めると、Controllerが肥大化しやすい気がします。 またこれとあわせて、そもそも書いたソースコードは自動テストしやすいかという点も確認します。 継続的にリリースを繰り返していくためにはテストの自動化は必須です。 したがって初期の段階からテストが書きやすい構造、テストの実行速度が速い構造、依存関係の少ない構造を維持することが重要になります。 またレビューの観点として重複コードを避けるためのコンポーネントやビヘイビアの切り出しなんかもテーマになります。

レビューで使う道具

レビューを実施する際に気をつけるべきことは、人間にしかできないことに集中する、ということです。 したがってインデントの間違いやコメントブロックの有無のチェック等定型的なチェックは機械にまかせるべきです。 これらは例えば、PHP_CodeSnifferやCheckStyleのような体裁チェックツール、複雑度やコピーペーストディテクターなどが該当します。 このようなツールは事前にCI(継続的インテグレーションサーバ)にプロセスとして組み込んで常時チェックする仕掛けにします。 ただ常時機械チェックするだけでなく、チームとしての対応方針も決めておく必要があるのはもちろんです (例えば、警告レベルN以上は必ず対応するとか、複雑度M以上は対応するとか。技術的負債が増えないことを意識する必要があります)。

レビューで気を付けていること

原田さんも書かれていましたが、レビューは改善のために行うもので、個人を批判するためのものではありません。 後ろ向きな指摘ではなく、プロダクトを作っているチームとして、どうやったらより速く品質の高いものをつくれるようになるかという改善の場です。 レビューの際にはまずそのことについて全員が同意している必要があります。 スクラムではチーム内での立場の上下はありませんので、特定の人が一方的に指摘するのも好ましくありません。 そのあたりのファシリテーションは必要であればスクラムマスターが行えば良いでしょう。 チームの成熟度が高くなれば、スクラムマスターがどうのこうのせずとも、同じ方向を向いて活動できるようになります。 またレビューの結果を個人の人事評価に結びつけるような真似をしてはいけません。 これはバグの作り込みの数についても同様です。評価に結びつけた時から隠蔽が始まります。

まとめ

繰り返しになりますが、レビューは早期から繰り返し頻繁に行うことが重要です。 レビューはプロダクトをより高品質に保ちテスタビリティを保ち、技術的負債を増やさないようにするための道具です。 機械でできることは機械にやらせましょう。 特定の個人を責めるためのものでもありません。

なお、ドキュメントレビューについての考え方は、ドキュメントレビューをする際の10のポイントというテーマで書いていますので併せて読んでみてください。

それでは。

アジャイルコーチングやトレーニングを提供しています

株式会社アトラクタでは、アジャイル開発に取り組むチーム向けのコーチングや、認定スクラムマスター研修などの各種トレーニングを提供しています。ぜひお気軽にご相談ください。

詳細はこちら
  • スクラム実践者が知るべき97のこと
  • 著者/訳者:Gunther Verheyen / 吉羽龍太郎 原田騎郎 永瀬美穂
  • 出版社:オライリージャパン(2021-03-23)
  • 定価:¥ 2,640
  • スクラムはアジャイル開発のフレームワークですが、その実装は組織やチームのレベルに応じてさまざまです。本書はスクラムの実践において、さまざまな課題に対処してきた実践者が自らの経験や考え方を語るエッセイ集です。日本語書き下ろしコラムを追加で10本収録
  • プロダクトマネジメント ―ビルドトラップを避け顧客に価値を届ける
  • 著者/訳者:Melissa Perri / 吉羽龍太郎
  • 出版社:オライリージャパン(2020-10-26)
  • 定価:¥ 2,640
  • プロダクト開発を作った機能の数やベロシティなどのアウトプットで計測すると、ビルドトラップと呼ばれる失敗に繋がります。本書ではいかにしてビルドトラップを避けて顧客に価値を届けるかを解説しています。
  • SCRUM BOOT CAMP THE BOOK 【増補改訂版】
  • 著者/訳者:西村直人 永瀬美穂 吉羽龍太郎
  • 出版社:翔泳社(2020-05-20)
  • 定価:¥ 2,640
  • スクラム初心者に向けて基本的な考え方の解説から始まり、プロジェクトでの実際の進め方やよく起こる問題への対応法まで幅広く解説。マンガと文章のセットでスクラムを短期間で理解できます。スクラムの概要を正しく理解したい人、もう一度おさらいしたい人にオススメ。
  • みんなでアジャイル ―変化に対応できる顧客中心組織のつくりかた
  • 著者/訳者:Matt LeMay / 吉羽龍太郎、永瀬美穂、原田騎郎、有野雅士
  • 出版社:オライリージャパン(2020-3-19)
  • 定価:¥ 2,640
  • アジャイルで本当の意味での成果を出すには、開発チームだけでアジャイルに取り組むのではなく、組織全体がアジャイルになる必要があります。本書にはどうやってそれを実現するかのヒントが満載です
  • レガシーコードからの脱却 ―ソフトウェアの寿命を延ばし価値を高める9つのプラクティス
  • 著者/訳者:David Scott Bernstein / 吉羽龍太郎、永瀬美穂、原田騎郎、有野雅士
  • 出版社:オライリージャパン( 2019-9-18 )
  • 定価:¥ 3,132
  • レガシーコードになってから慌てるのではなく、日々レガシーコードを作らないようにするにはどうするか。その観点で、主にエクストリームプログラミングに由来する9つのプラクティスとその背後にある原則をわかりやすく説明しています。
  • Effective DevOps ―4本柱による持続可能な組織文化の育て方
  • 著者/訳者:Jennifer Davis、Ryn Daniels / 吉羽 龍太郎、長尾高弘
  • 出版社:オライリージャパン( 2018-3-24 )
  • 定価:¥ 3,888
  • 主にDevOpsの文化的な事柄に着目し、異なるゴールを持つチームが親和性を高め、矛盾する目標のバランスを取りながら最大限の力を発揮する方法を解説します
  • ジョイ・インク 役職も部署もない全員主役のマネジメント
  • 著者/訳者:リチャード・シェリダン / 原田騎郎, 安井力, 吉羽龍太郎, 永瀬美穂, 川口恭伸
  • 出版社:翔泳社( 2016-12-20 )
  • 定価:¥ 1,944
  • 米国で何度も働きやすい職場として表彰を受けているメンローの創業者かつCEOであるリチャード・シェリダン氏が、職場に喜びをもたらす知恵や経営手法、より良い製品の作り方などを惜しみなく紹介しています
  • アジャイルコーチの道具箱 – 見える化の実例集
  • 著者/訳者:Jimmy Janlén / 原田騎郎, 吉羽龍太郎, 川口恭伸, 高江洲睦, 佐藤竜也
  • 出版社:Leanpub( 2016-04-12 )
  • 定価:$14.99
  • この本は、チームの協調とコミュニケーションを改善したり、行動を変えるための見える化の実例を集めたものです。96個(+2)の見える化の方法をそれぞれ1ページでイラストとともに解説しています。アジャイル開発かどうかに関係なくすぐに使えるカタログ集です
  • カンバン仕事術 ―チームではじめる見える化と改善
  • 著者/訳者:原田騎郎 安井力 吉羽龍太郎 角征典 高木正弘
  • 出版社:オライリージャパン( 2016-03-25 )
  • 定価:¥ 2,138
  • チームの仕事や課題を見える化する手法「カンバン」について、その導入から実践までを図とともにわかりやすく解説した書籍。カンバンの原則などの入門的な事柄から、サービスクラス、プロセスの改善など、一歩進んだ応用的な話題までを網羅的に解説します。
  • Software in 30 Days スクラムによるアジャイルな組織変革“成功"ガイド
  • 著者/訳者:Ken Schwaber、Jeff Sutherland著、角征典、吉羽龍太郎、原田騎郎、川口恭伸訳
  • 出版社:アスキー・メディアワークス( 2013-03-08 )
  • 定価:¥ 1,680
  • スクラムの父であるジェフ・サザーランドとケン・シュエイバーによる著者の日本語版。ビジネス層、マネジメント層向けにソフトウェア開発プロセス変革の必要性やアジャイル型開発プロセスの優位性について説明
  • How to Change the World 〜チェンジ・マネジメント3.0〜
  • 著者/訳者:Jurgen Appelo, 前川哲次(翻訳), 川口恭伸(翻訳), 吉羽龍太郎(翻訳)
  • 出版社:達人出版会
  • 定価:500円
  • どうすれば自分たちの組織を変えられるだろう?それには、組織に変革を起こすチェンジ・マネジメントを学習することだ。アジャイルな組織でのマネージャーの役割を説いた『Management 3.0』の著者がコンパクトにまとめた変化のためのガイドブック