休みにプログラムを組んでいました。
もう大学も始まったわけですが、これは休みのときの話。
夏期休暇、私は8月一杯までExcelのVBAでプログラムを書いていました。
といっても自慢するほどの行数も、仕組みも作っていませんが、初めての成果でした。
Excelで材料表を作れと命令
うちの事務所は、親父一人で自動車のプレス金型の設計をやっています。
どういうものかというと、プレスするときの金型や土台などのパーツを組み合わせた一式を設計している。確かそんな感じ。
設計すると、どの部品を使ったのかという一覧が必要になるわけです。仕様書のパーツ一覧と同じですね。
その部品、材料を表で簡単に作成できないかと思ってたらしく、今回依頼されたわけです。
今までの材料表の作り方は、2DCADを利用して、ラインを引いて表作成、点を作ってその中心点に一つずつマウスでポイントしながら文字を書き込んでいくという、ちょっと非効率な方法でした。
ある取引先でExcelで作成された材料表作成ツールを何度か使わせてもらいました。ExcelにくわえてVBAでプログラムされているもので、確かに便利なものでした。
うちでもこれに近いものができればなーと思ってたところで、さすがにそこの会社のオリジナルツールをそのまま別の会社に出すことはできないわけですので、それなら同じようなものを作ってしまえばいいんじゃないかということで、親父に命令されました(笑
作り方を考える。
プログラムで実際に動くものを組むのは始めてです。
ってことで、どうやればスムーズに形にできるか考えて見ました。 箇条書きでまとめます。
ちなみに私のスキルのレベルは、繰り返し文や条件文を知っていて、C言語で簡単なプログラムを組んだことがある。HTML、CSSを経験済み。 といったところです。
実際の作業内容
- 設計をする
- 構想を練って、どんな機能を入れていくかを大きなブロックとして、手当たりしだい紙に書き出す。詳しく掛けれそうなときは書き出しておく。
- メモ帳を持って、ふと浮かんだ方法なんかをひたすら書き留めて、あとでまとめなおす。メモ帳は大事ですね。
- 今回は、関数の流用とか考えていませんが、ボタンを押すと動作するということで、ボタンを押したときに機能を区分けしておいた。(印刷ボタンとか実際に表を出力するボタンとか)
- 機能をどうやれば実装できるか、下調べは欠かさず行う。
- 調べた内容から実現できるか、頭の中で実際イメージを作って見る。
- 一つ一つの部品を作る
- ブロックをさらに細かくさせる。計算部分とか、データの検出部分とか、そのブロックの機能を実装させるためにはどれだけの部品がいるのかを考える→紙にまとめる。
- 部品を実装していく。→テストする→直す→そしてできるまでループ
- 細かい部品を一つ一つ作っていく。
- 部品を組み立ててブロックを作る→テストする→直す→そしてできるまでループ
- ブロックを作っていく。ある程度部品があるので、これが組み合えば、すぐに動くものができる。
- 全体をまとめる→テストする→直す→そしてできるまでループ
- ここでバグチェック。
足らない部分があったら随時追加。一応メモしておいて紙にも記録しておく。
バグとの格闘を体験する。
なんとか形にすることができました。
まぁ、人に自慢できるほど、コードはきれいなものではないです。変数名にローマ字使ってたり。英語力がないとこんなところにも苦労するんだと思い知らされたり。
実際に動かしてみると、バグとの格闘。 ひーひーいってました。
多分部品を作る段階で、ズレが出ないようにする工夫が必要なのかもしれませんね。これはもっと経験をつまないとわからないことなのかも知れませんが。
一つの部品ごとにコメントを付けて、わかりやすい工夫もしました。まぁこれは当たり前ですね。
最後に、いつも管理する際に便利な機能の実装も大事です。
保護を推奨しているシートは、何らかのアクションがあったときに自動的にシートの保護が発動する。とか、ページ数が今いくつなのかを表示させる項目を作っておく。使ってる人にも間違いに気が付きやすい形を
あと、まだ考えてたものとはちょっと違う感じだったもので、ワンボタンで自動的に作成できるようにしてもいいかなーという考えがあります。これは、実際に使ってもらっての感想をもらってから動こうかと思いますが。
まとめる
プログラムは楽しい! 勉強になった!
でもちょっと集中力がない時期もあったので、集中力を高める工夫がほしいかも。そういうスタイルとかやり方とかをもっと知りたい!
おまけに
領収書や納品書も作りました。これはまたもっと単純なやつですが、今回の材料表の作成が役に立ちました。
今後の目標
今度は大勢の人にこれすげーだろ!っていうものを作りたいな。
後期の講義内容は、Javascriptの講義をとる予定で、PHPも本を呼んでいます。(サンプルCDをつぶしてしまったので、打ち込むのマンドクセ)
そうしてまた一つ何か作りたいと思います。次は公に出せるものを。