Andrew W. Troelsen
Intertech Training
August 2004
日本語版最終更新日 2004 年 10 月 18 日
概要 : ここでは、Microsoft Visual C# 2005 Express Edition の統合開発環境 (IDE) を使用して C# 言語によるプログラミングの基本について説明します。さまざまなプロジェクト例を通じて、C# プログラミング言語のいくつかの側面と、.NET プラットフォームの主要な概念に触れることができます。
Code.msi サンプル ファイルのダウンロード
メモ この記事は、Visual C# 2005 Express Edition を使用して C# プログラミング言語や .NET プラットフォームについて学びたいと考えるホビイスト、学生、プログラミング愛好家を対象としています。C# の使用経験は問いませんが、プログラミングの経験があると役に立ちます。
適用対象 :
Microsoft Visual C# 2005 Express Edition
目次
Visual C# 2005 Express Edition とは
Visual C# 2005 Express の高レベルの機能
Visual C# 2005 Express のプロジェクト
アセンブリ、名前空間、型
理論から実践へ : 外部の型の使用
C# Express による例外処理
プログラムによる例外処理
C# クラス ライブラリ プロジェクトの作成
Windows フォーム アプリケーションの作成
今後の学習 : Visual C# 2005 Express スタータ キット
まとめ
Visual C# 2005 Express Edition とは
.NET アプリケーションを作成するには、さまざまな方法があります。歴戦の開発者なら、シンプルなテキスト エディタ (メモ帳など) と C# コマンド ライン コンパイラ (csc.exe) を使用して、コマンド ラインで .NET プログラムを作成することも可能です。.NET ソフトウェア開発キット (SDK) は Microsoft の Web サイト (http://www.microsoft.com/japan/msdn/netframework/) から無償でダウンロードできます。ただし、SDK にはコード生成ユーティリティ (ウィザード) やグラフィカル デバッガ、IntelliSense 機能などが含まれていないため、かなりの手作業が必要になります。
多くの .NET 開発者は、コマンド ラインでのソフトウェア開発に伴う負担を軽減するために、Microsoft Visual Studio .NET 2003 (http://www.microsoft.com/japan/msdn/vstudio/) などのビジュアル ツールを利用しています。Microsoft Visual Studio .NET 2003 は、完全な機能を備えた IDE です。この製品は非常に強力ですが、Enterprise Edition は高価なため、ホビイストや学生にはなかなか手が出せません。また、実のところ、プロのソフトウェア エンジニアでない限り、Visual Studio .NET 2003 に含まれている膨大な量のオプションは、学習の助けになるよりはむしろ混乱のもとになることの方が多いと言えます。
この Visual Studio .NET 2003 とメモ帳の中間に位置するのが、Microsoft の最新の IDE、Visual C# 2005 Express Edition です。この記事の執筆の時点では、Visual C# 2005 Express Edition のベータ バージョンが公開されており、Web (http://www.microsoft.com/japan/msdn/vstudio/2005/express/) から無償でダウンロードできます。Visual C# 2005 Express はサイズも比較的小さいため、56K モデム接続でも楽に入手できます。
Visual C# 2005 Express は、Express ファミリ製品の中の 1 つです。具体的には、次のような Express Edition 製品が用意されています。
-
Visual Web Developer 2005 Express: 動的な Web サイトや XML Web サービスを ASP.NET を使用して作成するための軽量なツールです。
-
Visual Basic 2005 Express: Windows アプリケーションの作成方法を学ぶプログラミング初心者に最適な、合理化されたプログラミング ツールです。
-
Visual C# 2005 Express、Visual C++ 2005 Express、および Visual J# 2005 Express: コンピュータ サイエンスの基礎を学びたいと考える学生や先進エンド ユーザー向けのプログラミング ツールです。
-
SQL Server 2005 Express: ホビイスト、先進エンド ユーザー、学生の開発者などを対象とする、入門レベルのデータベース管理システムです。
要するに、Express Edition ファミリの製品は、ホビイスト、学生、および .NET プラットフォーム初心者の入門用に最適な製品であると言えます。該当すると思われる方は、早速 Visual C# 2005 Express をダウンロードおよびインストールして、この記事を読み進めてください。
Visual C# 2005 Express の高レベルの機能
Visual C# 2005 Express には、.NET 開発環境に求められる主な機能の多くが揃っています。たとえば、次のような機能があります。
- ANSI 準拠の C# 2.0 コンパイラ
- 完全な機能を備えた統合デバッガ
- 高度な IntelliSense 機能
- Windows フォーム開発のデザイン時サポート
- ローカル データベース アクセスのサポート
- 高度に単純化された XML Web サービスへのアクセス
一方、Visual C# 2005 Express に含まれていない機能についても理解しておく必要があります。具体的に言うと、以下の機能は直接にはサポートされていません。
- ASP.NET Web アプリケーション
- XML Web サービスの開発
- モバイル アプリケーションの開発 (携帯電話、PDA、Windows CE デバイス)
- リモート データベース接続ツール
以降では、Visual C# 2005 Express を使用して C# と .NET プラットフォームの概要を紹介します。ただし、この記事は、C# プログラミング言語、.NET プラットフォーム、または Visual C# 2005 Express IDE の包括的な手引書となるものではありません。記事の最後には、今後の学習のために .NET Web サイトへのリンクを紹介します。
Visual C# 2005 Express のプロジェクト
Visual C# 2005 Express のプロジェクトは、任意の数の C# ソース コード ファイル (拡張子は *.cs)、サポートするコンテンツ ファイル (XML ドキュメント、アプリケーション アイコン、イメージなど)、および参照先の "アセンブリ" (この後で説明します) によって構成されています。Visual C# 2005 Express には、核となるプロジェクト タイプがいくつか用意されているため (次の表を参照)、特定のタイプのプロジェクト (Windows フォーム アプリケーションやコンソール アプリケーションなど) について同じスケルトン コードを作成する必要はありません。
| Visual C# 2005 Express のプロジェクト タイプ | 定義 |
| Windows アプリケーション | 新しい Windows フォーム プロジェクトを作成します。
このタイプのプロジェクトは、Microsoft Word などのデスクトップ アプリケーションを作成するときに使用します。
|
| クラス ライブラリ | このプロジェクトは、再利用可能なコード ライブラリ (*.dll ファイルとしてパッケージ化される) を作成するときに使用します。作成したコード ライブラリは、.NET アプリケーションの間で再利用できます。 |
| コンソール アプリケーション | このプロジェクトは、コンソール アプリケーションを作成するときに使用します。
このタイプのアプリケーションは、グラフィカル ユーザー インターフェイス (GUI) を作成する必要がないため、C# などの新しいプログラミング言語を学ぶときに大変便利です。
|
| 空のプロジェクト | このオプションを使用すると、初期 C# コード ファイルを一切含まないプロジェクトが生成されます。[プロジェクト] メニューの [既存項目の追加] を使用して既存のファイルを新しいプロジェクトにインポートする場合などに便利です。 |
それでは、実際に C# を使用してみましょう。まず、MyCSharpExpressApp という名前の新しいコンソール アプリケーションを作成します。[ファイル] メニューの [新規作成] をクリックし、[プロジェクト] をクリックして、[新しいプロジェクト] ダイアログ ボックスを開きます (図 1 を参照)。
図 1. 新規コンソール アプリケーション プロジェクトの作成
この時点で、[ファイル] メニューの [すべてを保存] をクリックして、プロジェクトを保存することもできます。表示されるダイアログ ボックスで、保存する場所を指定します (図 2 を参照)。
図 2. 現在のプロジェクトを保存
メモ この 1 つ目のコンソール アプリケーションには大した機能はありませんが、基本的な概念を検証するための道具としては十分です。記事の後半では、完全な (もっと面白い) アプリケーションを作成します。
アセンブリ、名前空間、型
この 1 つ目の例の詳細に入る前に、.NET プログラミングの世界の主な用語を理解しておく必要があります。ソフトウェア専門家を教育してきた経験から言って、.NET 開発の初心者を決まって混乱させるのが、"アセンブリ"、"名前空間"、および "型" の区別です。したがって、まずこの区別を明らかにしておきましょう。
プロジェクトを作成する際には、実際には .NET "アセンブリ" を作成することになります。正式に言うと、アセンブリとは、Windows エクスプローラを使用して直接見ることができるハード ドライブ上の物理ファイル (拡張子は通常 *.exe または *.dll) です。
Visual C# 2005 Express の [ソリューション エクスプローラ] ウィンドウには、[参照設定] というサブフォルダが表示されています。このサブフォルダには、現在のプロジェクトで使用されている一連のアセンブリが含まれています。参照するアセンブリはプロジェクトによって異なりますが、現在のコンソール アプリケーションのアセンブリは図 3 のようになります。
図 3. コンソール アプリケーション プロジェクトの参照先アセンブリ
作成する .NET アプリケーションが複雑になってくると、特定のプロジェクトに含まれている以外のアセンブリが必要になることもよくあります。そのような場合のために、C# Express には [参照の追加] ダイアログ ボックスが用意されています。このダイアログ ボックスを開くには、[プロジェクト] メニューの [参照の追加] をクリックします。ただし、ここでは他のアセンブリを追加する必要はありません。 図 4 に [参照の追加] ダイアログ ボックスを示します。
図 4. C# Express の [参照の追加] ダイアログ ボックス
アセンブリには "名前空間" が含まれています。名前空間とは、単純に言えば、意味的な関連を持つ "型" の集まりにすぎません。1 つのアセンブリに複数の名前空間が含まれていることも決して珍しくはありません。たとえば、mscorlib.dll アセンブリには、ファイル入出力の名前空間 (System.IO)、コレクション型の名前空間 (System.Collections)、汎用ユーティリティ型の名前空間 (System) などが含まれています。
メモ コア ライブラリの mscorlib.dll はすべての .NET アプリケーションで自動的に参照されるため、手動で参照する必要はありません。
名前空間には、任意の数の "型" が定義されています。.NET 2.0 の時点では、次の表に示す 5 種類の型があります (この表の説明は、あくまで "簡潔に" まとめたものです)。
| .NET 型 | 実際の意味 |
|
クラス
| クラスとは、オブジェクトの設計図です。家の設計図と同じように、クラスはオブジェクトを作成するために使用されます。また、家と同じように、個々のオブジェクトはそれぞれまったく異なるプロパティ (特性) を持つことができますが (青い家もあれば赤い家もある)、設計図そのものが変更されることはありません。 |
|
インターフェイス
| インターフェイスは、クラスやインターフェイスがサポートする一連の共通のメソッドを定義します。インターフェイスを使用すると、クラスや構造体でサポートする必要がある一連のメンバを定義できます。 |
|
構造体
| 構造体とは、簡単に言うと軽量なクラス型です。この種の型は、数学や幾何学などの細密性の高いデータをモデル化する場合に最適です。構造体には、クラスとは違って継承などのオブジェクト指向の機能はありません。 |
|
列挙体
| 列挙体 (列挙型とも呼ばれる) は、名前と値のペアの名前付きコレクションです。列挙型を使用すると、プログラムで使用する既知の値を定義できます。 |
|
デリゲート
| デリゲートとは、詰まるところ、タイプ セーフな関数ポインタです。デリゲートは .NET イベント アーキテクチャの基盤です。ボタンの Click イベントを処理する場合も、ASP.NET Web ページへのポストバックを処理する場合も、デリゲートがその基盤となります。 |
C# プロジェクトで特定のアセンブリ内の型が必要になった場合は、まず、図 4 の [参照の追加] ダイアログ ボックスを使用して *.dll を参照します。次に、ファイルの先頭に using ディレクティブを追加して、アクセスしたい名前空間を指定します。実のところ、この C# using ディレクティブは、長たらしい名前空間をコードに入力する手間を省くためだけのものです。これにより、「System.IO.File」という完全な名前を入力しなくても、「File」と入力すれば済むようになります。たとえば、次のようなコードがあったとします。
using System;
namespace SomeProgram
{
class Program
{
static void Main(string[] args)
{
// ArrayList と Hashtable を作成します
// (面倒な方法)
System.Collections.ArrayList a =
new System.Collections.ArrayList();
System.Collections.Hashtable h =
new System.Collections.Hashtable();
}
}
}
ここでは、ArrayList と Hashtable という 2 つの型を作成しています。この 2 つは、いずれも System.Collections 名前空間の型です。このように型の前に直接名前空間を付ける代わりに、次のように using ディレクティブを使用すると、入力の手間を省くことができます。
using System;
using System.Collections; // この行を追加します
namespace SomeProgram
{
class Program
{
static void Main(string[] args)
{
// ArrayList と Hashtable を作成します
// (簡単な方法)
ArrayList a = new ArrayList();
Hashtable h = new Hashtable();
}
}
}
既にお気づきの方もいらっしゃるでしょうが、.NET プログラマにとっては、使用するアセンブリ、名前空間、および型について知ることが大きな目標となります。幸い C# Express には、統合されたオブジェクト ブラウザ ユーティリティが用意されています。このツールは、[表示] メニューの [その他のウィンドウ] をポイントし、[オブジェクト ブラウザ] をクリックすると表示されます。このツールを使用すると、参照先の各アセンブリに含まれている名前空間や型を表示できます (図 5 を参照)。
図 5. C# Express のオブジェクト ブラウザ
理論から実践へ : 外部の型の使用
ここで、MyCSharpExpressApp プロジェクトにコードを少し追加してみましょう。ローカル ファイル システムとのやり取りが必要なアプリケーションを作成する際には、System.IO 名前空間を使用する必要があります。例として、ファイルの using ディレクティブを更新し、Main() メソッドに次のコードを入力します。
#region Using directives
using System;
using System.Collections.Generic;
using System.Text;
using System.IO; // IO 型を使用するにはこの行が必要です
#endregion
namespace MyCSharpExpressApp
{
class Program
{
static void Main(string[] args)
{
// myInfo.txt というファイルを開きます
// このファイルは C:\ (Cドライブのルート) にあります
string myFileContents;
myFileContents = File.ReadAll(@"C:\myInfo.txt");
// コンソールに出力します
Console.WriteLine(myFileContents);
Console.ReadLine();
}
}
}
このアプリケーションは、指定されたファイルを File.ReadAll() メソッドを使用して開き、その内容を文字列として返します。この例では、myInfo.txt というファイルの内容が直接コンソールに表示されます。このファイルは、図 6 に示すような、メモ帳で作成された 1 行のテキストを含むファイルであるとします。
図 6. myInfo.txt ファイル
このファイルを直接 C ドライブに保存し、[デバッグ] メニューの [デバッグなしで開始] をクリックしてアプリケーションを実行します。問題がなければ、図 7 のような出力が表示されるはずです。
図 7. 1 つ目の C# Express アプリケーション
メモ この例が正しく機能しない場合も、そのまま読み進めてください。 次のセクションで、Visual C# 2005 Express を使用して実行時例外をデバッグする方法を説明します。
では、この情報をコンソールではなく Windows フォームのメッセージ ボックスに表示したい場合はどうすればよいでしょうか。その場合は、以下の作業が必要になります。
- System.Windows.Forms.dll アセンブリを参照します。
- using ディレクティブで System.Windows.Forms 名前空間を指定します。
-
File.ReadAll() から返される文字列を MessageBox.Show() メソッドに渡します。
まず、[参照の追加] ダイアログ ボックスを使用して System.Windows.Forms.dll を参照します (図 8 を参照)。
図 8. System.Windows.Forms.dll アセンブリの参照
次に、コードを次のように更新します。
#region Using directives
using System;
using System.Collections.Generic;
using System.Text;
using System.IO; // IO 型を使用するにはこの行が必要です
using System.Windows.Forms; // MessageBox を使用するにはこの行が必要です
#endregion
namespace MyCSharpExpressApp
{
class Program
{
static void Main(string[] args)
{
// myInfo.txt というファイルを開きます
// このファイルは C:\ (Cドライブのルート) にあります
string myFileContents;
myFileContents = File.ReadAll(@"C:\myInfo.txt");
// 今度はメッセージ ボックスに表示します
MessageBox.Show(myFileContents);
Console.ReadLine();
}
}
}
再びアプリケーションを実行すると、図 9 のように、ファイルの内容が Windows フォームのメッセージ ボックスに表示されます。
図 9. MessageBox クラス型とのやり取り
C# Express による例外処理
現在の例は、myInfo.txt というファイルが C ドライブのルートに確かに存在するという大きな仮定の下に成り立っています。もしこのファイルがなかったら、ランタイム エラー (より正式には実行時 "例外") が発生します。Visual C# 2005 Express は、こうしたエラーの診断にも役立ちます。実例を見てみましょう。myInfo.txt ファイルを削除 (または名前を変更) し、[デバッグ] メニューの [開始] をクリックしてプログラムをデバッグします。図 10 のように、現在の例外に関する詳しい情報や、問題を解決するためのヒントが表示されます。
図 10. Visual C# 2005 Express による例外のデバッグ
現在の問題を修正するには、テキスト ファイルの名前を myInfo.txt に変更します。
プログラムによる例外処理
アプリケーションが実際に実行されるまで外部ファイルが存在するかどうかがわからない場合もあります。そのような場合、C# プログラマは、"構造化例外処理" と呼ばれるテクニックを使用します。構造化例外処理では、この後に示すように、いくつかの C# キーワード (最も重要なキーワードは try と catch) を使用します。
実行時例外を返す可能性があるメソッド (File.ReadAll() メソッドなど) を呼び出す際には、ステートメントを try スコープで囲みます。例外が発生すると、関連する catch スコープにエラーが渡されます。ここで問題を適切に処理することができます。try スコープの各ステートメントが何の問題もなく実行された場合は、catch ブロックは完全にスキップされます。実際に試してみましょう。現在のコードを次のように更新します。
namespace MyCSharpExpressApp
{
class Program
{
static void Main(string[] args)
{
// myInfo.txt というファイルを開こうとします
// このファイルは C:\ (Cドライブのルート) にあります
string myFileContents;
try
{
myFileContents = File.ReadAll(@"C:\myInfo.txt");
MessageBox.Show(myFileContents);
}
catch(FileNotFoundException ex)
{
Console.WriteLine("Error: {0}",
ex.Message);
}
Console.ReadLine();
}
}
}
ここでは、FileNotFoundException クラスの Message プロパティを使用して、ファイルが見つからなかった場合のエラー メッセージをフォーマットしています (図 11 を参照)。
図 11. プログラムによる FileNotFoundException の処理
以上で、1 つ目のサンプル アプリケーションを使った説明を終了します。基本的なことがらの理解が深まったところで、今度は、より複雑な (もっと面白い) C# アプリケーションを作成してみましょう。
C# クラス ライブラリ プロジェクトの作成
次に作成するのは、ManagerSpeakLib.dll という名前の .NET クラス ライブラリです。まず、現在の MyCSharpExpressApp プロジェクトを閉じて ([ファイル] メニューの [ソリューションを閉じる] をクリック)、ManagerSpeakLib という名前のクラス ライブラリ プロジェクトを新たに作成します (図 12 を参照)。MyCSharpExpressApp プロジェクトをまだ保存していない場合は、このプロジェクトを "破棄" するかどうかをたずねるメッセージが表示されます。これにより、不要なコードをシステム内に残すことなく簡易テスト プロジェクトを作成できます。
図 12. 新規クラス ライブラリ プロジェクトの作成
このクラス (ManagerSpeak という名前) は、ビジネスの世界でよく使われる言い回しを誇張した文を無作為に生成して返します。この ManagerSpeak クラスを更新して、StateTheProblem() というメソッドを追加します。
#region Using directives
using System;
using System.Collections.Generic;
using System.Text;
#endregion
namespace ManagerSpeakLib
{
public class ManagerSpeak
{
public ManagerSpeak(){}
// このメソッドは無作為に選択された問題を返します
public string StateTheProblem()
{
string[] possibleProblem = {
"I think we really need to leverage...",
"We can emerge as a dominant force if we optimize...",
"To achieve an effective use of synergy we need to consider..."};
Random r = new Random();
return possibleProblem[r.Next(3)];
}
}
}
ここでは、System.Random クラスを使用して、ローカル文字列配列の 3 つの文の中の 1 つを返しています。Next() メソッドは、乱数を取得するために使用されています (この場合は範囲が 0 ~ 2 で、選択肢は 0、1、2 の 3 つ)。
もちろん、すべての問題には解決策が必要です。したがって、GetSolution() という名前のもう 1 つのメソッドを ManagerSpeak クラスに追加します。
public class ManagerSpeak
{
...
// このメソッドは無作為に選択された解決策を返します
public string GetSolution()
{
// それぞれが 10 のセグメントを持つ文字列配列
string[] list1 = { "integrated",
"individualized", "cooperative", "flexible", "authentic",
"functional", "responsive", "alternative", "performance",
"cognitive"};
string[] list2 = { "behavioral",
"relevant", "criteria", "prescriptive", "perceptual",
"facilitated", "modular", "diagnostic", "structured",
"situational"};
string[] list3 = { "strategies",
"methodologies", "assessments", "analysis", "learning",
"interaction", "objectives", "concepts", "recoveries",
"management"};
// System.Random 型を使用して
// 各配列から文字列をランダムに取得します
Random r = new Random();
int a = r.Next(10);
int b = r.Next(10);
int c = r.Next(10);
// 文を作成して返します
string newMsg = list1[a] + " " + list2[b] + " " + list3[c];
return newMsg;
}
}
ここで [ファイル] メニューの [すべてを保存] をクリックして、プロジェクト全体を (任意のフォルダに) 保存します。次に、[ビルド] メニューを使用してこの新しいコード ライブラリをコンパイルします。その結果、Bin\Release サブディレクトリの下に新しいコード ライブラリが作成されます (図 13 を参照)。
図 13. ManagerSpeakLib.dll クラス ライブラリ
ご存じの方もいらっしゃるでしょうが、*.dll アセンブリは、Windows エクスプローラでダブルクリックして直接実行することはできません。別のアプリケーションからの要求があったときに、ランタイムによって読み込まれます。したがって、次のステップでは、ManagerSpeakLib.dll を使用するアプリケーションを作成します。
Windows フォーム アプリケーションの作成
ManagerSpeakLib.dll を使用するアプリケーションとして、ManagerSpeakClient という名前の Windows フォーム プロジェクトを新たに作成します (図 14 を参照)。
図 14. Windows フォーム アプリケーションの作成
プロジェクトが読み込まれると、図 15 のようなビジュアル フォーム デザイナが自動的に開きます。
図 15. Visual C# 2005 Express のフォーム デザイナ
Visual C# 2005 Express には、グラフィカル ユーザー インターフェイス (GUI) の作成を簡単にするツールが豊富に用意されています (すべてのツールは [表示] メニューから使用できます)。たとえば、図 16 に示すツールボックスには、フォームのユーザー インターフェイスを作成する際に使用できる Windows フォーム コンポーネントが多数含まれています。
図 16. Windows フォームのツールボックス
また、図 17 の [プロパティ] ウィンドウでは、現在選択されているウィジェット (フォームやボタンなど) をデザイン時に構成できます。
図 17. [プロパティ] ウィンドウ
これらのツールを使用して、ボタンとラベルを 1 つずつ持つ簡単なユーザー インターフェイスを作成します (図 18 を参照)。なお、この図では、ラベル、フォーム、およびボタンの Text プロパティを、それぞれに適したテキストに設定してあります ([プロパティ] ウィンドウを使用)。
図 18. ManagerSpeak クライアント フォーム
次に、[参照の追加] ダイアログ ボックスを使用して ([プロジェクト] メニューの [参照の追加] をクリック)、ManagerSpeakLib.dll を参照します。独自に用意したカスタム *.dll を参照する場合は、[参照] タブをクリックして、使用するコード ライブラリの場所を手動で指定する必要があります (図 19 を参照)。
図 19. ManagerSpeakLib.dll アセンブリの参照
最後の仕上げとして、フォーム デザイナでボタンをダブルクリックします。このボタンの Click イベントが自動的に処理されて、次のコードが生成されます。
private void button1_Click(object sender, EventArgs e)
{
}
ここで、ManagerSpeak クラスを操作するためのコードを追加できます。完全なコードは次のようになります (ManagerSpeakLib のための C# using ディレクティブが追加されています)。
#region Using directives
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using ManagerSpeakLib; // この行が必要です
#endregion
namespace ManagerSpeakClient
{
partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
// マネージャを作成します
ManagerSpeak m = new ManagerSpeak();
// 問題を取得します
string currentProblem = m.StateTheProblem();
// 解決策を取得します
string solution = m.GetSolution();
// 詳細を表示します
MessageBox.Show(string.Format("{0}\n{1}",
currentProblem , solution));
}
}
}
この Windows フォーム アプリケーションを実行し、ボタンをクリックすると、無作為に生成された問題と解決策が表示されます (図 20 を参照)。この言い回しは、たいていは嫌がられる "マネージャ言葉" を誇張したものになっています。
図 20. "マネージャ言葉"
これで、この Windows フォーム アプリケーションは完成です。このプロジェクトを保存するには、[ファイル] メニューの [すべてを保存] をクリックします。
今後の学習 : Visual C# 2005 Express スタータ キット
ここでは、3 種類の C# Express プロジェクト (コンソール プログラム、クラス ライブラリ、および Windows フォーム アプリケーション) を作成しました。この入門記事では C# 言語のすべての側面 (または Visual C# 2005 Express のすべての機能) をカバーすることはできませんでしたが、今後の学習のための準備は十分にできたのではないでしょうか。
最後に "スタータ キット" を紹介してこの記事を終わりにしたいと思います。スタータ キットとは、簡単に言うと、さまざまなプログラミング概念を具体例を使って説明するために作られた完全な C# アプリケーションです。また、完全なドキュメント、コード ウォークスルー、あらかじめ用意されている機能を拡張するためのヒントなども含まれています。たとえば、既定のスタータ キットの 1 つに Screen Saver スタータ キットがあります。このスタータ キットは、[新しいプロジェクト] ダイアログ ボックスで選択できます (図 21 を参照)。このスタータ キットを起動するには、[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。
図 21. [Screen Saver] スタータ キットを選択
Screen Saver プロジェクトを選択し、[OK] をクリックすると、スタータ キットのドキュメント ファイル (ScreenSaverStarterKit.htm) が IDE に読み込まれます (図 22 を参照)。このドキュメントで、プロジェクトの基本的な構成を手近に学ぶことができます。
図 22. Screen Saver スタータ キットの解説
このスタータ キットには、各コード ファイルの詳細な説明や、プロジェクトのデザインを順を追って解説するウォークスルーが含まれています。アプリケーションを実行するには、F5 キーを押します。インターネットに接続している場合は、順番に切り替わる背景イメージの一番上に RSS (Really Simple Syndication) フィードが表示されます。
まとめ
Visual C# 2005 Express は、.NET プラットフォーム初心者の入門用に最適な製品です。これまで見てきたように、Visual C# 2005 Express の IDE には、一連のプロジェクト タイプ、グラフィカル デバッガ、および多数の Windows フォーム デザイナが用意されています。ここではこの IDE の全貌を紹介することはできませんでしたが、実際にプロジェクトを操作するための準備はできたことと思います。
この記事では、多くのスペースを割いて、.NET の世界の重要な用語をいくつか紹介しました。たとえば、"アセンブリ" は任意の数の "名前空間" を含むバイナリ ファイルであることや、名前空間には任意の数の "型" (クラス、インターフェイス、構造体、列挙体、およびデリゲート) が定義されていることなどを説明しました。.NET プログラマは、これらの型を使用してあらゆる種類のアプリケーションを作成できます。
この記事を読んで、C# や .NET プラットフォームについてもっと詳しく知りたいと思った方がいれば幸いです。C# について詳しく学びたいという方のために、以下のリンクを紹介しておきます。
Andrew Troelsen は、Intertech Training
のコンサルタントでありトレーナーでもあります。Andrew には、賞を受けた『C# and the .NET Platform Second Edition』 (2002 年 Apress) を含む多数の著作があります。また、MacTech
(このようなところにも) の月刊コラムでは、SSCLI、Portable.NET、および Mono CLI ディストリビューションを使った Unix ベース システムにおける .NET 開発について取り上げています。