サンプルゲームを動かしながら VBプログラムの基礎が学べる 中島省吾 著
本 書 の 使 用 ( 本 書 のとおりに 操 作 を 行 う 場 合 を 含 む)により 万 一 損 害 が 発 生 しても 出 版 社 著 作 権 者 は 一 切 の 責 任 を 負 いかねますので あらかじめご 了 承 下 さい Microsoft Windows は 米 国 Microsoft Corporation の 米 国 およびその 他 の 国 における 登 録 商 標 です その 他 本 書 に 記 載 されている 会 社 名 製 品 名 などは 一 般 にそれぞれ 各 社 の 商 号 登 録 商 標 または 商 標 です 本 書 では および の 記 載 は 省 略 しました
はじめに はじめに Visual Basic が 米 国 で 始 めて 発 売 されたのが 1991 年 のことですから Visual Basic は 既 に 20 年 以 上 の 歴 史 があることになります 1991 年 といえば Microsoft が Windows 3.0 を 発 売 した 翌 年 です それまで Windows 用 のアプリケーションを 開 発 するには C 言 語 と 呼 ばれるプログラミ ング 言 語 を 使 い 高 度 なスキルが 要 求 されました そのため プログラミング 初 心 者 が 気 軽 に Windows アプリケーションを 作 れるような 状 況 ではありませんでした しかし 現 状 のままでは Windows の 普 及 は 進 まない と 考 えたマイクロソフトは MS-DOS 向 けに 発 売 していた 初 心 者 向 けプログラミング 言 語 BASIC を 基 に 新 しい Windows アプリケー ション 開 発 言 語 を 作 りました それが Visual Basic です Visual Basic は 当 時 としては 画 期 的 なプログラミング 言 語 でした それまで Windows プログラ ミングといえば ウィンドウを 1 つ 表 示 させるだけで 数 十 行 のコードが 必 要 でしたが Visual Basic では 自 動 生 成 されたコードに1 行 コードを 追 加 するだけでウィンドウに 文 字 を 表 示 することが できました ボタンやテキストボックスも フォームと 呼 ばれる 土 台 にマウスで 貼 り 付 けるだけで 終 了 です ついに 初 心 者 でも Windows アプリケーションが 開 発 できるようになったのです ところが 10 年 ほど 前 から インターネットの 普 及 とともに Java のような 新 しい 開 発 言 語 が 現 れ Web アプリケーションと 呼 ばれる 形 態 が 台 頭 するようになります Web アプリケーションは ブラウザさえあればアプリケーションの 実 行 ができ OS の 種 類 を 選 びません そこで Microsoft が 打 ち 出 したのが.NET 構 想 と 呼 ばれる 考 え 方 です これは アプリケ ーションをオブジェクト 単 位 の 組 み 合 わせで 開 発 し.NET プラットフォーム 上 で 動 作 させること で インターネット 時 代 の 新 しい 開 発 スタイルに 対 応 しようとしたものです それに 合 わせて Visual Basic も VB.NET というオブジェクト 指 向 言 語 に 生 まれ 変 わりました この VB.NET が 現 在 の Visual Basic 2013 の 直 接 の 祖 先 となります そして 本 書 は この Visual Basic 2013 の 入 門 書 です 前 述 したように 当 初 の Visual Basic は 初 心 者 向 けの 言 語 でしたが 現 在 は 本 格 的 なオブジェクト 指 向 プログラミング 言 語 になって います そこで 初 心 者 でも 無 理 なく Visual Basic 2013 の 学 習 が 進 められるように サンプルプ ログラムとしてゲームを 用 意 し 次 のような 構 成 で 進 めることにしました
はじめに 1.まず これから 学 ぶ 文 法 の 概 要 を 説 明 します 2. 次 に できるだけ 簡 単 なサンプルを 用 いて プログラムを 動 かしながら 文 法 を 理 解 します 3. 最 後 に 登 場 した 文 法 を 利 用 したゲームプログラムを 紹 介 し 復 習 と 確 認 のため 簡 単 な 問 題 を 解 きます このように 単 に 文 法 を 理 解 するだけではなく 実 際 のプログラムでどのように 使 われている のか まさに わかりすぎる Visual Basic の 入 門 書 を 目 指 しました しかも 最 後 に 登 場 するゲー ムは ルーレットマシン です 是 非 この 最 終 ゲームを 楽 しみに Visual Basic 2013 の 学 習 を 進 めていただければと 思 います 著 者
目 次 目 次 はじめに 第 1 章 Visual Basic 2013 の 概 要... 1 1.1 Visual Basic 2013 とは... 2 1.2 Microsoft.NET... 3 1.3.NET Framework と VB2013... 4 1.4 オブジェクト 指 向... 6 1.5 Visual Studio 2013... 7 1.6 Visual Studio Express 2013 for Windows Desktop のインストール... 8 1.7 プログラムの 作 成 と 実 行... 13 1.7.1 プロジェクト 作 成... 13 1.7.2 コントロールの 利 用... 15 1.7.3 プロパティの 変 更... 17 1.7.4 プロジェクトの 保 存 終 了 再 読 み 込 み... 18 1.8 コンソールアプリケーション... 19 1.8.1 コンソールアプリケーションのプロジェクト... 20 1.9 サンプルプログラムのダウンロード... 23 1.10 第 1 章 のまとめと 練 習 問 題... 24 1.10.1 第 1 章 のまとめ... 24 1.10.2 練 習 問 題... 25 第 2 章 基 本 文 法... 27 2.1 変 数... 28 2.1.1 変 数 とは... 28 2.1.2 変 数 の 正 体... 29 2.1.3 変 数 名... 31 i
目 次 2.1.4 変 数 の 初 期 化... 34 2.2 データ 型... 36 2.2.1 型 の 種 類... 36 2.2.2 プール 型... 37 2.2.3 整 数 型... 38 2.2.4 浮 動 小 数 点 型... 39 2.2.5 文 字 型... 40 2.2.6 文 字 列 型... 40 2.2.7 10 進 数 型... 41 2.3 リテラル... 42 2.4 演 算 子... 45 2.4.1 算 術 演 算 子... 45 2.4.2 文 字 列 連 結 演 算 子... 46 2.4.3 代 入 演 算 子... 46 2.4.4 ビットシフト 演 算 子... 47 2.5 キャスト... 48 2.5.1 暗 黙 のキャスト... 48 2.5.2 明 示 的 なキャスト... 49 2.6 定 数... 50 2.6.1 定 数 とは... 50 2.6.2 定 数 の 宣 言... 51 2.7 配 列... 53 2.7.1 配 列 とは... 53 2.7.2 配 列 の 宣 言... 54 2.7.3 配 列 の 値 へアクセスする... 55 2.7.4 配 列 の 初 期 化... 56 2.7.5 配 列 の 推 論... 58 2.7.6 配 列 の 要 素 数 を 変 更 する... 59 2.7.7 多 次 元 配 列... 61 ii
目 次 2.8 おみくじゲームを 作 る... 63 2.8.1 プロジェクトの 作 成... 63 2.8.2 ツールボックスからコントロールを 追 加... 64 2.8.3 コードエディターでコードを 追 加 する... 68 2.8.4 コードの 解 説... 70 2.9 第 2 章 のまとめと 練 習 問 題... 73 2.9.1 第 2 章 のまとめ... 73 2.9.2 練 習 問 題... 74 第 3 章 制 御 構 文... 77 3.1 分 岐 処 理... 78 3.1.1 分 岐 処 理 とは... 78 3.1.2 If 文... 78 3.1.3 Else 文... 79 3.1.4 If 文 の 演 習... 80 3.1.5 Select Case 文... 84 3.1.6 Select Case 文 の 利 点 と 欠 点... 86 3.1.7 Select Case 文 の 演 習... 86 3.2 比 較 演 算 子... 88 3.2.1 比 較 演 算 子 の 種 類... 88 3.2.2 比 較 演 算 子 の 演 習... 89 3.3 論 理 演 算 子... 91 3.3.1 論 理 演 算 子 の 種 類... 91 3.3.2 論 理 演 算 子 の 演 習... 92 3.3.3 その 他 の 論 理 演 算 子... 94 3.4 繰 り 返 し 処 理... 95 3.4.1 繰 り 返 し 処 理 とは... 95 3.4.2 Do...Loop 文... 96 3.4.3 Do...Loop 文 の 演 習... 97 iii
目 次 3.4.4 For...Next 文... 99 3.4.5 For...Next 文 の 演 習... 100 3.4.6 For Each 文... 102 3.4.7 Continue 文... 104 3.5 プロシージャ... 105 3.5.1 プロシージャとは... 105 3.5.2 プロシージャの 宣 言... 106 3.5.3 Return 文... 108 3.5.4 パラメータ... 110 3.5.5 複 数 のパラメータ... 113 3.5.6 Function プロシージャ... 114 3.6 じゃんけんゲームを 作 る... 117 3.6.1 作 成 するじゃんけんゲーム... 117 3.6.2 プロジェクトの 作 成... 118 3.6.3 ツールボックスからコントロールを 追 加... 119 3.6.4 コードエディタでコードを 追 加 する... 122 3.6.5 コードの 解 説... 126 3.7 第 3 章 のまとめと 練 習 問 題... 131 3.7.1 第 3 章 のまとめ... 131 3.7.2 練 習 問 題... 132 第 4 章 オブジェクト 指 向... 135 4.1 クラス... 136 4.1.1 オブジェクトとは... 136 4.1.2 クラスとは... 137 4.1.3 なぜクラスが 必 要 なのか... 138 4.1.4 プログラムの 世 界 のクラス... 139 4.1.5 VB2013 でクラスを 宣 言... 140 4.2 インスタンス... 142 iv
目 次 4.2.1 インスタンスとは... 142 4.2.2 New 演 算 子... 142 4.2.3 オリジナルクラスのインスタンス 化 とアクセス... 144 4.2.4 なぜオブジェクト 指 向 で 考 えるのか... 145 4.3 コンストラクタ... 147 4.3.1 コンストラクタとは... 147 4.3.2 なぜコンストラクタというものがあるのか... 149 4.4 アクセス 修 飾 子... 152 4.4.1 アクセス 修 飾 子 の 種 類... 152 4.4.2 アクセス 修 飾 子 の 演 習... 154 4.5 クラスをオブジェクトとして 使 う... 157 4.5.1 インスタンスメンバ... 157 4.5.2 インスタンスメンバの 生 成 と 利 用... 157 4.5.3 クラスメンバ... 161 4.5.4 クラスメンバの 生 成 と 利 用... 162 4.6 カプセル 化... 165 4.6.1 カプセル 化 とは... 165 4.6.2 ブロック 変 数... 166 4.6.3 Public と Private... 168 4.7 プロパティ... 170 4.7.1 プロパティ 宣 言... 170 4.7.2 プロパティの 演 習... 171 4.7.3 読 み 出 し 専 用 書 き 込 み 専 用 プロパティ... 173 4.7.4 インデクサ... 174 4.8 名 前 空 間... 178 4.8.1 名 前 空 間 とは... 178 4.8.2.NET Framework の 名 前 空 間... 178 4.8.3 Imports... 179 4.8.4 Namespace... 183 v
目 次 4.9 タイピングゲーム... 184 4.9.1 タイピングゲームの 紹 介... 184 4.9.2 プロジェクトの 作 成... 185 4.9.3 ツールボックスからコントロールを 追 加... 185 4.9.4 出 題 問 題 を 作 る... 188 4.9.5 コードエディタでコードを 追 加 する... 189 4.9.6 コードの 解 説... 192 4.10 第 4 章 のまとめと 練 習 問 題... 200 4.10.1 第 4 章 のまとめ... 200 4.10.2 練 習 問 題... 202 第 5 章 高 度 なオブジェクト 指 向... 205 5.1 継 承... 206 5.1.1 継 承 とは... 206 5.1.2 継 承 の 宣 言... 208 5.1.3 派 生 クラスから 基 本 クラスを 利 用 する... 209 5.1.4 基 本 クラス 型 の 変 数... 212 5.1.5 暗 黙 に 継 承 される Object クラス... 214 5.2 基 本 クラスのコンストラクタ... 216 5.2.1 コンストラクタは 継 承 されない... 216 5.2.2 パラメータ 付 きコンストラクタの 呼 び 出 し... 219 5.2.3 MyBase... 222 5.2.4 NotInheritable 修 飾 子... 223 5.3 オーバーロード... 224 5.3.1 オーバーロードとは... 224 5.3.2 派 生 クラスのオーバーロード... 226 5.4 オーバーライド... 230 5.4.1 オーバーライドとは... 230 5.5 ポリモフィズム... 233 vi
目 次 5.5.1 ポリモフィズムとは... 233 5.5.2 なぜポリモフィズムが 必 要 か... 234 5.6 抽 象 クラス... 235 5.6.1 抽 象 クラスとは... 235 5.6.2 抽 象 クラスの 宣 言... 236 5.6.3 抽 象 メソッド... 237 5.6.4 抽 象 メソッドの 宣 言... 237 5.6.5 抽 象 メソッドによるポリモフィズムの 保 証... 240 5.7 インターフェイス... 244 5.7.1 多 重 継 承... 244 5.7.2 インターフェイスとは... 246 5.7.3 インターフェイスの 宣 言... 246 5.7.4 インターフェイスの 実 装... 247 5.7.5 インターフェイスの 演 習... 249 5.7.6 USB の 機 能 にインターフェイスを 使 う 理 由... 250 5.7.7 インターフェイスを 継 承 する... 253 5.8 デリゲート... 254 5.8.1 デリゲートとは... 254 5.8.2 デリゲート 宣 言... 254 5.8.3 マルチキャストデリゲート... 257 5.9 イベント... 259 5.9.1 イベントとは... 259 5.9.2 イベントの 宣 言 とイベントの 発 生... 260 5.9.3 イベントハンドラの 追 加 と 削 除... 262 5.9.4 WithEvents と Handles... 264 5.10 ダンスゲームを 作 ろう... 266 5.10.1 ダンスゲームの 紹 介... 266 5.10.2 ダンスゲームのシナリオ... 267 5.10.3 プロジェクトの 作 成... 267 vii
目 次 5.10.4 ツールボックスからコントロールを 追 加... 268 5.10.5 コードエディタでコードを 追 加 する... 271 5.10.6 音 声 ファイルと 画 像 ファイルをコピーする... 274 5.10.7 コードの 解 説... 274 5.11 第 5 章 のまとめと 練 習 問 題... 282 5.11.1 第 5 章 のまとめ... 282 5.11.2 練 習 問 題... 284 第 6 章 さまざまな 言 語 仕 様... 291 6.1 例 外 処 理... 292 6.1.1 エラー 処 理... 292 6.1.2 戻 り 値 によるエラー 処 理 の 問 題 点... 296 6.1.3 例 外 処 理 とは... 298 6.1.4 例 外 処 理 の 構 文... 299 6.1.5 例 外 処 理 の 基 本... 300 6.1.6 例 外 処 理 の 応 用... 305 6.1.7 Finally ブロック... 307 6.1.8 オリジナルの 例 外 をスローする... 308 6.2 構 造 体... 311 6.2.1 参 照 型 と 値 型... 311 6.2.2 構 造 体... 313 6.3 列 挙 体... 316 6.3.1 列 挙 体 とは... 316 6.3.2 列 挙 体 の 演 習... 316 6.4 Me... 319 6.4.1 オブジェクト 指 向 と 参 照 値... 319 6.4.2 Me... 320 6.5 拡 張 メソッド... 325 6.5.1 継 承 を 使 ってクラスを 拡 張 する... 325 viii
目 次 6.5.2 拡 張 メソッドで 機 能 を 拡 張 する... 326 6.5.3.NET Framework のクラスを 拡 張 する... 328 6.6 ルーレットゲームを 作 ろう... 329 6.6.1 ルーレットゲームの 紹 介... 329 6.6.2 ルーレットゲームのシナリオ... 330 6.6.3 プロジェクトの 作 成... 330 6.6.4 コードエディタでソースコードを 追 加 する... 331 6.6.5 画 像 ファイルをコピーする... 334 6.6.6 コードの 解 説... 334 6.7 第 6 章 のまとめと 練 習 問 題... 346 6.7.1 第 6 章 のまとめ... 346 6.7.2 練 習 問 題... 348 練 習 問 題 解 答 解 説... 351 索 引... 365 ix
1.1 Visual Basic 2013 とは Visual Basic 2013( 以 降 VB2013)は Microsoft 社 が 開 発 した オブジェクト 指 向 プログラミング 言 語 です Visual Basic の 特 徴 は アプリケーションを 作 るためのツールがすべて 用 意 されていることです こ のように 1 つの 開 発 環 境 でソースコードの 入 力 (プログラムを 記 述 したテキストをソースコードといいま す)からデバッグ(プログラムの 不 都 合 を 修 正 する 作 業 ) 実 行 までできるツールを 統 合 開 発 環 境 (IDE:Integrated Development Environment) と 呼 んでいます 発 売 当 初 の Visual Basic では プログラムの 実 行 方 式 に インタープリタ を 採 用 していました イン タープリタは プログラムの 命 令 を 1 行 単 位 で 解 釈 しながら その 都 度 CPU が 実 行 できるマシン 語 (ネイティブコード)に 変 換 して 実 行 していきます そのため どうしても 実 行 速 度 が 遅 くなるという 欠 点 がありました そこで Visual Basic 5.0 以 降 あらかじめソースコードをマシン 語 に 変 換 (このプログラムを コンパ イラ と 呼 びます)してから 実 行 する コンパイル 方 式 が 採 用 されました これにより Visual Basic で も 高 速 なプログラムが 作 れるようになりました その 後 Visual Basic は Visual Basic.NET(7.0)となり 大 きく 仕 様 を 変 えることになります 実 は 6.0 までの Visual Basic は 不 完 全 なオブジェクト 指 向 (オブジェクト 指 向 については 後 に 説 明 があり ます)と 呼 ばれていました しかし 7.0 では これまでの 言 語 仕 様 を 捨 て C++や Java といったオブジ ェクト 指 向 言 語 と 同 等 の 言 語 仕 様 に 生 まれ 変 わりました また 7.0 では 直 接 OS の 上 でプログラムを 動 作 させるのではなく 共 通 言 語 ランタイム (CLR: Common Language Runtime)という 仮 想 マシン 上 で プログラムを 動 作 させるようになりました これは インターネットが 普 及 したため セキュリティ を 向 上 させる 必 要 があったからです そして2013 年 Visual Basicのバージョンは 12 になりました その 間 に データベース 連 携 Web 連 携 クラウド 連 携 Modern UI(Windows 8) 対 応 といった 数 多 くの 機 能 を 取 り 込 み 今 なお Visual Basicは 進 化 を 続 けています 2
1.2 Microsoft.NET VB2013 は Visual Basic の 最 新 バージョンであると 共 に Microsoft.NET を 構 成 する 言 語 の 1 つでもあります Microsoft.NET とは Microsoft が 2000 年 6 月 に 発 表 したインターネット 技 術 や 戦 略 の 総 称 のこと です 当 時 はインターネットが 猛 烈 な 勢 いで 普 及 していました そのため IT 業 界 には インターネッ トに 対 応 したアプリケーションを 安 く 早 く 開 発 する という 要 求 が 多 く 出 されていました その 要 求 に Microsoft が 出 した 答 えが Microsoft.NET だったのです Microsoft.NET は インターネット 上 の 様 々なコンピューターで セキュリティを 保 障 しながら 分 散 処 理 させることを 目 的 としています そのため 異 なるコンピューター 上 に OS の 代 わりとなるプラット フォームが 必 要 でした そのプラットフォームとして 登 場 したのが.NET Framework です.NET Framework は 開 発 ツールとして クラスライブラリ を 持 ち 実 行 環 境 には 共 通 言 語 ランタ イム を 利 用 します クラスライブラリ とは 共 通 言 語 ランタイム 上 で 動 作 するプログラムを 作 るため の 部 品 の 集 まりです したがって.NET Framework のクラスライブラリを 扱 うことができるのであれば プログラム 言 語 に 制 限 はありません 現 在.NET Framework のプログラムを 開 発 できる 言 語 には Visual Basic をはじめとして Visual C++ Visual C# などがあります.NET Framework は すでに 多 数 のバージョンが 存 在 します 2002 年 に 最 初 のリリースである.NET Framework 1.0 が 発 表 されましたが その 後 2.0 3.0 4.0 を 経 て 2013 年 には.NET Framework 4.5.1 へとバージョンアップが 繰 り 返 されています 3
1.3.NET Framework と VB2013 前 述 したように VB2013 で 作 ったプログラムは.NET Framework と 呼 ばれるプラットフォームに ある 共 通 言 語 ランタイム という 仮 想 マシン 上 で 動 作 します この 共 通 言 語 ランタイム は 共 通 言 語 基 盤 (CLI [Common Language Infrastructure]) と 呼 ばれる 仕 様 に 基 づいて 実 装 されています 共 通 言 語 基 盤 は 共 通 中 間 言 語 (CIL [Common Intermediate Language])と 呼 ばれる 仕 様 に 基 づ いて 生 成 された CLI コード(Microsoft は マネージコード と 呼 んでいます)を 実 行 します そのた め CLI コードが 生 成 できればプログラム 言 語 は 問 いません Visual Basic ソースコード Visual C# ソースコード コンパイル コンパイル コンパイル 各 言 語 のソースコードは コンパイラで 同 じ 共 通 中 間 言 語 のコードに 変 換 され 共 通 言 語 ラ ンタイム 上 で 実 行 される Visual C++ ソースコード 共 通 中 間 言 語 共 通 中 間 言 語 共 通 中 間 言 語 共 通 言 語 ランタイム( 共 通 言 語 基 盤 ) このような 仕 様 により VB2013 のプログラムは 共 通 言 語 基 盤 の 仕 様 に 基 づいたプラットフォームさ え 用 意 できれば 動 作 します したがって OS も Windows である 必 要 はありません 参 考 現 在 2013 年 12 月 現 在 CLI コードを 実 行 できる 環 境 は.NET Framework 以 外 には Mono と 呼 ぶ オープンソースの 実 装 があります Mono は Linux 上 で 動 作 する.NET Framework 互 換 の 環 境 で 現 在 は Xamarin 社 が 開 発 販 売 サポート 業 務 を 行 っています 4
JIT(Just In Time)コンパイラ 共 通 言 語 ランタイム 上 で CLI コードが 動 作 するといっても 実 際 には OS 上 で 動 作 するコード(ネ イティブコード)に 変 換 (コンパイル)しなければいけません この 変 換 プログラムを JIT(Just In Time)コンパイラ といいます JIT コンパイラの 特 徴 は ネイティブコードが 必 要 になるまで コンパイルしないことと 最 初 の 変 換 時 にのみコンパイルすることです コンパイル 後 はコンパイル 済 みのコードを 再 利 用 するため CLI コードの 動 作 は ネイティブコードと 遜 色 ない 速 さで 動 作 します ガベージコレクション 共 通 言 語 ランタイムには ガベージコレクションという 機 能 があり プログラムが 確 保 したメモリー 領 域 を 自 動 的 に 開 放 してくれます C や C++といったプログラミング 言 語 では プログラムの 実 行 中 にメモリーを 確 保 して 利 用 するこ とができますが 確 保 した 領 域 を 開 放 し 忘 れると メモリーリーク という 問 題 が 発 生 します メモリ ーリークとは 解 放 し 忘 れた 領 域 で 利 用 可 能 なメモリーが 埋 め 尽 くされてしまい 他 のプログラム がメモリーを 利 用 しようとしてもできなくなる 状 態 をいいます しかし 共 通 言 語 ランタイムの 場 合 メ モリーリークがおきることはほとんどありません それはメモリー 管 理 に ガベージコレクション と いう 機 能 を 採 用 しているためです ガベージコレクションは 定 期 的 にプログラムから 参 照 されているメモリー 領 域 を 調 べ 利 用 され ていないメモリー 領 域 があれば その 領 域 を 解 放 して 再 利 用 します またプログラムが メモリー の 確 保 と 解 放 を 繰 り 返 すと 利 用 できるメモリー 範 囲 が 歯 抜 け 状 態 となり 一 度 に 大 きな 領 域 を 確 保 できなくなります そこでガベージコレクションは プログラムが 確 保 しているメモリー 領 域 を 自 動 的 に 移 動 することもあります このガベージコレクションによって プログラマはメモリー 管 理 をす る 必 要 が 無 くなり プログラムの 安 全 性 が 高 まります 5
1.4 オブジェクト 指 向 VB2013 は 完 全 な オブジェクト 指 向 言 語 です ここでいう オブジェクト とは 特 定 の 役 割 をもったプログラムのことです オブジェクト 指 向 言 語 は 多 くのオブジェクト 同 士 が 連 携 して 1 つのアプリケーションを 構 成 するという 特 徴 を 持 ちます オブジェクト 指 向 アプリケーション 画 面 オブジェクト 画 面 管 理 オブジェクト データベース 管 理 オブジェクト データ オブジェクト たとえば C 言 語 などでは 構 造 化 という 手 法 でプログラムの 構 成 を 考 えます 構 造 化 とは 複 雑 なプログラムを 簡 単 な 処 理 単 位 に 分 解 してから 組 み 合 わせるという 手 法 です しかし 構 造 化 には プログラムが 利 用 する データ と その 操 作 方 法 を まとめて 管 理 する 決 まり はありませんでした そのためデータと 処 理 は プログラマが 独 自 に 決 めたルールに 従 って 強 く 結 び 付 けられるため 他 のプログラマが 処 理 だけ を 再 利 用 するのが 難 しいという 問 題 がありました そこでオブジェクト 指 向 では データとその 操 作 方 法 を オブジェクト という 1 つの 単 位 で 管 理 する ようにしています そのため オブジェクト 単 位 での 再 利 用 がしやすくなり プログラムの 再 利 用 性 を 高 めることができるようになっています 6
1.5 Visual Studio 2013 VB2013 は Visual Studio 2013 と 呼 ばれる 統 合 開 発 環 境 から 利 用 します この Visual Studio 2013 には プログラマの 用 途 に 合 わせて 以 下 のエディションが 用 意 されています Visual Studio Ultimate 2013 Visual Studio Premium 2013 Visual Studio Professional 2013 Visual Studio Test Professional 2013 Visual Studio Team Foundation Server 2013 エディションの 最 上 位 に 位 置 するのが Ultimate です Ultimate エディションは Visual Studio の すべての 機 能 が 利 用 できます 次 の Premium エディションでは チーム 開 発 に 必 要 なツールが 統 合 され Professional エディションでは Windows Windows Phone Office Web クラウドアプリケ ーションの 作 成 と 配 置 を 簡 略 化 するツール 等 が 統 合 されています その 他 プログラムのテスト 担 当 者 向 け 製 品 である Test Professional エディションや 大 規 模 な チーム 開 発 向 けのサーバー 構 築 が 可 能 な Team Foundation と 呼 ばれるエディションもあります また Visual Studio には 学 習 用 として Visual Studio Express 2013 も 用 意 されています Express エディションは プロフェッショナル 機 能 に 制 限 はありますが 基 本 機 能 はすべて 利 用 でき る 無 償 で 提 供 されるエディションです そこで 本 書 では Visual Basic でデスクトップアプリケーションの 開 発 が 可 能 な Visual Studio Express 2013 for Windows Desktop を 使 用 することにします また Visual Studio Express 2013 for Windows Desktop を 使 用 する 関 係 で サポートされる OS は Windows 7 SP1 以 降 Windows 8/8.1 以 降 Windows Server 2008 R2 SP1 以 降 Windows Server 2012/R2 以 降 になるので 注 意 してください 7
1.6 Visual Studio Express 2013 for Windows Desktop のインストール それでは Visual Studio Express 2013 for Windows Desktop をインストールしてみましょう ここで は OS に Windows 8.1 ブラウザに Internet Explorer 11 を 使 ったインストール 方 法 を 紹 介 します インストール 画 面 やインストール 方 法 は 他 の OS やブラウザでもほとんど 同 じです Visual Studio Express 2013 for Windows Desktop をインストールするには まず 以 下 のサイトへ アクセスします Visual Studio Express 2013 for Windows Desktop 日 本 語 版 http://www.microsoft.com/ja-jp/download/details.aspx?id=40787 上 記 のサイトにアクセスすると Download Center - Microsoft Visual Studio Express 2013 for Windows Desktop ページが 開 くの で [ダウンロード]ボタンをクリックします [ダウンロード]をクリック 注 意 ダウンロード 先 のアドレスやダウンロード 方 法 は 変 更 される 場 合 があります 目 的 のページが 見 つから ない 場 合 は 検 索 サイトを 使 い Microsoft Visual Studio Express 2013 for Windows Desktop で 検 索 して ください 8
ダウンロードするプログラムを 選 んでく ださい ページに 切 り 替 わるので wdexpress_full.exe をクリックしてチェッ クを 入 れ 右 下 にある[ 次 へ]ボタンをクリ ックします [wdexpress_full.exe]をチェッククリック [ 次 へ]をクリック 複 数 の PC にインストールする 場 合 は VS2013_RTM_DskExp_JPN.iso をダウ ンロードして DVD-R に 焼 いたりマウ ントしたりすることで 繰 り 返 しインスト ールできます 注 意 www.microsoft.com からのポップアップがブロックされました ダイアログが 表 示 された 場 合 は [このサ イトのオプション]ドロップダウンボタンをクリックして 常 に 許 可 を 選 択 してください download.microsoft.com から wdexpress_full.exe (0.99MB) を 実 行 また は 保 存 しますか? ダイアログが 表 示 さ れるので [ 実 行 ]ボタンをクリックします [ 実 行 ]をクリック 注 意 ユーザーアカウント 制 御 ダイアログが 表 示 された 場 合 は [はい]ボタンをクリックしてください 9
インストーラーが 起 動 するので ライセンス 条 項 およ びプライバシー ポリシーに 同 意 します をクリックして チェックを 入 れ 現 れた[インストール]ボタンをクリックし ます 1 ライセンス 条 項 およびプライバシー ポリシーに 同 意 します をチェック 注 意 デフォルトでは C:\Program Files\Microsoft Visual Studio 12.0 にインストールされます C ドライブに 3.23GB 以 上 の 空 き 領 域 がない 場 合 は [...]ボタンを クリックして 他 のドライブとフォルダーを 指 定 してくださ い 2[インストール]をクリック [ ]をクリック インストールが 完 了 すると セットアップが 正 常 に 完 了 しました と 表 示 されるので [ ](クローズ)ボタンを クリックして 閉 じます [ ]をクリック 10
Visual Studio Express 2013 for Windows Desktop を 起 動 す る に は Windows 8/8.1 では スタート 画 面 でア プリ 一 覧 を 表 示 して Visual Studio 2013 [VS Express 2013 ]をクリック [VS Express 2013 ]をクリック グループの[VS Express 2013 ]タイル をクリックします Windows 7 などでは スタートメニュー に 登 録 さ れ た VS Express for Desktop をクリックします 注 意 Visual Studio Express 2013 for Windows Desktop を 起 動 すると 互 換 性 に 問 題 があるというメッセージが 表 示 される 場 合 があります その 場 合 は Update を 促 されるので 指 示 に 従 って 更 新 プログラムをインス トールしてください 最 初 の 起 動 時 に サインインを 求 められますが 後 で 行 う リンクをクリックしてダイアログを 閉 じてくださ い 後 で 行 う をクリック う をクリック 注 意 継 続 利 用 する 場 合 は 30 日 以 内 に Microsoft アカウン トでサインインする 必 要 があります Microsoft アカウン トの 登 録 を 済 ませたら Visual Studio Express 2013 for Windows Desktop を 起 動 して メニューから ヘルプ 製 品 の 登 録 を 選 択 してダイアログを 表 示 させ [サ インイン]ボタンをクリックし Microsoft アカウントでサイ ンインしてください 11
Visual Studio Express 2013 for Windows Desktop が 起 動 します 最 初 に 表 示 されている 画 面 左 側 スター トページ タブの 部 分 を スタートページ と 呼 びます Visual Studio Express 2013 for Windows Desktop を 起 動 すると 表 示 される ので 覚 えておきましょう Visual Studio Express 2013 for Windows Desktop をクローズする 場 合 は 一 番 右 上 にある[ ]ボタンをクリックするか メニューから ファイル 終 了 を 選 択 します 12
1.7 プログラムの 作 成 と 実 行 Visual Studio Express 2013 for Windows Desktop が 起 動 できたら 簡 単 なプログラムを 作 ってみま しょう 1.7.1 プロジェクト 作 成 まず Window アプリケーションのプロジェクトを 作 成 します プロジェクトとは ウィンドウ 画 面 のデザイン 画 像 データ ソースコードなど プログラムを 構 成 す るさまざまな 要 素 をまとめて 管 理 する 単 位 です さらにその 上 には ソリューション という 単 位 が 存 在 し 複 数 のプロジェクトで 構 成 されたアプリケーションを 開 発 することもできます [ファイル] [ 新 しいプロジェクト] を 選 択 [ファイル] [ 新 しいプロジェクト] を 選 択 Visual Studio Express 2013 for Windows Desktop のメニューから [ファイル] [ 新 し いプロジェクト] を 選 択 します 13
2 Windows フォームアプリケーション を 選 択 1 テンプレート Visual Basic を 選 択 3[OK]をクリック 新 しいプロジェクト ダイアログボックス が 表 示 されます 左 側 の テンプレート Visual Basic を 選 択 し 中 央 の 領 域 から Windows フォ ームアプリケーション を 選 択 します プロ ジェクト 名 は 変 更 することもできますが 今 回 は 名 前 ソリューション 名 共 に [WindowsApplication1]のままにして [OK] ボタンをクリックします Windows アプリケーションを 作 成 するた めの 画 面 に 変 化 します Form ソリューション エクスプローラー 作 業 領 域 プロパティ ウィンドウ ソリューション エクスプローラー に 追 加 された Form1.vb というファイルは 新 しく 作 成 された Form (フォーム)です この Form が 実 行 時 にウィンドウとして 表 示 されます Form は 作 業 領 域 が[デザイン]になっているとき 変 更 することができます この 状 態 で ボタン や ラベル など アプリケーションの 部 品 (コントロール)を Form に 追 加 することで プログラムを 構 築 し ていきます 右 下 にある プロパティ ウィンドウ は オブジェクトのプロパティを 一 覧 表 示 して 各 プロパティに 設 定 されている プロパティ 値 を 表 示 します また 値 を 編 集 することもできます プロパティ とは オブジェクトの 属 性 を 表 します VB2013 では Form やボタンのような 機 能 をもったものを オブジェ クト と 考 え これらオブジェクトには 表 示 する 文 字 列 や 大 きさ 色 などの 属 性 があり その 属 性 を 変 更 することで 表 示 する 文 字 列 や 大 きさなどを 変 更 します 14
1.7.2 コントロールの 利 用 2 ツールボックス が 現 れる 1[ツールボックス]をクリック この 状 態 でプログラムを 実 行 しても Form と 同 じウィンドウが 表 示 されるだけです そこで Form の 上 に コントロール を 追 加 して 文 字 を 表 示 させてみましょう コントロール とは ウィンドウを 構 成 する 部 品 のことです コントロールを Form に 追 加 するには ツ ールボックス を 使 います ツールボックスを 表 示 させるには 作 業 領 域 の 左 端 にある[ツールボックス]をクリック するか もしくは メニューの [ 表 示 ] [ツ ールボックス] を 選 択 します ツールボックスが 非 表 示 の 場 合 は メニューから 表 示 ツールボックス を 選 択 すると 表 示 さ れます 2 作 業 領 域 の 横 に 配 置 1[ 自 動 的 に 隠 す]をクリック 3[コモンコントロール]をクリック コントロール]をクリック 4[Label]をクリック ツールボックスを 表 示 したら 自 動 的 に 隠 す ボタンをクリックすると ツールボッ クスが 作 業 領 域 の 横 に 配 置 されます ここで コモン コントロール をクリック して 展 開 し Label をクリックします この Label(ラベル) が コントロールで す Form の 適 当 な 場 所 でクリックすると Form に Label1 という 表 示 が 現 れます 15
Label1 の 位 置 は マウスでドラッグする ことで 移 動 することができます Form の 中 央 に 移 動 させます Form の 中 央 に 移 動 1[ 開 始 ]をクリック 2ウィンドウが 表 示 された 2ウィンドウが 表 示 された プログラムを 起 動 してみましょう プログ ラムを 起 動 するには ツールバーの[ 開 始 ]ボタンをクリックします [ 開 始 ]ボタンをクリックすると コンパ イルが 自 動 的 に 行 われ 実 行 ファイ ルが 作 成 されます この 実 行 ファイ ルを 作 成 する 作 業 を ビルド と 呼 び ます プログラムが 起 動 すると 画 面 中 央 に Label1 と 表 示 されたウィンドウが 表 示 されます このプログラムを 終 了 させるには 表 示 されたウィンドウの[ ]ボタンをクリックします 16
1.7.3 プロパティの 変 更 ウィンドウに 文 字 を 表 示 させるプログラムは 完 成 しましたが 表 示 する 文 字 が Label1 では 面 白 くあ りません そこで Label1 に 表 示 される 文 字 を 変 更 してみましょう Label コントロールの 表 示 文 字 列 を 保 持 しているのが Text プロパティです この Text プロパテ ィの 内 容 を 変 更 するには プロパティウィンドウを 使 います まず Form1 の Label1 をクリックします すると 枠 が 表 示 されます この 枠 のある 状 態 を アクティ ブ といいます 1 はじめての BV と 入 力 2 はじめての BV に 変 わる 2 はじめての BV に 変 わる 次 に プロパティウィンドウを 見 ます プロ パティウィンドウは アクティブなコントロー ルのプロパティを 表 示 するので Label1 の プロパティが 表 示 されています このプロパティの 中 から Text を 探 すと 右 横 に Label1 と 表 示 されています ここを はじめてのBV と 上 書 き 入 力 して 変 更 したら[Enter]キーを 押 します すると Form 上 の Label1 という 表 示 も はじめての VB に 変 わります Label コントロールをドラッグして 位 置 を 調 整 したら[ 開 始 ]ボタンをクリックして 実 行 します 注 意 プログラムを 終 了 するには [ ]ボタンをクリックします 17
1.7.4 プロジェクトの 保 存 終 了 再 読 み 込 み プログラムの 作 成 をやめる 場 合 は プロ ジ ェ ク ト を 保 存 し ま す Visual Studio 1 ファイル をクリック Express 2013 for Windows Desktop を 終 了 すれば プロジェクトは 自 動 的 に 保 存 されま す Visual Studio Express 2013 for Windows 2 終 了 をクリック Desktop を 終 了 させるには [ ]クローズボ タンをクリックするか メニューから ファイ ル 終 了 を 選 択 します プロジェクトが 存 在 する 場 合 に 終 了 しよう とすると 変 更 があったファイルを 一 覧 表 示 するダイアログが 表 示 される 場 合 があります その 場 合 は[はい]をクリックすると ファイルは 上 書 き 保 存 されます プログラムがまだ 動 作 している 状 態 で 終 了 しようとした 場 合 は [デバックを 中 止 しますか?]というメ ッセージボックスが 表 示 されます その 場 合 [はい]をクリックすると プログラムを 終 了 して Visual Studio Express 2013 for Windows Desktop も 終 了 します 再 び Visual Studio Express 2013 for Windows Desktop を 起 動 すると スタートペ ージの 最 近 使 用 したファイル の 中 に 保 最 近 使 用 したファイル に プロ 存 したプロジェクトの 名 前 が 表 示 されていま ジェクトが 表 示 されている す 開 きたいプロジェクトをクリックすれば 作 業 を 再 開 できます 18
1.8 コンソールアプリケーション VB2013 を 使 えば プログラムを 入 力 しなくても 簡 単 なウィンドウを 表 示 するプログラムが 作 成 でき ることはわかりました それでは 早 速 Visual Basic の 文 法 を 勉 強 しましょう と 言 いたいところですが ウィンドウを 表 示 するプログラムは 実 は 簡 単 に 見 えてかなり 複 雑 なコードが 自 動 生 成 されて 動 いて います そのためウィンドウを 表 示 するプログラムで Visual Basic の 勉 強 をはじめると 習 っていない 概 念 やコードが 次 々に 出 てきてしまい 文 法 に 集 中 できません そこで 文 法 を 学 ぶためにコンソールアプリケーションの 作 り 方 も 知 っておくと 文 法 のチェックが やりやすくなります コンソールアプリケーション コンソール とは Windows のコマンドプロンプト 画 面 を 指 します Windows 8.1 の 場 合 スタート ボタンで 右 クリックして[コマンド プロンプト]を 選 択 すると 表 示 することができます Windows 7 などでは スタート メニューの アクセサ リ の 中 に コマンド プロンプト という 項 目 があるので 選 択 すると コマンドプロンプトが 現 れます 19
1.8.1 コンソールアプリケーションのプロジェクト コンソールアプリケーションを 作 るには コンソールアプリケーション 専 用 のプロジェクトを 作 ること から 始 めます Visual Studio Express 2013 for Windows Desktop を 起 動 したら メニュー から ファイル 新 しいプロジェクト を 2 コンソール アプリケーション を 選 択 選 択 します 1 テンプレート Visual Basic を 選 択 新 しいプロジェクト ダイアログボックス が 表 示 されたら コンソール アプリケー 3[OK]をクリック ション を 選 択 します プロジェクト 名 は ConsoleApplication1 のままでかまいません [OK] ボタンを 押 すと 新 たなプロジェク トが 作 成 されます Windows アプリケーションと 違 い Form は 表 示 されません その 代 わり ソースコ ードを 入 力 するエディターが 作 業 領 域 に 表 示 されます [ ]をクリック エディター エディター ツールボックスは 使 用 しないので [ ]ボタンで 閉 じてかまいません エディターは プログラムコードをキー ボードから 入 力 するために 使 用 します 20
す 表 示 されるエディター 画 面 には VB2013 によって 自 動 的 に 生 成 されたコードが 表 示 されていま Module Module1 Sub Main() End Sub End Module Sub Main と End Sub の 間 に 以 下 のコードを 追 加 します Module Module1 Sub Main() Console.WriteLine("はじめてのVB") End Sub End Module 上 記 から スペースの 関 係 で 改 行 だけの 行 は 削 除 します エディターでコードが 見 にくい 場 合 は 改 行 を 入 れてください 注 意 はじめてのVB 以 外 のコードは 全 て 半 角 文 字 で 入 力 します 入 力 を 始 めると カーソルの 下 に 入 力 候 補 の 一 覧 が 現 れます これは インテリセンス と 呼 ばれる 入 力 補 完 機 能 です この 一 覧 の 中 から 選 択 し て 入 力 することも 可 能 ですが 慣 れないと 間 違 いやすいので 今 回 は 使 用 しません 全 てキーボードから 入 力 してください Console.WriteLine というコードは コマンドプロンプトに 一 行 文 字 列 を 表 示 させる 命 令 です この ような 命 令 を メソッド と 言 います プログラムをビルドして 実 行 してみましょう コンソールアプリケーションのビルドと 実 行 は [Ctrl]キ ーを 押 しながら[F5]キーを 押 します 21
[ 開 始 ]ボタンでもビルドと 実 行 を 行 うことはできますが 表 示 されたコマンドプロンプトはすぐに 閉 じ てしまいます コマンドプロンプトが 起 動 し はじめての VB と 表 示 されます また その 下 に 続 行 するには 何 かキー を 押 してください... と 表 示 され 入 力 待 ちの 状 態 になります この 表 示 と 入 力 待 ちは [Ctrl]+[F5]キー を 押 して 実 行 したとき 自 動 的 に 挿 入 される 処 理 で プログラムの 処 理 とは 関 係 ありませ ん プログラムを 終 了 するには 何 かキーを 押 します すると コマンドプロンプトのウィンドウが 閉 じます プロジェクト 全 体 を 終 了 する 方 法 は Windows アプリケーションのときと 同 じです Visual Studio Express 2013 for Windows Desktop の[ ]クローズボタンをクリックするか メニューで 終 了 します これが コンソールアプリケーションの 作 り 方 です Windows アプリケーションと 見 た 目 は 違 います が どちらも 同 じ Visual Basic のプログラムです この2つのプロジェクトを 使 い 分 けて 効 率 よく VB2013 を 学 習 していくことにしましょう 22
1.9 サンプルプログラムのダウンロード う 最 後 に 第 2 章 以 降 で 利 用 するサンプルコードを 以 下 の Web サイトからダウンロードしておきましょ http://www.scc-kk.co.jp/scc-books/support/b-374/support.html ダウンロードするファイルは Projects.zip です ダウンロード 先 は 適 当 なフォルダーでかまいませ ん ダウンロードに 成 功 したら 解 凍 しておきます 解 凍 先 もどこでもかまいません たとえば C ドライブのルートに MyVB フォルダーを 新 規 作 成 してそこに 解 凍 する 場 合 は Projects.zip をダブルクリックして 開 き 表 示 される Projects フォルダーを MyVB フォルダーにコピー するだけで 解 凍 されます 1 1 表 示 タブをクリック 2 ファイル をオン 2 ファイル 名 拡 張 子 をオン 注 意 Windows のデフォルト 仕 様 では ファイルの 拡 張 子 は 表 示 されません プログラム 作 成 において 拡 張 子 が 表 示 されないのは 不 便 なので 表 示 す るように 変 更 しておきましょう Windows 8/8.1 の 場 合 は エクスプロー ラーの 表 示 タブを 選 択 すると 表 示 / 非 表 示 グループに ファイル 名 拡 張 子 のチェックボックスがあるので クリックして チェックします Windows 7 などの 場 合 は エクスプロー ラーを 開 きコマンドバーにある[ 整 理 ]メニ ューから[フォルダーと 検 索 のオプション] を 選 択 します フォルダオプションダイア ログが 表 示 されるので [ 表 示 ]タブを 選 択 し[ 登 録 されている 拡 張 子 は 表 示 しない] のチェックを 外 します 23
1.10 1 第 1 章 のまとめと 練 習 問 題 第 1 章 で 説 明 してきた 内 容 のまとめと 正 しく 理 解 しているか 簡 単 な 三 択 のテストをしてみましょう 1.10.1 第 1 章 のまとめ 1.VB2013 は Microsoft 社 が 開 発 した オブジェクト 指 向 プログラミング 言 語 です 2.コード 入 力 から 実 行 デバッグまでできるツールを 統 合 開 発 環 境 といいます 3.VB2013 の 実 行 ファイルは 共 通 言 語 ランタイム (CLR[Common Language Runtime])で 動 作 しま す 4. 共 通 言 語 ランタイム は 共 通 言 語 基 盤 (CLI [Common Language Infrastructure]) に 基 づいて 実 装 されています 5. 共 通 言 語 基 盤 は 共 通 中 間 言 語 (CIL [Common Intermediate Language])に 基 づいて 生 成 され た CLI コード を 実 行 します 6.オブジェクト 指 向 は オブジェクト 同 士 が 連 携 してアプリケーションを 構 成 します 7.オブジェクト 指 向 は データとその 操 作 方 法 を オブジェクト 単 位 で 管 理 します 8.VB2013 でアプリケーションを 作 る 場 合 最 初 に プロジェクト を 作 成 します 9.ウィンドウを 表 示 するプログラムは Windows フォーム アプリケーション のプロジェクトを 作 りま す 10.VB2013 では ウィンドウは Form で 作 ります 11.ウィンドウに 文 字 を 表 示 するには Label コントロールを 利 用 します 12.Form や Label などのオブジェクトには 表 示 する 文 字 や 形 を 決 める プロパティ という 属 性 があり ます 13.プロパティは VB2013 のプロパティウィンドウで 編 集 できます 14.コマンドプロンプトで 動 作 するプログラムは コンソール アプリケーション のプロジェクトを 作 成 し ます 24
1.10.2 練 習 問 題 問 題 は 三 択 です 解 答 解 説 は 第 6 章 の 次 にあります ぜひトライして 頭 の 中 を 整 理 しましょう 問 題 1 Visual Studio Express 2013 for Windows Desktop のように コードの 入 力 から デバック 実 行 まで を 行 える 開 発 環 境 を なんと 言 いますか 1. 統 合 データベース 2. 統 合 開 発 環 境 3. 統 合 開 発 言 語 問 題 2 プログラムの 命 令 を 1 行 単 位 で 解 釈 しながら 実 行 していく 方 式 は 次 のうちどれですか 1. インターネット 2. インターポール 3. インタープリタ 問 題 3 プログラムの 命 令 をあらかじめマシン 語 に 変 換 しておいて 実 行 する 方 式 は 次 のうちどれですか 1. コンパイル 2. コマンドライン 3. ランタイム 問 題 4 Microsoft.NET で OS の 代 わりとなるプラットフォームは 次 のうちどれですか 1. Java 2. NET Framework 3. Windows 25
問 題 5.NET Framework の 共 通 言 語 ランタイムは どの 仕 様 に 基 づいて 実 装 されていますか 1. 共 通 中 間 言 語 2. CLI コード 3. 共 通 言 語 基 盤 問 題 6 VB2013 で Windows アプリケーションを 作 るとき Form に 追 加 することができる 部 品 オブジェクトを なんと 呼 びますか 1. コンシューマ 2. コントロール 3. フレーム 問 題 7 VB2013 の Form や Label などのオブジェクトにある 属 性 は 次 のうちどれに 相 当 しますか 1. プロパティ 2. プロファイル 3. プロジェクト 26