プログラマが知るべき97のこと/プロジェクト自身にしゃべらせる
現在のソフトウェア開発プロジェクトの多くには、バージョン管理システムが導入されています。そしてバージョン管理システムの多くは、自動テストでコードの妥当性を定期的に確認するCI(Continuous Integration :継続的結合)サーバに接続されています。素晴らしいことです。

CIサーバに静的コード解析のツールを組み込み、コードメトリクスを収集することもできます。コードメトリクスは、コードの特定の側面におけるフィードバックデータであり、時間の経過に伴うコードの変化を知る手がかりでもあります。メトリクスを収集する場合は、「これを上回っては(下回っては)ならない」という基準を通常設けることになります。たとえば、コードのテストカバレッジが最初の段階で20%だったとしましょう。仮に、テストカバレッジが今後も決して15%を下回ってはならない、という基準を設けたとします。データの収集はCIサーバに任せておけばずっと自動でやってくれますが、そのままでは、基準値を下回っているかどうかは人間が定期的に自分の目で確認する必要があります。下回った時は自動的に通知される、という仕組みはできないでしょうか。

まず通知の手段が問題です。手段としては、eメールやインスタントメッセージなどが使えるでしょう。たとえば、テストカバレッジが低下した時や改善した時に、それを即座にメールやメッセージで伝えるようにするのです。しかし、それよりもさらに効果的なのは、XFD(eXtreme Feedback Device)です。

XFDは、定期タスク等の結果に応じ、ランプや小型の噴水、オモチャのロボット、USBロケットランチャーなどを動かす仕組みです。メトリクスがあらかじめ設定した基準値を上回った(下回った)時に機器を動かし、わかりやすく通知するのです。ランプならば、基準値を上回るか下回るかした場合に、一目でわかるように明るく光るわけです。これならば、帰宅しようと急いでいる時でも、見過ごすことはないでしょう。

使用する機器を工夫すれば、ビルドが失敗した時には何かが壊れる音が聞こえる、コードに注意すべき問題が発見された時には信号が赤に変わる、異臭が漂う、そんな仕組みにすることもできます。プロジェクトチームのメンバーが複数箇所に点在している時は、同様の仕組みを各所に作ってもいいでしょう。信号機をプロジェクトマネージャのオフィスに設置し、それでプロジェクト全体の状況を伝えれば、喜ばれるかもしれません。

どのような機器をどう使うかは、利用する人の創造力次第です。いわゆる「ギーク」の多いチームなら、チームのマスコットをラジコンで動かす、というのも面白いでしょう。もう少しシックな方がいい、というのなら、デザイナーランプを使うのもいいと思います。インターネットで色々と検索してみれば、さらにインスピレーションが湧くはずです。とにかく電源プラグのある機器、遠隔制御の可能な機器ならば、XFDに使用できるのです。

XFDは、プロジェクトの「ご意見番」のような存在と言ってもいいでしょう。メンバーたちの仕事ぶりが定められたルールに照らして褒められるものか、あるいは非難されるべきものかを、XFDが音や光を使って直接教えてくれるわけです。音声合成ソフトウェアとスピーカーを使えば、ご意見番に本当に「しゃべらせる」こともできます。プロジェクト自身が本当に「しゃべりだす」ときが来るのです。