今だから話せる!今なら絶対にしないソフトウェアの仕様(3)
今回はヘンテコ仕様に巻き込まれた側の視点です。ぺーぺーの駆け出しの頃って、やっぱり上司の方には反論出来ませんよね!?
お話は大体2006年くらいの出来事だったと思います。
とあるバーコードチケットを印刷する機能をDLL化するという内容です。プロジェクトリーダーには海千山千のVB6案件を対応し、経験豊富なYさん。EXEファイルとiniファイルのコンビをこよなく愛する昔ながらのVB6愛好家です。メンバーは小さな案件だったので、Yさんと新人プログラマーのO君。Yさんの意向が強く新規開発にも関わらずVB6で作成となったようです。
経験則が時には邪魔をする
O君はVB6でDLLの作り方を知らなかったようで、「どうしましょうか?どうしたらいいでしょうか?」とYさんに尋ねました。
Yさん『VB6ではDLLは、DLLヘルと言って問題の中心になったもんだ。だからEXEで作れ』
そんな指示が出たようです。いやいや、連携部分でパラメーターとして渡す情報が多いからDLLにするという前提だったのでは…
O君は少しオロオロしながら、「ど、どうやって情報渡しますか?」
Yさん『EXEの後ろに引数として実行しろ』
何ですとぉっ!!
暴走仕様というしかない
素直に従うしかないO君は、そんな素敵仕様に改善していきました。
すると、
Yさん『引数が長いなあ…』
そらぁそうでしょう、そうなるよなぁ・・・。
Yさん『使用先のプログラムから、印刷時にテキストファイルを作ってもらおう。そのファイルを今作ってるEXEが定期的に読んで印刷しろ!』
ええぇぇぇっ!!暴走しすぎでしょうがぁ…。。。素直にDLLの作り方を教えてあげればすむ話なのに…
……… あっ、そっか
知らないんだ、やり方。DLL悪と信じていた時代だし。だからこんな暴走っぷりする訳ね。
そんな素敵仕様に行き詰まったO君にヘルプをお願いされたので、DLLのやり方教えて一見落着となりました。
そしたら、
Yさん『DLLに渡す情報の一部をDLLがINIを読んで処理するように改善しろ!』という指示が出たらしく。。。
えっと、最終的に何がしたいのだろう。。。目先の事柄にとらわれすぎて、全体的なまとまりがムチャクチャですよ。暴走した仕様に振り回されたO君が可哀想だなぁ・・・と。
まとめ
このケースは何が良くなかったのか。
- DLLの案件なのだから、最初のEXEで作れ!の時点で激しく意を唱えるべきだった
- 少しは自分でDLLの作り方など勉強すべきだった
- 過去の経験則にとらわれ過ぎ。欠点が分かっているのならば対処策を考慮すべき
- 安易に情報を外部ファイルに出力しない
やはりおかしな事、間違っている事には「違いますよ!」と言える勇気が必要ですね。