日本のテスト業界の立役者である電気通信大学の西康晴先生へのインタビュー、第2回は日本のソフトウェア開発におけるテストや品質確保の取り組みに対しての所感と提言です。 大学での研究の在り方から、産業構造の問題点まで、率直なご意見の裏側に日本のテスト技術の向上に対する熱い思いを感じる内容です。

日本は欧米に比べてソフトウェアテストや品質が専門の研究者が少ないような気がしますが、この傾向は今後変わるでしょうか。

西:
まず、どこの国でも開発系の研究者が圧倒的に多いということが前提ですが、特に日本でテストの研究者が少ない背景には技術の系譜の問題があると思います。
ソフトウェアという領域の源流をたどるとコンピュータサイエンスなんですよ。そうすると開発系にシフトしていくか、モデル検査にいくか、どちらかのキャリアパスしかないんです。

羽生田:
研究テーマとして論文生産の枠組みにうまく乗せられるかどうかということですね。

西:
そうです。学者としてのパフォーマンスを最大化すると、テストの方には行きにくいというのが一つ。

二つ目は、日本の研究者は非常に頭がいいので、テストで研究をするよりは最初からちゃんとやった方がいいという考え方をするからではないでしょうか。私から見ると日本の研究者は「最初からちゃんとやれば問題ない」症候群に陥っている気がします。

羽生田:
なるほど、つまり現場を根本的に変えるわけにはいかないというようなところからスタートするのは嫌で、全部ひっくり返してなだらかにしちゃえば楽でしょう、という方に行きがちだということですね。
それだと現場ではなかなか受け入れられないですね。

西:
だから"保守"の研究者はほとんどいないですね。

それから、テストや品質の領域は定式化しにくい部分があるので、定式化しにくいものをあえて取り扱って成果を出そうというアントレプレナーシップのようなものが非常に少ないと思います。
企業で役に立っているテストや品質の論文ということであれば、それなりに大手メーカーから生産はされていますが、大学となると難しいですね。

あとは日本の研究者は欲がない。たとえばアメリカのテストのカンファレンスに行くと、半分くらいはモデル検査の人だったりするんですよ。彼らはモデル検査の研究応用分野としてテストをとらえているんですね。ですけど日本の方々はそこで自分の研究をモデル検査にまで広げる必要はないんですね。たぶんそれはそこでグラントをとらなくてもいいからだと思います。

写真:電気通信大学の西康晴先生



日本のソフトウェアエンジニアリングの研究者は、
現場とインタラクションしている人が非常に少ない

もう一つ、この質問が、品質が現場に近い技術だという意味であれば、日本のソフトウェアエンジニアリングの研究者は、現場とインタラクションしている人が非常に少ないので、現場のニーズが来ないですね。
現場のニーズが来ないと研究者は大学の中だけでやれる研究をします。学生実験だけでやれる研究をしますから、下流の技術、プロセスの技術、レビューの技術は難しいです。それからデバッグの技術を研究している人はいないんじゃないですか。

羽生田:
これは、ソフトウェアエンジアリング全般の問題ですね。

西:
はい、これは大学の先生を評価するスキームが無いからだと思います。

国内には、ソフトウェアの障害や事故事例などから知見を得るための公的な仕組みといったものはあるのでしょうか?どうすればそれがうまく機能すると思われますか?

西:
公的資金が費やされたという意味では、SECの障害データベースとか失敗学データベースとかいくつかあります。でもうまくいっていないですし、このまま放っておいてもうまくいかないです。それは何故かというと、まず、「知見とは何か」ということについて深く考えていないからです。障害事例からどういう知見を得ればいいのかということについてほとんど何も考えていないから、何かデータベースに載せればいいというようなことになっている。技術的な問題です。
つまり彼らは現場に行って不具合分析をして解決した経験がないんです。だから障害事例を事例だとしてしか扱わない。それをどう良くしていくかという発想がないので、使えないデータベースになっていると思います。

