必死に頑張って作ったプログラム。テストも終わって完成!
自信満々に先輩にレビュー依頼をしたところ、なんと仕様の理解がそもそも間違っていた。
このような状況は目も当てられません。気持ち的にも滅入ることでしょう。
このような状態にならないために、コーディングを始める前に、何を理解しておけばよいのかを
今回は、具体的な例題を用いて説明していきます。
問題形式になっているので、ぜひあなたも考えてみてください。
あなたは、スーパーの売上管理システムを作っているとします。考えやすいように、お客様は店舗数1つ、データ数も少ない地域商店ぐらいの規模だと考えてください。
このシステムを作る過程で、日別の売上情報を、月別に集計するプログラムが必要になりました。開発の担当者はあなたです。
この要望を出されたときに、あなたは「できます」と即答できますか?
即答できないのであれば、何が分かれば「できます」と答えることができますか?
ここで少し考えてみてください。
初めにお伝えしておきますが、私は「できます」と即答はできないです。
この後、最低限考えておかなければならないことをお伝えしていきますが、
自分の中で意見を持ったうえで読み進めることで、自分の視点の抜け漏れに気が付けると思います。
考えられましたかね。
それでは、1つずつ確認ポイントをお伝えしていきます。
集計処理の前に必要な確認項目
日別のデータを月別に集計するロジックばかり考えていませんでしたか?
もちろんロジックも大切ですが、
データがどこにあるのかを確認する必要があります。
プログラムを書き始めてから、
「あれ?データが見つからないんですけど」などと言わないように、しっかりと準備していきましょう。
日別の売上データはどこにあるのか
データがどう保持されているか、その大前提をまずは確認しましょう。
- DB
- CSV
- テキスト
- Excel
大手企業でも、業界によっては商品マスタを持っていないところもあります。
売上情報は別システムで保持しているから、CSV形式で出力してもらったファイルをもとに処理を開始する場合もあります。
データの取得元が違えば、作る処理も大きく変わるため、初めに必ず確認しておきましょう。
日別のデータ形式は、どのようなものか
日別のデータを取得できたから、すぐに集計できるというわけではありません。
- どのような項目があるか(単価、数量、小計)
- 項目に入る値は何か(数値、文字列)
数量だと思っていたら文字列が入力されていて、計算ができないということもあります。
商品にはコードが振られているのかどうかも大切です。同じ商品をどうやって判断するのかの根拠として使えます。
日別データにイレギュラーはあるのか
残念ながら、データをきれいに作成できているお客様は少ないです。
当然のようにイレギュラーデータはあります。イレギュラーデータがないことがイレギュラーです。
- もう存在しない商品
- 金額や数量がマイナスの行
- 先月のデータを今月分として登録しているもの
クーポン、割引、限定商品・・・。商品やその売り方には多様な形式があり、それに合わせてデータにも多様性が生まれます。
単純なループで処理しようとすると、イレギュラーデータによってたまにエラーが出る、月別の売上情報がマイナスになるという、これもエンジニア泣かせの結果になりかねません。
データの各項目に入る可能性がある値の型、範囲も含めて確認しておきましょう。
集計処理に必要な確認項目
データの確認ができれば、次は集計処理の確認項目です。
日別のデータを月別に集計するのは簡単だと思ったら大間違いです。
売上の集計は重要な処理ですが、お客様によっては非常に複雑になることもあるプログラムです。
月別のデータを何単位に集計するのか
月別の売上情報と聞いて、その粒度はどの程度でしょうか。
毎月いくら売り上げたのかが分かればいいだけというわけにもいきません。
- 月、小計
- 月、商品、売上数、小計
- 月、商品、単価、割引率、小計
一言で月別の売り上げと言っても、お客様のビジネスモデルによって形は様々です。
これらのデータを使って分析もなされる可能性が高いため、何単位で集計するのかを最初に確認しておかないと、作り直しが連発します。
集計対象外のデータはあるのか
どのような目的でこの処理を作成するのかによりますが、集計対象として必要ないデータもあります。
- 定番商品だけ集計する
- 返品されたデータは集計しない
- レジ袋など、商品以外の行は集計しない
ここの前提を抑えておかないと、
「他のシステムで出ている月別の売上情報と数が一致しないのはなぜか?」
この悩みにずっと付き合わされることになります。プログラムを見直してもどこにもバグはないですからね。
何を集計するのか、集計しないのかを、細かく確認しましょう。
集計後に必要な確認項目
月別のデータを集計出来たら完了!というわけにはいきません。
最後の詰めを間違えてしまうと、また全処理を作り直すことにもなりかねないので、最後まで緊張感をもって確認しましょう。
月別のデータをどこに出力するのか
データの取得元と同じく、どこに出力するのかも確認が必要です。
- DB
- CSV
- Excel
ここを間違えると作り直しです。
知らなかったじゃ済まされないので、データを作るだけでなく、どうやってお客様がデータを確認するのかも含めて想定しておきましょう。
通知など、処理後に必要なことはないか
出来上がったらすぐに確認したいデータの場合は、データを見たい人に通知を飛ばすことも考えられます。
処理が終わって一安心ではありませんので、最後まで気を抜かず。
まとめ
あなたは、すべて確認しようとしていましたか?
ここに書いた7つの確認項目は、最低限必要なことです。本当はもっと確認することはあります。1つのテーマだけで、お客様と何時間も打合せが盛り上がることも普通です。
逆に言うと、お客様から「月別に集計した売上情報が欲しい」と言われた瞬間、これらのことが頭の中を駆け巡るのがバックエンドエンジニアです。
打合せ中もボーっとしていられないですね笑
プログラミングは、コードを書くことだけが仕事ではありません。
少しずつでも、自分が想定できる範囲を広げていきましょう。