ソフトウエア開発には異なる世界がある
前回の記事で記述したとおり、わたしはIT業界のさまざまなプロジェクトで経験を積んできました。その中で感じたことが1点あります。
日本では、企業内の特定環境で動作するソフトウェアを中心とした知識が一般化される傾向がある
書店に並んでいる書籍、Web記事などは、上記を前提に書かれていると思います。従って、これ以外の世界でソフトウェア開発をしている人にとっては、わけが分からないことの羅列になってしまっています。
例えば、エクストリームプログラミングについて「顧客をソフトウェア開発チームの一員とするべきだ」と述べられていることが多いと思います。この意見に従うと、Gmailの開発者は世界中にいる何十万という利用者を開発チームの一員にしなければなりません。「それは無理だ」と、すぐに理解していただけると思います。
わたしは、自分がかかわっているソフトウェア開発の世界を理解することが重要だと考えています。これまで経験から、ソフトウェア開発には「4つの世界」があると思います。今日は、この「4つの世界」の特徴を説明します。
1.企業内ソフトウェア
企業内ソフトウェアは、ある企業のコンピュータという「1つの環境」で動作すればいいソフトウェアのことを指します。つまり、特定のバージョンのOS、Webブラウザで動作すればいいソフトウェアです。例えば、Firefoxで表示がずれる場合は『サポートの対象外です。このソフトウェアは、IE6以上でサポートされています』と運用対応ができるソフトウェアです。一般的に、SI企業、コンサルティング企業によって、企業内ソフトウェアは開発されます。
これらのソフトウェアは、一般的にユーザビリティが他のソフトウェアに比べて低いことが許されるソフトウェアです。なぜならば、ユーザビリティを上げるための投資対効果(ROI)が非常に低いからです。皆様も、自社内で利用されているソフトウェアが「なすべきことを完璧に成し遂げているが、非常に使いづらい」と感じたことがあるでしょう。
2.パッケージソフトウェア
パッケージソフトウェアは、不特定の人が利用するソフトウェアです。例えば、ExcelやWordなどあるいは、楽天やSAPなどが開発するものです。不特定多数の人が利用するため、次の2つの問題を常に解決し続けなければなりません(これが解決できないと、顧客の半数以上を失うことになると考えられます) 。
まず、平均より使いやすいユーザビリティが必要になります。リテラシーの低いおじさま方でも確実に使えるようにしなければなりません。次に、多種多様なコンピュータで実行されるため、OSのアップグレードなどに即座に対応しなければなりません。
パッケージソフトウェアは、大きく3つに分けることができます。まず、「クライアントベースソフトウェア」――ワープロソフト、表計算ソフトなどです。クライアントで実行されるため、さまざまなOSバージョンに対応しなければならないのが特徴です。
2番目は「Webベースソフトウェア」。楽天やヤフーがリリースしているソフトウェアです。Webブラウザベースで動作するので、HTML標準に準拠していればいいと考えられがちですが、Webブラウザのバージョンによって表示方法が異なる場合があるため、クライアントベースソフトウェアと同じ悩みを持っています。わたしが現在携わっている携帯電話向けソフトウェア開発は、この部類にはいります。
少し話が横にずれますが、携帯電話向けソフトウェア開発の現状をお話しします。今までは日本の3キャリアに対応すれば良かったので、比較的内部ソフトウェアに近い開発でした。しかし、iPhoneとAndroidの登場によって、そうはいかなくなってきています。特に、AndroidはさまざまなWebブラウザが搭載可能であるため、非常にテスト工数がかさみます。
最後に「コンサルティング用ソフトウェア」。SAPなどが提供するソフトウェアです。導入するために、コンサルタントの助力を必要とします。このコンサルティング料、非常に高額です。あまりに高額なため、コンサルティング料を得るために作成したソフトウェアなのでは……と勘違いすることがあります。また、企業で利用されることが多いため、より企業内ソフトウェアに近いソフトウェアです。
3.組み込みソフトウェア
組み込みソフトウェアは、ハードウェアの中にインストールされています。ほとんどの場合、アップデートすることが困難なソフトウェアです。携帯電話、車のエンジン制御、カーナビなどに搭載されています。アップデートできないので、求められる品質が非常に高く、また通常のコンピュータより遅いCPUや少ないメモリを利用するため、開発作業のほとんどを「最適化」に費やします。
4.使い捨て
使い捨てプログラムは、企業の研究所や大学で開発されるソフトウェアです。研究目的で作成されるため、動作の完璧性はいっさい求められません。また、開発する上での悩みはほとんどありません。これを見た投資家達が「新しいビジネスが起こせる」と躍起になって投資をすると、ソフトウェア開発者達が困りはてます(笑)。
わたしの基準で、ソフトウェア開発を4つの世界に分類しました。ここで理解して欲しいのが、世の中に溢れている、書籍、記事が「企業内ソフトウェア」を基準にしたものであるということです。これは、SIの大企業がフィーを払い、専門家を雇って書籍や記事を書いてもらっているからです。
このことを理解して、書籍やWebの記事を読むと、ソフトウェア開発の本当に面白い部分をさらに理解できる、とわたしは考えています。