当社の主力事業の1つはソフトウェア・システムの受託開発です。ありがたいことに、最近では全く新規のお客様から、お問い合わせフォーム経由で開発の見積もり依頼などを頂く機会が増えました。その中には、ソフトウェア・システム開発に慣れているお客様もいれば、全く初めてという会社様もいらっしゃいます。

今回は、後者の「ソフトウェア・システム開発は全く初めて」という方々に向けて、ソフトウェア開発会社に開発作業を外注する際にやるべき事、を説明しようと思います。

なぜ本記事を書こうと思ったか

本題に入る前に、なぜこのような記事を書こうと思ったかについて説明します。

要件定義から丸投げするのは高コスト

当社では「高品質、適正価格なシステムを短納期で納品」することをお客様に約束しています。「適正価格なシステム」を阻むものは色々あるのですが、お客様側に起因するものとして以下の点が挙げられます。

  • 「何を作るのか」、「何をしたいのか」、つまり「要件」が明確になっていない
  • そして、そうした要件を定義する作業にお客様自身があまり関わらない、あるいはコンサルタントなどに丸投げする

逆に言うと、お客様自身で「どんなソフトウェア・システムを作りたいのか」をある程度明確にしておくことで、開発に必要なコストは大きく下げられます。

当社としては、お客様が適正価格でシステムを得ることにより、業務のコスト削減や利益向上を達成して頂きたいと考えています。

なぜ当社では丸投げを是としないのか

当社としては、一番最初の「どんなソフトウェア・システムを作りたいのか」という部分をお手伝いをする事は可能です。実際、こうした要件定義等の「上流工程」は、一般的に金額も高いためビジネス的にもうま味があります。よって、上流工程を全て当社主導で行う事も選択肢としてあり得るかもしれません。ただ、プロジェクト単体で見ればそのような丸投げ案件をやる方がビジネス的に美味しい可能性もあるのに、実際には当社ではそのようなことは行っていないのには理由があります。

1つ目としては、最初に書いた通り時間がかかりすぎるためお客様の負担が大きい点が挙げられます。そうした案件の場合、当社のメンバーがお客様の担当者などに聞き取りを行いつつ要件を固めていくのですが、そのやり取りに多くの時間が取られます。基本的には、時間がかかる=お金がかかる、ということなので、丸投げ方式ではお客様の金銭的な負担が大きくなります。

2つ目としては、そうした要件定義を一から出来るメンバーが社内にそれほどいないためです。よって、丸投げ方式の案件ばかりを依頼されると実際に受けられる案件の数が頭打ちになってしまい、当社の事業がスケールしません。もちろん、メンバーを教育してそうした人材を増やすようにもしていますが、教育には時間がかかるためそれだけだと限界があります。

3つ目も当社内部の話ですが、会社としてはあくまでソフトウェア開発をコア事業として伸ばしていきたいと考えているからです。要件定義やコンサルティングも必要に応じて出来るメンバーが対応しますが、あくまで開発を業務の中心に据えていきたいと考えています。

お客様で出来る事をやるメリット

丸投げしないメリットとしては以下の通りです。

  • 最終的にはお客様側のコスト・時間を削減できる
    • リリースまでの時間も短縮できる
  • 要件定義に実際に携わることで、開発プロジェクトが「自分事」となり、結果として成功率が高まる

外注する前にやるべき事(概要)

定義等

前置きは以上として、ここからは開発を外注する前にやるべき事を説明していきます。

とはいえ、やるべき事は開発プロジェクトの内容によって異なる部分も大きいので、プロジェクトを

  • 社内で使う業務システム
  • 社外のエンドユーザーが使うウェブサービス・スマホアプリ

という2種類に大雑把に分類します。

また、新規開発と既存ソフトウェアの修正によって異なる内容もありますので、それらは適宜分けて説明します。

プロジェクトの種類に関わらずやるべき事

  • プロジェクトの目的・背景を整理する
  • 必要な予算を確保する
    • 開発費用だけで無く、運用保守費用も必要です
  • 必要な人員を確保する
    • プロジェクトの責任者
    • 要件の整理・確定、開発会社とのやりとりなどの実務
  • 想定するスケジュールを計画する
    • 必ずスケジュール通りに行くとは限りませんが、いつくらいにシステムを完成させて使用したいかは、決めておく必要があります。

これくらいは、どんなプロジェクトでも事前にやっておく必要があります。

各項目の詳細については、次回以降説明します。

業務システム外注前にやるべき事

共通でやるべき事に加え、業務システムの場合には以下のような事をやる必要があります。

  • 業務フロー関連
    • 現行業務フローの整理・明確化
    • 新業務システム完成後の業務フローの定義
  • 機能要件関連
    • 新業務システムに必要な機能一覧の定義
    • (存在する場合は)既存業務システムの情報の収集・整理
      • パッケージソフトやウェブサービスの場合、製品・サービス名、バージョン等
      • 独自システムの場合、仕様書等
    • (もしあれば)導入を検討しているパッケージソフト、ウェブサービスの情報
      • 候補は複数でも可
      • なぜそれを候補としているかの理由
  • その他
    • 運用関連の条件・制限等の整理
      • 運用時間: 9:00〜21:00まで、24時間、等
      • アクセス制限等: 社内からのアクセスのみ、社外からもアクセス
      • 利用人数: 全体で最大N人、同時アクセスは最大M人くらい

こちらも、各項目の詳細については、次回以降説明します。

ウェブサービス・スマホアプリ外注前にやるべき事

ウェブサービス・スマホアプリの場合は、共通でやるべき事に加えて以下のような事もやる必要があります。

  • 機能要件関連
    • サービス・アプリの機能一覧の定義
    • サービス・アプリの画面一覧・画面遷移の定義
  • その他
    • 対応機種等の明確化
      • ウェブサービス: 対象ブラウザ・バージョン(Chrome 最新版、Firefox 最新版、Edge 最新版、Internet Explorer 11、等)
      • アプリ: 対象OS・バージョン(iOS 11.0〜、Android 6.0〜、等)、対象ハード(タブレットとスマホに対応、スマホに最適化、等)

こちらも、各項目の詳細については、次回以降説明します。

まとめ

ソフトウェアの開発を外注する際には、丸投げするよりは、自社である程度やるべき事をやってから開発会社に依頼した方が、コスト・質の観点からも有利です。

とは言え、何をやったら良いか分からない会社様も多いようですので、今回から2〜3回で、ソフトウェアを外注する前に最低限やるべき事をまとめようと思います。