ソフトウェアレビューが成功する進行役の6条件ソフトウェアレビュー入門(4)(1/3 ページ)

ともすると漫然と取り組んでしまいがちなソフトウェアレビューだが、メンバー1人1人の役割を明確化すれば、非常に効率的に行うことができる。中でも司会進行役は、レビューの結果を左右する大きなカギを握ることになる。

» 2010年04月14日 12時00分 公開
[森崎修司,奈良先端科学技術大学院大学 情報科学研究科]

レビューに“役割”が必要なこと、認識していますか?

 第3回『“読み方”を知って、レビューをもっと効果的に 』では、まず「何のためにレビューを行うのか」という目的を認識し、それに最適なドキュメントやソースコードの読み方を採用することで、レビューを効率的に行えることを解説しました。今回はその続編として、「レビューにおける役割分担」を紹介したいと思います。

 レビューは進め方の自由度が高い分、参加者1人1人の役割があいまいになりがちなものです。そこで最初に適切な役割分担を行い、1人1人が自身の役割に集中するように心掛けると、レビューの効果・効率を大幅に高めることができます。

 例えば、皆さんの周りではこんなことはないでしょうか?

──ある日のこと……

進行役 「では設計レビューを始めましょう。何か不備や不明な点があれば指摘をお願いします」

レビューアA 「インタフェースXの終了時のステータスコードですが、未定義の値が返されたときのために、デフォルトの値を定義しておかなくてよいのでしょうか?」

進行役 「確かに。今後バージョンアップの際に考慮漏れになり得るので、そうすべきだね。エラー指摘票にメモしとかないとな。えーと……項番1、『インタフェースXのステータスコードが未定義の値のときの、デフォルトの値の定義がない』と」

レビューアB 「私もインタフェースYで起こり得る例外に漏れがあるように思います。送られてくるデータが長過ぎる場合の例外も定義しておきたいです」

進行役 「なるほど。確かにそれがないと、バッファが溢れたときの対処に困るね。えっと……項番2、『インタフェースYの例外として、データが長過ぎる、がない』と」

レビューアC 「インタフェースZの利用前に必ず初期化が必要になりますが、そのことが記述されていません」

進行役 「ちょっと待って。項番2のメモがまだ終わってないんだ……よし、終わった。えーっと項番3、インタフェースZの利用前に……何だっけ? ごめんC君、もう1回言ってくれる?」

レビューアC 「だから、インタフェースZの利用前に必ず初期化が必要になるが、そのことが記述されていない、ですよ」

進行役 「お、そうそう。でも待てよ、そうするとインタフェースXの初期化にも同じことが言えるんじゃないか? うん、それも書いとこう。項番4『インタフェースXの実行前に初期化の必要があるが、明記されていない』と……。あ、でもXの初期化は最初に実行するときだけでいいけど、インタフェースZの場合は、初回とインタフェースYを実行した後に初期化が必要になるんだよな……うん、項番3と4にそのことも書いておこう」

レビューアA 「そういえば、その初期化の実装がないままリリースしたおかげで、全然再現しないバグがあって困りましたよね。初期化忘れが原因ということになかなか気付かなくて」

進行役 「おぉ。あのときはA君もいたよね。そうそう、あのときは何日もホテルに泊まって大変だったなぁ。結局、ここじゃないですかって誰かが見つけたときは飛び上がるほど喜んだよねぇ。原因を見つけたのって誰だったっけ?」

──レビューアA以外、ややイライラした面持ちで進行役を見ている


 進め方の自由度が高いソフトウェアレビューでは、参加者の役割分担が極めて重要です。上の例では、進行役が司会進行、記録、レビューアのすべての役割を担当しているため、1人に作業が集中してしまっています。また、エラーとは直接関係のない話で横道にそれてしまっています。これでは効率的とはいえません。

 そもそも、一定時間内に、網羅的で効果の高いソフトウェアレビューを実施するのは非常に難しいものなのです。アドホックレビューなど、作成者主導で日常的に行うレビューなら、特に役割など定義しなくても大きな問題はありませんが、テクニカルレビューやインスペクションなど、チームで行う計画的なレビューに移行したときには、各参加者の役割をきちんと設定しておく必要があります。そうしないと、上記の例のように、進行、指摘、記録という各作業が1人に偏ってしまいがちなのです。

 中でも重要なのは進行役(モデレータ)です。 「進行役がメンバーに対してさまざまな配慮をしなければ、円滑な進行はできない」という前提条件を、メンバー全員が認識することが大切です。上記の例で言えば、進行役はほかのメンバーに任せられる作業は任せ、円滑な進行に集中すべきです。

 具体的には、指摘票への記録は進行役以外のメンバーに任せ、その代わりに進行役は「レビューの目的に沿った適切な指摘がなされているか」「記録役の記録が追い付いているか」など、円滑な進行ができるよう目を配ります。進行役からもエラー指摘をしたい場合には、事前に指摘を列挙し、ほかのレビューアに事前配布しておきます。そうすることで、レビューの場では進行役という立場に徹するのです。

 このように、進行役はレビューという作業自体の方向性や、その効果・効率を左右する分、ある意味ではレビューア以上に重要な存在だと言うことができます。進行役次第で、レビューの質が決まるといっても過言ではありません。しかし現実には、進行役の重要性について、そこまでの認識はなされていないのではないでしょうか? 今回はそうした進行役を中心に、それぞれの役割を紹介していきたいと思います。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