恐怖!WEBシステム外注開発の大失敗

WEBシステム外注→1000万円が×の経験に基づき、正しい外注の方法・秘訣を考察します

システム開発の95%は準備段階で決まる

2006-05-14 22:38:05 | 失敗談
開発したシステムが失敗に終わったとしても、そのシステムを開発した会社の技術レベルが低いということではありません。技術レベル自体は、ほとんどの会社・システムエンジニアに差はありません。個々のエンジニアは非常に優秀といえます。

システム開発で結果に大きな差を及ぼすのは、「開発する前にどれだけ準備したのか」に尽きます。発注者の構想の何%がシステムエンジニアに伝わったのか。

・予算は?
・納期は?
・必要な機能は?
・優先事項は?
・システムを使うひとは誰?
・システムを使う環境は?
・システムを使う時間は?
などなど

発注者の属する業界についての基本的に知識も、この際、エンジニアは何も知らないと考えていた方が間違い有りません。発注者は、小学生に説明するつもりで、作って欲しいシステムの内容をエンジニア側に伝える必要があります。

とはいえ、WEBの世界ではスピードが要求されるため、準備に時間をかけていては商機を失う可能性もあります。

実は、ここが悩みどころです。

では、どうすれば良いのでしょうか?

これは、常日頃から、いつシステム開発プロジェクトが立ち上がっても良いように、「意識」して、「文章」の形で残しておく必要があります。
しかも、使用する用語については、その内容が小学生にも分かるくらい詳細なデータベースを作っておくと非常に役立ちます。
このデータベースは、業界内部にいる人間にしてみれば「何を今更」と思えるモノでも、外部の人間と仕事をする場合には、自分の属する業界の基本事項を理解してもらう強力なツールになります。

使用する用語についての認識が共有できれば、打ち合わせの内容も非常に密度の濃いものになりますし、システムエンジニア側で矛盾点や不要な部分、必要な部分など、建設的な思考が出来るようになります。
逆に、用語レベルですら認識の共有が出来ていないと、「有って当たり前の機能がない!」という自体が平然と起こりうる事態になります。

それゆえに、準備段階は異常と思えるくらい神経と時間を集中して事に当たる必要があります。

準備を完璧にすれば、あとは放っておいても理想のシステムが出来上がります。

とはいっても、それがなかなか難しいわけですが…。

失敗したWEBシステムの使い道

2006-05-12 12:30:32 | 失敗談
いかに失敗しようと、「捨てる」のは愚の骨頂。
かといって追加費用を投入して再開発はしたくない。

そこで、フリーウェア化することを考えています。

失敗したシステムなんて要らないよ、と。賢明な貴方は考えるかも知れません。でもご安心を。
別に「動かない」システムではないのです。
発注段階で失敗したゆえに結果物が想定していたクオリティを下回っていただけで、システム単体としてはPerlやPHPで組まれたモノより堅牢性とセキュリティが上のモノです。オンラインバンキングでも使われているシステムですからね。


では、どのような使い道が考えられるか?

1)ウェブメール機能を活用して有料相談ポータルサイト!
 日数単位で課金(ポイント引き落とし)する機能を備えているので、有料相談事業に利用できます。恋愛相談・家事相談・悩み相談・パソコンの使い方などなど。

 ※ちなみに私はこの方向でシステムを転用することを考えています。


2)情報販売サイト
 当初の案ですが、類似のシステムがリリースされている現状ではカスタマイズしなくてはならないと思います。この場合、やはり携帯からのアクセス機能は欲しいところですね。
 ただ、他社製システムは皆ASPという形ですので、情報販売システムがパッケージで、しかもフリーウェアで手にはいるというのはosComerceなどのオープンソースを使わない限りあり得ませんね。少なくとも、JAVAで組まれた情報販売システムのフリーウェアなど私は見たことがありません。


