開発を依頼する前に − 外注会社に連絡する前に自社で行うべき事 −

つい最近、遠隔地の企業様から、業務のシステム化のお問い合わせがありました。

連絡したところ、新規案件のお話だったため、ホイホイと喜んでお話をお聞きしましたが、どうも双方の話が噛み合いません。

そこで、お聞きした話を元に、簡単なシステム化のイメージ図を作成し、このイメージ図を元にお話しを進めようとしましたが、話が合いません。

それならばと、次に、システム化の要件を整理するために、弊社が知りたい内容を、文章にした質疑応答表を作成しましたが、それでも話が噛み合いません。

お互いに、もどかしいまま時間だけが過ぎて行くだけでした。

これが、東京近郊の企業様であれば、直接お伺いしてお話をお聞きする事もできますが、お客様の場所が、新幹線を使わないとお伺いできない場所でしたため、訪問することはできませんでした。

結局、この案件に関しては、

「御社近辺のシステム開発会社を探して頂き、直接お話しをして頂かないと、話は前に進まないと思います。」

と言う事で、お断りせざるを得ない状況となってしまいました。もったいない・・・


その後、上記案件に関して、どうして上手く話が進まなかったのかを、少し考えてみました。

■弊社側の問題
・業務内容を把握できなかった
・質問の仕方が悪く、質問内容を理解して頂けなかった

■相手先の問題
・「業務のシステム化」と言うだけで、具体的な改善イメージがなかった
・ソフトウェアの仕組みが解らなかった







このように、双方が、共通点/共有点を持てなかったことが、今回の失敗原因だと思います。


そこで今回は、次のような企業様向けに、外注企業にシステム開発の依頼をする前に、社内で行っておいた方が良いと思われる点を説明したいと思います。

●ソフトウェアの仕組みに余り詳しくない
●業務を効率化したいが、何から手を付けて良いのか解らない


そして今回は、次の内容を説明します。

●業務用ソフトウェアができる事/できない事
●外注会社に連絡する前に社内でできる事
●弊社で支援できる事


一部、次の過去ブログと重複する内容となってしまいますが、その点はご容赦下さい。

★本当の意味での作業効率化とは―その1:http://msystm.co.jp/blog/20130916.html
★本当の意味での作業効率化とは―その2:http://msystm.co.jp/blog/20131019.html


今回も宜しくお願いします。

                                                                                                                                                                                                                  • -

■業務用ソフトウェアができる事/できない事

●ソフトウェアができる事

一般的に、「ソフトウェア」と言っても、その種類は星の数ほど、とまでは行きませんが、かなりの種類があります。

ビジネス、ゲーム、音楽、動画、画像・・・・本当に沢山ありますが、今回は、ビジネスソフト、さらにその中でも、企業の業務を効率化するソフトウェアが『 できる事 』について説明します。


最初に、『 ソフトウェアができる事 』を説明する前に、『 ソフトウェアとは、どういう物なのか 』を説明したいと思います。

一般的に、ソフトウェアによる業務効率化と言った場合、手作業で行う作業を、ソフトウェアに置き換えることになります。(下図の赤枠部分)


例えば、上図の様に、各種データが存在するサーバーから、毎月売上データだけを抽出し、売上データを、商品別、および担当者別に売上情報を整理し、「月次営業会議資料」を作成する場合、人間が行う次のような作業を、ソフトウェアが行うようになります。


(1)サーバーからの売上データ抽出
(2)売上データから商品別売り上げデータを作成(データ抽出/商品名ソート/商品単位計算/データ作成)
(3)売上データから担当者別売上データを作成(データ抽出/担当者ソート/担当単位計算/データ作成)
(4)作成したデータを、会議資料用フォーマットに設定
(5)データの印刷


データ量、つまり商品数や担当者数が少ないうちは、これらの作業を手作業で行っても、それほど時間は掛からないと思います。

しかし、データ量が増えてくるにつれ、データをサーバーから抽出するだけでも作業時間が長くなってしまいますし、商品数や担当者数が増えてくると、商品/担当者毎に、データを分類しなければなりません。

