【ワレコ講座】VBAしか知らなくてもVB.NET,C#,C++でスイスイ開発出来る【Visual Studio】

この記事は約28分で読めます。
スポンサーリンク

ワテの場合、Visual Studioを使い込んでもうかなりの年月になる。

Visual Studioを使い始めた当初は、画面やメニューが複雑で独学で勉強していたのだが非常に苦労した記憶がある。

その当時のワテは、Visual Studioのような統合開発環境を使わずに、コマンドプロンプトでCコンパイラー(gccなど)を使ったC言語プログラミングの経験は豊富であったのだが、IDE (Integrated Development Environment) と呼ばれる本格的な統合開発環境を使うのは初めての経験であった。

また、EXCELのVBAの経験も豊富であったのだが、Visual StudioのBasic言語であるVB.NETはBasic言語ではあるので文法は似ているのだが、やはりVisual Studio自体の操作が複雑で難しくて、VB.NETでまともにプログラムを書けるようになるまでに、かなり時間を要した。

スポンサーリンク
ワテ推薦のプログラミングスクールで学ぶ
スポンサーリンク
スポンサーリンク
  1. 本記事の目的
  2. Visual Studio Community Editionをインストールする
  3. VB.NETでBasicのプログラムを作成してみる
  4. 早速Visual Studioを起動する
    1. ワテ流のカスタマイズ
  5. ソリューションとプロジェクトの違い
  6. 一つのソリューションに複数のプロジェクトを追加するメリット
  7. 新しいプロジェクトを作成
  8. VB.NETモジュールはVBA標準モジュールみたいなもん
  9. VBAプログラムをVB.NETに移植した
    1. 二乗を計算するVB.NETのソースコード
    2. 実行結果
    3. デバッグ出力ウインドウを利用する
  10. ビルドとコンパイルの違い
    1. PublicとPrivateの使い分け方
  11. 一つのモジュールファイルを複数のモジュールファイルに分割する
    1. 複数ファイルを開いた場合にウインドウを並べて表示させる方法
  12. 複数のモジュールファイルが連携して関数を実行する例
  13. デバッグ途中でブレークさせて変数の値を確認や変更する方法
  14. デバッグ時に利用すると便利な各種のツールバーアイコン
  15. いよいよVB.NETでクラスを使う
  16. 「非共有メンバーを参照するには、オブジェクト参照が必要です」なんのこっちゃ⁉
  17. Sharedクラスを使うとモジュールみたいな感じになる
    1. VB.NET Shared Classのソースコード
  18. Moduleの概念はVB.NETにはあるがC#にはない
  19. クラスのインスタンスをnewで作成する方式
    1. new演算子でクラスのインスタンス化を行うごく普通のVB.NETソースコード
  20. 条件付きコンパイルを覚える
    1. 条件コンパイルのソースコード
  21. プロジェクトを全て保存する
  22. プロジェクトやソリューションをビルド、リビルド、クリーンする
  23. プロジェクトのプロパティを表示して変更する手法を覚える
    1. アセンブリ名などを変更してみる
  24. プロジェクトのフォルダ構造を覚える
  25. binやobjは削除しても良い(多少注意も必要)
  26. まとめ
  27. かなり安値で商品を買う – ASP.NET MVCで作成

本記事の目的

本記事では、その当時のワテと同じくVBAやC言語やC++などは使えるけれど、Visual Studioという統合開発環境を使うのは初めてなのでサッパリ分からん‼と言う人向けに、連続で何回かのシリーズで解説記事を書いてみたい。

昔はVisual Studioは有料版しか無かったのであるが、最近では無料版も使える。

Visual Studio Community Editionである。無料とは言え、一昔前のProfessional版相当の機能を持っているのがCommunity Editionだ。

買えば何万~何十万円もするようなProfessional相当のCommunity版が無料なのでそりゃ、使わな損という奴だ。

 

実際に今アマゾンで売っている昔のMicrosoft Visual Studio Professional 2013 通常版はこの価格だ。

高い!

Visual Studio Community Editionをインストールする

本日の時点でのVisual Studio Community Editionの最新版は

Visual Studio 2015 Community Edition

