.NET Framework SDKで始める.NETプログラミング(後編)

4.実用性も高いサンプル・プログラム

デジタルアドバンテージ 遠藤孝信
2001/05/18

Page1 Page2 Page3 Page4 Page5

 新しい環境で、手っ取り早くプログラミングの腕を磨く最良の方法は、他人のコードをたくさん読み、それを自分のものにしてしまうことだ。.NETはまったく新しいプログラミング環境だが、幸いなことに、.NET SDKには数多くのサンプル・プログラムが収録されている。単純に検索してみると、\Program Files\Microsoft.Net\FrameworkSDK\Samplesの下、QuickStartのサンプルも含め、C#のファイル(.csファイル)だけでも419ファイル、行数にして4万6千行に及ぶコードが格納されている。これを活用しない手はない。

 .NET SDKをインストールしても、これらのサンプル・プログラムについてはソースコードだけがインストールされるので、実際にプログラムを実行するには、各コードをコンパイルする必要がある。すべてのサンプル・プログラムをいっきにコンパイルするには、コマンド・プロンプトを開き、\Program Files\Microsoft.Net\FrameworkSDK\Samplesディレクトリに移動してから次のコマンドを実行する。

C:\Program Files\Microsoft.Net\FrameworkSDK\Samples> NMAKE all
SamplesディレクトリでNMAKE.EXEを実行することにより、すべてのサンプル・プログラムをいっきにコンパイルすることができる。

 ちなみにNMAKE.EXEは、デフォルトで「makefile」ファイルを読み込み、そこに記述されている手順に従って、コンパイラなどを自動的に起動するためのツールだ。このNMAKEを使ったコンパイルと、バッチ・ファイルを使ったコンパイルとの大きな違いは、前者は修正されたファイルだけを見つけ出し、必要最小限のコンパイルだけを行ってくれるところだ。NMAKE.EXEは、グラフィカルな統合開発環境が主流となった現在ではあまり使われなくなったが、UNIX環境などでは現在でも第一線で使われている(UNIXの場合にはmakeコマンド)。

 .NET SDKには約60種類のサンプル・プログラム(QuickStartのサンプルを除く)が含まれているが、その多くは.NETのクラス・ライブラリが持つさまざまな機能の用法を示したものなので、ソースを読む前にクラス・ライブラリの概念を理解しておく必要がある。しかしサンプル・プログラムの中には、実用的にも十分使えるプログラムも含まれている。ここで、そうしたサンプル・プログラムの例を2つご紹介しよう。

ASP.NET版クラス・ビューア:Managed Class Viewer

 .NETのプログラミングでは、C#やVB.NETの新しい言語仕様を効果的に使うだけでなく、クラス・ライブラリをいかに使いこなすかが鍵となってくる。このときに不可欠なのがクラス・ビューアだ。本稿の最初で述べたHTMLヘルプ形式のリファレンス・ドキュメントには、解説付きのクラス・ビューアが含まれているが、慣れてくると、解説をじっくり読むよりも、クラス階層やクラスやプロパティの型だけを手っ取り早く一覧したいと思うようになる。そんなときに使えそうなのが「Managed Class Viewer」サンプルだ。これはASP.NETで実装されたWebアプリケーションで、ブラウザから使うことができる。サンプル・プログラムが正しくセットアップできていれば、次のURLからアクセスできるはずだ。

  • http://localhost/ClsView/Default.aspx
ASP.NET版クラス・ビューア、Managed Class Viewerを起動したところ
このようにManaged Class Viewerでは、各クラスのクラス階層やメソッド、プロパティなどの情報をブラウザ上で調べることができる。また[Add Library]メニューから、検索対象となるアセンブリを追加することも可能。ASP.NETとリフレクションの機能を使用し実装されている。

 .NET SDKには、Windowsアプリケーション版のクラス・ビューアであるWinCV.exeも付属しているが、こちらのサンプル・プログラムの方が画面は見やすい。

Windowsアプリケーション版クラス・ビューアWinCV.exeでクラスを検索したところ
こちらのクラス・ビューアでは、クラスをインクリメンタル・サーチで検索できる。しかしご覧のとおり、サンプル・プログラムのManaged Class Viewerの方が画面は見やすい。検索対象となるアセンブリの追加はできないようである。

 これらのアプリケーションは、「リフレクション」と呼ばれるクラス・ライブラリの機能を使用している。リフレクションは、クラスの持つメソッドやプロパティなどの情報を取得するための機能で、表示されるクラス情報はリフレクションにより各アセンブリに対して動的に問い合わせながら作成されるものだ(これに対してリファレンス・ドキュメントの方は、あらかじめ静的なテキストとして用意されている)。

 ASP.NET版クラス・ビューアでは、[Add Library]メニューから直接DLLファイルなどを指定することにより、既存のクラス・ライブラリ以外に、自作のクラスなどについても同様にクラス構造を参照することができる(ただし追加したライブラリのパスは保存されないようだ。ソースコードがあるので、その気になれば何とかなるとは思うが)。

