本コラムはテスト分析手法「ゆもつよメソッド」で有名な湯本 剛氏(freee株式会社/株式会社ytte Lab)による連載コンテンツです。 湯本氏のnote「テストマネジメント虎の巻」はこちら
- もくじ
1.あらゆるものがソフトウェアで成り立っている
スマートフォン、電子家電、電気自動車など、私たちの身の回りの多くのものは、ここ数年で、すっかりソフトウェアが中心の製品が多くなりました。ICタグを使って瞬時に計算するセルフレジやリビングの家電の操作までするAIスピーカーといったように、普段の生活においてもソフトウェアを活用するとしないとではまったく違う世界が広がるようになっています。
また、金融システムや社会基盤システムのようなクリティカルなシステムが動かなくなることは、私たちの生活に直接的に影響を及ぼす重大事です。普段の生活では、感覚的にわからないところでもソフトウェアによる影響が出てきます。
例えば、今年は自然災害が多くありますが、台風で停電をすることで、ソフトウェアが使えなくなり、そのために畜産物や農産物の生産が止まってしまうのをニュースで目の当たりにしました。
要するに、私たちの日々の生活はもとより、身体や財産の安全までもがソフトウェアに委ねられているというのが現代社会なのです。
2.ソフトウェアがビジネス成功のカギを握っている
ビジネスの成功もソフトウェアがカギを握っています。
例えば、レストランや小売店で使うレジがタブレットになっているのに気付く方も多いと思います。タブレット用レジアプリによって、店舗の経営者はこれまでは考えられない安価でレジを導入できます。
また、レジを経理システムとクラウド上でつなぐことで毎日の売り上げの経理処理が手作業不要になる仕組みも構築できます。これらのソフトウェアの活用で、バックオフィスにかかるコストが従来からは考えられないほど安価になり、利益率向上に大きく寄与します。
また、オンライン経由で本やCDを購入するといった昨今のライフスタイルの実現にも、キャッシュレス決済はもとより、eコマースサイトのレコメンドや宅配業者の配送システムといったいまどきのソフトウェアが大きく寄与しています。
すなわち、今の時代における製品やサービスの競争力は、ソフトウェア活用が上手くいくかどうかにかかっていると言えるのです。
3.ソフトウェア開発の成功をどう判断しているか
このように、生活のあらゆる場面で必要不可欠であり、また、ビジネスの成否も握っているのがソフトウェアです。ならば、ソフトウェア開発の現場では、開発が成功したか否かをどのように判断しているのでしょうか
一般的に、ソフトウェア開発の成否は品質とコスト、そして納期の3つの観点から判断されています。また、この3つの観点のバランスを取るための開発対象の範囲を調整することも必要です。それらを評価するために定量的な尺度が用いられることも少なくありません。
例えば、コストであれば、売上げの何%以内で開発が完了した場合には成功と見なされ、納期ならば期日からの遅れがなければ成功と判断されます。さらに、品質については、大抵の場合、テストやレビューを行っていく中で検出された欠陥の数で良否が計測されます。テストとレビューの繰り返しによって、当然、欠陥の数は減っていきますが、その減り具合を計測していき、一定基準よりも欠陥が少なくなった場合に成功と判断されるわけです。
ここで、上述したソフトウェアの利用シーンを改めて思い起こしてください。果たして、ソフトウェア開発の成否は、これらの指標だけで測れるものなのでしょうか。
4.価値のあるソフトウェアとは?
欠陥の数が減ったかどうかとは、別の軸で見る品質もあります。
「品質は誰かにとっての価値」とは、著名なソフトウェア開発コンサルタントであるG.ワインバーグ氏の言葉です。
この言葉が意味するのは、ソフトウェアの価値を判断する「誰か(人)」や、その人が利用する「場面」が、ソフトウェアの品質を決めるということです。ワインバーグ氏はこれを「品質の相対性」と呼んでいます。
「欠陥がない低コストなソフトウェアを適切な時期に利用可能にする」というのはとても意味あることです。ただし、それに固執しすぎると、本来ねらっていた価値を持たないソフトウェアが出来上がってしまうリスクが高まります。「価値あるソフトウェア」であるかどうかは、価値の背後にある「人や場面」についての考察がないと判断できないはずなのです。
5.今、本当に求められていることはわからない
今の時代、「人や場面」の考察は重要性を増しています。なぜなら、世の中に求められているものが非常に分かりづらくなっているからです。
昨今、生活に必要なものは十分にそろってきており、有り余る状態です。欲しいもの、知りたいことを探せば山のように情報が入手できます。例えば、今まで行ったことのない沿線の駅で食事をするになったとします。今まで行った事がない場所なのでどこに行けばよいかわからないとしても、スマホで検索すればいくつものグルメサイトが見つかり、無数のお店を勧めてきます。このようなときにどうやってお店を選択するでしょうか。
ある時期までは、多くの人が口コミを見て選んでいたかもしれません。しかし、(どれもいいことが書いてあるので)口コミに差がないと、口コミでは選ばなくなります。では、お店の情報の何を見て選ぶのでしょうか。
- 駅から近い
- コスパがいい
- 和風/洋風/関東風/京風
- クーポンが多い
決定的なものは何かと問われても、はっきりとした解は分からないでしょう。
しかし、情報を提供するグルメサイトは、何かしらチャレンジして多くのお客を自分のサイトからお店へ誘導しなければなりません。誘導できることが掲載されたお店に価値を提供したことになるからです。
また、その誘導によって納得したお店が選べれば、食事をするお店を探していたお客に対しても価値を与えたことになります。
そして、はっきりとした解がないときには、上記のようなことをいろいろ試して価値の提供を試みるしかありません。Webサイトのレイアウトを変えてみる、クーポンの内容を変えてみる、といったようにいろいろなトライアルを繰り返すでしょう。トライアルを通して人や場面の考察をしていくことで、世の中のニーズが見えてきます。そしてそこから見つけた価値をソフトウェアに搭載し、世の中の利益に転換するのです。
これがソフトウェアの価値となります。つまり「品質は誰かにとっての価値である」を実現します。上述した、欠陥の数が減ったかどうかとは別の軸で見る品質になります。
6.開発に求められている2つのこと
人や場面の考察を通して品質を上げていくために、開発に求められていることは大きく2つあると考えます。
トライアルアンドエラーができる開発をする
1つは、品質向上の実現に貢献するため、トライアルアンドエラーができる開発をするということです。
開発側が「そのレイアウト変更には1ヶ月かかります」とか、「クーポンの仕掛けの変更は欠陥になる恐れがあるから控えてください」とか言い出したらどうなるでしょうか。
運用側が、「しょっちゅう変更が入ると安定した運用が出来ません」とか、「変更して数多くの人のアクセスが想定されるのでサーバーを高機能なものに変更しないといけません、3ヶ月待ってください」とか言い出したらどうなるでしょうか。
これではいろいろなトライアルが出来ず、いつまでたっても良いWebサイトになって行きません。そうなってしまうとソフトウェアがビジネスの成功に寄与しません。
チームの垣根を超えた開発をする
もう1つは、チームの垣根を超えた開発をすることです。
近年のソフトウェア開発では、ソフトウェアの複雑化や大規模化によって、各作業に専門性が求められたり、1つのプロジェクトを要件定義、設計、実装、テストでそれぞれ別チームに分けて進めたりするケースが増えています。また、機能毎にもチームが異なる場合もあります。
複数のチームから成るプロジェクトの場合、各チームがそれぞれの役割に集中することはとても重要です。ただし、各チームが自分たちの役割に集中しすぎると、チーム間に垣根が生まれ、開発を推進する障壁となります。より端的に言えば、「各チームの仕事が最終的に統合された際にどうなるべきか」という視点でのレビューやテストがおろそかになるというわけです。これを、「サイロ現象」と呼びます。
サイロとは、もともとは「貯蔵庫」という意味で、一般的に貯蔵庫には窓が無く周囲が見えないことから、「周りと連携せず孤立して仕事をしている状況」を表す言葉としてよく用いられます。このサイロ現象が起きると、開発中のソフトウェアが本来目的を達成しうるか否かを判断し、達成できないと判断された場合にチーム間の調整をすみやかに行うことが困難になるのです。
7.ビジネスの成功に貢献するソフトウェアを作るために
トライアルアンドエラーを行うためにはスピードが命です。1年も経てばトレンドが変わってしまう世の中ですし、数年経てばビジネスの仕組みそのものが変わってしまうことも考えられる世の中です。
サイロ現象に入って本来目的を達成しているかどうかの確認をおざなりにせず、チーム同士が垣根を越えて連携したほうが、仕事を「仕上げる」スピードが速くなります。
ただ、変更要求が多く入る開発や運用の現場が、混乱した状態となっているのも事実です。この解決策として、昨今はさまざまな開発手法やツール、仕組みといったものが現れて、実用化されてきています。次回からは、このような新しい開発スタイルの概要と、それらに対して、ソフトウェアテストはどのようにしていけばよいかについて言及していきます。