フレッシュマン企画 連載
簡単!Visual Studio 2008入門

第3回 .NETのコードを理解するための基礎知識

デジタルアドバンテージ 一色 政彦
2009/05/27
Page1 Page2 Page3

 本連載は、「簡単!Visual Studio 2005入門」「簡単!Visual Studio .NET入門」を現在の最新環境に合わせて改訂したものです。

 前回は、Visual Studio 2008(以降、VS 2008)の画面内容と、プロジェクトの構成内容について解説した。今回と次回は引き続き、第1回のプロジェクトの新規作成で生成されたWindowsアプリケーションのソース・コードの内容について理解を深める。

 ソース・コードを理解するには、フォーム・デザイナでの多くのデザイン(=自動コーディング)作業により自動生成されるコードが大量かつ複雑になってから行うよりも、コード量が最も少ない最初(=ひな型)のWindowsフォームのときに行う方が楽である。

 前々回(第1回)で生成したファイルはソリューション・エクスプローラで確認できる。これを見ると、Windowsフォーム・アプリケーションを作成したときに(主に)次の3つのソース・ファイルが生成されることが分かる(「.cs」拡張子はC#言語の場合。VBでは「.vb」となる)。

 なお、上記の各ファイル名それぞれのリンクで右クリックして[対象をファイルに保存]を実行すれば、ファイルをダウンロードできる。

 それぞれのファイルの意味については、第1回でも簡単に説明したが、次の画面にもう一度まとめておこう。

[ソリューション エクスプローラ]で参照できる3つのソース・ファイル
Windowsフォーム・アプリケーションを作成したときに、(主に)3つのソース・ファイルが生成される(ソース・ファイルの拡張子は、C#言語の場合は「.CS」、VBでは「.vb」となる)。の.resxファイルは、Windowsフォームの何らかの変更を行った場合に追加される。
  Form.cs。Windowsフォームを含むソース・ファイル。コーディングでは、このソース・ファイルを編集する。Windowsフォームは、Windowsフォーム・デザイナ画面で編集できる。コーディングでは、このソース・ファイルを編集する。
  Form.Designer.cs。Windowsフォームのデザイン部分を定義するソース・ファイル。Windowsフォームのレイアウトやコントロールの位置などの情報がコードとして格納されている。このファイルはIDEが管理するので、開発者が直接編集することは基本的にない。
  Form.resx。Windowsフォームのリソース(=画像や文字列などのデータ)が保存されているファイル。このファイルはIDEがするので、開発者が直接編集することは基本的にない。
  Program.csソース・ファイル。VBの場合、アイコンはになる。コーディングでは、このソース・ファイルを編集する。
  [すべてのファイルを表示]ボタン(このボタンはONとOFFの状態を持つ)。コーディング時に参照が不要な項目は、デフォルトで非表示になっているが、このボタンをONにするとプロジェクトに含まれるすべてのファイルが表示できる。画面の例では、 の項目は、C#ではデフォルトでは表示になっているが、VBではデフォルトで非表示の隠しファイルになる。従ってVBでこれを表示するには、[すべてのファイルを表示]ボタンをONにすればよい。

 実際にこれらのソース・コードの内容を見ていく前に、その前提知識について述べておきたい。

ひな型コードを理解するのに必要な世界観

 .NETの標準開発言語であるC#やVisual Basic 2008(以降、VB)は、「オブジェクト指向言語」と呼ばれる。

 オブジェクト指向言語のベースとなっている「オブジェクト指向」とは、現実世界を模倣して構築された世界観(=物事の見方や捉え方、考え方)のことである。例えば現実世界のショッピングでは、「お客が店員にお金を渡して商品を受け取る」ということが行われるが、この行為の世界観では、「お客」「店員」「お金」「商品」といった<人物>や<物体>(=オブジェクト)が分かれて存在し、それらが「渡す」「受け取る」といった<やり取り>を行うことで、1つの行為(=世界)が成立する。

現実のショッピング行為の世界観
例えば現実世界のショッピングでは、「お客が店員にお金を渡して商品を受け取る」ということが行われるが、この行為には「お客」「店員」「お金」「商品」といった<人物>や<物体>(=オブジェクト)が分かれて存在し、それらが「渡す」「受け取る」といった<やり取り>を行うことで、1つの行為(=世界)が成立する。

 つまりオブジェクト指向とは、分かれて存在する<オブジェクト>同士が<やり取り>を行うことで、何らかの行為が実現するという世界観を、プログラミングの世界に持ち込むことを指向する(=目指す)ことである。そして実際に、このオブジェクト指向の世界観を言語仕様に取り込んだものが、オブジェクト指向言語である(具体的なオブジェクト指向言語の内容については、「オブジェクト指向プログラミング超入門」を一読してほしい)。

 よって、C#言語で生成されたひな型のソース・コードを正しく理解するには、このオブジェクト指向の世界観を身に付けておく必要がある。そこで本稿では、C#やVBのオブジェクト指向の世界観を示しながら、ひな型コードの解説を行っていく。

オブジェクト指向の世界を構築する2つの要素

 オブジェクト指向の世界観を身に付ける最初のポイントは、C#やVBのオブジェクト指向の世界が次の2つの要素で成り立っていることを意識することだ。

  1. オブジェクト(=実体)
  2. オブジェクトを整理・分類するための境界線

 「オブジェクト」指向と呼ぶくらいなので、すべてをオブジェクトのみで構成すればいいように思うかもしれないが、実際にはそのオブジェクトを整理・分類するための仕組みが必要である。この理由は現実世界を考えると分かりやすい。

 例えば、自社に何者かが訪ねてきて「○○ソフト会社の山田です」と発言したとしよう。このとき、その人が「山田」という人物(=オブジェクト)で、しかも「○○ソフト会社」という組織(=オブジェクトを分類するための境界線)に所属していることが分かるので、ソフトウェア開発をする人なのだとすぐに察しが付く。しかし「山田です」だけでは、「△△印刷会社の山田」なのか、「□□鮮魚店の山田」なのか、どういう素性の人なのか分からず、応対に困ってしまうだろう。

現実世界を構築する2つの要素
オブジェクト指向の世界は、「オブジェクト(=実体)」と「オブジェクトを整理・分類するための境界線」という2つの要素で成り立っている。この2つの要素が、オブジェクトを整理・分類するためには必要である。

 プログラミング(C#)の世界では、「オブジェクト」は「クラス(class)」として、「オブジェクトを分類するための境界線」は「名前空間(namespace)」として、それぞれ定義されている。よって、ひな型コードの内容を理解するためには、そのソース・コードが「クラス」と「名前空間」で成り立っていることをまず意識しなければならない。

オブジェクト指向の世界を構築する2つの要素
プログラミング(C#)の世界では、「オブジェクト」は「クラス(class)」として、「オブジェクトを分類するための境界線」は「名前空間(namespace)」として定義されている。

 それでは、実際にひな型のソース・コードを参照して「名前空間」と「クラス」を確かめてみよう。


 INDEX
  [フレッシュマン企画 連載]簡単!Visual Studio 2008入門
  第3回 .NETのコードを理解するための基礎知識
  1.オブジェクト指向の世界観
    2.ひな型コードの名前空間とクラス
    3.アプリケーションのエントリ・ポイント

インデックス・ページヘ  「簡単!Visual Studio 2008入門」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間