初めてシステムを作る方へ:システム開発の考え方と手順

こんにちは、デスクワークラボの吉井良平です。

前回の投稿で、システム導入方法について説明させていただきました。

小さな会社が自社でシステムを作るメリットとデメリット

「自社でシステム開発してみよう」と思いたって、いざシステムを作ろうとしても、初めての方には何から始めて良いのかが分かりにくいですよね。

初めての場合は、「まずは手を動かして作ってみる」「見る前に飛べ!」ということでも良いと思います。そういう姿勢がとても大事で、作ってみてから分かることがたくさんあるはずです。

とはいえ、多少の知識があった方が回り道をしなくて済むことも多いことも事実です^^

まずはシステム開発の考え方について、できるだけ簡単に紹介させていただきますね。

お弁当を作る場合を考えてみましょう

いきなり「システム開発の考え方」を説明すると、ちょっとハードルが高くなるので、まずはお弁当作りを例に考えてみましょう。

お弁当を作ったことが無い方は、ちょっとピンとこないかもしれませんが・・・

お弁当を作る時、どういう手順になるか、ちょっと考えてみてくださいね。

① どんなお弁当にしようか?考える

まず、どんなお弁当にしようか、考えますよね。

「お弁当」と言っても、世の中にはいろんな弁当があります。

小学校低学年のお子さんが遠足に持っていくお弁当であれば、にぎやかなお弁当を考えると思います。

高校生が部活途中に食べるお弁当であれば、ボリュームがあって栄養があるお弁当を考えるでしょう。

仕事の昼休憩に自分が食べる弁当であれば、そんなに考えずに作られる方も多いでしょう。

そんな感じで、まず「どんなお弁当を作るか」という、大げさにいうと企画の部分が一番先に来ますよね。

既に決まっている場合も多いと思いますが、「誰に」「どんな」お弁当を作るか、というのが一番先です。

② お弁当のメニューを決める

「どんなお弁当を作るか」が決まると、お弁当のメニューを大体決めていくことになります。

ご飯、唐揚げ、鮭、ハンバーグ、煮物、ウインナー、玉子焼き、ミニトマト・・・等々、お弁当を構成するメニューを決めていきますよね。

③ 材料をそろえる

メニューが決まれば、それに合わせて材料をそろえていきますよね。

冷蔵庫に無いものは、スーパーで調達してこないといけません。

まぁ弁当の場合は、作り慣れているので、材料をそろえる際にメニューを決めることもあると思いますが、材料がないとお弁当ができないので、材料をそろえる必要があります。

鶏肉が無いと唐揚げはできませんし、卵が無いと玉子焼きはできません。

④ 調理する

そろえた材料を調理して、お弁当の具を作っていきます。

玉子焼きであれば、卵を割って、といて、ダシを入れて、熱したフライパンに入れて、巻いて・・・と調理をして、材料を形に変えていきます。

⑤ 盛り付けをする

お弁当の具ができたら、お弁当の箱に具を詰めていきます。

これでお弁当が完成しました。

⑥ 食べる

最後は、できたお弁当を食べて、お弁当を作った目的を果たすことができました^^

システム開発の考え方

お弁当を作る時の流れをまとめると、下記のようになります。

  1. どんなお弁当にするか考える
  2. お弁当のメニューを決める
  3. 材料をそろえる
  4. 調理する
  5. 盛り付けをする
  6. 食べる

小さな会社のシステム開発も大体、このイメージで考えて大丈夫です。(大規模なシステムになると、いろいろな要素が追加で入ってきます)

① どんなシステムにするか考える

まずどんなシステムにするかを考えます。

お弁当の時は、そんなに深く考えることはないことが多いですが、「誰が、どんな時に、どのようにして」食べるのか、そのためにはどんなお弁当が良い(効果がある)のか、ということです。

それと同じで、システムも「誰が使うのか、どのぐらいの頻度で使うのか、どんな効果を期待しているのか」ということを、まず最初にはっきりとさせます。

勤怠管理のシステムを作るとしたら、

誰が:入力は全社員が、データの利用は総務部が

頻度:入力は毎日、データの利用は月に数回

効果:勤怠の入力漏れ、ミスを防ぐ。勤怠の実績が全社員が分かる。勤怠データを総務部が入力することなく活用でき、給与計算システムに取り込むことができるようにする。

ということになるでしょうか。

