【特集】商用 or オープンソース・ソフトウェア

MOONGIFTでは技術コンサルティング、Webサイトプロデュース、テクニカルアドバイザリー、ITレポートサービスを承っております。ご用命、ご質問などはinfo@moongift.jpまでお気軽にどうぞ!

ここ数年でオープンソース・ソフトウェアの知名度は上昇しており、LinuxやApache、PHPのような有名なソフトウェアは企業内のシステム開発(自社向け、他社向け問わず)で採用されることも増えています。またスクラッチ開発用途だけでなく、WordPressやEC-CUBE、OpenPNEのようにWebアプリケーションとして導入し、カスタマイズして納品するケースも一般的になってきています。

こうしたオープンソースの採用に際して、幾つかの問題点や注意点、間違った認識をされていることがあります。今回はそうした点について取り上げてみたいと思います。なお今回のケースは顧客向けにシステム開発を行う企業(いわゆるSIerやシステム開発会社)をターゲットとしています。

オープンソース・ソフトウェアを使うと金額が安くなる?

これはよく言われることで、オープンソース・ソフトウェアを導入することで見積金額が低くなることがあります。開発会社によってはオープンソースを使うことで安くシステム開発を行うことをメリットにしている所もあります。これは正しい判断とは思えません。システム開発を行う場合、大事なのは顧客に対して“最適なコストで最適なシステムを提供する”ことです。ただ安ければ良いという訳ではありません。むしろ安さだけを強調するのでは、自分たちのビジネス価値を下げていると言えます。

オープンソース・ソフトウェアを導入してコストが下げられる部分は、実開発の一部に限定されます。しかしその作業というのは要望を聞き、仕様を策定する上流工程以下になります。下請け、孫請けの場合はそれでも良いかも知れませんが、ITの専門家として顧客に最適なシステムを提供する上ではごく限られたコストでしかありません。オープンソース・ソフトウェアを導入することで価格が下がります、と言うのは自分たちの仕事を下流工程に限っていると言っているようなものです。

オープンソース・ソフトウェアを使うと工数が減る?

オープンソース・ソフトウェアを使うと開発工数が減ると言われていますが、本来であればテストの工数を増やす必要があります。オープンソース・ソフトウェアはえてしてテストが不十分であったり、検証されていないことが多いため、実開発の工数を減らす分をテストに回すべきです。そしてそのテスト結果をコミュニティにフィードバックするのが正しい姿ではないでしょうか。もちろん品質が安定しており、ある程度枯れたソフトウェアであれば、テストの工数も減らせるかと思いますし、同じソフトウェアを二度、三度とプロジェクトで用いる場合はテスト工数が減ると考えられます。しかしそうした知識、ノウハウは自社およびコミュニティのナレッジでありプレミアムです。ナレッジを培った分、価格を安くすると言うのは本末転倒と言えます。

オープンソース・ソフトウェアを使うと金額が上がる

オープンソース・ソフトウェア=安い、というイメージが定着していますが、場合によっては金額が上がります。これはスケジュールに関係します。すでに動作するコードが目の前にある分、導入までの期間はスクラッチで開発するのに比べると圧倒的に短くなります。期間が短いということは、顧客にとっては価値を得るまでの期間が短くなると言うことで、よりビジネスがスムーズになるはずです。少なくともスクラッチに比べるとスケジュールに沿って進められるようになります(スクラッチ開発でのトラブルは多々聞かれることなので)。そして短納期でもこなせる分、価値が高くなります。

そうなると重要なのは、顧客のニーズに沿った候補のシステムを予め把握しておき、検証し、専門家としての引き出しに入れておくことになります。プログラミング言語やシステムの特徴、パフォーマンス、導入の容易さなどを予め把握しておくことで、必要になった段階ですぐに導入検討できるようになり、顧客の信頼を得られるようになります。ここがビジネスの価値になります。スクラッチで開発するから工数がかかり、金額が高くなると言うのは人月的な考え方であり、システム開発を製造業の一環と捉えているからに他なりません。つまり、手を動かす → 人が必要 → 人が頑張った → 頑張った分お金をくださいという論理です。これではアルバイトの時間給と全く同じで、価値がある行動であったかどうかは無視されています。顧客に価値を提供するという視点に立つことこそが重要です。

オープンソースはバグが多い?

これもよく言われることですが、個人的な認識ではスクラッチで開発した場合と比べて大差はないと感じられています。スクラッチで開発しながら適切にテストを行っていない企業は多く、正常系では動いても異常系ですぐにエラーが出たりするケースは多々あります。オープンソースの場合はプロジェクトによってその品質は大きく異なる傾向があり、しっかりテストされているものもあれば個人の趣味レベルを脱せず、テストが殆どされていないものもあります。オープンソースと一括りにはできませんが、平準化すると大差はないという印象です。