Visual Studio IDE、コード エディター、Azure DevOps、App Center
Visual Studio Online のお知らせ 現在はパブリック プレビューでご利用いただけます Visual Studio あらゆる開発者向けの優れたツール フル機能の IDE によるコードの記述、デバッグ、テスト、任意のプラットフォームへのデプロイ ...

となる。

 

同じく無料のVisual Studio Express エディションと言うのもあるが、ワテのお勧めはCommunity Editionだ。

Visual Studio Community は、Express の全機能に加えて各種の機能が追加されている。

個人の開発者、 オープン ソース プロジェクト、アカデミックな研究、教育、中小企業の専門家チームなら無料で利用できる。

商用利用に関しては、使える場合もあるが、制限もあるようなので各自調査してください。

 

 

Visual Studio 2015 Community Editionのインストールは簡単だ。

他の記事でも詳細に解説しているのでここでは簡単に説明するが、インストーラーをダウンロードして、実行するだけで良い。

初めてインストールする人は、インストール中の選択項目で何を選択したら良いのか戸惑う部分もあるかも知れないが、分からない場合には全部デフォルト設定でインストールしておけば良い。

インストール後に設定を変更する事も簡単に出来るので安心だ。

 

VB.NETでBasicのプログラムを作成してみる

では、無事にVisual Studio Community Editionがインストール出来たと言う前提で、早速VB.NETでプログラミングに挑戦してみよう。

 

下図はワテが使っている Windows 10 Pro(x64) の環境にインストールした Visual Studioをスタートメニューで表示したものだ。

図1. Visual Studio 2015を起動する

 

皆さんのVisual Studioのメニューよりも項目が多いかもしれない。

と言うのは、Visual Studioをインストールしたあとで、更に追加で Xamarin という無料の追加ソフトなどをインストールしているからだ。

Xamarinを使うとAndroidアプリやiPhoneアプリをVisual Studioを使って開発出来るようになる。

その辺りの解説記事も他の記事で説明しているので、興味ある人は見て下さい。

 

早速Visual Studioを起動する

上図の という項目をクリックして実行すれば良い。

こんな画面が開く。

図2. Visual Studio 2015起動直後の画面

 

画面のレイアウトやルーツバーの項目が皆さんとは多少異なっているかもしれない。

メニューバー、ツールバーをカスタマイズしているからだ。

 

ワテ流のカスタマイズ

ワテの場合、Visual Studioを使う場合に以下の設定をしている。

  • 画面の色合いは黒色系
  • メニューバー、ツールバーによく使うアイコンを登録している
  • デフォルトで管理者権限で実行するようにしている

などである。

これらに関しても別記事で詳細を説明しているので興味ある人は見て下さい。

なお、普通に使う場合には管理者権限で実行する必要は無い。WEBサイトを作成する場合にASP.NETと言う機能を使ってIISというWEBサーバーを相手にデバッグ作業を行うのだが、

その時には管理者権限でVisual Studioを起動しておく必要があるのでそうしているだけである。

 

ソリューションとプロジェクトの違い

Visual Studioを使っていると

  • ソリューション
  • プロジェクト

この二つの単語が良く出て来る。

  • ソリューションエクスプローラー
  • ソリューションのビルド
  • プロジェクトのビルド

などなど。

このソリューションとプロジェクトの意味を十分理解しておく必要がある。

 

プロジェクトとは、個々の開発の単位である。

具体的には、

  • C#言語を使って作った一つのConsoleアプリプロジェクト
  • C#言語を使って作った一つのClassライブラリプロジェクト
  • VB.NETを使ったFormアプリプロジェクト

など。

ソリューションとは、それらの複数のプロジェクトをまとめたもの。

Visual Studioでは以下のようになる。

vs-solution-projects

図2b. Visual Studio 2015で11個のプロジェクトから成るソリューションの例

 

ファイル拡張子は以下のようになる。

項目 ファイル拡張子
ソリューション .sln
VB.NET プロジェクト .vbproj
C# プロジェクト .csproj

上図で利用不可となっているのは、当面不要なのでアンロードしているプロジェクトだ。

必要になればプロジェクトを右クリックして再読み込みをしてソリューションに追加すれば良い。

一つのソリューションに複数のプロジェクトを追加するメリット

例えばC#で良く使う関数などを自作のライブラリとしてまとめておきたい。