このシステムについて興味のある方は080-5090-4033(ゴウ)までご連絡下さい。
注意して欲しいのは、システム本体価格は無料ですが、サーバ代やサーバのOS、データベースソフトなどのライセンス費用、SSLライセンス費用など諸費用が別に発生するという点です。
あくまで、ポータルサイトを1から作る費用は無いが、カスタマイズ費用なら出せるという場合にメリットがあります。

また、1000万円のコストをかけて、JAVA言語で開発を発注した場合、どの程度のモノが出来上がるのかを確認してみるだけでも有益です。

情報販売WEBシステムの外注(4)それから

2006-05-10 16:54:49 | 失敗談
2006年。

追加分の開発スケジュールが決まりました。

納品予定は…春。4~5月。
開発を依頼してから約1年。予定の4倍の日程を要することになりそうですが、これでもかなり機能を省いていることを考えると、かなり厳しいです。

費用は約1000万円に膨れあがり、機会損失を考えると非常に恐いです。
ただ、開発が遅れたことから、本来発生するはずの維持コストが掛かっていませんので、その分は助かっています。


さて、この時期、またいろいろと環境がめまぐるしく変動します。

まず、私とシステムエンジニア・プログラマーとの橋渡しをしていた担当者が会社を辞め、独立することになりました。
(その後任の担当者もこの5月に、やはり独立します。)

また、セキュリティ面のコンサルティングを依頼していた別の会社が、コンサルティング事業から撤退することになるということで、急遽別のコンサルタントを手配する必要が出てきました。

そして、サーバですが、予定していたデータセンター(例の強制捜査の入った歌舞伎町)に空きが無くなったとの連絡を受け、これまた急遽別のサーバを探す必要に迫られます。とはいえ、価格面の折り合いが付かず、その後サーバの件は難航することに。



4月。

実は、この時点で、システム開発を断念することを決めました。

理由はいくつかありますが、
1)類似のシステムが既にリリースされており、開発を継続するメリットが乏しくなったこと
2)開発環境が芳しくなくなってきたこと
3)開発スタート時のメンバーが大きく替わってしまったこと
の3つが主な原因です。

何より、1年間で得た経験で、より短期間・低コストでよりハイスペックなシステムを開発する手だてを見つけたため、トータルのコストを勘案して、断腸の思いではありましたが、開発をストップすることにしました。



5月。ゴールデンウィーク明け。
開発をスタートして1年が経ちました。

この時点をもって、情報販売システムの機能の解体・再編成を行い、新規に組み上げるプロジェクトを密かに立ち上げました。

想定する使用サーバOS:FreeBSD
WEBサーバソフト:Apache
開発言語:PHP。
データベース:MySQL

仕様書は予めフローチャート図も含め、自ら準備した上で外注先に渡します。

テストケースとして、この条件であるWEBシステムの開発見積もりを出してもらいました。その結果、なんと私が想定していた半分の予算と日程で納品可能との回答が複数のソフトハウスから得られました。

あるシステムエンジニアがおっしゃっていました。
コストカットの大きな理由は「仕様書を固めてから開発依頼したこと」である、と。

仕様を確定させる作業は、非常に面倒なものです。フローチャートまで含めると頭から湯気が出ます。しかし、それを乗り越えなければ望むものは見えてきません。



次回からは、システム開発の外注をする上で予算と時間を無駄にしない方法や開発予定システムの内容を公開していきます。

情報販売WEBシステムの外注(3)

2006-05-10 16:30:59 | 失敗談
脱力感の中、年内のサービス開始は不可能だと悟りつつ、また重い選択肢を突きつけられます。

1つは開発中止。既に費やした費用は戻って来ないが、追加費用も発生しない。
もう1つは開発継続。開発済みのシステムを活かせることが可能であるが、追加費用が発生する。


この時点で私は、WEBシステムの外注に当たり1つの結論に至りました。

【プログラマーは指示されたことしかしない】

後から、別のシステム開発会社にお勤めの方に伺ったところ、最近の若いプログラマーに特にそういう傾向があるとのこ

