今回は今まで学習した内容をもとに、実際の業務を想定して要望を基に設計からプログラムを組んでみることをやってみましょう。最初のうちは上司の作った設計書を基にプログラムを組んでるだけでよいですがいずれその設計をするのは自分自身になるはずです。そのため、お客さんと話している間にこういうプログラムだったら実現できるなとか、こういうライブリを使えばいいかもとか想像しながら打ち合わせを進めることは非常に重要なことになります。
この最初のステップがくるってしまうと所謂炎上案件というものになりかねませんので、初めのうちから設計を意識しながらプログラミングする癖をつけましょう。そのための演習問題となります。
開発の大まかな流れ
それではまず開発の流れはどのような形で進めるのか大まかに確認しましょう。流れは以下のような流れになります。

主にこのような流れになるかなと思います。そのほか請求書だったり細かいやり取りだったありますが省いております。またここではゴールを納品としていますが、その後システムの運用、保守作業などがあったりします。その辺は最後に軽く説明します。では流れを確認しましたら、手順について詳細に確認していきしょう。
Step1. 概算見積もり ~お客様のお話から開発の規模感を考える~
それではまず始めのステップとしてお客さんから仕事の依頼をもらい、それがどの程度のスケジュールで完了できるかを大まかに考えるステップが発生します。これは単に開発がどの程度時間がかかるかということだけでなく、どの程度費用が必要になるかを大まかに確認し、それが予算と見合うかどうかを検討するための手順になります。それでは今回はこんなお話をいただいた体でいきましょう。
要は計算をするプログラムですね。わざわざPythonで組まなくてもExcelの関数とかで組めばすぐでしょなんて声はいったんかき消してください。さて、概算見積もりは上記の話からどれぐらいの時間がかかるかを想定します。上記の内容からどんな処理のプログラムが必要かを考えてみてください。
- データの入力を受け付ける
- 平均を求める
- 標準偏差を求める
- 分散を求める
- データを出力する
こんなものでしょうか。大体どんな処理が必要か確認ができたらどのくらいの時間があれば上のプログラムが作れるか考えましょう。なお、ここでは作成プログラムのイメージができている必要があります。例えば、データの入力の受付ってどうやるんだろう?って思う場合はそれの調査のための時間も考慮する必要があるので注意してください。
ではその調査も含めて工数を考えると時間はどれくらい必要かを考えてみてください。
最高でも2日あれば行けそうですかね?ちなみに1日あればできる作業の事を1人日といったりします。この場合は2日あればできるとしているので2人日ですね。
よし!じゃあ2人日分の作業費を利益が出るような形でお客様に見積もりとして出せばいいか!としたいところですが、そうはいきません。もう一度上のStepを確認してみてください。開発以外に概算見積もりを除くと、要件定義から納品までのStepがあります。この分を入れないと見積もりは破綻してしまいます。なのでそれぞれどのくらい時間がかかるかを想定に入れなくてはなりません。ここでは大まかに以下のそれぞれの工程でどれぐらい時間がかかるか考えます。
- 要件定義
- 設計
- 実装
- テスト
上記の内容にそれぞれ時間を出してみます。これぐらいの要件定義なら1時間もかからないだろうとか、実装に2日かかるような作業なら設計は半日ぐらいかなとか、テストも処理の量なら半日ぐらいかなとかとか。
もちろんこんなものは経験がないと読めないでしょうし、初めは上司がやってくれるはずなので考えなくても良いと思います。しかし、わからなくてもどのくらいで終わるかを考えながらプログラムを組むことは非常に重要なので、わからなくてもわからないなりに考える習慣をつけましょう。そして算出してみると以下のようになるかなと思います。
工程 | 工数(1 = 8時間) |
要件定義&再見積もり | 0.25 |
設計 | 0.5 |
実装 | 2 |
テスト |
0.75 |
上記の内容から総計3.5人日です。滅茶苦茶単純にお金の計算をしてみると、一人の人件費が給料から考えて1日1万5千円ぐらい、利益が出るように5千上乗せしたら1人日は2万、とすると総計は5万円くらいでしょうか。うん、高いですね!Excel使いましょう ~fin.
ということになってしまうかと思いますので、見積もりも高いと仕事がもらえないわけですね。かといって見積もりを低くして、サービス残業とかでなんとかしましょうとかそういった真っ黒思想で働け!というわけでもありません。健全に働く中でお仕事をもらい利益を出すためにはどういう風に考えて仕事しなくてはいけないのか考えを持ってもらうのが今回のStepの趣旨になっております。
とりあえず、仕事がもらえませんでしたという結果では次のStepに行けませんので、この内容でお仕事をもらったとして次の要件定義を考えていきます。
Step1.につきましては以上となります。
Step2. はこちらから続けてください
今回はここまでです。お疲れ様でした。
コメント