Visual Basic 入門講座
VB.NET 2002 対応 VB.NET 2003 対応 VB2005 対応

 

Visual Basic 中学校 > 入門講座 >

第10回 取りこぼした重要なトピック

 

今までの解説からもれた重要なトピックをとりあげます。今回で入門講座での技術的な解説は終了です。

概要

・VBでは基本的 Class 〜 End Class の間にプログラムを書く。

・アウトライン機能でコードを折りたたんだり開いたりできる。

・#Regionを使って自分でアウトラインを作ることができる。

・記号「 ' 」を使ってプログラム中にコメントを埋め込むことができる。

・作ったプログラムを他のパソコンで動かすことができる。

 

 

1.プログラムの基本構造

 

今まで入門講座をすすめてきて、いくつか簡単なサンプルも紹介しましたが、はじめから自動的に生成されているコードについてはほとんど説明しませんでした。そこで、ここでははじめから自動的に生成されているコードについて基本的な説明をします。

まず、ほとんどのVBのプログラムは基本的に次の構成になっています。(次の節で例外を紹介します。)

VB.NET2002対応 VB.NET2003対応 VB2005対応

Class クラス名

    ………………(中略)

End Class

■リスト1:すべてのVBプログラムの基本構造

プロジェクトを新規作成したばかりの、まだ何もプログラムしていない状態のコードと見比べて見てください。

まだ何もしていない状態のコードはVB2005とVB.NET2002, VB.NET2003で少し異なりますが、VB2005では次のようになっています。

VB2005対応

Public Class Form1

End Class

■リスト2

VB.NET2002とVB.NET2003では次のようになっています。

VB.NET2002対応 VB.NET2003対応

Public Class Form1
    Inherits System.Windows.Forms.Form
 
 Windows フォーム デザイナで生成されたコード

End Class

■リスト3:何もプログラムしていない状態のフォームのコード

見ればわかるようにVB.NET2002, VB.NET2003ではVB2005より2行だけコードが多くなっていますが違いはそれだけです。VB.NET2003, VB.NET2003を使っている方は今後VB2005のサンプルを見かけてもこの2行が異なるだけで後は同じ等言うことを覚えておくと良いです。そうすればVB2005用に作成されたサンプルを活用することができるように成ります。

逆にVB2005を使っている方もVB.NET2002, VB.NET2003用に作成されたサンプルから余分な2行分だけ無視すればVB2005でも通用するサンプルになることを覚えておくと便利でしょう。

ただし、VBのバージョンが異なればこの2行以外にも当然違いはありますのでバージョンの異なるVBのサンプルが必ずそのまま利用できるとは限りません。

話を戻しましょう。上記のリストを見るとプログラムはたしかに ClassEnd Class (読み方:Class = クラス、 End Class = エンド クラス)という構造になっていますよね。

自分で書くプログラムはすべてClassEnd Class の間に書いてください。外側に書いた場合はビルドエラーになります。

構文こそ異なりますが、これはVBをはじめC#やJavaなどオブジェクト指向言語と呼ばれている言語に共通の構造です。

なお、自動的に用意されているClass End Classとは別に自分で ClassEnd Class という構造を書くこともできます。たとえば、次のようになるのですが入門レベルではこのようなプログラムを覚える必要はありません。

VB2005対応

Public Class Form1

End Class

Public Class MyClass

    '………………(中略)

End Class

■リスト4:自分でClassEnd Class を書くこともできます。

ClassEnd Class で囲まれた部分を1つの「クラス」と呼びます。リスト2には「Form1クラスがプログラムされている。」のような表現を使います。

この表現で行くとリスト4にはForm1クラスとMyClassクラスがあることになります。

 

2.基本以外の構造

 

以上で説明した以外にVBでありえる構造は次の4つです。

これらについては入門レベルでは覚える必要はありません。「ふーん、なんかいろいろあるんだぁ」程度に見ておいてください。

基本はあくまで ClassEnd Class で、おそらく、これからみなさんが目にするVBのプログラムの95%程度はこの構造になっているものと思います。

ModuleEnd Module 特殊なクラスのための構造
StructureEnd Structure 構造体(クラスの簡易版)のための構造
NamespaceEnd Namespace クラスを分類するための構造
EnumEnd Enum 列挙体のための構造

■表1

 

3.アウトライン

 

プログラムを部分的に折りたたんで表示することができます。これをアウトラインと呼びます。

折りたたんだ状態では次のように表示されます。

アウトラインを折りたたんだ状態

■画像1:折りたたんだ状態

左側の + 印をクリックすると開いた状態になります。- 印をクリックすると折りたたみます。

アウトラインを開いた状態

■画像2:開いた状態