ただしスクラッチ開発の場合、最近ではフレームワークを用いることが多いのに対して、オープンソース・ソフトウェアではフレームワークを用いずに開発されているケースもあります。フレームワークを使っている場合コード量が減る傾向にあるのでバグの入り込む余地も減ります。コード量が増えればそれだけバグが多くなる傾向にありますし、ユニットテストの導入も難しくなります。信頼がおけるものであれば別ですが、新しいオープンソース・ソフトウェアを検討するのであれば、何らかのフレームワーク(できれば自分たちが使い慣れているもの)を使ったソフトウェアを検討すべきです。

顧客にオープンソースだと告知するか否か

よく顧客に対してオープンソース・ソフトウェアを使いますので安くなります、といった営業トークをする方がいますが、これは危険です。第一にオープンソース・ソフトウェアがどういうメリットがあり、どういうデメリットがあるかを適切に説明する必要があります。このときのメリットとして安くなると言うのは全面に出す必要はないと考えます。実開発工数の低減や期間の短縮化を実現するのがメリットであり、デメリットとしてはライセンスによって訴訟リスクなどに発展するということです。金額ばかりを強調すると他の重要なメリットが隠れてしまい、ビジネスの価値を下げつつ、価格のフィルターによってリスクもうやむやにされたままになってしまいます。

リスクを取れない場合、例えばオープンソース・ソフトウェアの商用版(という言い方も変ですが)を導入したり、そもそも商用ソフトウェアを利用するという提案も考えられます。いずれにせよ引き出しは多数持っておき、顧客のニーズと予算、メリット/デメリットに合わせて最適なものを選択するというのが専門家のとるべき姿と考えられます。

オープンソース導入のメリットとは

メリットとしては上記にあげた実開発工数の低減、リリースまでの期間短縮の他、ノウハウが得られるということがあります(これはオープンソースのシステム開発の導入メリットについてです)。なお実開発工数は低減しますが、テストの工数は増加します。ですが、複数のプロジェクトをこなせばテスト工数は平均化されるはずです。そしてノウハウが詰まっているというのはオープンソース導入の最大のメリットになります。例えばSNSを新規開発しようとした際、OpenPNEやその他のオープンソースSNSを用いることでSNSに必要だと思われる機能は概ね満たすことができます。一つ一つの機能について仕様策定段階でリストアップするのは非常に大変な作業ですが、こうした基盤となるソフトウェアを使えば、ベースの機能は踏襲しつつ、新規サービスの特化部分だけ開発を行えばよくなります。その他モバイル対応やEコマースの決済システム連携など、スクラッチで開発すると調査は実際の開発で工数がかかるものも容易に実現できるのがメリットです。

オープンソース導入のデメリットとは

デメリットは幾つかありますがまずテストやドキュメンテーションが不十分なことが多々あります。これはぜひ開発工数の代わりにテストやドキュメント作成を行い、コミュニティにフィードバックして欲しいと思います。次によく言われる訴訟リスクがあります。しかしこれはライセンスによって変わりますし、回避方法もあります。そうしたライセンスごとの違いや開発導入をする上での対処法を正しく把握し、顧客に提案できる必要があります。これをただ説明すれば良いと考えている開発会社は多いのですが、説明することによって顧客に責任を押しつけているだけに過ぎません。例えばNew BSD Licenseが何者で、どのような対応が求められるのかといったことやGPL v2とGPL v3で何が異なり、どのように対応しなければならないのかといったことを正しく把握しておく必要があります。

商用ソフトウェア導入のメリットとは

商用ソフトウェアのメリットはやはりサポートや定期的なアップデート、利用に際しての保証(SLA)が行われることになります。一つの完成されたものを導入できるというメリットは大きく、そのまま利用するケースであれば絶対的に優位です。例えばグループウェアのサイボウズのようなケース、大塚商会やSAPのERPなどです。固定化されたパッケージでの導入が多いので、起こりえる問題点や改善点が蓄積されているので、導入までのスケジュールが立てやすく、導入に際しての教育も充実しています。

商用ソフトウェア導入のデメリットとは

逆にデメリットはカスタマイズが生じた時の柔軟性に問題があることが多いのと、予期せぬ問題が起きた際の自分たちでできる対処が限られるということです。パッケージの場合、ソースコードは見られない場合が多く、見られたとしても巨大なコードの固まりになってしまっていることもあります。その中からエラーの原因を探し出すのは非常に困難です。システム開発は得てして何らかのカスタマイズを伴うケースが多いので、導入が難しいことが多いようです。ただしデータベースやOS、ウィルス対策のようにプラットフォーム化されていたり、システムとは祖結合になっている技術要素には導入が検討できます。

