VBA

2002年04月24日 水曜日

全然もたない

昨日の記事の続き。全然もたないので、ちゃんと寝ることにする。8時間くらい寝れば回復するだろうか。

VBAだめすぎ

別にVBAやVBに限った話じゃないけど、簡単に汚いソースを書けるのはだめじゃな。(昔はPerlもそうだったけど、今使ってないからいいや。) 行き当たりばったりの使い捨てマクロなら書けるけど、何年も保守するようなプログラムの場合はちゃんとした設計をしないと保守性をあげられないな。今回いやになってしまったのは、結果出力周り。付け足したいロジックを表示部に埋め込まないとならなくて、もういやになってしまった。昔の人はDoc-Viewとか格好いいことを言って、ロジックとプレゼンテーションを分離しなさいと言っている訳だが、ごもっともって思い知りました。
最近はVBAでも気をつけて書いているので、最近書いているマクロは読めるんだけどね。Excelのオブジェクトの階層構造とメソッド・プロパティが分からないので、ずるしてマクロの記録を使うのが問題のようだ。たしかに、1からソースを書くときは綺麗に書けるものね。
と言うことで、Excelで遊ぶときはActive Ruby、そうでないときはJavaで環境を統一したいなぁ。やっぱり綺麗に書く努力をしたくなる言語を選択すべきだな。それ以前にVBAのようにオブジェクト指向言語のような感じで実はまがい物というものを使っている時点で問題なのかも知れない。

2001年11月06日 火曜日

VBA

久しぶりに2年前に書いたVBAのソースを眺めた。プログラミングの世界では、「昨日の自分はもはや他人」なので、さすがぱっと読んだだけでは中身が良く分からなかったが、デバッガでトレースしていたらどういう処理をしてどう考えていたか思い出した。ということで所望の変更は行えたのであるが、問題はそれ以前にあって、やっぱりVBAのコードが好きになれない。というかBASICが好きではないんですな。
僕もBASICで育った世代で、最初に使ったプログラム言語は小学生のころでN66−BASICだし、そのあとはずいぶん飛んで大学時代の前半はN88-BASIC(86)でフラクタル図形を書いて遊んでいた。ただこの手の繰り返し計算モノでBASICを使うのはナンセンスなので、そこでC言語に切り替えてしまったクチであるが、その後もMSの術中にはまってQuick BasicだのVisual Basicだの表題のVBAなんかも使っているわけだ。構造化されたあとのDOSベースのQuick Basicはそこそこ出来た処理系だったと思うが、その後のものは悪ノリで作っているとしか思えないシロモノだ。そう思うのは、VBはWindowsのバージョンにかなり依存した言語設計になっているし、VBAはさらにOfficeのバージョンによってかなりコーディングの変更を強要するからだ。僕は1年やそこらで言語以外の要因で仕様がころころ変わる処理系に付き合いきれない。普通そうだろう。
と言うことで、最近は小物のものはRuby、遊びとXMLモノではJavaで遊んでいる。Emacsを使うためにLISPを使っていることも忘れていないが最近あまりコードを書いていない。LISPみたいな関数型の言語はコーディングの発想がぜんぜん違うのでなかなか取っ掛かり難いが、こう言うものをたまに使わないと人間として駄目になってしまいそうだ。そういえばEmacs Lispで遊んだことで、Mathematicaのマクロをすぐに使えるようになったことがある。Mathematicaのマクロは文法こそC-likeな言語であるが、基本的にはLISTをいじる事が多いので、LISPが分かると簡単にLISP風なプログラムがかけて強力に使いこなせる。面白い体験だった。やっぱいろいろな言語を使うことは重要だのう。