失敗学の人たちの貢献でハードは驚くほどうまく出来ています。なぜかというと、そういう失敗のデータベースを使って本当に良い設計は何かということをずっと考えてきて、そういう本があるんですよ。 あれはもともとそういう実際の設計という本のシリーズから生まれてきている学問なんです。
ソフトの方は彼らにそういう知識がないので、いきおい通り一遍のものになってしまっている。

写真:電気通信大学の西康晴先生



本当に品質とか安全安心のことをわかって、産業構造をちゃんと考えて、それと自分の技術との関係をちゃんととらえている人って驚くほど少ないんですよ。

大事なことは日本にはソフトウェア工学の識者が驚くほど少ないことです。実は識者と言われている人のほとんどは自分の担いでいる技術のセールスマンなんですね。失敗学の人は失敗学のセールスをしたいんです。それはどの分野でも同じなんです。
例えばフォーマルメソッドの人はフォーマルメソッドを普及させたいんです。オブジェクト指向の人はオブジェクト指向を普及させたいんです。その道具としてソフトウェアエンジニアリングを使って、その道具としてソフトウェア産業の良さを言う、だからみんな「品質向上」っていいますね。みんな「安全安心」と言いますね。
でも本当に品質とか安全安心のことをわかって、産業構造をちゃんと考えて、それと自分の技術との関係をちゃんと捉えている人って驚くほど少ないんですよ。だから国が何かの施策をとるときに識者に聞くと、私も含めて必ずどこかのセールスマンですから、ある技術を担ごうという運動にすぐすり替ります。

この構造を直さないといけません。アメリカはいますよね、例えば、エド・ヨードンとか円熟期のデマルコとか。識者であることがちゃんと商売になるんです。
例えば、羽生田さんが独立して年収2000万とか3000万とかになるんならいいんですよ。そうすると自分も識者として産業のためになることをしゃべってそれで商売になるってことが出来ますけど、日本でそれをやろうとすると、ジャーナリスト的な動きをするか、手段が限られてきちゃうんですよ。ほとんど無理です。
それから日本ってまともなシンクタンクが少ないじゃないですか。政策を立案するシンクタンクはあまりなくてSIか役所の下請けで生きてるんで、良いことに対してお金を払うという文化が非常に少ない。

もうひとつは権限です。現状は調査権限が全くないので、アメリカの航空の事故調査委員会のようにきちんとした権限を与えること、それから情報を出したときに免責をすることが必要です。
医療の分野は(医療ミスの改善をする人が知り合いにいるんですが)、やはり裁判になってしまった瞬間に本来行くべき方向と逆の方向に行く、隠して嘘をつく、有利な方向に話を持っていこうと両方がするという風になっていきます。ソフトウェアも同じですね。

特にエンタープライズ系は産業全体が正しい方向に向かっていないんですよ。例えばJISA(情報サービス産業協会)は作る側として、もっと品質が悪くても大丈夫だと思ってくれ、我慢してくれと言いますね。逆にユーザーの方は高信頼性インフラとかやるじゃないですか。それって逆なんですね。作る方はあらゆる技術を投じて信頼性の高いものをつくっていきます、頑張ります。ユーザーは、いやいや僕たちは避難訓練するからコストに見合った感じでいいよっていう役割分担が普通なのに、今は逆なんですよ。だから締め上げる方は締め上げて、締め上げられる方はズルをする、さぼる、という構図になってます。これは健全な発展ではないです。なんとかしないと。

結局機能安全的考え方ですよね。機能安全的考え方というのは実は一番最初に言ったテストで品質を上げる悪い方のパターンなんですよね。テストというのはプロセス的には機能安全なんです。そうすると重厚長大な開発そのものが正しい方向の開発ではない、ということに気が付かない限り、正しい方向に産業が向かわないんですよ。
六本木ヒルズの回転ドアの話を畑村先生に分析してもらうドキュメンタリーを見たんですけど、あれはもともとは海外製品で、日本に入ってきた時はすぐ止まる重さだったそうなんです。ところが何かでモーターを強くしたらブレーキも強くしないといけなくなって、そうすると重くなってモーターが強くなって、止まりきれずに滑っちゃうドアになってしまったんだそうです。