これは、表示上の問題なので折りたたまれていようが開いてあろうがプログラムの動作には一切関係ありません。

このようなアウトラインは自動生成されるものと自分で作るものとがあります。たとえば、イベントプロシージャは自動的にアウトライン化されます。

自分でアウトラインを作成するには #Region (読み方:#Region = リージョン または シャープ リージョン)を使います。

たとえば、次のようにします。

VB.NET2002対応 VB.NET2003対応 VB2005対応

#Region " 日付のサンプルコード "

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim D1 As Date
       
Dim D2 As Date

        D1 = #6/27/2004#
        D2 = #6/20/2004#

        MsgBox(D1.AddDays(1)) '次の日を表示。2004/06/28
       
MsgBox(D1.Year) '年を表示。 2004
       
MsgBox(DateDiff(DateInterval.Day, D1, D2)) '日付の差を日数で表示。 -7

    End Sub

#End Region

■リスト5:このプログラムは入門講座第6回で掲載したものと同じです。

このコードを折りたたむと次のように表示されます。

#Regionが動作しているところ

■画像3:#Regionが動作しているところ。

#Regionは記述できる場所とできない場所があるので注意が必要です。

 

4.Windows フォーム デザイナで生成されたコード

 

VB.NET2002またはVB.NET2003を使っている場合は、ほとんどのフォームのプログラム中に「Windows フォーム デザイナで生成されたコード」と書かれて折りたたまれているアウトラインがあります。

この部分についても少し説明しておきましょう。

まず、この部分が折りたたまれているのは、初級者がまちがって内部のプログラムを変更してしまわないようにするためです。この部分のプログラムはフォームを形成する際の核心となる部分なのでまちがった部分に手を加えると、フォームが表示できなくなったり正常に動作しなくなるなど致命的な現象が発生します。

この部分に記述されているプログラムの内容は次のようなものです。

1.フォームの開始処理・終了処理

2.フォームに配置するコントロールの設定

たとえば、フォームにボタンを1つ貼り付けると、この部分には自動的にそのボタンを生成するコードが追加されます。

発展学習  -  なぜVB2005には「Windows フォーム デザイナで生成されたコード」がないのか?

発展学習では意欲的な方のために現段階では特に理解する必要はない項目を解説します。

VB2005には上記のような「Windows フォーム デザイナで生成されたコード」がないため、プログラムがとてもシンプルですっきりした構造になっています。しかし、この部分はフォームの開始処理や終了処理、コントロールの配置に関する設定などを行っている重要な部分です。どうしてVB2005はこの部分がなくても正常に動作するのでしょうか?

実はVB2005にもこの部分のプログラムは存在しているのですが、デフォルト(既定)では別のファイルに記述されるようになっています。そのためフォーム自体はすっきりした構造になるのです。

この別のファイルはForm1.Designaer.vbのような名前で保存されています。通常の設定ではこのファイルは非表示になっています。ソリューションエクスプローラで「すべてのファイルを表示」のアイコンを押して、Form1.vbの左側に表示される「+」ボタンを展開するとこのファイルを見ることができます。

このファイルをいじるとプログラムが正常に動かなくなる場合があるので注意してください。

 

5.コメント

 

プログラムの中にコメントを埋め込むことが出来ます。コメントには通常プログラムの説明や一時的に使用しないコードを書きますが、何でも好きなことを書き込むことができます。

コメントを埋め込むには行の先頭に記号「 ' 」(読み方: ' = シングルクォーテーション または アポストロフィ)を書き込みます。

たとえば、次のような使い方をします。

VB.NET2002対応 VB.NET2003対応 VB2005対応

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    '今月の月末を表示します。

    MsgBox(DateSerial(Year(Now), Month(Now) + 1, 1).AddDays(-1))

End Sub

■リスト6

緑色になっている行がコメントです。このように通常の設定では、コメント行は緑色で表示されます。

このプログラムはコメントがなければ何を行っているのかわかりにくいですね。このようにプログラムを分かりやすくする目的で使うことが多いです。

この他に次のような使い方をする場合もあります。

VB.NET2002対応 VB.NET2003対応 VB2005対応

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    'ここのコードでエラーになるので今はコメントにしておきます。

    'ListBox1.Add("Hello!")

    MsgBox(ListBox1.ToString)

End Sub

■リスト7

このプログラムは開発途中でまだ正常に動かない状態のものです。うまく動かない部分は消してしまえばよいのですが、将来手直しして動くようにするつもりなのですから、消してしまうよりコメントにしておいた方が後々楽です。

コメントにしておけば先頭の「 ' 」を削除するだけで復活できるからです。

他にもいろいろと活用方法があるのでみなさんも活用してください。