さらにデータから帳票を作成する場合には、改ページを含めた、ページ構成を意識しなければならなくなります。

結構大変な作業量になってしまいます。弊社のお客様においては、この作業が月単位どころか週単位にあり、毎日、この作業のために残業しなければならない程でした。

しかし、この作業をソフトウェアに置き換えると、毎月、あるいは毎週、「実行ボタン」をクリックするだけで、全ての作業が終了するように、業務を効率化することが可能となります。

これが、ソフトウェアによる業務効率化のメリットになります。


上図の例は、図にも記載してある通り、「出力作業系作業の効率化」となります。

ソフトウェアが行う作業を大きく分類すると、前述の出力作業の他に、入力作業、処理作業と言う、3つのカテゴリーに分類されます。


・入力作業 : Input
・処理作業 : Process
・出力作業 : Output


これら3つの作業の、英語の先頭一文字を取って、【 IPO 】と呼びますが、この【 IPO 】が、ソフトウェアの処理基本になります。

つまり、ソフトウェアとは、「データを入力して」、「入力したデータに何らかの処理を行い」、「処理結果を出力する」、と言う物になります。


順序は逆転してしまいましたが、最初に「出力系作業」を紹介しました。次に、「入力系作業」をソフトウェアに置き換えた場合を紹介します。

「入力系作業」の効率化に関しては、弊社には、次の様な問い合わせが寄せられます。


・データの入力方法が複雑なため、簡単に行いたい
・現在、社内データを入力するためには、ITスキルや経験が必要だが、誰でも行える様にしたい
・入力ミスを減らして、最終的には、入力ミスをゼロにしたい
・他システムが作成したデータを、手作業でなく自動的に取り込みたい
・複数のデータを自動的にマージ(結合)したい 等々



上記のお問い合わせに対応するのが、上図の様なソフトウェアになります。

・データ入力の簡素化 データ入力画面の提供
・データ入力作業の属人化排除 アイコンクリックでシステム起動、データ入力するだけ
・入力ミス軽減 ソフトウェアで入力エラーをチェック
・データの自動インポート 「インポート」ボタンクリックでデータ自動取り込み
・複数データマージ 実行ボタンで複数データも自動マージ


このように、データの入力・取得方法を効率化するだけでも、作業は効率化できますし、データの品質を高めることも可能になります。


最後に、「処理系作業」をソフトウェアに置き換えた場合を紹介します。

「処理系作業」の効率化に関しても、次の様な問い合わせが寄せられます。


・どの事業所でもデータを作成したい
・大量データを瞬時に集計・変換・作成したい
・大量データから必要情報だけを取り出したい
・エラーの判定を行いたい
・データの自動計算を行いたい



通常、「処理系作業の効率化」の場合、手作業で行うデータの編集/加工作業を効率化すると同時に、「入力系」や「出力系」の作業効率化も行います。


ここまで、【 IPO 】に関する処理の効率化を説明してきましたが、【 IPO 】それぞれの処理に、共通点があることに気が付きましたか ?


・ソフトウェアが取り扱うデータは、いつも同じ形式
・ソフトウェアが取り扱うデータは、いつも同じフォーマット
・ソフトウェアが行う作業内容は、いつも同じ
・ソフトウェアのチェック基準は、いつも同じ
・ソフトウェアが稼働する場所は、いつも同じ
・ソフトウェアが稼働するタイミングは、いつも同じ


「いつも同じ」と言う表現が目立ちますが、まさに、この表現が重要です。ソフトウェアは、基本的に、固定的・画一的な処理しか行うことができません。

基本的にソフトウェアとは、


・プログラムに定義された、形式/フォーマットのデータを
・プログラムに定義された、場所/タイミングで(入力し)
・プログラムに定義された、チェック方法で(チェックを行いながら)
・プログラムに定義された、方法で処理を行い
・プログラムに定義された、形式/フォーマットのデータを


作成する物です。

上記記載内容を、本章の主題に沿って表現し直すと、次の様な表現になります。


