2003年08月30日 土曜日
今日は久しぶりに友人と飲み
今日は久しぶりに友人の石戸屋君と飲み。ここ10年お互いに住んでいるところが遠いせいか、なかなか会う機会がつくれなくなった。前回会ったのはいつだったか忘れてしまったが、えらく久しぶりに飲んだなぁ。
今日は久しぶりに友人の石戸屋君と飲み。ここ10年お互いに住んでいるところが遠いせいか、なかなか会う機会がつくれなくなった。前回会ったのはいつだったか忘れてしまったが、えらく久しぶりに飲んだなぁ。
明日の午前中に所用があるので、会社を定時で帰ってきて速攻で新幹線に乗る。いつものごとく宇都宮まで気を失って、その後本を読んでいたら東京に着いた。久しぶりに東京に行ったのだが、8月にしてはえらく涼しく感じるのは気のせいではないだろう。やっぱり今年の夏はどこかおかしい。定時速攻で出たら21時半には東京駅を歩き回れるわけだから、自宅から新幹線の駅まで歩いて5分くらいという今の家は便利なのかも知れない。
Web Moneyで支払っていたのだが、あまりにめんどくさいのでクレジットカードでの支払いに変更。その方法がまるで分からなかったので放置していた。 変更方法はPlay Onlineビュワーの「サービス・サポート」から変更できる。ただし逆はできない。
ということで、久しぶりにFFXIを堪能。そういえばナイト Lv6になったばかりだった。その辺の雑魚オークがとっても怖い。
会社にいると「なんたら活動」のバッチをつけろと言うことでバッチをもらうのだが… 結構お金がかかっていそうである。こんなものをくれるのなら、それ以前に_ホッチキスの針とかクリップとか言った消耗品を買ってください。_ 何が楽しくて自腹を切らねばならないのか… (ノートとかボールペンは嗜好があるので、どうでもいいです。使いにくい道具はいりません。) つまらん物にはお金を出せるが、必要なものにはお金を出してくれない体制を何とかして欲しいものだ。
今日は緊急に「社長の話」があった。てっきり_「明日から会社がなくなります。」_とでも言われるかと思ったのだが、ちょっと違うようだ。何を言っているのかサッパリ分からないし、プレゼンが…(人のことをあんまり言えないので、以下略。)
こういう姿を見ると、経営者って言うのは経営という分野の切れたエンジニアであらねばならないとつくづく思う。古典的な考えに従えば、昇格を続けて最後まで生き残った人が社長なり経営層にいるというのが経営者となるべきと言う姿を思い浮かべる人は多いと思うのだが、最近僕は経営者というのは_専門職_でそもそも生きてきた道のりが違う人がなった方がよいのではないかと思うのである。そもそも発想から根本的に違うのだから。
今月から給与カット無しの給料に戻ります。考え方によっては労せず給与アップになるんでしょうが、それは間違った見方をしています。 でも元に戻ってもこんなものか… がっくし… 頑張る気力はとうに吹き飛びました。やる気を出すために火を付けてくださいなと言っても、会社がなくなるくらいの勢いで火を付けてくれないと、もうだめっす。
他の人が作った何個かのプログラムを寄せ集めて、使いやすいように僕が1つにまとめたプログラムがあるのだが、ここ3年程度、想定したものを定型通りに使う分にはほとんど問題なく、想定していない希な使い方をすると、予想外の妙な動作をするという何とも知れない状態なので、久しぶりに中身を見てみることにした。
すると、そこには私が書いた部分も含めて_だめだめなプログラミングの典型_とも言える跡がいっぱい残っていた。VBAだととかくこういうプログラムになりがちという典型であるのだが、とりあえず僕がブラックボックスとして使っていた部分に問題があることまでデバッガで突き詰めた。しかし何度デバッガでトレースしても_実に動作が読めない_。何をしようとしているのかまるで分からないのである。自戒を込めて、かいつまんで原因をあげるとこんなところか。
一つ一つの関数・プロシジャが長い。
全体の見通しが付かないくらい長大。まぁ処理上しょうがない部分はあるし、気が付くと自分もこういう関数やプロシジャを書く場合が多いので、人のことは言えない。 ただし僕の場合は長くなっても単機能なものにまとめるようにしている。
長いプロシジャが線形に続く
メインのプロシジャから、関数A, 関数B, …を呼び出すのではなく、A関数の処理が終わったらB関数を呼び出し、B関数の処理が終わったらC関数を呼び出す。最終的に最後に呼んだ関数で処理が終わる。(実際には僕がくっつけたときに元の関数に戻るようにはしたのだが…)
GOTO文の嵐
条件分岐の際にGOTO文を乱発する。デバッガで追いかけても処理がどうなっているのか追い切れない。当然意図しない2重処理をしているのかも知れない。(少なくともソースからはどういう処理をしているか読み解けない。)
Global変数の多用とLocal変数との名前の衝突
安易にGlobal変数を用いたので、変数スコープの関係で意図しない値が入っている(入っていない)場合が多い。(今回のプログラムの場合、Loopの終点判定がかなり怪しい。)
Doc/Viewが分離されていない
Doc/Viewが分離されていないから、アルゴリズムが表示周りの雑多な処理に埋没してさらに理解不能となっている。
ブラックボックスな部分をリファクタリングしようにも、全体に影響が出そうなので手が出せなさそう。こまったものだ。最初にこの不具合に遭遇したときも同じ結論だったが、結合前のプログラムまで遡って、駄目な部分は捨てて、すべて再設計というのが望ましいと言う結果だ。構造化プログラミングの教科書に書いてありそうな事ばかりなのだが、なかなか実践できないものなのね。(実践すべく頑張らねば。)