とです。

また、私はこのころ、システム開発の基本、プロセス、仕様書策定、開発言語についての書籍を読みあさり、今回のシス

テム開発案件の問題点を探っていました。

『開発言語』
まず、開発言語として選択したJAVA言語ですが、外部からの改ざんに強いなど堅牢性とセキュリティに優れている反面、

後から修正を加えるということが苦手です。
ある程度システムが組み上がり、機能不足や不都合な部分を発見しても、簡単に修正することが出来ません。

機能を後から追加するには、初めから機能を追加することを想定して開発しなければならない、という部分がJAVA言語は

特に厳密に要求されるようです。

また、JAVA言語は、他の言語に比べて開発費用が高く設定されています。別のPHPやPerlであれば、おそらく3/4程度の費

用に抑えられたはずです。これは、別の開発案件でJAVA言語で組んだ場合とPHP言語で組んだ場合の費用比較をしたとき

に分かりました。

さらに、JAVA言語は、サーバに要求する能力も高くなります。
一般的なレンタルサーバレベルでは動きません。
ハイスペックな専用サーバが必要になります。当然、ハイスペックなサーバは維持コストも高くなりますから、トータル

コストが一気に跳ね上がります。


『プロトタイプの問題点』
プロトタイプを用意することで、仕様書では分からないヴィジュアル(見た目)のチェックを事前に行えるというメリッ

トがあります。
しかし、「あくまでプロトタイプ」なのか「これが完成イメージ」なのか、時に判断に迷います。

「これで本番システムの開発に移行して良いですか?」と聞かれたとき、明らかに機能不足やイメージとかけ離れていれ

ば指摘しますが、細かい部分は「プロトタイプだから仕方ないのかな?」と思ってしまうのです。

それはまるで、まるで完成品のような下書きを見せられたときの気持ちに似ています。


しかし結局、プロトタイプのユーザーインターフェイスがそのまま完成品として納品されたとき、「やはり指摘すべきだ

った」と後悔することになります。

このことから分かったのは、プロトタイプは「機能が動かない」だけで、デザイン面やインターフェース周りはそのまま

完成版に引き継がれるということです。


『要件定義』
これは全くの盲点だったのですが、開発の前段階で準備作業のための費用とも言うべき「要件定義費用」が発生します。

もちろんソフトハウスによっては、最初の開発費用に合算して見積もりを出すところもありますが、情報販売WEBシステ

ムの開発を依頼したソフトハウスは別途費用を要求してきました。

大きなシステムですから、準備段階に人的コストが必要なのは分かりますし、支払うことについては何の問題もありませ

んが、最初の見積もりに要件定義費用が入っていないということに疑問があります。

実は、この要件定義費用だけで150万円以上を支払っています。
しかし、納品されたシステムを見る限り、果たしてこの費用は必要だったのかどうか疑問です。
しかも、そのソフトハウスはこの要件定義の作業が必ず発生するため、コストカット出来ません。


『プログラマーの退社』
晴天の霹靂とでも言うべきでしょうか。
メインプログラマが外注先のソフトハウスを退社してしまいました。

IT業界の動きの激しさを痛感する出来事です。
それと同時に、この段階で仕様書策定の必要性を強く感じました。

要件定義作業で大まかな「仕様書らしきモノ」があるとはいえ、やはりそれだけでは不足です。実際にソフトハウス内で

引き継ぎはなされていますが、その程度は推して知るべし。


『勉強不足』
システム開発依頼者である私の勉強不足。実は、これが一番の問題点でした。

システム開発の現状、プログラマーの質、開発言語の特徴、サーバなど関連する諸システムの知識、システムの規模に対

する費用と日程の算定。

まさかと思うほどのスキルを身につけなければ、WEBシステムの外注は出来ません。
そして、これでもかと思うほど事前に仕様を準備して臨まなければ自分の思い描くシステムは完成しません。
システム開発が暗礁に乗り上げた反面、自分でも驚くほどの経験値を得ることが出来たのは不幸中の幸いでしょうか。