それをMyCSharpLibプロジェクトとして作成する。

コンパイルすると MyCSharpLib.dll が生成される。

そのライブラリを利用するプロジェクトを MyCSharpProjとして作成する。

これら二つのプロジェクトを一つのソリューションに入れておけば、二つのプロジェクトを同時に編集やデバッグが出来る。

MyCSharpProjの中で作成した関数でも、それが汎用性があるなら、MyCSharpLibへ移植するなどの作業が一つのVisual Studioの作業環境で出来るので作業効率が良い。

複数プロジェクトを一つのソリューションに入れるのにはそう言うメリットがある。

それ以外にもあると思うので各自調査して下さい。

なお、共通で使うライブラリMyCSharpLib.dllを作成して、それを他のプロジェクトから利用する方法は、参照設定というメニューで行う。このあたりは次回説明したい。

 

新しいプロジェクトを作成

Visual Basic コンソールアプリケーションを作成してみる。

下図のように選ぶ。

図3. VB.NETコンソールアプリケーションを作成する

ソリューションの保存先はどこでも良い。

作成したソリューションは、後でフォルダごと別のフォルダに移動しても良いし。

 

.NET Framework のバージョンは 4.5.2辺りを選んでおけば良い。

後で変更する事も可能だ。数字が大きいほど新しいバージョンの .NET Framework となるので、最新の機能・関数などが使えるという事になる。

 

 

下図がVB.NETのコンソールアプリのテンプレートだ。

図4. VB.NETにモジュールを追加する

 

ここで、VB.NETのModuleというのは、EXCEL VBA の標準モジュールだと思っておけばよい。

 

VB.NETモジュールはVBA標準モジュールみたいなもん

下図はEXCEL2013のVBAの開発画面だ。

図5. VBAに標準モジュールを追加する例

 

標準モジュールの中にSubやFunctionを書いておく。

引数で与えた整数10の二乗を計算して、答えの100を出力すると言う単純な処理である。

Public Sub sub1()

   Dim n_x_n As Integer

   n_x_n = func1(10)

   Debug.Print "n_x_n=", n_x_n

End Sub

Function func1(n As Integer) As Integer

   func1 = n * n

End Function

コード1. VBAの例

 

実際に実行するとVBAのイミディエイトウィンドウに以下の文字が出力される。

n_x_n= 100

 

つまり、EXCELの標準モジュールの中にSubプロシージャや、Functionプロシージャを書いておけば、他の標準モジュールやユーザーフォームから実行できる。

もちろん Private や Public などを併用して、外部に公開したり非公開にしたり制御も可能だ。

VB.NETのモジュールはVBAの標準モジュールみたいなもんだと思えばよい。

Moduleだけを使ってVB.NETのプログラミングをすれば、クラスの概念も必要ないのでオブジェクト指向もクラスも良く分からない人でもVB.NETのモジュールなら馴染みやすいだろう。

なお、VB.NETでWindowFormプロジェクトを開発する場合には、WindowForm自体が一つのクラスなので、VB.NETと言えどもクラスを理解しないとプログラミングは出来ない。

WindowFormプロジェクトとは、実行するとウインドウが開く対話型のユーザーインターフェースを備えたアプリだ。その場合にはコンソール画面はデフォルトでは出ない仕様になっている。

 

では、実際にこのVBAプログラムをVB.NETに移植して実行してみよう。

それによってVB.NETのモジュールを理解する事が可能だ。

VBAプログラムをVB.NETに移植した

図6. VBAプログラムをVB.NETに移植した

 

デバッグ実行の▶ボタンをクリックするかあるいはF5押下でも良い。

ブレークポイントを適当な場所にセットしておくとそこで停止する(ブレーク)。

 

二乗を計算するVB.NETのソースコード

Module Module1

   Sub Main()

      sub1()

   End Sub

   Sub sub1()

      Dim n_x_n As Integer

      n_x_n = func1(10)

      Console.WriteLine("n_x_n = {0}", n_x_n)

      Debug.WriteLine("n_x_n = {0}", n_x_n)

   End Sub

   Function func1(ByVal n As Integer) As Integer

      func1 = n * n

   End Function

End Module

二乗を計算するVB.NETのソースコード