『 ソフトウェアは、プログラムに定義された形式/フォーマットのデータを、決まったタイミングで取り込んで、プログラムに定義された基準を元にチェックを行い、プログラムに定義された定義された処理を行い、最終的に、プログラムに定義された形式/フォーマットのデータを作成することができる。 』


このため、ソフトウェアに対して、どのような定義を行うのかが重要になります。

定義方法が簡素(シンプル)であれば、ソフトウェアは非常に短時間で処理を行うことができますし、逆に定義が複雑であれば、定義が複雑になった分だけ、処理時間が掛かることになります。

                                                                                                                                                                                                                  • -

●ソフトウェアができない事

次に、「ソフトウェアができない事」について説明を行いますが、簡単に言いますと、これは「ソフトウェアにできる事」の逆になります。

項番 ソフトウェアにできる事 逆のこと(できない事)
1 データは、いつも同じ形式 データの種類は、場合によって異なる
2 データは、いつも同じフォーマット データのフォーマットは、場合により異なる
3 作業内容は、いつも同じ 作業内容は、場合により異なる
4 チェック基準は、いつも同じ チェック基準は、場合により異なる
5 稼働する場所は、いつも同じ 稼働場所は、場合により異なる
6 稼働するタイミングは、いつも同じ 稼働タイミングは、場合により異なる


これが、「ソフトウェアができない事」の簡単な一覧表になります。


ところで、私は、お客様に、いつも次のように言っております。

『 ソフトウェアには、できないことはありません。 』



『 何だよ !! 言ってることが違うじゃないか !! お前は嘘つきか !! 』と言われそうですが、上記の言葉には、条件が付きます。


『 但し、時間とお金を掛ける必要があります。 』


つまり、お金と時間を大量に掛ければ、どのようなプログラムでも作成する事は可能です。

上表に、項番が1〜6までありますが、これも、【 時間とお金を掛ければ 】、対応可能となります。

上表を、次の様に変えてみますが、記載内容は同じです。

項番 検討項目 問題点 対応方法
1 形式 データ形式は場合によって異なる 読み込んだファイルのファイル識別子を認識して、その都度処理を切り替える
2 フォーマット フォーマットは場合により異なる ファイル毎にフォーマットの定義を行い、処理に必要な項目の紐付けを行う
3 作業内容 作業内容は、場合により異なる 処理するケース毎に処理定義を行い、スタート時に処理ケースを指定する
4 チェック基準 チェック基準は、場合により異なる チェック基準を複数定義し、処理時にチェック基準を都度選択する
5 稼働場所 稼働場所は、場合により異なる システムをWeb対応し、ネット回線経由でアクセス可能とする
6 稼働タイミング 稼働タイミングは場合により異なる ファイル監視を行い、入力ファイルが作成されたら自動で処理を開始する


このように、プログラムに複数の条件を定義し、処理を行うたびに条件を選択したり、自動判定したりすることで、全ての問題に対応することが可能となります。



しかし、「条件を複数持つ」と言う事は、ソフトウェアを動かすためのプログラムが複雑になります。

「プログラムが複雑になる」と言う事は、開発工数が増加することを意味します。

通常、ソフトウェアの開発費用は、「技術者月額単価」 × 「開発工数」で決定します。

複雑なプログラムを作成するためには、スキルが高い技術者が必要になります。このため、技術者の月額単価は高額になります。

加えて、前述の様に、開発工数も増えますから、当然、開発費用も高額になってしまいます。

さらに、その他にも問題があります。

「プログラムが複雑になる」と言うことは、プログラム自体が大きくなってしまう事を意味します。

プログラムが大きくなると、ソフトウェアを稼働させるPCの性能をアップさせないと、プログラムが動作できなくなってしまいます。このため、処理能力(クロック数)が高く、メモリ量も大きいPCに買い替える必要があります。

また、プログラムをWeb化して使用するためには、Web環境を構築したり、ホスティング環境をリースしたりする必要があります。そこで、サーバーの新規購入やドメインの取得、セキュリティの強化・・・とにかく費用が掛かります。

つまり、「ソフトウェアにはできない事がある」じゃなくて、「ソフトウェアで全て行おうとすると費用が高額になる」と言うのが、事実に近い表現になります。



