プログラミングでメシが食えるか!?

ソフトウェアの問題と騒ぎ

»

このところ、あるインターネット向け製品の稼働に向けた作業で苦労していたのですが、毎度のことながら、問題が発生したときの様子についていろいろと考えさせられます。

「バグのないソフトウェアなどない」とソフト開発技術者が胸を張って発言するのも問題ですが、ソフトウェアに問題は確かにつきものです。技術的なミスなどもありますが、私がいつも頭を悩ませるのが「想定外の問題」です。

技術的なミスは、開発の進め方の工夫や、念入りに試験を行うことなどでかなり減らすことはできると思いますが、想定していなかったことは試験でも当然項目から漏れますから、問題があるまま稼働を開始してしまいます。

単純な処理の繰り返しであれば、想定漏れもかなり防ぐことができるかも知れませんが、インターネット向けのシステムでは、この「想定」が大変難しいのです。なぜなら、どのような端末・ソフトウェア・ネットワーク機器が相手になるかがそもそも想定できないからです。

もちろん、RFCなどでプロトコルの規定などはある程度公開されていますし、多くのソフトウェアは基準に準拠して開発されていますが、そもそもRFCなどの記述は曖昧な部分が多く、しかも後からどんどん仕様が追加されていき、全容の把握が難しいだけでなく、つじつまが合わないところや、結局どうなのかが分からない部分も多いのです。また、規約が決まる前に市場にソフトウェアが出回ってしまうことも多く、その場合、デファクトスタンダードになってしまった仕様と、後から定められた仕様が一致しないこともあります。

さて、ソフトウェアを稼働開始させ、問題が発生すると大騒ぎになります。「報告書」「始末書」などの提出はもちろん、「どう対策するか」などの打ち合わせも行います。手間暇ともにかなりの苦労となります。しかし、大抵はこの「想定外」によって発生した問題ですので、そういうパターンもあるということが分かれば直すことは簡単であり、それによってさらに深い問題を作り込んでしまうこともそれほどあるものではないのです。しかし、それを理解してもらうことはなかなか大変です。

そして、「他に同様の問題がないことは保証できますか?」と大抵聞かれますが、これはなかなか難しい質問です。想定ができるものは、当然問題がないことを確認しますので「大丈夫」と答えられますが、ほかに想定できていないケースは絶対にないとは言い切れないことがほとんどだからです。分かっていれば最初からそのように作りますし、確認もしておきます。

結局、開発する側はこのやりとりに疲弊して、商用ソフトウェアの開発の仕事が嫌になり、運用する側は実績のないソフトウェアを導入したくなくなり、国内外で「有名で実績のある」製品ばかり選ばれるようになります。選んだ人もその方が責任を問われませんから。しかし、最初から実績のある製品などあるわけもなく、どんな製品も作りたての状態があり、様々な現場で叩かれて実績のある製品になるわけです。日本の場合は特に問題が起きたときの騒ぎが大きく、チャレンジがしにくいお国柄のため、なかなか日本発の製品は生まれにくい気がします。

もちろん、人の生死に関わるようなシステムに想定外の問題がたくさんあるようでは困りますが、そういうシステムではそもそも想定外の使い方はしないように設計します。しかし、インターネットのように不特定多数の機器・ソフトウェアが関係し合うようなシステムでは、なかなか最初から完璧なものは作れないものです。当然ですが、このため、「完璧になるまでリリースしない」というのは、「いつまでもリリースできない」ということと同じことです。

実は多くのソフトウェア製品も、核になる部分はオープンソースで既に実績があるものをそのまま組み込むことも多いのは、「すでに多くの場面で揉まれているから」という理由でしょう。しかし、私はそれでは完全なサポートや柔軟な拡張がしにくいので、基本的にはできるだけ自分たちで作ったものを製品化します。

なかなか難しい問題なのですが、大抵の現場で興味深いのは、実はボスはかなり腹をくくっていて多少の問題で騒ぐより、課題を解決する方を望んでいる人が多い点です。大騒ぎをするのはボスではなく、担当者や間に入っている方々という気がします。まあ、いろいろと人それぞれの責任範囲もあることですから、簡単なことではありませんが、毎回騒げば良くなるものでもなく、騒ぎが極端すぎるとやる気もなくなるものですし、小さなことをいちいち報告したくなくなることも増えるでしょう。もちろん、なんの緊張感もない現場もどうかと思いますが、結局最後は人がやっていることなのですから、きちんとコミュニケーションを取り、後は信頼関係で乗りきることができる現場から新しいものが生まれて育っていくものだと、長年この業界をやっていて感じているのでした。

Comment(0)

コメント

コメントを投稿する