ここがシステム作りの肝になりますので、頭の中で思い描くだけではなく、システム仕様書という形にして、目に見える形にしておいてください。

可能であれば、効果に関しては定量的(勤怠管理の例でいえば、毎月の勤怠入力時間 2時間/月 削減とか)に表現しておくと、システムを作った時の成果がはっきりして良いです。

② どんな構成にするかを決める

お弁当のメニューを決めるのと同じように、どんなシステムにするのか、目に見える部分を決めていきます。

システムの目に見える部分というのは、「操作画面」と「出力される帳票」と理解していただいて大丈夫です。

例えば、TOP画面はこんな感じ、とか、エクセルで良いので画面とボタン配置のイメージを作ります。

システム開発の画面イメージ
TOP画面のイメージ

また、それぞれのボタンを押したら、どんな動作になるのか(違う画面に飛ぶのか、データが出力されるのか)等も決めていきます。

ボタンを押した後の次の画面、どんな帳票が出力されるのかを、目に見えるイメージで作っていきましょう。

③ データをそろえる

お弁当の具を作るために、材料をそろえるのと同じように、システムを作る材料としてデータをそろえます。

会社の中にはいろんなデータがありますが、データは大きく分けると「マスターデータ」と「トランザクションデータ」の2種類に分けられます。

マスターデータというのは、文字通りマスターになるデータというか、基礎になるデータのことです。

例えば、勤怠管理システムを作る場合の社員情報であるとか、販売管理システムを作る場合の取引先情報・商品情報など、その都度で変わらない情報が入ったデータです。

トランザクションデータは、日々刻々と増えていくデータです。

勤怠管理システムを作る場合は、各社員の日々の出退勤時間は毎日増えていきますよね。販売管理システムであれば、どの取引先にどの商品を何個、いくらで販売した、というデータは、一回の取引ごとに増えていきます。

毎日変わるデータと、めったに変わらないデータ、という理解でも良いと思います。

トランザクションデータの方は、システムを作り始めるまで存在しない場合もありますが、その場合は「どんなデータを今後取っていくのか」を、この時点で決めます。

(とはいえ、最初は分かっていないデータを後から追加することも良くあります。システムを自社開発する場合は、その辺りが柔軟に対応できるので、初めてシステムを作る場合はあまり完璧を目指さなくても大丈夫です。とはいえ、後から追加するのは面倒なことが多いので、最初からきちんと決めておくに越したことはありません。)

④ プログラミングをする

お弁当を作る場合で、材料を調理する工程に相当するのが、プログラミングの工程です。

「調理」というのは、材料に熱をかけたり、調味料を混ぜ合わせたりして、材料を加工して別のものにすることですよね。

それと同じで、データを何らかの手順(アルゴリズムと言います)で加工して別のものに変えていくのが、プログラミングの工程です。

プログラミングというと最初は難しく聞こえると思いますが、「あるもの(材料)に、手を加えて、別のものにする」ということを繰り返しているに過ぎません。

話を分かりやすくするために、「お味噌汁」を作る手順を考えてみましょう。

ちょっと数学っぽくなりますが、あるものを x(エックス)手を加えるのをf(エフ)出来上がった別のものをy(ワイ)で表すと、(x)という図式で表すことができます。

お味噌汁作りのアルゴリズム

  1. 鍋(x)に、水を入れて(f)、鍋に水が入った状態(y)になる
  2. 鍋に入った水(x)に、だしの素を入れて(f)、だし入りの水(y)になる
  3. だし入りの水(x)に、熱をかけて(f)、だし入りのお湯(y)になる
  4. パック入りの豆腐(x)を、切って(f)、一口サイズの豆腐(y)になる
  5. ねぎ(x)を、切って(f)、細切れのねぎ(y)になる
  6. だし入りのお湯(x)に、一口サイズの豆腐を入れて(f)、豆腐入りのだし入りのお湯(y)になる
  7. 豆腐入りのだし入りのお湯(x)に、細切れのねぎを入れて(f)、豆腐とねぎ入りのだし入りのお湯(y)になる
  8. 豆腐とねぎの入っただし入りのお湯(x)に、味噌を入れて(f)、味噌汁(y)ができる

こんな感じで、「あるものに手を加えて別のものにする」工程を繰り返していくことで、お味噌汁ができます。

システム作りも、大体はこのような感じでできています。