しかし、どんなに時間やお金を掛けても、やはりソフトウェアにはできないことがあります。

それは、感覚的な処理です。


「何か変」とか、「何かおかしい」と言う人間が持つ【 第六感 】みたいな処理は、現時点のソフトウェアにおいては行えません。

ソフトウェアが、「何か変」とか「何かおかしい」と判断するためには基準が必要です。

しかし、判断基準が無い、もしくは曖昧(あいまい)な状態で、「変」とか「おかしい」と言う判断はできません。

「現時点」と、負け惜しみのような表現ですが、近い将来、「AI(Artificial Intelligence)」、つまり【 人工知能 】が発達すれば、きっと、恐らく、たぶん・・・・人間の感覚に近い処理も行えるようになると思っております。

と言うか、思いたいです。

                                                                                                                                                                                                                  • -

■外注会社に連絡する前に社内でできる事

前章で、簡単に、ソフトウェアの仕組みを説明しました。ソフトウェアの基本は、何度も言いますが、「入力(Input)」、「処理(Process)」、そして「出力(Output)」です。


このため、外注会社に開発を依頼する前に、まずは、現時点での【 IPO 】を明確にする必要があります。システム開発会社も、【 IPO 】が不明確なままでは、何も行えません。

『 業務が面倒。システム化して、簡単に作業が終わるようにして欲しい。 』、とだけ言われても、システム開発会社も困ってしまいます。


・どのようなデータを、いつ、どこで、誰が入力するのか ? (What/When/Where/Who)
・どのような作業を行うのか ? (How)
・どの作業が面倒なのか ? (Why)
・どのような処理結果が得られるのか ? (What)


上記の点は、俗に言う、「5W1H」です。

そこで、システム開発会社に連絡する前に、次の点を明確にして頂けると、システム開発会社も非常に助かりますし、時間の節約にもなります。

(1)業務概要

まずは、業務の内容を整理して教えて下さい。

1)業務概要の説明

・対象業務が、何をするための業務なのかを教えて下さい
・業務フローがあれば、非常に助かります
・新規業務の場合、何をしたいのかを教えて下さい


2)入力データの種類

・どのようなデータを入力するのかを教えて下さい
→例えば:CSVファイルとかExcelファイル、等
・また入力データのフォーマットが固定なのか、可変なのかを教えて下さい
→例えば:A社とB社からデータが来る。A社/B社とも、会社毎には、いつも同じフォーマットだが、A社とB社のフォーマットは違う

3)データ入力のタイミング

・外部からデータが来る場合、そのタイミングを教えて下さい
→例えば:毎日、毎週、毎月、等
・自分でデータを入力する場合も、そのタイミングを教えて下さい
→例えば:毎日、毎週、毎月、あるいは、お客様から要請があった時点で作成する、等

4)作業内容

・外部からデータ入力が無い場合、どのようなデータを手作業で直接入力するのかを教えて下さい
→ 例えば:個数入力、価格入力、等
・入力したデータに対して、何をするのかを教えて下さい
→ 例えば:関数を組んで自動計算を行う、項目のコピーを行う、等
・作業タイミングを教えて下さい
→例えば:データが来た時点、データは事前に来ており毎週、あるいは毎月作業する、等
・チェックを行うか否かを教えて下さい
→例えば:数値チェック、合計値チェック、部署名チェック、担当者名チェック、等

5)作業場所

・作業を行う場所を教えて下さい
→例えば:個人のPC(1台)、営業部員のPC(複数台)、各事業所、等

6)出力データの種類

・帳票(紙)を出力するのか、あるいはデータ自体を作成するのかを教えて下さい
→例えば:請求書を作成する、社内システムに引き渡すデータを作成する、等
・帳票(紙)を出力する場合、どのような出力方法なのか教えて下さい
→例えば:プリンター出力なのか、PDF出力なのか、等
・データを作成する場合、どのような形式のデータを作成するのかを教えて下さい
→例えば:CSVファイルを作成する、Excelファイルを作成する、等

(2)問題点