まあ、変数のネーミングがヘンテコだなどと言う指摘もあると思うが気にしないで頂きたい。

なお、関数の引数には、ByVal と ByRef が利用できる。もし以下のように ByRef で与えれば、それは参照渡しとなるのでCやC++で言う所のポインター渡しのような動作となる。

   Function func1(ByRef n As Integer) As Integer

      func1 = n * n

   End Function

従って、nの値を func1の中で変更すると、制御が呼び出し元に戻った時点で、そのnの値が呼び出し元のnに反映される。ただし上記の例では呼び出し元は定数10で与えているので、この場合にはByValでもByRefでも違いは無い。

まあ、その辺りは各自実験して下さい。呼び出し元で

   Dim n_x_n As Integer

   Dim n as Integer = 10

   n_x_n = func1(n)

などとして ByRef, ByVal の実験をしてみると良いだろう。

 

 

実行結果

このように Module1という名前のモジュール内にあるSubやFunctionは、互いに見えているので自由に呼び出す事が可能だ。

Console.WriteLine()関数を使うと文字通り、コンソール画面に出力が可能だ。

図7. VB.NETの実行結果

一方、Debug.WriteLine() を使った場合には、コンソール画面ではなく、下図の出力という名前のウインドウに出力される。

 

デバッグ出力ウインドウを利用する

図8. VB.NETのデバッグ出力ウインドウ

この出力ウインドウには各種の情報が出力されるので、時々チェックするのが良い。

なお、Debug.WriteLine() はDebug実行時にのみ動作する。Release実行した場合にはこのコマンドは無視される。

出力ウインドウが出ていなかったり、あるいはうっかり[X]アイコンで閉じてしまった場合でも以下のメニューから表示させる事が可能だ。

図9. VB.NETのデバッグ出力ウインドウの出し方

なぜか、二か所に出力ウインドウの項目があるがどちらでも同じで、実行すると出力ウインドウがアクティブ化される。

ビルドとコンパイルの違い

VB.NETやC#はコンパイラーを使ってソースコードをコンパイルする。

ビルドはコンパイルした後でリンカーなどが動いて、 実行プログラムを生成する処理だ。拡張子 は .exe となる。この後でも出て来るがプロジェクトを右クリックしてプロパティを表示させるとビルドの設定なども確認したり変更したり出来る。

 

PublicとPrivateの使い分け方

先ほどのプログラムで、func1をPrivate にしてみた。

PublicもPrivateも付けていない場合にはPublicの動作となる。

図10. VB.NETにModule2を追加した例

Privateを付けると、他のモジュールからはfunc1()が見えないので、エラーが出ているのが分かる。上図の func1(10) に赤い波線の下線が出ている箇所だ。

一つのモジュールファイルを複数のモジュールファイルに分割する

現実的な状況としては、Module1.vbファイルの中に沢山の関数を書いてコードが長くなって来たので、ファイルを分割したいという状況は良くある。

以下ではその方法を見てみよう。

図11. VB.NETにModule2.vbファイルを追加した例

上図のように二番目のモジュール Module2.vb を追加する。

 

図12. VB.NETにModule2.vbファイルにModule2を追加した例

あとは、このModule2.vb に関数を移動すれば良いのだ。

 

 

複数ファイルを開いた場合にウインドウを並べて表示させる方法

Module1.vb と Module2.vb があるので両方を並べて表示させる方法を覚えておくと便利だ。

下図のようにタブをドラッグして画面中央付近に持って行くと十字の形のマーカーが出るので、好きな場所にドロップすればその絵の通りのレイアウトになる。

図13. VB.NETでModule1.vbファイルとModule2.vbファイルを並べて表示させる方法

まあ、最初は慣れないと難しいが、慣れてしまうと簡単に希望の配置に出来るだろう。

下図が、左右横並びにした例。

図14. VB.NETでModule1.vbファイルとModule2.vbファイルを並べて表示出来た

 

さて、Module1.vb と Module2.vb が出来たので、関数 func1() をModule2に移植してみよう。

複数のモジュールファイルが連携して関数を実行する例

カットアンドペーストでコードを引っ越せばよい。

あとはF5のデバッグ実行を行うと、赤矢印のように処理が進み、Module1からModule2にある関数 func1() を実行する事が可能だ。