コマンド・ライン版クラス・ビューア:Find Type Class Browser Utility

 .NET SDKはコマンドライン・ベースの開発環境なので、コマンド・プロンプト内からクラスについての情報を参照できると便利なことが多い。この「Find Type Class Browser Utility」は、それを可能にしたサンプル・プログラムである。これは次のディレクトリに納められており、実行ファイル名は「FindTtype.exe」となる。

\Program Files\Microsoft.Net\FrameworkSDK\Samples\FindType

 FindType.exeは、クラス名を起動時パラメータとして指定する。デフォルトではネームスペースだけが表示されるが、さまざまなオプションが用意されており、メソッドやプロパティの情報、そのクラスが含まれているDLLファイルのファイル名なども表示することができる。

コマンドライン版クラス・ビューア:Find Typeでクラスを検索した結果
Find Typeは、コマンド・プロンプトからクラス情報を参照可能にしたサンプル・プログラムである。
  パラメータに指定した文字列を含むクラスが、ネームスペースを含めたフルネームで表示される。
  「-lオプション」を指定すると、検索したクラスが含まれるDLLファイルのパスが表示される。
  「-aオプション」を指定すると、検索したクラスに関するすべての情報が表示される。

 ただしデフォルトでは、基本的なクラスを含むアセンブリであるmscorlib.dllと、カレント・ディレクトリのアセンブリのみからしか検索してくれないため、例えばSystem.WinFormsネームスペースのクラスを調べるには、「-dオプション」を使用して、検索対象となるディレクトリ(例えば「-d:C:\WINNT\Microsoft.NET\Framework\v1.0.2204」など)を指定する必要がある。ソースコードはそれほど長くないので、必要に応じてカスタマイズしてみるのもよいかもしれない。

.NET対応Lispコンパイラ

 .NET SDKには、マネージド・コードを出力するLispコンパイラが、しかもソースコード付きで収録されている。とはいっても、これはコンパイラの実装例を示したもので、仕様もLispのサブセットで完全なものではない。本稿の最後に、このLispコンパイラを始め、.NET SDKに含まれる本格的なツールのサンプルについて少しだけご紹介しておこう。このサンプルに関する解説ページへのリンクは、「.NET Framework SDK Overview」のページの一番下にある「Tool Developers Guide」からアクセスできる(実際のファイルは「\Program Files\Microsoft.Net\FrameworkSDK\Tool Developers Guide\StartToolDeveloperGuide.htm」)。

 このサンプル・プログラムは、前述したサンプルと同様に自己解凍ファイルになっているので、まずは展開する必要がある。ここにはLispコンパイラであるCLispのほかに、C#で記述されたC言語のサブセットであるMyCコンパイラ、結構本格的なC++のサブセットであるsmcコンパイラ(これはVC++で記述されており、コンパイルにはVC++ Ver.6が必要)が収録されている。ほかにも1000行を越えるMSILだけで記述されたWindowsアプリケーションのサンプルや、デバッガ(VC++で記述されているためコンパイルにはVC++ Ver.6が必要)のサンプルも含まれている。また、MetaInfoサンプルは、ildasmでは見ることのできないマニフェストやメタデータについての詳細を表示することができ、解析ツールとして使用することができる(MetaInfoはC++で記述されており、コンパイルにはVC++ Ver.6が必要)。

 以上、2回に渡って.NET SDKの概要をお伝えした。.NET SDKはコマンドライン・ベースの開発環境であるため面倒な部分も多いが、コンパイルも速く、GUIを使わない分、ベータ1という現時点では、VS.NETよりも安定している。慣れてしまえば、それなりに使える開発環境である。開発途中バージョンではあるが、最終的な製品が登場するまでの足慣らしとして、C#でWindowsプログラムを記述するぐらいであれば十分な環境だと言えるだろう。.NETフレームワークでは、少々複雑なWindowsアプリケーションであっても、非常にシンプルに記述できるようになっている。完全に統一されたクラス・ライブラリは、Win32 APIの大部分をカバーしている。これを使いこなすのはそう容易ではないだろうが、サンプル・コードを見れば、クラス・ライブラリがいかに強力なものかが分かる。

 最後までおつき合いいただいた読者には、是非とも.NETプログラミングを御自分で体験してみていただきたいと思う。End of Article

 

 INDEX
  [特集] .NET Framework SDKで始める.NETプログラミング(後編)
    1.フォーム・デザイナでGUIを設計する
    2.デバッガと逆アセンブラ
    3.サンプル・プログラムとチュートリアル
  4.実用性も高いサンプル・プログラム
 
  [特集] .NET Framework SDKで始める.NETプログラミング(前編)


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 記事ランキング

本日 月間