プログラマー速攻入門 – 電卓開発プロジェクト

プログラマー速攻入門関連の記事です。
全体を見たい方はこちらへどうぞ。

ここまで電卓開発を数回推奨してきましたが、
もう少し補助輪が必要かと思いますので書いてみました。
プログラムの書き方などについては一切触れません。

さ、元気よく行きましょう。

制約事項と心構え

職業プログラマー(もしくは職業プログラマーを目指す)なら以下を意識してやってください。
趣味プログラマーなら意識してもしなくても結構です。

制約事項

使用可能工数:80時間

実施にあたって時間は2週間(10日×8時間=80時間)使っても良いです。
プロジェクトなのできちんと時間を計ってやってくださいね。
金額はIT企業に依頼すれば50~80万円程度の時間ですね。
今回は50万円(1人月160時間あたり100万円)で受注できたという想定でいきます。
電卓にこの金額を出す人はいませんが目安です。

一応お断りしておきますが僕に納品されても受け取りませんし
お金も払いませんので悪しからず。

心構え

黒字必達でお願いします。

少し掘り下げて考えてみます。
大卒の基本給が22万円くらい(21年現在)ですから人件費は1万円/日ちょっとですね。
今回は1万円想定でいきましょう。

業態によりますが一般に経費等を考慮すると給料の3倍稼いでやっと利益が出ると言われています。
1日8時間で3万円の出費ですね。時間通りに終えられれば2万円分の黒字。
消化工数と利益の早見表を以下につけておきます。

消化工数(時間) 総支出(万円) 利益(万円)
80 30 20
100 37.5 12.5
120 45 5
140 52.5 -2.5
160 60 -10

油断すると札束をつけて出荷することになります。
気を付けてくださいね。

では、参りましょう。

要件定義

概要

整数10桁同士の四則演算に対応する電卓を作成する。

目的(ゴール)

簡単なアプリケーション(電卓)を1つ自力で作り上げてプログラマー入門を果たす。

機能一覧

  • 0~9までの数値入力ができること(今回小数点は不要)
  • 被演算数(A×BのAの方)の入力状況が可視化されていること
  • 演算数(A×BのBの方)の入力状況が可視化されていること
  • 足し算ができること
  • 引き算ができること
  • 割り算ができること(四捨五入・切り捨てのいずれでも良い)
  • 掛け算ができること
  • 値をクリアすることができること
  • おもしろ機能を何か一つ以上つけること(自由)

手順

コーディング規約を理解する

まず、コーディング規約とは何かについて調べてみてください。
ここでのコーディング規約は以下の通りとします。

  • ボタンのコントロールはbuttonからはじめ、数値ボタンの場合は数値と一致させる、その他×などの機能については分かりやすい命名にしておくこと。
  • 変数名やクラス名は半角英数を用いること、ひらがなやカタカナ、漢字などは使用しない
  • メンバー変数名(調べること)は_(アンダースコア)と大文字から始めること(例:_Calculator)
  • プロパティ名(C# プロパティなどで調べること)は大文字から始めること(例:Calculator)
  • 関数内で使用するローカル変数は全て小文字から始めること(例:Calculator)
  • 関数ヘッダ(コメント)は全ての関数につけること。VisualStudioが標準で提供しているコメント機能を使用すること。
  • 全ての処理にコメントをつけること

開発する

  • ボタンを配置する
    • 0~9ボタンを配置する
    • ÷×+-のボタンを配置する
    • =ボタンを配置する
  • 数値表示用テキストボックスを配置する
  • 各数値ボタンを押した場合の処理を作成する
    • 0のボタンを押した場合の処理を作成する
    • 1のボタンを押した場合の処理を作成する
    • 2のボタンを押した場合の処理を作成する
    • 3のボタンを押した場合の処理を作成する
    • 4のボタンを押した場合の処理を作成する
    • 5のボタンを押した場合の処理を作成する
    • 6のボタンを押した場合の処理を作成する
    • 7のボタンを押した場合の処理を作成する
    • 8のボタンを押した場合の処理を作成する
    • 9のボタンを押した場合の処理を作成する
  • 各四則演算ボタンを押した場合の処理を作成する
    • +のボタンを押した場合の処理を作成する
    • =のボタンを押した場合の処理を作成する
    • -のボタンを押した場合の処理を作成する
    • ÷のボタンを押した場合の処理を作成する
    • ×のボタンを押した場合の処理を作成する
  • クリアボタンを押した場合の処理を作成する
    • クリアボタンを押した場合の処理を作成する
  • 四則演算を扱うクラスを作成し四則演算の処理をクラス内で行う

テストする

  • 画面を最大化してみる
  • 0のボタンを押しまくってみる
  • +,-,÷,=,クリアのボタンを押しまくってみる
  • 0除算をしてみる
  • 0 - 999999999をやってみる
  • 9999999999 + 9999999999 = をやってみる

問題があった場合は何が問題かを考えて自力で対策してください。
変数の型の範囲は一度調べておくと良いでしょう。
変数の範囲を意識して開発できるとちょこっとだけ上級者です。

テストについて少し学ぶ

後はご自身でテスト内容を考えてテストしていってください。
今回は目的がプログラマー入門ですのでテストは簡単なもので結構です。
テストに関する概念を一読ください。

  • ブラックボックステスト
  • ホワイトボックステスト
  • 境界値分析
  • カバレッジ

ちょっとブレイク(黒集団の伝説)

以下の話は、ピープルウェアという本に出てくる僕の好きな話の抜粋です。

初めのうちは、テストチームが流す意地の悪い情け容赦ない
テストプログラムもほんの冗談で、
他人のプログラムをコケさせては喜んでいる程度だった。
だが、そのうちに冗談ではなくなってきた。
チームメンバーは破壊者のイメージをもちはじめた。
コーディングだけでなく、みんなの一日の予定を破壊した。
ミスを引き出すために、途方もなく無茶なことをした。
バッファに過負荷をかけ、空ファイル同士を比較し、とんでもない順序で入力した。
黒集団が作ったテストプログラムの元で、
自分のプログラムが誤作動するのを見て、
大の大人が思わず泣きだしたぐらいである。
悪く思われれば思われるほど、それを楽しんだ。

ピープルウェア やる気こそプロジェクト成功の鍵 (19章 黒集団の伝説)より抜粋

テストも極めるとこうなるみたいですね。

まとめ

いかがでしたでしょうか?

電卓の再発明という途轍もなく不毛なプロジェクトです。
超後追いの劣化版ですので、こんなものにお金を払う人はいません。
しかし、お金をかせぐことができる技術を習得しました。
ここからはこの技術の使い方次第です。

ようこそ、プログラマーの世界へ。
ハローワールドですね。

おわり

コメントする

メールアドレスが公開されることはありません。