図15. VB.NETでModule1.vbファイルの関数からModule2.vbファイルの関数を実行

 

これで、VB.NETでModuleを使ったプログラミングを覚える事が出来た。

簡単だ。

 

 

デバッグ途中でブレークさせて変数の値を確認や変更する方法

デバッグ時に役に立つテクニックを覚えよう。

ブレークポイントで停止しておいて変数の中身を確認するのは良くやる。

一方、.NET Frameworkの技術で作られているVB.NETやC#ではコンパイラーであるにもかかわらず、ブレーク中に、

  • 変数の中身を変更出来る
  • ソースコード自体を編集できる

などと言う便利な機能がある。

図16. デバッグ途中で変数の値を変更出来る

上図において、ブレークポイントで停止中だ。その時に変数 n の上にマウスを持って行き上図のように現在の数値10をクリックすると下図のように編集モードになるのでそこで値を50にしてENTERを押すかマウスでウインドウのどこかをクリックすると確定する。

図17. デバッグ途中で変数の値を変更した例

あるいは、上図の下部にある自動変数の表示欄にも変数 n が出ているのでその部分で値を編集しても良い。通常はこちらでやるほうが操作しやすいと思う。

n=50に変えて実行した結果の出力

図18. デバッグ途中で変数の値を変更すると、結果も変わる

 

 

上記の例では、ブレーク中に変数の値を変えると言う操作であるが、ソースコード自体を編集する事も可能なので、興味ある人は試してみると良い。

例えば、下図の func1 = の代入行でブレークポイント停止しておいて、

Public Function func1(ByRef n As Integer) As Integer
 
     func1 = n * n   ' ここでブレークさせておいて *n を追加してみると良い
 
     n = 100
 
 End Function

キーボードから * n を入力して、

     func1 = n * n * n 

とすると、nの三乗が計算できる。

このように動的にソースコードを編集できるなどと言うのも.NET Frameworkの特徴だ。

なお、あまりややこしい変更を行うと、それは出来ませんというエラーも出るので各自試してみる良い。

 

デバッグ時に利用すると便利な各種のツールバーアイコン

下図は、デバッグ中によく使うアイコンだ。

ワテの場合、ツールバーをカスタマイズしてよく使うアイコンを追加している。

図19. デバッグ途中で変数の値を変更すると、結果も変わる

興味ある人は、他の記事でこのやり方を解説しているので、試してみると良い。

 

さて、オブジェクト指向を良く分かっていない人には鬼門のクラスの勉強を始めよう。

クラスを理解しなくては、本格的な VB.NET, C#, C++ のプログラミングは出来ない。

今まで説明したModuleのみを使うやり方ならクラスは使わなくてもprogrammingは可能であるが、やはりここはクラスをマスターするのが良い。

 

いよいよVB.NETでクラスを使う

プロジェクトを右クリックして、クラスを追加すれば良い。

図20. VB.NETでクラスファイルを追加する

 

下図のようにクラスClass1.vb と言うファイルが追加されて、中身にはClass1 というクラスが一個あるだけだ。

図21. VB.NETでClass1.vbファイルが追加された

なので、見た目は先ほどまでやてっていたModuleと殆ど同じ。

Moduleと言う文字がClassに変わった程度だ。

実際、ModuleもClassもそんなには大きく違わないので心配は無い。

だれでも理解できる。

 

「非共有メンバーを参照するには、オブジェクト参照が必要です」なんのこっちゃ⁉

で、下図のようにModuleの代わりにClassにfunc1()を入れてみると、エラーメッセージが出ている。

図22. VB.NETでクラスClass1で関数を定義する

そのエラーメッセージは以下の通り。

「非共有メンバーを参照するには、オブジェクト参照が必要です」

う~ん、このあたりから、挫折する人が出て来るのだ。

意味分からんよね。このメッセージ。もう少しましな日本語は無いのかよと言いたい。

 

非共有メンバー: Class1の中の func1() の事

参照する:   Class1.func1() のように使おうとしている事

オブジェクト参照: クラスClass1と言うものが、Moduleとは違うのがこの点だ。

Module1の中に記述した func1() の場合には、それを記述した時点でその実体があるのだ。