それって機能安全的には正しい考え方ですね。でも間違ってるんです。そこを悪い意味で"フランス料理的"な技術のとらえ方をしていると結局さっきのJISAとユーザーの構図になっていく。だから正しい方向に導いていくことが必要なんです。例えば、トヨタ式の大野耐一さんなんかは正しい方向に生産を進化させていった結果ああなっているだけであって、彼が突飛な発想をしているわけじゃないんですね。そういう正しい技術の感覚というのがエンタープライズ系では少ないですね。

日本と海外とでテストのやり方に関して顕著な違いを感じますか?また日本のテストの現場の抱える問題・課題は何でしょうか?

西:
違いとして、一つは日本よりも分業が進んでいます。いい意味でも悪い意味でも専門職としてのテストエンジニアが多い。SIという業態がそんなに多くないので、テストエンジニアはユーザー企業に所属しているケースが多いですね。日本ではテストで見ているのは結果ではなく開発プロジェクト全体を見ていますが、彼らは「バグが無くなった」という結果が重要なんです。
それから海外ではテストはアカウンタビリティーの道具に使われます。たとえばリスクベースドテストという道具があって、テスト項目に「このテストをやらなければどのくらいリスクがあるか」という点数付けをしてリスクの点数の高いものをテストするということをします。日本の場合は本当にバグがあるかないかとか、本当に影響がないかどうか、ということをかなり真剣にやります。たぶん日本以外の国でのテストの位置付けは説明責任の道具だと思いますね。だから話している時の感覚が違うんです。

羽生田:
日本のテストの現場の抱える問題、課題についてお聞きしたいのですが?

西:
それは低スキルロックインですね。 一つは産業構造の問題です。効率良くテストをするとテスト会社は儲からないんですよ。それからスキルを測るスキームが非常に少ないので、今でこそJSTQBとかETSSとか出てきましたけれども、一昔前まではテスト会社もC言語の経験年数で売ってましたから。
そうするとテストのスキルを上げても単価は上がらないんですよ。だから開発会社も、テスト会社もテストの教育をしないということになりますし、そこで単価の差が大きく出ると次に何が起きるかというと、効率よくテストをするために知恵を使っている時間があったら、いいかげんでもいいから全部やってしまった方が安い、という話になる。

あとは、スキルを上げるために何をすればよいのかがわからないということがありますが、これはここ10年くらいで何とか改善してきたと思います。
この10年くらい、日本のテストの技術が進化してきたり、普及してきたりしているので、そういうテストエンジニアを雇っている会社の認識も少しづつ変わってきてます。それから組込みメーカーも認識が変わってきていて、たとえば組込みメーカーが「こんな高い技術、テストできるの?」といった引き合いを出してくるので、テスト会社が鍛えられていて、そうするとテスト会社の中で技術勉強会が草の根で始まったりということが起きています。

写真:電気通信大学の西康晴先生
  • 高い技術が存在するということを知らしめること
  • 高い技術を身につけることは儲かると経営者に知ってもらうこと
  • 高い技術を身につけることで、エンジニア自身も楽しくなるということを知らしめること

そうした問題・課題の解消に向けて取り組まなければいけないことは何ですか?3つ挙げてください。

西:
ひとつは高い技術が存在するということを知らしめること、
2つ目は高い技術を身につけることは儲かると経営者に知ってもらうこと、
3つ目は高い技術を身につけることで、仕事の幸せというか現場の幸せというか、エンジニア自身も楽しくなるということを知らしめることですね。

(次回に続く )