「WACATE 2013 夏」参加レポート(その4)――待て、そして希望せよ
こんにちは、第3バイオリンです。
「WACATE 2013 夏」参加レポートも今回が最終回です。今回は、クロージングセッションの様子と、参加して思ったことを書きます。
■クロージングセッション「欠陥とは何か? 欠陥研究の発想、洞察力とその思考」
日本IBMの細川 宣啓さんのセッションです。
IBMの研究所で欠陥の研究を行うかたわら、早稲田大学大学院で非常勤講師として後進の育成にもあたっている細川さん、「今回、研究者として話をするのははじめてです。テスト技法の話だけではない、『技術よりも大切なことがある』ということを伝えたいと思います」と切り出しました。
続けて、今回のセッションのテーマとして「慧眼(けいがん)」という言葉を挙げました。これは仏教用語で、物事の本質を見抜く特殊な眼のことをいうそうです。
さて、今日のソフトウェア開発は分業化が進んでいます。自分の担当している部分以外の業務は正直いってよく知らない、という方もいらっしゃるかもしれません。しかし、テストエンジニアは全体を見なくてはいけない仕事です。すべてを見通すことができる眼を持つことができる、これはまさに慧眼といえるのではないでしょうか。
細川さんは「今回は技法の話はしません。学んだ技法を現場に戻ってどうするか。自分で使う人もいると思いますが、人に教えるという人もいると思います。技法は学びやすい反面、人に教えるのは難しいものです。人に教えるにはどうすればいいか、『教え方』を教えたいと思います」と語りました。
と、ここでいきなり「初参加の方の中で、組込み系の人とエンプラ系の人、誰でもいいからひとりずつ出て来てください」という指示が飛び出しました。そこで前に出てきた組込み系の参加者とエンプラ系の参加者を、互いに向かい合うようにして椅子に座らせた細川さんは、エンプラ系の参加者に次のような指示を出しました。
「今から、前に座っている人に『データベースデッドロック』とは何か、を言葉だけで説明してみてください」
エンプラ系の参加者は説明を始めましたが、どう説明していいのかわからずに困った様子でした。説明を聞いた組込み系の参加者の方は「なんとなくわかったけど……」という反応でした。
今度は反対に、組込み系の参加者に指示が出ました。
「さっきと同じように、今度は『メモリリーク』について前の人に説明してみてください」
組込み系の参加者も、やはり苦戦しているようでした。説明を聞いたエンプラ系の参加者の反応も、先と似たようなものでした。
ふたりの参加者の説明のあとで、細川さんは「実はデッドロックも、メモリリークも、明確な定義を載せた文献はほとんどありません。定義がよくわからないのに『知っている』とはどういうことでしょうか。おそらく、大半の方はそのような状態を見たことはあると思います。そして、先輩や周りの人から、直し方を教えてもらったりしていると思います。しかし、直し方は知っていてもどうやってその状態になるのかという仕組みを知っている人は非常に少ないのです。このことからも、いかに欠陥の本質を知らないまま技法ばかりを学んでいるのかということがわかります」と語りました。
ここまで話したところで、細川さんは最近の取り組みとして「欠陥学」の研究をしていると語りました。欠陥学とは、プログラムの欠陥を標本化し、それを誰でも利用できるようにして欠陥の予測と予防に役立てる、という学問のことです。
ところが、欠陥の標本化といってもことはそう単純ではありません。なぜなら、あるプロジェクトで生じる欠陥はそのプロジェクト固有の特性を含むため、欠陥をそのままの形で収集しても結局はそのプロジェクトの中でしか役に立たないのです。誰でもが利用できる標本とするには、プロジェクト固有の特性を取り除く必要があります。
そこで細川さんが注目しているのが医学です。医学の世界には、世の中のありとあらゆる病気の症状をすべて納めたマスターデータベースがあるそうです。それは世界にひとつしかないもので(だからこそマスターなのです)、世界中の医者が患者を診て病状を判断するときにこのデータベースを参照するのだそうです。細川さんは、このマスターデータベースと同じようなものをソフトウェアの欠陥でも作ろうとしているのです。
また、医師が患者を診断する過程にも注目しているそうです。医師が患者を診るとき、まずは見てすぐにわかる症状や患者の話(体のどの部位が痛い、熱っぽいなど)から、この病気かも、と仮説を立てます。そこでさらに詳しく検査をして、仮説が正しければ治療に移ります。もし仮説が間違っていればやり直しです。人間には、右脳がつかさどる知覚(なんか怪しいと思う)と、左脳がつかさどる認知(データや事実から論理的に説明する)、ふたつの感覚を持っていますが、医師が患者を診るときは、このふたつをフル活用しているわけです。
細川さんは、これをテストエンジニアに置き換えると、「技法を学ぶ」ということは左脳を鍛えることだと語りました。それでは、右脳を鍛えるにはどうすればいいのでしょうか。それは「バグ票を読み込むこと。人が失敗をしたり、欠陥を作り込んだりする状況をよく観察すること」です。細川さんは、人間がどのように誤りをおかすか、を知りたくて、認知心理学を勉強しているそうです。
さらに、医学や心理学の他にも最近は飛行機のパイロットの教育についての書籍を読んでいる、と細川さんは語りました。パイロットは小さなミスが大事故につながりかねない仕事です。そのパイロットがミスを未然に防ぐために何をしているのか、に興味を持ったそうです。ITとは異なる分野から学べることがたくさんある、学んだ知恵やノウハウをITの世界にどうやって取り込むかをいつも考えるのが楽しい、とも語りました。
最後に細川さんは「バグは人工物です。すべてのバグは人間が作り込んだものです。だから、バグの裏には、人間の行動パターンがあります。バグを知ることで、人間の行動がわかるようになり、ミスを許すことができるようになるのです。以上、テスト技法を学ぶワークショップで『技法よりも大事なことがある』という話をしてみました」とセッションを締めくくりました。
細川さんのセッションを聞いて、欠陥を予防するために、欠陥を作り込む人間の心理や行動パターンを知る、というお話はとても興味深いと思いました。
また、IT以外の分野の知恵やノウハウをITの世界に当てはめてみる、というお話にもワクワクしました。わたしも実践してみたいと思って、WACATEレポートの連載を始める前に「ピアニストは暗譜が必須、エンジニアは?」というコラムを書いてみたのですが、いかがでしたか。
■嬉しい話
今回、参加して嬉しいことがありました。わたしがこれまでに書いてきたWACATEの参加レポートでWACATEを知って参加した、という方にお会いすることができたことです。
実は、「WACATE 2009 冬」に参加してレポートを書き始めたころから、いつか「第3バイオリンさんのコラムを読んでWACATEを知って参加したいと思った」という人が表れると嬉しいなあと思っていました。
とはいえ2009年から3年間、毎回参加してレポートを書いていてもなかなかそういう方とお会いする機会もなく、やっぱり自分のコラムにはそこまでの影響力はないのかと半ば諦めていました。それが4年目にして、やっと夢がかなう瞬間が訪れました。
今回、わたしは自分の成長が実感できない、なかなか業務で学んだ成果が出せないという焦りをもってWACATEに参加しました。しかし、この嬉しい出会いでそんな焦りは消えました。
「わたしのコラムの読者にWACATEに興味を持ってもらい、かつ参加したいと思ってもらう」という小さなことですら4年もかかったのです。もっと大きなことをしようと思ったら、それ以上に時間がかかることがあるというのは容易に想像がつきます。
すぐに結果を出そうとせず、ときには待つことも必要です。とはいえ、何もせずにただボーっと待てばいいというのではなく、小さなアクションでもいいから地道な活動を継続して、しかし決して焦らず希望をもってしかるべき時期が来るのを待つことが大切なのだと感じました。
「WACATE 2013 夏」参加レポートは以上です。「WACATE 2013 夏」で出会ったすべての方に感謝いたします。また、ここまで読んでくださった読者の皆様にもお礼申し上げます。