一方 Class1の中に記述した func1() の場合には、あくまで定義だけなので実体が無いのだ。別の言い方をすれば、Classとは設計図のようなものか。

その設計図に基づいて、実体(オブジェクト)を作成した上でそれを使うのがクラスを利用する時の作法である。

それを怠ってClass1をあたかもModule1のように使おうとした場合に、オブジェクトが無いので勝手にそれを使っちゃダメよと。ちゃんと事前にオブジェクト化してから使ってよと言うのが、「オブジェクト参照が必要です」の意味である。

 

このエラー対策として二通りの方法を紹介したい。

Sharedクラスの方法と、new でクラスの実体を作成する方法の二つだ。

 

Sharedクラスを使うとモジュールみたいな感じになる

VB.NETのShared クラスとは、C#やC++などのstaticクラスに相当する。

つまり、クラス宣言と同時にその実体を作成するのだ。

なので、まあ、Moduleと同じ物だと思って良いと思う。

このあたりの厳密な解釈は、コンパイラーとかプログラミング言語の専門家の正しい解釈があると思うので、ワテみたいなのが勝手な解釈をすると叱られるかもしれない。

でもまあ、ここではあくまでワテ流の解釈と言う事で話を進めたい。

図23. VB.NETでClass1をSharedクラスにする

上図のようにSharedをClassに付けておけば、それはModuleを使うのと同じ感覚で関数func1()を利用できる。

使う人は

 n_x_n = Class1.func1(10)

のようにして使えばよい。

その全ソースコードを以下に示す。

 

VB.NET Shared Classのソースコード

Module Module1
 
	Sub Main()
 
		sub1()
 
	End Sub
 
	Sub sub1()
 
		Dim n_x_n As Integer
 
		'n_x_n = func1(10)
 
		n_x_n = Class1.func1(10)
 
		Console.WriteLine("n_x_n = {0}", n_x_n)
 
		Debug.WriteLine("n_x_n = {0}", n_x_n)
 
	End Sub
 
End Module
 
Module Module2
 
	Function func1(ByVal n As Integer) As Integer
 
		func1 = n * n
 
	End Function
 
End Module
 
Public Class Class1
 
	Public Shared Function func1(ByVal n As Integer) As Integer
 
		func1 = n * n
 
	End Function
 
End Class

VB.NET Shared Classのソースコード

まあ、ModuleでもShared Classでも好きな方を使えば良い。

大して差は無い(と思う)。

 

Moduleの概念はVB.NETにはあるがC#にはない

さて、本格的にプログラミングを覚えたいなら、VB.NET固有の方式よりも一般的な手法を覚えるほうが良いだろう。

ModuleはVB.NETでしか使えない。

おそらくワテの推測では、VB.NETにModuleという仕組みがあるのは、VB6 (Visual Basic Ver 6.0 / 1998年) と言うかなり古いプログラミング言語の利用者でもVB.NETに馴染みやすいように採用された機能だと思う。

 

なので、新しい事を学びたいならModuleに頼るやり方は避けるべきだ。

さらに、Moduleによく似たShared クラスも使い方によっては便利な場面もあるが、とりあえずは普通のクラスを使う手法、つまりインスタンスを生成する new 演算子を使う手法を覚えるべきだ。

 

クラスのインスタンスをnewで作成する方式

では、いよいよクラスを普通の使い方をしてみよう。

つまり new 演算子でインスタンス化(実体化あるいはオブジェクト化と言っても良い)してからそれを利用するのだ。

図24. VB.NETで普通のクラスのインスタンスを作成する

まず、上図の右のClass1では Sharedクラスではなく単なる普通のClassに戻した。

次に、左側では new 演算子を使う方式に変えた。

そのソースは以下の通り。

new演算子でクラスのインスタンス化を行うごく普通のVB.NETソースコード

Sub sub1()
   Dim n_x_n As Integer

   'n_x_n = func1(10)           ' Moduleの方式 Module2.func1()でも良い

   'n_x_n = Class1.func1(10)    ' Shared クラスの方式

   Dim class1 As Class1 = New Class1()  ' インスタンス化(実体化)の方式

   n_x_n = class1.func1(10)     ' 上でnew 実体化しているので、func1を使ってもエラーは出ない。

   Console.WriteLine("n_x_n = {0}", n_x_n)

   Debug.WriteLine("n_x_n = {0}", n_x_n)

