先日開いた講習会で聞いた話もそうだし、私自身もそう感じていたが、他所ではVBAのクラスモジュールについてあまり情報がない
なのにこのブログではやたらとクラスモジュールを持ち上げている、とお感じになる方もいらっしゃるかもしれない。そこで、私がクラスモジュールの情報を書いている理由を書いてみることにする。

以前、私はクラスモジュールなんて縁遠い存在だと思っていた。使わなくても問題ないし、使い方もよく分からないから。それはそれで何とかなっていた。
ただ、
ソースコードの整理をもっと何とかできないかな
過去の資産をコピペではなく共通関数のように活用できないものかな
データベースの接続を簡素化したいな
などと考えることはあった。

あるとき、仕事でJavaという言語と出会った。それは「クラスモジュールしかない」世界であった。以前から概念だけは知っていた、カプセル化、継承などといった、オブジェクト指向言語の特徴を実体験して、今までやってきた開発とはずいぶん考え方が違うな、と感心することしきりだった。その経験が、VBAで私が感じていた問題点はオブジェクト指向で解決できるのではないのか?と思うきっかけになった。

その直後、VBAで基幹システムを構築する案件に巡り会った。開発の方針もすべて決めてよい立場であったので、少しずつではあるがクラスモジュールを取り入れた。すると、いままでお互い近くにいても通じ合えなかった人と相思相愛になったが如く、ソースコードのメンテナンスと追加開発がラクになりだした
この体験は口で何度話しても分かるまい。体験した者だけにしか分からないだろう。しかし、私が取り組んだ時にも調べたが、VBAのクラスモジュールに関しての情報は非常に少ない。クラスモジュールを上手に使うだけで、おそらく苦労は半減(冗談抜きで最低でも50%程度)されるのに。このことをVBAを使っている人たちに少しでも届けたい。それがクラスモジュールにこだわる理由である。先日行った講習会もクラスモジュールを取り上げたのもそれが理由だ。

仕事をラクにしたいなら、是非クラスモジュールの基礎でいいから習得して欲しい。覚えて損はしないはずである。冒頭に書いているメタボなコードの撲滅し、美しくスリムなコードをそれほど無理せず書け、メンテナンス性も向上させることができるのだから。
また、VBAは小学生、中学生、高校生でも使うようである。その中でも、将来システムの道に興味がある人なら、是非にクラスモジュールを習得して欲しいと思う。


さて、余談である。クラスモジュールへのこだわりが強すぎて失敗をしたことがある。
このブログを読んだ出版社の方が「Accessの、少し慣れてきた人向けに本を書かないか?」とオファーを下さったことがある。ブログを書籍化するのではなく、書き下ろしという形で。
しかし、クラスモジュールにこだわるあまり、譲れない部分があった。なぜなら、少し慣れてきた層にこそクラスモジュールをしっかりと理解して欲しいからだ。いったんその方向で提案したが、一度目の出版会議は「狙う層が高いのでは」という理由でNGが出たと聞いている。その後、先方も多忙で時間が出来たらまた連絡を、となって音信が途絶えている。もうこの話は流れたと考えていいだろう。
ひとつ、チャンスをフイにした、という意味では失敗である。しかし、VBAではクラスモジュールについて書いて、世にクラスモジュールのメリットを広められないのなら、私が本を出す意味はないだろう。
なお、参考資料として出版社からAccessの書籍を6種類くらい頂いたのは収穫と言えば収穫か。当時は本のまとめ方などの参考に見たが、今となってはブックオフ行きが検討されている。講習会参加者に「欲しいやつ持って行って」でもよかったかも・・。(出版社の方、ゴメンナサイ)

今後もクラスモジュールについては充実させてゆく所存であるので、ひとつよろしくお願い申し上げます。