システム開発のコストって?
「え?こんなにかかるの?」
見積りを見たお客様の第一声で最も多いのはこれじゃないでしょうか。
システムを作るというのは思いのほか色々なコストがかかります。
ささっと挙げてみると
- アプリケーションを作る費用(チームの人件費)
- ライセンスの費用(ドメインやパッケージの利用料)
- アプリケーションを動かすサーバー等の費用
- セキュリティに関する費用(SSL証明書など)
- 運用する為の費用(ネットワーク監視やバックアップの仕組みなど)
これだけのものが出てきます。
作るアプリケーション1つをとっても
という内容で大きく変わります。
「機能単位で金額を…」と言われる事も度々ありますが、
見積り前に全ての要素を洗い出す事はとても難しいですし、ニーズは常に変化するものです。
「おおよそ最大でこれくらいかかるでしょう」という見積りは出せますが「これで作れます」という見積りを出すのはとても難しいのです。
「この機能はやっぱりいらなかった」「こういう機能にしたい」という変化に対応しなくては最終的に使われないシステムが完成したり、改修の為に追加でコストがかかってしまったりしてしまいます。
我々は
顧客を巻き込んでチームとして本当に必要なものを実際に触ってもらいながらサイクルを回し積み重ねて作り上げていく「
アジャイルソフトウェア開発」という手法を採用しています。
ウィルドの見積り
「目的」:要望や課題。システムの芯となるもの
「出来る事」:目的を果たす為に必要になる一番大きな動き
「運用に関する事」:バックアップやセキュリティに関する事
上記をベースに見積りを作っていきます。
この段階で細かい機能を決めないのは、最初に全ての機能を洗い出す事は難しいという理由と変化に対応する為です。
トレードオフスライダー
失敗したプロジェクトで「要望が変わった(増えた)」のに「期間が伸びない」。
「予算(コスト)が追加されない」。結果、テストが不十分で「品質が落ちる」、もしくは品質をそんな中で維持しようとして納期が間に合わなかったというのを良く聞ききます。
「要望(スコープ)」「期間」「予算(コスト)」「品質」の4つは密接に関係していて、どれかが変化すれば必ず他に影響がでるものです。
従来の開発手法ではこの4つを全て『区切られた全ての工程が正しい』という前提で進めているために変化が起こると前述のような問題が発生します。
我々は、見積りの段階で大きく「要望(スコープ)」「期間」「予算(コスト)」を決めておき変化に合わせて顧客と共に調整をしていく進め方をしています。
例えば機能を新しく追加する必要が出てきた場合に「期間」が動かせない(伸ばせない)のであれば
- 「予算(コスト)」を追加してチームにリソースを追加して期間内に開発する
- 「予算(コスト)」が追加出来ないのであれば「要望(スコープ)」を変更する
(他の機能を一旦後回しにして、新しい機能を優先するなど)
というように4つの要素を変化に合わせて調整をしながら進めていきます。
開発の進め方
-
「要望(スコープ)」のヒアリングと整理
弊社メンバーが顧客をヒアリングさせて頂き、どういうシステムにするか
どう運用していくかを一緒に検討していき「出来る事(やりたい事)」の整理をします。
-
「出来る事」の洗い出しと見積り
整理した「出来る事」を開発する為の工程(画面を作るなど)に落とし込んで見積りを作っていきます。
-
チーム編成
前述の通り、顧客を巻き込んでチームで開発を作っていくというアジャイル開発の手法にそってチームを編成していきます。チームの役割はそのプロジェクトによって変わりますが例として以下のような編成をしていきます。
<チーム例>
プロダクト・オーナー:プロジェクトの最終的な意思決定を行う役割
チームマネージャー:チーム全体の管理をしていく役割
メンバー:デザインや開発、ドキュメンテーションなど必要な役割を持つ
-
開発
開発はイテレーション(1週間程度)の単位をベースとして進めていきます。
そのイテレーション単位で機能が開発され、出来上がった部分までを顧客に触ってもらいながら進めていきます。
短いサイクルで出来上がった部分から触ってもらう事でイメージの乖離を抑え、バグや要件のズレを早期に修正しつつ、変化に対応しながら開発を進めていきます。