End Sub

 

まあ、こういう単純なクラスの例では、はっきり言って、

  • Moduleの方法
  • Shared Classの方法
  • new Class1() でインスタンスを作成する方法

のどれでやっても、大して違いが出ないのでピンと来ないと思う。

でも今後、大規模なプログラミングをやり始めると徐々にクラスにも慣れて来ると思う。

今の例ではClass1の中にはfunc1()しか入っていないが、一般には関数だけでなく、メンバー変数もクラスの中に入れる。

つまりクラスとは、C/C++言語で言う所の構造体に、関数を追加したようなものだ。

そういうクラスを使う場合には new 演算子で実体化するとその時点で必要な領域がメモリ上に確保されて、必要な処理をし終わったら delete(C/C++の場合)してメモリを解放すればよい。

一方、VB.NETやC#の場合には、newでインスタンス化したものは基本的には自分ではdeleteみたいな処理をしなくても、.NET Frameworkの技術が上手い具合にメモリ管理をやってくれているので楽チンだ。

なお、場合によってはC/C++のdeleteに相当する dispose という処理がVB.NETやC#でも必要になる場合があるので、興味ある人は各自調査して下さい。

 

以上で、VB.NETで普通にクラスを使ってプログラミングをする基本をマスターする事が出来た。これで普通に暮らす事が可能だ。

座布団10枚‼

 

あとは、少し余談になるが、ちょっとした小細工を覚えておこう。

条件付きコンパイルを覚える

こんな奴だ。

 

図25. VB.NETで条件コンパイルの#If #Else #End Ifを使う

カッコよく専門家風に言うなら、

#If ディレクティブ

#Else ディレクティブ

#End If ディレクティブ

と言うのかな。

そのソースを以下に示す。

条件コンパイルのソースコード

Module Module1
 
   Sub Main()
      sub1()
   End Sub
 
   Sub sub1()
      Dim n_x_n As Integer
 
      'n_x_n = func1(10)
 
      'n_x_n = Class1.func1(10)
 
#If False Then
 
      Dim class1 As Class1 = New Class1()
#Else
 
      Dim class1 As Class1
      class1 = New Class1()
#End If
 
      n_x_n = class1.func1(10)
      Console.WriteLine("n_x_n = {0}", n_x_n)
      Debug.WriteLine("n_x_n = {0}", n_x_n)
   
   End Sub
 
End Module

まあ、コメント化してプログラムを切り替えるよりも、この条件付きコンパイルのほうが便利ではある。

あと少しで今日の講義は終わりだ。

プロジェクトを全て保存する

図26. VB.NETでソリューションを全部保存する

全部のファイルを保存するには上図の「すべて保存」を実行するか、あるいは、下図のアイコンをクリックすると良い。

図27. VB.NETでソリューションを全部保存する(方法2)

 

プロジェクトやソリューションをビルド、リビルド、クリーンする

図28. VB.NETでソリューションをビルド、リビルド、クリーンする

ビルドは更新されたファイルのみコンパイルし直す。

リビルドは、兎に角全部のファイルをコンパイルし直す。

クリーンは、binやobjフォルダの中身を削除する。このあたりは下のほうで説明あり。

 

プロジェクトのプロパティを表示して変更する手法を覚える

図29. VB.NETでプロジェクトのプロパティを表示する

上図のようにプロパティを表示させると下図が出る。

 

アセンブリ名などを変更してみる

ここで、下図の赤枠で囲った辺りを適当に変更してみて、どういう風になるか確認すると良い。

図30. VB.NETでプロジェクトプロパティのアプリケーション項目を変更してみる

なお、あまりヘンテコな変更を行うとプロジェクトが支離滅裂になって、自力では回復できなくなるかもしれない。

なので、事前にそのソリューションのフォルダごとコピーを取っておくと良いだろう。

なお、支離滅裂になるのはあなたが作成したプロジェクトであってVisual Studioには影響はない(と思う)ので、心配は無用だ。

とことん弄り回してみると良い。

なお、万一それでVisual Studioがおかしくなってもワテとしては責任をとれない(まあ、そんな状況には恐らくならないと思うが、保証は出来ない)。