上述の概要説明で、業務に関する、入力データの種類、フォーマット、入力タイミング、処理内容、作業場所、および出力方法等の処理概要が解ります。

次に、該当業務に関する問題点を教えて下さい。

1)データ入力方法に問題があるのか ?

・データの入力方法が複雑
・データを入力するためには、ITスキルが必要だ
・入力ミスが多い
・他システムが作成したデータ取り込むのが面倒
・作業に必要なデータが複数存在するため、結合するのが面倒

2)データの処理方法に問題があるのか ?

・データ作成場所の固定化
・データ量が多過ぎる
→ エラー判定、データ集計、データ変換、項目抽出、データ計算

3)データの出力方法に問題があるのか ?

・帳票作成に時間が掛かる
・帳票のフォーマットがバラバラになってしまう
・作成したデータを、他システムに引き渡すのが面倒
・処理結果を別の方法で出力したいが方法が解らない

これら問題点は、入力、処理、および出力が、相互に影響し合います。このため、特に、処理にこだわる必要はありません。問題点を、全て教えて頂ければと思います。

(3)期待する効果

最後は、問題点を改善した結果として、何を期待するのかを教えて下さい。

・作業時間を短縮したい
・誰でも作業が行える様にしたい
・作成するデータの品質を向上したい(ミスをゼロにしたい)
・作成する帳票を画一化したい(誰が帳票を作っても同じフォーマットにしたい)
・他システムが作成データしたデータを自動的に取り込みたい
・作成したデータを他システムに自動的に引き渡したい
・複数データを一括で取り込みたい
・どの事業所でもデータを作成したい
・大量データを瞬時に集計・変換・作成したい
・大量データから必要情報だけを取り出したい
・エラー判定を自動的に行いたい
・出力帳票を自動的に作成したい
・帳票を作成するために長時間掛かってしまう、短時間で帳票を作成したい
・作成したデータを、他システムにシームレス(業務が途切れる事なく)に渡したい
・処理結果の表示方法を変更したい


ご要望は、会社、あるいは業務毎に異なります。これまでに伺った内容で、できる事/できない事は、システム開発会社側で判断すると思います。

「できる/できない」は別にして、希望だけは、遠慮なく伝えた方が良いと思います。

ここまでが、いわゆる「業務の棚卸し」と言われる作業になります。

                                                                                                                                                                                                                  • -

■弊社で支援できる事

今回これまでに、次の様な点を説明して来ました。

(1)業務用ソフトウェアができる事/できない事

1)ソフトウェアができる事

・システム化とは、人間が行う作業をソフトウェアに置き換える事
・ソフトウェアの基本構成は、入力(I)、処理(P)、および出力(O)
・ソフトウェアが行う【IPO】の代表的な事例紹介
・ソフトウェアは、画一的な処理に向く
・ソフトウェアの定義がシンプルなほど効率が上がる

2)ソフトウェアができない事

・ソフトウェアは、イレギュラー処理には向かない
・イレギュラー処理に対応しようとすると、工数/費用/設備への莫大な投資が必要
・時間と費用さえ掛ければ、イレギュラー処理への対応も可能
・しかし、感覚的な処理は行う事ができない

(2)外注会社に連絡する前に社内でできる事

1)業務内容、特に【 IPO 】に関して「5W1H」を明確にする
2)【 IPO 】毎に問題点を明確にする
3)改善したい問題点と期待効果を明確にする




ソフトウェアができる事/できない事を理解し、その上で、現在の業務を分析し、問題点と改善案が作成できれば、システム開発会社の作業は、かなり楽になりますし、時間も大幅に節約できます。


『 なんだ、システム開発会社のための事前準備か !? 』と思われるかもしれません。


しかし、開発を依頼する側が、自分達の行う業務、および業務に付随する問題点を理解せずして、どうやって外注企業にシステム開発を依頼できますか ?

いずれ、どこかのタイミングで、必ず、外注企業には、自分達の行う業務、および業務に付随する問題点を説明しなければなりません。この「業務の棚卸し」作業は、絶対に必要な作業です。

