ブロックチェーン・AI・システム開発の株式会社INDETAIL

ソフトウェア開発を「お茶」で例えると?

2016.04.04
INDETAIL

お茶写真=足成2

こんにちは、農道JSです。
ソフトウェア開発の「要件」について少し話をしたいと思います。

ソフトウェア開発は簡単ではない?

ソフトウェア開発をしたことがない人は、「これっぽい画面をイイ感じに作ってくれ」と言ったら、開発者から質問がたくさん出てくる(はず)です。何でそこまで聞かないといけないの? と感じる人もいます。

「だいたいこんなログイン画面。だいたいこんな一覧。だいたいこんな感じで追加、更新、削除はできるようにしてほしい。そんなに難しい話ですか?」

ソフトウェアを開発したことがない人がそう感じるのはある程度当たり前ではないかと思いますので、開発者はそれに対して納得できる説明を提供できれば一番いいですね。

お茶を出すことに例えてみましょう

お茶写真3=
上記の説明について、「お茶を出す」を例にしましょう。軽く考えたら、すごく簡単な事のように聞こえます。だいたい下記のプロセスでいいのでは?

  • 茶成分を容器に入れる
  • お湯を沸かす
  • お湯が沸くのを待つ
  • お湯を茶成分の容器に入れる
  • 出す

簡単ではありませんか?
ただ、このプロセスを適切に実現するため、開発者からは質問がいろいろ出てくると思います。例えば、「お湯を沸かす」ことについて話したら、下記のような質問が出る想定をします。

  • 水はどれぐらいの熱さがいいですか?
  • どの水を使えばいいですか?
    • 水道水でもいいですか?
  • どうやって沸かしますか?
    • 電池ポットでいいですか?
      • 電池ポットが壊れたらどうしますか?(事前に予備を用意しますか?その時に新しく買いますか?)
  • 「お湯を沸かす」回数と「お茶を出す」回数は同じでいいですか?
    • 「お茶を出す」の複数のケースについて、「お湯を沸かす」は一回だけでいいですか?
    • 前提を打って、事前に沸かしたほうが良いですか?(電気代がもったいないと思われていますか?)

質問される側から見ると、細かすぎるところもあると思うし、当たり前や常識と思っている物も間違いなくあると思います。ただ、何が細かすぎる・何が常識はこのプロセスの目的しだいでもあるし、それぞれの人間の考えしだいでもあります。

何をしたい?

目的を理解するのは大事です。開発者は言われたことについて質問するだけではなく、何でそれをやりたい、それによって何を果たしたいのは大事です。お茶を出したい理由は色々あると思います。

  • 昼ご飯の後、飲み物を出したい
  • 茶道をやりたい
  • おしゃれなティー・タイムを設けたい
  • お客様が来た時にとにかく早くお茶を出したい

理由によって、実装方法が変わるはず、それを知らない上で実装してしまうと頼んだ人は納得できない可能性が高いです。

そもそもそれを本当にしたいですか?

ソフトウェア開発を通して、やりたいこととその目的を聞き出すと、やりたいことと言っていることによって目的を果たせない、最適なやり方ではないことも明確になるかもしれないです。

たとえばお茶を出したいと言って、その目的は「できるだけ早くお客様にお茶を出したい」であれば、お湯を沸かすのではなく、ペットボトルを買うべきなのかもしれません。それをはっきり確認しないと、お茶を山ほど購入した後、「実はコーヒーを出したい」と言われたら、時間とお金のロスになります。

ソフトウェアを開発する前に、事前にその目的を徹底的に確認するのは大切です。

以上です

「いいね」ボタンを押すと、最新情報をすぐに確認できます。