私は、この段階でモバイルアクセス機能を諦めました。
ただ、システムを丸ごとお蔵入りにするのは避けたいと考えました。そこで、費用がかさむデザインやインターフェース

の修正はせず、モバイルアクセス機能をカットした分、見劣りする部分の修正を施し、最後のシステム修正を依頼しまし

た。

この時点で気が付けば暦は師走。
東京に初雪が観測…されたかどうかなどドーデモイイ年の暮れでした。

情報販売WEBシステムの外注(2)

2006-05-10 15:40:37 | 失敗談
要件定義:開発に先駆けて、必要事項について事前に固めておく作業。


最近のWEBシステムの開発では、いわゆる「仕様書」を作成しないケースが多いようです。

情報販売WEBシステムの開発を依頼したソフトハウスでも仕様書は作らない方針でした。
では、実際にどのような流れになるのかといいますと、顧客(つまり私)から要望を聞き、それに基づいてプロトタイプを構築します。このプロトタイプは、ハリボテですので実際に動きませんが、完成品のイメージは出来るわけです。そこで、プロトタイプを作り込む作業が発生します。

このプロトタイプ構築費用ですが、実は、最初の見積もりに入っていませんでした。
請求書には要件定義費用として計上されておりましたが、本番用システムの開発費とは、どうやら別計上のようなのです。

この段階で当初の見積もり費用500万円に50万円の要件定義費用が加算されました。
とはいえ、当初800万円くらいの余裕を見ていたため、50万円のコストアップは、まあ仕方ないかなくらいに捉えていたのですが、実はこれが最初の予兆でした。

「そのまま放っておくと大変なことになりますよ」
(その通りでした…)



何回かの打ち合わせを終え、私の考えているシステムの規模は、ソフトハウス側で想定している規模よりもはるかに大きいことが分かってきました。
また、システム的に実現できない機能もいくつかあるということも分かってきました。


ここで、2つの選択肢が生まれます。
1つは、一旦開発をストップし、システムの内容を見直すこと。
もう1つは、条件を変えて、開発を継続すること。


私は、基本的な部分のシステムを先行開発し、付随するシステムを後から増強するという方向を打ち出し、開発を継続することに決めました。


この段階で、「モバイルアクセス機能」は実装せず、通常のPC版のみを開発することになりました。
また、ユーザーサポートのための機能なども後日実装するということに落ち着きました。


が、しかし!
私が考えていた「後で実装する」という意味と、ソフトハウスの側で考えていたそれとは大きな違いがありました。

私が考えていたのは、基本となるシステムに後から機能を追加するというものだったのですが、ソフトハウスの側で考えていたのは「機能を追加したシステムを1から構築する」というものだったのです。

そのことに気が付いたのは、当初の納品期日が1ヶ月ほど経過し嫌な予感がしてきた9月中頃。
もう後戻りは出来ませんでした。



当初の納期がオーバーし、サーバの契約やプロモーション計画に影響が出始めました。

この段階で気が付き、かつ最も厄介だったのは、ファイルのFTP転送によるアップロードが出来ないということでした。
通常、HTMLファイルをサーバにアップロードする場合には、FTPクライアントソフトなどを用いて自分でアップロード/ダウンロードをしていましたので、何も言わなくてもファイルのFTP転送は出来るものと思っていました。

しかし、現実は甘くありませんでした。

「FTP転送は出来ませんよ。もし希望される場合は追加費用が掛かります。」
それが答えでした。

ファイルのFTP転送が出来ないということは、システム内に記述されているメッセージや画像を変更する必要が出てきた場合には、その都度、システム修正費用が発生することを意味しています。
私は、追加費用を支払い、FTP転送機能を付けて貰うことにしました。
と同時に、この作業により納品がさらに遅れることになりました。


10月中旬。ソフトハウスよりシステム完成の知らせを受けました。

