modest violet

読者です 読者をやめる 読者になる 読者になる

modest violet

開発者としてのあれこれや、日々の雑記など

your future hasn't written yet. no one's has.
by Emmett Lathrop "Doc" Brown

今だから話せる!今なら絶対にしないソフトウェアの仕様(3)

今回はヘンテコ仕様に巻き込まれた側の視点です。ぺーぺーの駆け出しの頃って、やっぱり上司の方には反論出来ませんよね!?
お話は大体2006年くらいの出来事だったと思います。
f:id:shin21sk:20160314010123j:plain

とあるバーコードチケットを印刷する機能を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の作り方など勉強すべきだった
  • 過去の経験則にとらわれ過ぎ。欠点が分かっているのならば対処策を考慮すべき
  • 安易に情報を外部ファイルに出力しない

やはりおかしな事、間違っている事には「違いますよ!」と言える勇気が必要ですね。