この「業務の棚卸し」を、先に行うのか、それとも後に行うのかだけの違いです。


ちなみに、この「業務の棚卸し」を、外注会社に開発を発注した後に行った場合で、かつ「業務の棚卸し」作業に時間が掛かったことによる納期遅延は、御社の責任となります。

仮に、御社が行うべき「業務の棚卸し」作業が長期化したことによる影響で開発期間が延長し、外注会社から追加料金を請求された場合には、外注会社には非はありません。このため、御社は、請求に応じて、追加料金を支払わなければなりません。

このような無駄な時間と出費を抑制するためにも、「業務の棚卸し」は事前に行うことをお勧めします。


そこで、以降で、弊社が行える支援について説明します。



もちろん、自分達だけで「業務の棚卸し」ができない場合、弊社が、コンサルティング業務の一環として、「業務の棚卸し」を支援することも可能です。

しかし、(こんな事を弊社が言うのも変な話ですが)コンサルティングを外部に委託すると、当然費用が掛かります。できれば社内だけで「業務の棚卸し」を行った方が、費用の節約になります。

さすがに、ソフトウェアの内部処理まで社内で分析するのは無理だと思いますが、ソフトウェアの外部、外側の作業に関しては、自社だけで行うことをお勧めします。

また、何を調べれば良いのか解らない場合、弊社側で調査シートを作成します。調査シートを活用すれば、調査すべき項目を明確にすることができると思います。

調査シートに関しては、後日、弊社ホームページからダウンロードできるように、弊社側でも準備を進めたいと思っております。

ちなみに、調査シートがなくても、本ブログの「外注会社に連絡する前に社内でできる事」を参照すれば、だいたいの調査項目は解ると思います。

ここで、ソフトウェアの外注化に関する、簡単なタイム・テーブル、および業務担当者社を下表に提示します。

作業項番 作業内容 担当 説明
1 業務の棚卸し 御社 自社業務を整理・分析し、問題点を洗い出す
2 問題点への改善案の整理 御社 問題点に対する改善案の検討
3 システム外注会社への連絡 御社 システム/ソフトウェア開発会社に連絡する
4 外注会社との打ち合わせ 双方 外注企業に詳細説明を行う
5 外注会社からの見積書の提示 外注 外注会社が見積書を提出する→OKなら契約
6 外注会社との契約 双方 契約書を作成し、双方で捺印
7 外注会社の作業開始 外注 外注会社がプログラム作成を開始する
8 不明点に対する質疑応答 双方 外注会社からの質問に回答する
9 成果物の納品 外注 成果物が納品される
10 受入試験 御社 社内受入試験実施、および本番への移行
11 本番業務の稼働 御社 本番業務開始


通常の場合、上表のようなタイム・テーブルで、作業が進んで行きます。

もちろん、これが全てではありません。プログラム作成途中で、双方が参加する進捗会議が開かれるかもしれませんし、開発途中で、設計書のレビューが行われるかもしれません。

このテーブルは、あくまでも参考としてご覧になって下さい。

                                                                                                                                                                                  • -

このように、業務のシステム化は、かなり面倒です。正直、行わなくて済なら、行いたくない作業だと思います。

また、システム専門部署の方が担当するならば、それが主業務ですから問題ありませんが、中小企業の場合、総務部や経理部の社員が、主業務とは別にシステム化を検討・推進しますから、余計に大変です。

企業の経営者の方は、「仕事は任せているから」と言わずに、システム化が成功すれば、経営にも大いに寄与すると思います。積極的に、システム化の応援をお願いします。

以上

【株式会社 エム・システム】
本      社  :〒124-0023 東京都葛飾東新小岩8-5-5 5F
           TEL : 03-5671-2360 / FAX : 03-5671-2361
盛岡事業所  :〒020-0022 岩手県盛岡市大通3-2-8 3F
           TEL : 019-656-1530 / FAX : 019-656-1531
E-mail    : info@msystm.co.jp 
URL     : http://msystm.co.jp/
ブログ       : http://d.hatena.ne.jp/msystem/ 
Facebook   : http://www.facebook.com/msysteminc