そこで私が目にしたものとは…。
プロトタイプそのままのデザインと使い勝手の低いユーザーインターフェイス、そしていくつか機能不全を起こしているリンクボタン。

脱力・・

情報販売WEBシステムの外注(1)

2006-05-10 11:11:21 | 失敗談
当時、WEBシステムの開発ノウハウが無かった私は、自らプログラムを組むということが出来なかったため、WEBシステムの開発会社に「情報販売WEBシステム」の開発をお願いすることにしました。

とはいえ、WEBシステムの開発を外注するという経験も無い、まさに右も左も分からない状態(いま思えば無謀です…)。
取りあえず、楽●ビジネスの一括見積もりサービスを利用しました。

予算は500万円。
開発期間は3ヶ月。

これが、当初の計画でした。
それが最終的には、開発費用1000万円、開発期間1年に及ぶことになろうとは当時は思いもしませんでした。



いくつか見積もりを出して頂いた時点で、システムの内部を知る良い機会ということもあり、各ソフトハウスにお邪魔して、担当のシステムエンジニア(SE)から詳しい話を伺いました。

どういう話をしたのか?その一部ですが…

SE「サーバをどうするか?」
私「専用サーバを考えています」

※専用サーバもかなり低価格化が進んでいましたし、共用サーバだと処理速度とセキュリティに不安がありました。


SE「サーバのOSはどうするか?」
私「無料のFreeBSDを考えています」

※価格が安いサーバは大抵「FreeBSD」というOSが入っていました。RedHatやTurboLinuxはライセンス料の分だけコストがかかるんですね。


SE「開発言語はどうしますか?」
私「処理速度とセキュリティ、それから堅牢性を重視したものでお願いします」
SE「わかりました。それでしたらJAVA言語がお勧めです」

※当時、開発言語としてPerl、PHPを考えていましたが、最終的にはJAVA言語に決めたのは、セキュリティと堅牢性を重視したためでした。
しかし、このJAVA言語というモノが、後のコストアップに繋がるカネ喰い言語だったわけです。


SE「OSですが、FreeBSDではなくTurboLinuxにして下さい。そうしないと動きませんから」
私「そうですか。わかりました。」

※JAVA言語がFreeBSDでは動かないということではなく、商用レベルの動作を要求すると、TurboLinuxで動かした方が良いということです。


このソフトハウスが提示した開発費用は500万円弱。

ゴールデンウィーク明け、このソフトハウスで開発することに決め、第1回打ち合わせへと進んでいくことになりますが、そこに大きな失敗の原因が潜んでいたとは、当時は夢にも思いませんでした。

情報販売WEBシステムの構想

2006-05-10 10:27:05 | 失敗談
WEBシステム:インターネット上で動くシステム・プログラム。掲示板やメール、ショッピングカートやアフィリエイトシステムなど、様々なサービスを提供している。


1年前、私は個人間で情報売買が出来るシステムの構想を練り上げました。

「情報販売」をもっと手軽に実現するシステムです。
例えば、貴方が「店頭で1万円で売っている商品が500円で買えるお店」を知っているとします。
多くの人にとってはどうでもいい内容かも知れませんが、まさに1万円を出してその商品を購入しようと考えている人にとっては魅力的な話ですよね?
このような、「情報を知っている人」と「その情報を知りたい人」をマッチングさせるサービスを考えたわけです。

仕組み自体は非常にシンプルです。

これに、
「会員管理機能」
「決済機能(ポイントを使った決済方法を検討しました)」
「アフィリエイト機能(成果報酬型の紹介報酬制度を標準で提供)」
「モバイルアクセス機能(携帯からでもアクセス可能)」
などを盛り込みます。

イメージ的には、ヤフーオークションに紹介報酬制度がプラスされた感じのシステムです。


最初は、自分で開発しようとは思わず、既存のサービスを使う予定でした。
しかし、自分の構想を満たすシステムが無く、システム開発会社に外注することを決めました。