SAPのようなERPについては海外ではパッケージを導入し、そのパッケージに合わせて業務改革を行うケースが多いようです。日本の場合は自社の商習慣に合わせて多額のカスタマイズ費用が発生してしまうケースが多いと聞きます。どちらもメリット/デメリットがありますが、基幹システムは主にバックオフィス向けでありコスト部門と見なされるケースが多いのでより安価で手早く導入できる工夫(パッケージに合わせて業務方法を変更するような)が必要と考えられます。

顧客にとっての価値とは

実際に開発を依頼する顧客にとっての価値とは、適切なコストで適切なシステムを導入することです。ただし顧客は得てしてITに疎い場合が多く、最適なシステムとは何か把握できていないことが常です。そういう観点で考えると、システム開発会社には顧客を最適なシステムに向けて導くことが求められます。その導きこそがシステム開発会社に求められる価値になります。元々はシステム開発はスクラッチから行うのが当たり前でしたが、オープンソース・ソフトウェアの普及とともに開発にかけるコストはフリーに近づいています。つまり開発コストは価値を持たなくなっているということです。それでも顧客に金銭を求めているのは人的コスト、人月によるものと考えられます。しかし人的コストはコストの安い地域に流れる傾向にあります。日本でもJavaや.NET、最近ではRails開発についてもオフショアが進んでおり、開発の仕事が減る傾向にあります。人件費をコストに換算して見積もるのではなく、案件単位でプロジェクトに与える付加価値として知的労働部分を増やさなければ、そもそもの開発会社としての価値はどんどん低減していくはずです。

理想的なプロジェクト像

なぜ価格競争になるかと言うと、現状の多くのプロジェクトがコストベースでプロジェクトの予算を決定するからです。開発会社の見積もり、ハードウェアベンダーの見積もり、その他ネットワークや運用費用などを算出し、それを網羅した金額でプロジェクトの開発予算が決定します。いわばボトムアップ方式です。この方式を使った場合、プロジェクト予算ができるだけ低い方が経営陣が喜ぶ傾向にあるため、担当者もできるだけ予算を抑える行動に出ます。そしてボトムアップで作られた予算は稟議を通った瞬間から決定事項となり、覆せないものになります。見積もりとはあくまでも予定であり、大抵の場合上乗せされます。プロジェクトは生き物であり、仕様策定が進み、開発が行われるに従って機能の増減が発生するからです。ですが予算は決定事項なので、変更ができずシステム開発会社が泣くことになります。

理想像としては予算ありきで進むことです。決められた予算の中で最大限良いものを作れるように開発会社と担当者が責任をもって開発に当たるのが理想です。それはトップダウン方式です。そうしなければコストベースでの算出から逃れられず、オープンソースを価格戦略の一環として用いる現状が繰り返されることになります。

商用(またはオープンソース)が常に良いのか

オープンソースにメリット/デメリットがあるのと同様、商用ソフトウェアであってもメリット/デメリットがあります。いずれの場合においても、メリットとデメリットを正しく認識し、顧客とプロジェクトに合わせたものを選定して提案できるのが重要です。ただ安いから、ただサポートがあるからといった理由で漠然と選択するのは意味がありません。また会社としてオープンソースを用いた開発を推進するというのもおかしな話で、顧客のニーズは置いてけぼりになっています。常にニュートラルに、その時々に応じた最適なものを選択するという姿勢が大事になります。

まとめ

オープンソースであろうと、商用であろうと絶対主義は危険です。同様に金額がただ安ければ良いというものでもありませんし、多額の請求をしつつ開発コストはオープンソース・ソフトウェアで利益を多く確保するというのも正しい姿ではありません。重要なのは顧客にとっての価値を追求し、最適なシステムを最適なスケジュールと予算の元に提供することです。最適なシステムを提供するためには、まず提案できるパターンを数多くする必要があります。それがスクラッチやオープンソース・ソフトウェア、フリーウェア、商用パッケージなどに分類されるだけです。そうしたソフトウェアの情報を常に収集し、検証し、必要に応じて提案できることこそが知的労働であり、自社のプレミアムにつながると考えられるのではないでしょうか。

MOONGIFTでは技術コンサルティング、Webサイトプロデュース、テクニカルアドバイザリー、ITレポートサービスを承っております。ご用命、ご質問などはinfo@moongift.jpまでお気軽にどうぞ!

Leave a comment

Please be polite and on topic. Your e-mail will never be published.

MOONGIFTネットワーク。こちらもぜひご覧ください。
MOONGIFT
Open Service
Rails 2.0
Residenton.net
Cool Coding
Producing Web