自己責任でお願いします。

 

アセンブリ情報なども弄ってみると良い。

別に何も起こらないと思うが。

図31. VB.NETでプロジェクトのアセンブリ情報を変更してみる

GUIDの数字は何に使うのか、実はワテも良く知らない。

 

さて、最後にプロジェクトのフォルダ構造を覚えて今回の講義は終わりだ。

プロジェクトのフォルダ構造を覚える

下図のように、「エクスプローラーでフォルダを開く」を実行すると、今作成したプロジェクトのフォルダが開く。

図32. VB.NETでプロジェクトのフォルダをエクスプローラーで開く

下図のように、

ConsoleApplication1

と言うフォルダの中に全部のファイルが入っている。

もしバックアップを取るならこのフォルダのコピーを作成すれば良い。

 

binやobjは削除しても良い(多少注意も必要)

下図において、binやobjフォルダの中身は消しても構わない。

あるいはクリーンを実行すると消えると思うので、その辺りを実際に自分でやって確認してみると良い。

図33. VB.NETでプロジェクトのフォルダ内のサブフォルダを削除してみる

今回の講義では主にDebug実行する例しか示さなかったが、ツールバーにある

DebugをReleaseに切り替えるだけでリリースビルドが出来るのでその辺りも試すと良い。

完成版を公開する時にはリリースビルドにすると、デバッグシンボルなどが除去された実行ファイルが生成される(と思う)。

 

なお、注意事項としては、複数のプロジェクトを参照設定して開発を行うと、binフォルダの中には、その参照設定した dll ファイルが保管される場合がある。

クリーンを実行しても消えるのは今作業中のプロジェクトに関する exeなどのファイルであり、参照で使っている dll は確かクリーンでは削除されない。

それを人が勝手に削除してしまうと、当然ではあるが、参照設定をやり直す必要などある。

なので、特に必要が無ければ、手作業では bin や obj を削除しないほうが良い。

でも、何かプロジェクトがおかしくなって初期状態に戻したい場合には、それらのフォルダを手で削除してしまうと良い場合もある。

 

まとめ

この長い記事をこの最後まで読んで頂きましてありがとうございます。

感想などありましたら、コメント欄でお知らせください。

次回の講義はC#あるいはVB.NETでWindowsFormアプリケーションの予定だ。

 

VB.NETをやるなら、こういう入門書も良いかも。

 

いきなりC#の難しそうな本に挑戦しても良いと思う。

 

でも、ワテなら、最初は、

こういう入門書から入るなあ。

 

.NETの本では人気があるようだ。

いろんなところで見かける。

ただし、ワテ自身は読んだ事が無い。

かなり安値で商品を買う – ASP.NET MVCで作成

2017年のゴールデンウイークを利用して便利なWEBサイトを作ってみた。

名付けて、

最安価格サーチ

クリックで開く

初回起動時のみ3秒くらい掛かりますがご了承下さい。

何が出来るかと言いますと、

Amazon.co.jp

楽天市場

ヤフーショッピング

の三つのショッピングサイトを同時検索して、商品を価格の安い順に表示出来ると言う、お買い物支援サイトです。

「最安価格サーチ」で、

「Visual Studioプログラミング」をかなり安値で探したい人は こちらから>

「C#プログラミング」をかなり安値で探したい人は こちらから>

もしお使い頂きまして何かご不明な点、改善案などありましたらお知らせ下さい。

 

Visual Studio 2017 Communityの中にあるASP.NETを利用すると、こんなWEBサイトも自由自在に作成出来る。

プログラミングにはC#やVB.NETが利用出来るので、こんなに嬉しい事は無い。

C#のコンソールアプリケーションやWindowsフォームアプリケーションで作成した各種の自作ライブラリがそのまま利用出来る。

かつ、そのVisual Studio 2017 Community自体が無料で利用出来る訳なので、とっても嬉しい。

スポンサーリンク
ワテ推薦のプログラミングスクールで学ぶ
コメント募集

この記事に関して何か質問とか補足など有りましたら、このページ下部にあるコメント欄からお知らせ下さい。

VB.NET Visual Studio
スポンサーリンク
warekoをフォローする
スポンサーリンク
われこ われこ

コメント