納品書作成のアルゴリズム

  1. 電話で聞いた注文内容(x)を、販売管理システムに入力して(f)、受注データ(y)ができる
  2. 受注データ(x)に、取引先情報(マスタデータ)を紐付けして(f)、納品先住所付きの受注データ(y)ができる
  3. 納品先住所付きの受注データ(x)に、商品情報(マスタデータ)を紐付けして(f)、納品先住所・販売単価付きの受注データ(y)ができる
  4. 納品データ(x)に、新しい納品情報を一つ付け加えて(f)、納品書番号(y)を取得する
  5. 納品書のフォーマット(x)に、所定の位置に所定の情報を付け加えて(f)、納品書(y)ができる

このような感じです。

料理も慣れるまでは、レシピ本を読んだりクックパッドで調べながら作りますよね。慣れてきたら、何も見ずに作ることができるようになります。

それと同じで、プログラミングも慣れるまではいろいろ調べながらやっていくことになります。慣れてきたら、大体は何も見ずに作ることができるようになります。

料理と違うのは、料理は間違っても何かのものはできて、不味くても我慢して食べれば良いのですが、プログラミングはちょっとスペルミスをしたらエラーが出て止まったり、ちょっと慣れてくるとプログラムが暴走したりするので、最初はかなりストレスが溜まります。

初めてプログラミングをする場合は、途中で心が折れないよう、根気よく続けることが大事です。ほんとに。

⑤ 画面に機能を配置する

出来上がった料理をお弁当箱に詰めるように、画面に機能を配置していきます。

「画面のこのボタンを押したら、このプログラムが走る」というように、実際にシステムの利用者が使えるようにする工程です。

⑥ 使ってみる

システムが出来上がったら、実際に使ってみましょう。

お弁当の場合は出来上がったら食べれば良いだけですが、システムの場合は、間違った結果が出ていると仕事に実害があります。

合計金額が間違っていたりすると大変です。

細かい部分だと、印刷する帳票のデザインが見にくい、とかいうこともあります。

システムを実際に本番で使う前に、テストをして検証をしてから、実際の本番で使うことが普通です。

お弁当でいうと、試食してみて大丈夫だったら、実際に提供するという感じですかね。

テストでおかしい点が見つかったら、プログラムの部分を直してから、またテストをやり直します。

この辺りも結構、根気のいる作業です。

⑦ 当初の目的が達成できているか確認する

システムを実際に使い始めたら、①の「どんなシステムを作るか考える」際に立てた目的が達成されているかどうか、定量的な効果が達成できているか、を確認しましょう。

当初の目的が達成できていれば問題ありません。ハッピーです。

当初の目的が達成できていなければ(システムを入れて逆に面倒になってしまった、とか)、粘り強くシステムを改善していきます。

お弁当であれば、一度作ったものの出来はその当日だけのことですが、システムは少なくても数年単位で使っていくことになります。

ちょっとした不具合でも、積もり積もれば大きな影響が出てきますので、定期的にメンテナンスをしていきましょう。

昨年から今年にかけて(2020~2021年)はコロナの影響があって、社会が大きく変わりました。

ある時には完璧なシステムでも、時代の変化によってシステムに必要な機能が変わっていくことも、よくあります。

変化に対応しやすいというのが、自社開発のメリットでもありますので、定期的な見直しをしていきましょう。

どんなツールで作るのか

ここまで、システム開発の考え方について説明をしてきました。

いざ実際に作り始めるまでに、「どんなツールで作るのか」という問題があります。

「どんなツールで作るのか?」は、システム開発の考え方の「①どんなシステムを作るかを考える」部分から考えます。

「営業マンが外出先から使う」のであれば、インターネットを介したツールを使うことになりますし、会社内でしか使わない、特定の人しか使わない、ということであれば、ローカルで動くツールで良い、ということになりますよね。

どんなツールで作るか、というのは、いろいろ新しいツールが出るので記事にしづらい部分があり・・・

とりあえず、このサイトは小さな会社が自分でシステムを作りやすい「エクセルVBA」、「アクセス」、あと一般的にはあまり馴染みのない「MZプラットフォーム」というツールを使ったシステム作りについて、当面記事を書いていく予定です。

(筆者が詳しいのはその辺り、というところもありますが)

どういった仕事は、どのツールが向いているか、については、そのうち書く予定です^^

では、今回はこの辺で終わりにします。