PRESS」のVol.8を読みました(今年の1月に出た号ですが)。http://gihyo.jp/magazine/testpress意外に、なんて言うと失礼ですが、面白かったです。PRESS」というタイトルで損をしている気がします。PRESS」にして、もっとプロセス全般を視野にいれる姿勢を打ち出す方が良いと思います。特集1の「ソフトウェアテスト・ヒストリー」の記事が意外に(またまた失礼)面白いです。テスト技法の歴史の最初に挙げられているのが胎動期と名付けられた1960年代です。OS/360(人月の神話の時代です)のテスト技術者の書いた論文を挙げています。この論文がテスト制御プロセスを5つのステップに分解しています。その内のひとつが「テストすべき機能の識別(identification)」です。プログラミングの世界で識別子(クラス名やメソッド名や変数名など)の重要性に異論を唱える人はいないでしょう。人それぞれの信念もあるので、すべてのプログラマが1番重要なことに「名前付け」を挙げるとは限りませんが、経験あるプログラマであれば、プログラミングで重要な項目を10項目挙げてもらえば、間違いなく「適切な名前付け」を挙げるはずです。それぐらい、名前付けは重要です。昨今ではプログラミングにおいてテスト容易性の重要性が語られます。基本的には、依存性の低さやAPIレベルのインターフェースのクリーンさなど、単体テストの視点で語られることが多いようです。「テストすべき機能の識別(identification)」は、単体テストより上位の、機能テストやシステムテストで重要になります。テストすべき機能を識別せよ、は当り前に聞こえますが、実際は簡単ではありません。理屈上は、テスト項目のデータベースを作り機械識別可能なIDを振るのも解のひとつですが、少し違うと感じています。テストすべき機能に対して、人間が識別可能な適切な名前付けの重要性(ちょうどコード内で人間が識別可能な適切な名前付けが重要なように)を示唆していると思います。要は、単体テストレベルの「テスト容易性」とは違うレベルの「テスト容易性」です。コード内の識別子の適切な名前付けは難しくても、ソフトウェアの目に見える機能の適切な名前付けなんて簡単だろう、と思う人がいたら、それは甘い考えです。ソフトウェア機能の適切な名前付けが混乱するのは次のような人たちがいるからです。流行りモノの名前をつける新感覚派たとえばソフトウェアの機能を選ぶメニューがあるとします。マルスケ(http://www.ariel-networks.com/product/multischeduler/)の左側にあるようなメニューだと思ってください。機能原理主義者であれば、ユーザを機能に誘導するために存在するので「機能一覧」と名付けるかもしれません。見た目で名付ける感覚派は、メニューがパタパタ動くので「パタパタメニュー」を主張するかもしれません。区別できればいいと割り切る人は、サイドにあるから「サイドメニュー」あるいは左にあるから「左メニュー」でいいと言うかもしれません。マーケティング派は、「項目を選ぶことはサービスを選ぶことにつながるので、サービス指向メニュー、略してSOM」と言い出すかもしれません。新感覚派になると、もはや何の根拠もなく「グリーンITの時代だからグリーンメニューだ」と言い出すかもしれません。グリーンメニューまで行くと冗談ですが、他は結構います。名前の混乱はコミュニケーションを断絶させます。これを「解決できないシンボル」と思ってしまう自分は結構、原理主義者かもしれません。