最終更新日 :
VB Tips

プログラマー初心者講座-その2。標準モジュール?
VBを触ったことのある人なら誰しもが"標準モジュール"というものを知っていることでしょう。 この標準モジュールはVB4.0まで"コードモジュール"と呼ばれ、プロジェクト全体に関わるコードを記述していた場所でもあります。
VBの初期の時代ではフォーム内のコードはそれぞれ独立していて(つまりすべての"独自の変数・プロシージャ"がPrivate宣言だったわけで)、 アプリケーション全体で共有する変数を宣言するためにはこのコードモジュールに記述する必要がありました(Globalキーワードって懐かしいですね。今じゃPublicになっちゃいましたけど)。 クラスモジュールが登場した後もこの傾向は変わらず、複数のクラスモジュールから共有できる変数やプロシージャを宣言するために標準モジュールが使われました(これじゃオブジェクト指向プログラミングにあまり近付かないんだけど)。
VBが5.0になると、ActiveXコンポーネント作成技術にクラスモジュールが使われるようになり、標準モジュールに対する重要性はほとんどクラスモジュールに移ってしまいました。 ですが、標準モジュールだけに特長的な能力として「API・ユーザー定義型(構造体)のPublicな宣言ができる」ということです。また、コールバック関数の宣言ができるのも標準モジュールだけです。 このため、コールバック関数を使用するクラスモジュールには標準モジュールが必然的に必要になります。
クラスモジュールの重要性についてはへろぱさんが自身のHPで述べられている通りなのですが、こちらでも書かせていただきますと、クラスモジュールには「実体のないコントロール」の役割を持たせることができるということです。 ActiveXコントロールや、各種OCXコントロールはフォームに貼り付ける形式で初めてその機能を発揮することができますが、クラスモジュールはコード内で宣言し、メモリを割り当てる(実体化する)ことだけでその機能を使用することができます。 またC++でのクラスとのつながりから、Type ... End Typeキーワードによるユーザー定義型の拡張版とも考えることができます。ユーザー定義型では変数のみしか含めることができませんが、クラスモジュールならC++のクラス同様、関数を含めることができます。 ですから、クラスモジュールには「読み込みのみのプロパティ」「書き込みのみのプロパティ」「読み書き可能なプロパティ」「メソッド」「イベント(5.0以降)」をもつ特殊なユーザー定義型とも考えることができます。 データベースを作成する場合、クラスモジュールにデータベースの要素をプロパティとして実装し、ファイルに出力するメソッド、読み込んだデータを変数に割り当てるメソッドを作成すればデータの操作などが簡単になりますよね。 VBのユーザー定義型・クラスモジュールのメモリ上での実態についてはVBMの2000年11月号の特集「VBプログラマのためのポインタガイド」をご覧いただければいいと思います。C++のそれによく似ています。
標準モジュールに話を戻しましょう。標準モジュールはもちろん、1つだけしかプロジェクトに加えられないというわけではないです。この意味は果たしてどこにあるのでしょうか? 標準モジュールやクラスモジュール、フォームモジュールは、 各ファイルは再利用できます。しようと思えば、またできるようにすれば。数学関数・演算関数群や、よく利用するようなAPIを複数の標準モジュールに保存しておき、適宜プロジェクトに読み込んで利用できるようにすると、手間が省けて便利になるはずです。 プログラミングはすればするほど、楽にできるように自分でカスタマイズしていくのが普通ですよね。そのために標準モジュール・クラスモジュールを活用してください。


Copyright (C) 2000 Satoshi Tadaフィードバックはこちら
Home