複数の行を一度にコメントにするボタンも用意されています。

コメントボタン

■画像4:コメントボタン

プログラム中で対象の行を何行でのいいので選択した状態で左側のボタンを押すと選択されている全ての行の先頭に「 ' 」がつきます。右のボタンを押すと先頭の「 ' 」が取れます。

コメントのための「 ' 」は1つだけ付ければ十分なのですが、2つ以上付ける人もいるようです。これは好みの問題なので構いませんが、「 ' 」を3つ以上連続して書いてはいけません。

「 ''' 」のように連続する3つの「 ' 」はXMLコメントという特殊なコメントを表す記号になります。XMLコメントについては初級講座で扱いますが、普通の自由に使っていいコメントとは異なりますので注意が必要です。

XMLコメントはVB2005から導入された機能なので、VB.NET2002, VB.NET2003の場合はコメントを作る場合に3つ以上の「 ' 」を連続して書いても問題ないのですが、それらのプログラムをVB2005で開くと「 ' 」が3つ以上連続している個所がXMLコメント扱いされてしまいますからやはり書かない方が無難です。

なお、プログラムを分かりやすくするためコメントをつける場合は、プログラムよりコメントのほうが長くなっても構いません。まったくコメントのないプログラムはそれ自体異常な場合がほとんどです。

私の経験では、コメントが付いていないプログラムを解読するには、コメントが付いているプログラムを解読するより3倍近い時間がかかります。

 

6.作ったプログラムを他のパソコンで動かす方法

 

最後にあなたが作ったプログラムを他のパソコンで動かす方法を説明しましょう。 もちろん、VBがインストールされていないパソコンであなたが作ったプログラムを動かすことができます。通常はプログラムの最終目的は他のパソコンで動くようにすることですから、この方法を知らないで入門講座を終えるわけには行きません。

方法も簡単です。

プログラムを実行するとプロジェクト名.exeというファイル作成されます。そのexe ファイルを目的のパソコンにコピーするだけです。 たとえばWindowsApplication1という名前のプロジェクトの場合はWindowsApplication1.exeを目的のパソコンにコピーすることになります。VB2005ではWindowsApplication1.vshost.exeという紛らわしい名前のファイルが作成されますがこのファイルは違うので注意してください。

WindowsApplication1.exeなどのexeがどこに作成されるかはVBのバージョンや状況により少し異なります。

VB.NET2002対応 VB.NET2003対応 VB2005対応
VB.NET2002, VB.NET2003のフォルダツリー VB2005のフォルダツリー
■画像5 ■画像6

VB.NET2002、VB.NET2003の場合はプロジェクトのフォルダの下にあるbinフォルダにこのexeが作成されます。VB2005の場合は階層が深くなるのですが、上記の画像のDebugフォルダまたはReleaseフォルダにexeが作成されます。VB2005 Express Editionの場合はフォルダの構造は同じですが、プログラムを実行する前にプロジェクトを保存してください。

exeファイルが見当たらない場合は、再作成する必要があります。再作成をするにはVBの開発画面からそのプログラムを一度実行するか、[ビルド]メニューの[ソリューションのビルド]または[ソリューションのリビルド]をクリックするとexeファイルが作成されます。VB2005の場合はメニューに表示されている名称は少し異なりますが、同じように[ビルド]メニューの[WindowsApplication1 のビルド」を使用します。

 

さて、基本的にはこのようにして作成されたexeファイルを目的のパソコンにコピーするだけであなたの作ったプログラムを他のパソコンで動かすことができるようになるのですが2点だけ注意する点があります。

1点目は目的のパソコンに .NET Framework がインストールされている必要がある点です。.NET Frameworkは無料ですのでインストールされていない場合にはWindows Updateからダウンロードするなどしてインストールすることができます。 また、使用しているVBのバージョンによって必要な.NET Frameworkのバージョンが異なります。

VBのバージョン .NET Frameworkのバージョン
VB.NET2002 .NET Framework 1.0
VB.NET2003 .NET Framework 1.1
VB2005 .NET Framework 2.0

■表2

2点目はプログラムが外部のファイルを使用している場合は当然その外部のファイルも一緒にコピーしなければならない点です。たとえばデータベースを使用するプログラムであれば、目的のパソコンでもデータベースが使用できるように設定しなければなりません。データベースもないのにexeファイルだけコピーしても当然うまく動きません。

友達のパソコンで動かすくらいだったら以上の点だけ気にしておけば大丈夫です。

仕事でお客様に配布するプログラムや、インターネットなどで不特定多数に配布するプログラムの場合は個人情報やリリースビルドなど気にしなければならない点は他にもありますがこれらの点については入門講座ではあつかいません。