レビュアー7つ道具
自分はまだまだ熟練エンジニアとはいえないのだが、チーム内では比較的経験年数が多いほう。なので、レビュアーをお願いされることが多い。主に、設計レビューやコードレビュー、テストケースレビュー、メンテナンス手順レビュー。そういうレビュアーをするときに意識していることをQC7つ道具になぞらえて、レビュアー7つ道具という名目でまとめてみた。
- チェックシート
- 対話
- 疑問
- 質問
- 自問
- 分割
- ズームアウト・ズームイン
- 日本語化・口語化
- 将来設計
- スケールアウト可能か
- 拡張・変更が容易か
- メンテナンス・引継ぎが容易か
- 休憩
「チェックシート」は2つの用途で使います。一つ目はレビュー観点をまとめたシートです。それはコーディング規約の類であったり、仕様書であったり、過去の指摘項目リストであったりします。例えば、コードレビューにおいて、変数の初期化、スコープが適切であるか、などなど。もうひとつはレビュー対象リストです。基本的にはある程度細かい単位でレビューすることが多いですが、関数や処理といったリストを使う場合もあります。
「チェックシート」の目的は、実施漏れをなくしたり、レビュー対象の規模を把握したり、記録用にも使います。
パスアラウンド方式であれば難しいところはありますが、ミーティング形式ならば「対話」というツールをうまく活用すべきだと思います。対話をさらに分けるならば「疑問」「質問」「自問」でしょうか。
単純にレビュアーが理解できなかったことについて解説を求めます。レビュアーの理解もそうですが、作成者にとっては説明するということが理解を深めることにもつながると思います。
疑問と似ていますが、レビュアーがある程度推測できることや、完全に理解していることを、あえて問うてみます。レビュアーの頭の中では作成者のロジックの組み立てをチェックしたりもします。
所感やリスク分析などを促し、作成者に考えさせて自己解決・認識させます。人に「これではだめ」といわれるよりも自分自身で「これではだめ」と気づくことも重要。
「対話」の目的は、理解度の共有でもあり、コードレビューについていえば作成者のクセ・センスを確認することができ、この情報は今後に役立つ可能性もあると思っています。
「分割」も2つの用途で使います。一つ目はレビュー対象の分割を行い、単純化とレビュー時間の細分化を行います。もうひとつはレビュアーの役割分割です。自分のチームでは基本は複数名のレビュアーとしているので、各人の切り口を変えてレビューを進めたりします。
「分割」の目的は、単純化と細分化、切り口を多くしてより多くの欠陥を探すことができると考えます。
「ズームアウト」はレビュー対象を大枠で眺めることで単純化し、逆に「ズームイン」はレビュー対象の詳細について査読します。IF文の入れ子ブロックであったり、画面全体仕様と各画面の仕様であったり。大枠についての査読をした後、細かいところについてチェックをする、比較的常套手段かな、と。
「ズームアウト・ズームイン」の目的も、単純化と細分化ですが、見方によってはモデル化ともいえるでしょうか。
「対話」と関連してきますが、図表やコードをレビュアーが「日本語化/口語化」して説明して、作成者との認識チェックを行います。あるテスト技法について学ぶときも、複数の書籍を見比べて勉強したりしますね、それに似ていると思います。物事を換言することは理解を深めるときに重要だと思います。
「日本語化・口語化」の目的は、作成者の脳とレビュアーの脳が同じインプットに対して同じアウトプットが出せるか、という視点でチェックをする、みたいなイメージです。
「将来設計」とは、ソフトウェア/システムの将来的な規模、拡張性、引継ぎなどを考慮します。これにはいくつか特性があると思いますが、
といったところでしょうか。
「将来設計」の目的は、文字通りの将来の品質に着目すること。
1時間くらいで「休憩」を取り、頭を休めたり、作成者と会話を楽しみます。レビューは人間関係も大切です。作成者もレビュアーも作成物の品質向上とエンジニア自身の成長につながるようなレビューを心がけるようにしています。
同僚の作成物のレビュアーをする機会は多いと思いますが、皆さんはどんなツールをお持ちですか?
| 固定リンク | コメント (0) | トラックバック (0)


最近のコメント