NET 開発ツール

Last Updated 2012/02/04


このページでは、.NET Framework または WPF アプリケーションを開発するための開発ツールおよびユーティリティソフトを取り上げます。ただし、開発言語は C# だけを対象とします。

総合開発ツール

ユーティリティツール

WPF 開発ツール


C# 対応の総合開発ツール

.NET アプリケーションは .NET Framework を使わなければなりませんが、その SDK "Software Development Kit" は C# のコンパイラを含めて無料で公開されています。SDK の 2011 年初頭の最新バージョンは 4.0 です。したがって、.NET アプリケーション開発に必要なもののうち、自前で用意しなければならないものは何もありません(ただし、IDE がないとフォームを作るのはかなり面倒ですが)。

さて、C# 対応の総合開発ツールとして、私がテストしたものは次の 3 つです。

まず、SharDevelop について説明します。

これは、フリーウエアの開発ツールで、C# および VB.NET に対応していて、次のサイトからダウンロードできます。

http://www.icsharpcode.net/opensource/sd/

"Download" のページに入って必要なファイルをダウンロードしてください。ソースコードは SharpDevelop そのものの C# によるソースコードです。つまり、開発ツール自体のソースコードが手に入ります。パワーさえあれば、自分で専用の開発ツールを作ることもできるというわけです。

注 .NET Framework のクラスライブラリ自体は Microsoft のサイトから入手しなければなりません。

オリジナル版のメニューの表示などは英語のままですが、開発環境の内部でカルチャを選択することで、日本語を完璧に使えます(日本人が開発に協力しているようです)。

IDE の構成は Visual Studio と基本的に同じですが、同じであることに違和感も覚えます。Visual Studio の IDE がそんなにいいということなんでしょうか。

SharpDevelop は無料でテストできますから、評価はご自分でしてください。

注 ソースコードが手に入るからといって、それを利用しようとは考えないほうがいいです。迷宮に入りますよ。

次に、Borland C# です。

.NET Framework が出るまでは Borland が Windows アプリケーション開発ツールのなかで最強と考えていましたが、最近の Borland は終わったなという感じです。おすすめしません。キッパリと!

Borland の経営者が変わったことと、ツールのもっとも重要な開発者が Microsoft に引き抜かれたことで独自性を失ってしまいました。


ユーティリティツール

アプリケーションを開発する場合、開発言語系のツールだけで間に合うわけではありません。開発を支援するツールを使いこなすことでより効率的な開発が可能となります。このような何でもありのツールをユーティリティソフトと呼びます。ここでは、ユーティリティソフトを紹介します。

Reflector

リフレクションを実行するフリーウエアのソフトです。現在(2011 年 5 月)の最新バージョンは、6.6.0.30 で、.NET Framework の 4.0 に対応しています。次のサイトからダウンロードできます。

http://reflector.red-gate.com/download.aspx?TreatAsUpdate=1

リフレクションという言葉が分かりにくいのですが、英語の "reflection" には「物事を解説する」という意味がありますから、多分、そういうことなのでしょう。つまり、アセンブリの内容を分析することをさすようです。

注 アセンブリという言葉にもなじめませんね。イメージとしては従来のモジュールに近いのですが、モージュールは実行コードしか持ちません。一方、アセンブリはそれ以外の情報も持っているので、モジュールとは呼ばないことにしたのでしょう。

このソフトのすぐれたところは、各クラスのソースコードを表示してくれる点です。といっても、オリジナルのソースコードそのものではありませんが、どんなことをしているかを知るには充分です。

注 ランタイムライブラリのソースではありませんよ。あくまで、クラスライブラリのソースです。

ツリー表示部をマウスで右クリックするとポップアップするメニューの [Disassembler] を選択するとソースコードを表示します。

なお、デフォルトの状態では一部の名前空間を表示しません。たとえば、System.Configuration.Install です。これはメニューの「File」-「Open」で System.Configuration.Install.dll を選択すれば、ツリー表示部に追加され、次回の起動時からは自動的に読み込んでくれます。

ただし、このソフトはかなり多くのメモリを消費するようです、RAM の容量が小さい人はさかんにスワップすることになります。

さて、上記のサイトを見た人は気付いたと思いますが、Reflector は有料になりました。これは Reflector の著作権を Red Gate 社が買い取ったためです。すぐれたツールですから $ 35 ぐらいは出してもいいのですが、今まで無料だっただけに気持ちが吹っ切れません。しかし、ご心配なく! 次の項で紹介する ILSpy があります。


ILSpy

これは、前の項で紹介した Reflector と同じ機能を提供する無料のツールです。見た目も Reflector と同じですから使い方に迷いはないと思います。

SharpDevelop と同じ開発グループの手になるもので、SharpDevelop の一部ではありますが、単独でも使うことができます。以下のサイトからダウンロードできます。ILSpy_xxx_Binaries.zip です。

http://build.sharpdevelop.net/BuildArtefacts/#ILSpy

ソースも公開されていますが、開発者の好みなのでしょうか、クラスを細かく分けすぎていて見るのはかなりツライ作業です。まあ、ほとんど不可能に近いでしょうね。


LINQtoCSV

LINQ で CSV "Comma Separated Value" を操作するライブラリです。操作するといっても、CSV ファイルからデータを読み込み、CSV ファイルに出力するだけですが。

CSV については、「CSV」のページで詳しく説明しますが、データをカンマで区切るだけの単純な CSV を LINQ で操作することはそれほど難しくありません。しかし、データの中にカンマ自身を含む場合など、対処しなければならない問題があります。ここで紹介するツール "LINQ to CSV library" はこれらの問題を解決してくれます。以下のサイトにおいて、ライブラリの解説とともにソースファイルを公開しています。

http://www.codeproject.com/KB/linq/LINQtoCSV.aspx

以下のファイルは、LINQtoCSV をテストするアプリケーションのソースです。

LINQtoCSVTest.zip (67,345 bytes)

下図は、テスト用アプリケーションを起動したところです。項目をダブルクリックするとデータを編集するフォームを表示します。データを編集したあと、[OK] すると、データを変更します。また、メニューの[編集]-[生年月日でソート] を選択すると、生年月日でソートします。

LINQtoCSV

LINQPad

以下に示すようなコードがあるとして、このコードを実行するには通常、Visual Studio を立ち上げ、プロジェクトを起こさなければなりません。

  string[] names = { "Burke", "Connor", "Frank", "Everett", "Albert", "George", "Harris", "David" };

  var query = from s in names 
              where s.Length == 5
              orderby s
              select s.ToUpper();

  foreach (string item in query)
  {
    Console.WriteLine(item);
  }

しかし、たいしたコードでもないのに面倒なことではあります。LINQPad はこの問題を解決してくれるツールです。下図は、LINQPad を起動し、上記のコードを入力したところです。実行すると、下側に結果を表示します。

LINQPad

このツールの入手先は、http://www.linqpad.net/ をご覧ください。ちなみに、フリーウエアです。


WPF 開発ツール

Snoop

"snoop" は「詮索する」とか「探る」という意味ですが、WPF アプリケーションのビジュアルツリーを表示するツールです。以下のサイトからダウンロードできます。

http://blois.us/Snoop/

使い方を簡単に説明しておきましょう。

WPF アプリケーションを起動したあと、Snoop.exe を実行すると、WPF アプリケーションにドッキングし、その論理ツリーとビジュアルツリーとを表示します。下図は、Snoop の画面ですが、望遠鏡のツールボタンをクリックすると、その下にある図のような画面を表示します。終了する時は、X 印の中止ボタンがポップアップしますので、それをクリックします。

Snoop

以下は、フォームの Grid 要素の中に ComboBox コントロールだけを配置した WPFアプリケーションを対象として、そのビジュアルツリーを表示したものです。

Snoop

左のペインを簡単に説明すると、ツリー構造の階層の番号が見えます。15 は Application オブジェクト、14 は Window オブジェクトですね。先に述べたように、フォームに ComboBox コントロールを配置したにもかかわらず、多くの要素が見えます。つまり、WPF アプリケーションは階層化した要素で構成されているからです。たとえば、フォームの境界線には Border コントロールを使っていることが分かります。

Snoop がどれぐらい便利なツールかは分かりませんが、WPF 用語の論理ツリーとかビジュアルツリーとがどんなものかを理解する助けにはなると思います。つまり、WPF フォームは多くの要素(コントロールと考えてよい)が階層化して構成されていることを理解することは決定的に重要です。


Windows Expression Blend

Visual Studio のフォームデザイナに相当する機能には不満があります。ビジュアルなデザイン環境とはいえません。そのかわりに、Microsoft はビジュアルなツールを提供しています。ただし、有料です。

入手先は明示しませんが、"expression blend" で検索すればドッサリと出てきます。

私は体験版を試しましたが、すごく便利という感じではありませんでした。新しいツールの使い方を覚えるのが面倒ということもありますが、高価なツールを使う気になりません。

XamlPad

これは .Net Framework に付属するツールです。Visual Studio 2008 では以下のフォルダ内にあります。

  C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\XamlPad.exe

ところが、Visual Studio 2010 には XamlPad が含まれていません。どうしてでしょうか → Microsoft

ご心配なく! Microsoft が用意しなくてももっとよいツールがあります。次の Kaxaml をご覧ください。


Kaxaml

Visual Studio 2005/2008 に付属する XamlPad の改良版です。下図は、Kaxaml を起動したところですが、XamlPad と基本的な機能および使い方は同じです。ただし、コード補完機能など、ずっと進化しています。しかも、ソースコードが公開されていますので、自分好みに変更することも可能です。

Kaxaml

使ってみての感想は文句なしですが、ソースコードを変更したところもあります。まず、起動時に最大化されますが、これを通常表示に変えました。また、文字のサイズが小さすぎるので大きくしました。

【追 記】

2012 年 8 月現在、Kaxaml 1.8 がリリースされています。しかし、Windows 7 で実行するとエラーになります。WEB サイトでは Windows 7 以外の環境でも同様のトラブルがあるようです。さらに調べたところ、解決策らしきものが見つかりました。

Kaxaml のアイコンがデスクトップ上にあると思いますが、それをマウスで右クリックし、プロパティを選択してください。[互換性] のページを開いて、[互換モード] の [互換モードでこのプログラムを実行する] にチェックを入れます、コンボボックスを開いて、"Windows 7"(私の場合)を選択してください。これで、私の場合、エラーが出なくなりました。


Windows API Code Pack for Microsoft .NET Framework

.Net Framework クラスライブラリの中にない重要な機能の一つは、Windows シェル関係です。ver.3.5 までは特殊フォルダを取得する機能ぐらいしかありません。そこでかどうかは知りませんが、Microsoft は Windows シェル関係の機能を提供する .Net Framework 対応のライブラリをソースコードとともに公開しています。

http://code.msdn.microsoft.com/WindowsAPICodePack

上記のサイトに入って、[Downloads] のページでダウンロードしてください。ZIP ファイルを解凍したあと、ビルドしてください。私がテストしたところではすべてではありませんが、おおむね正常に動作します。

Windows 7 を対象としていますので、機能に不足はありません。また、上記のサイトの [ライセンス] のページを見ると、ソースコードを含めてライブラリは自由に使えるようです。詳しくは、[ライセンス] のページを見てください。

なお、.NET Framework 4.0 には Windows シェル関係の機能のいくつかが追加されましたが、まだまだ不満です。たとえば、ゴミ箱を利用するなどの多くのアプリケーションが必要とする機能は提供してほしいところです。どうして出し惜しみするのでしょうか → Microsoft


Dotfuscator

Visual Studio に付属する、いわゆる、難読化ツールです。

.Net Framework アプリケーションの実行ファイル(.exe または .dll ファイル)は、中間言語にコンパイルするだけなので、逆アセンブル(言葉として適切ではありませんが)すると、ほとんどソースコードに近いものを得ることができます。

フリーで公開するものはともかくとして、ソースコードの著作権を守りたい場合にはこれでは不都合です。そこで、ソースコードを読み取りにくくするために難読化するツールの意味があります。

私の環境では、以下のディレクトリ内にあります。

    C:\Program Files\Microsoft Visual Studio 10.0\PreEmptive Solutions\Dotfuscator Community Edition\dotfuscator.exe

以下は、Dotfuscator などの専用のサイトです。

http://www.preemptive.com/

下図は、Dotfuscator を起動したところです。

Dotfuscator

UI はスマートとはいえませんが、一応、使えます。Dotfuscator の Professional 版は有料のようですが、相当に高額ですので、企業向けといえるでしょう。

なお、Dotfuscator と組み合わせて使う属性として、ObfuscationAttribute 属性があります。これについては詳しく説明しませんが、Dotfuscator を使う人は覚えて置いてください。


WPF Shell Integration Library

.Net Framework の弱点は、Windows シェル関係の機能をほとんどサポートしない点にあります。.Net Framework は Windows だけをプラットホームとして考えていないことに原因があるのでしょうが、事実上、、多くは Windows で動作するアプリケーションばかりなのですから、こういうことにこだわることに反発さえおぼえます。

Microsoft がそう考えたのかどうかは分かりませんが、遅まきながら、表題のようなライブラリを公開しました。以下のサイトからダウンロードできます。

http://code.msdn.microsoft.com/WPFShell

ただし、このライブラリの内容は .NET Framework 4.0 では標準になっています。


3D Tools

3DTools は、Microsoft が公開するライブラリで、WPF の 3D グラフィックスに関する機能を補完するためのものです。Microsoft は 3DTools でできることとして、以下にリストアップする項目を挙げています。

かなりバグを含んでいるようで、このライブラリに対するコメントの中にも 2 年間もバージョンアップしていないことを非難する書き込みもあります。しかし、それを承知の上でなら使えます。

3D Tools を入手する場合は、以下のサイトの "3D Tools for the Windows Presentation Foundation" のページに入ってください。

http://www.codeplex.com/wikipage?ProjectName=3DTools

なお、上記のサイトの中に、3DTools を使うときのライセンスに関する記述があり、以下のサイトを参照するようになっています。

http://www.microsoft.com/japan/resources/sharedsource/licensingbasics/limitedpermissivelicense.mspx

同じページに日本語訳のサイトへのリンクがありましたので、そこへ行ってみました。サイトのタイトルと関係すると思われる項目だけを以下に抜き出します。

Microsoft Limited Permissive License (Ms-LPL)
公開日: 2007年7月9日

2. 権利の付与
(A) 著作権に関する許諾 - 第 3 条「条件および制限」を含む本ライセンスの条件に従って、各コントリビューターは使用者に対し、コントリビューションを複製し、コントリビューションの二次的著作物を作成し、コントリビューションまたは作成した二次的著作物を頒布する、非独占的、世界全域、無償の著作権ライセンスを付与します。

早い話が、Microsoft の権利を侵害しない限り、自由に使ってよいと読み取れます。事実、WEB サイトで公開されている多くのサンプルプロジェクトで利用されています。


WPF ユーザーエクスペリエンスガイドライン

Microsoft は表題の資料を次のサイトで公開しています。

http://msdn.microsoft.com/ja-jp/library/aa511258.aspx

私は、UXGuideJp.pdf をダンロードしました。WPF 専用というわけではありませんが、WPF を強く意識したものになっています。項目の構成は次のとおりです。

ガイドラインの内容はアプリケーション作成時に考慮すべき事項のほかに、テクニックに近い記事もあります。参考になる点もありますから、一読しておいて損はないと思います。

特に興味をひいた記事は、「色」の項の中に、色覚異常のため通常の人とは色の見え方が異なる場合があるというところです。いままで意識していなかった点ですので、ハットしました。この問題への対処法は、テキストを併用するか、色だけでなく、形を変えることも有効だとあります。たとえば、メッセージボックスの警告のアイコンは三角形になっていますが、このようなものです。

このガイドラインは Windows 7 対応ですから Windows 7 の機能にも触れています。たとえば、ジャンプリストとかタスクバー上のアイコンへのプログレスバーの追加などです。これらがどういうものかの知識が得られるメリットもあります。


Sample Xps Documents

ツールではありませんが、XPS に興味のある人には役に立つと思いますので、紹介しておきます。

Microsoft から XPS キュメントのサンプルが公開されています。以下のサイトからダウンロード可能です。

http://www.microsoft.com/whdc/xps/xpssampdoc.mspx

2010 年現在の最新バージョンは 1.0(2007 年 7 月) です。ただし、Visual Studio に付属する XPS ドキュメント検証ツールの IsXps.exe でチェックするとエラーになるものがあります。XpsViewer では表示可能ですが、厳密には正しいドキュメントの形式にはなっていないということなのでしょう。大雑把なアメリカ人らしいと言えるのかもしれませんね。


Expression TreeVisualizer

LINQ の式ツリー "Expression Tree" をビジュアルに表示するデバッガーツールです。以下のサイトに入って、[Download] のページにある csharpsamples-jpn.zip をダウンロードしてください。

http://archive.msdn.microsoft.com/cs2008samples

デバッガーツールと書いたとおり、基本的には Visual Studio 内においてデバッグ時に使うものですが、単独で起動するアプリケーションも付いています。使いやすいというわけではありませんが、参考にはなると思います。

なお、関連する記事は LINQ の式ツリーのページにあります。


HlslPad

HLSL "High Level Shading Language" については、ビットマップ効果のページをご覧ください。

HlslPad は次の 3 つのツールの総称です。

HlslPad単一入力サンプラーに対応し、PixelShader 適用前後の画像の状態を比較する
HlslPad22 つの入力サンプラーに対応し、2 つの画像の合成や Transition をテストする
HlslPad3PixelShader 適用後の画像を保存する

以下は、3 種類の HlslPad の実行プログラム(EXE ファイル)を含みます。フリーウエアですから、どなたでもご自由にお使いください。

HlslPadBin (206,900 bytes)

以下は、.NET Framework 4.0 C# で作った HlslPad のプロジェクトを含みます。解凍するにはパスワードが必要です。NETClass または WPFClass のユーザーさんは同じパスワードをお使いください。

HlslPad (217,232 bytes)


Extended WPF Toolkit

かつて、WPFToolkit と名付けられた開発ツールが公開されていましたが、Extended WPF Toolkit はその補足分(あえて、拡張版とは呼ばない)です。WPF 対応の標準コントロールに含まれないコントロールを提供します。詳しくは、以下のサイトを見てください

http://wpftoolkit.codeplex.com/

2012 年初頭の最新バージョンは、Ver.1.5.0 2011/08/09 です。ソースコードを含みますから自分好みに変更して利用することができます。著作権は Ms-PL になっています。Ms-PL については次のサイトの "Community Source" のページが分かりやすいと思います。

http://www.microsoft.com/resources/sharedsource/communitysourcelicensing.mspx

このページ内の著作権に関係する原文を以下に抜粋します。

Microsoft Public License (Ms-PL) - The Ms-PL is the least restrictive of the Microsoft source code licenses. It allows licensees to view, modify, and redistribute the source code for either commercial or non-commercial purposes. Under the Ms-PL, licensees may change the source code and share it with others. Licensees may also charge a licensing fee for their modified work if they so wish. Microsoft uses this license most commonly for its developer tools, applications, and components.

以下は、私のつたない訳です。

「Ms-PL は Microsoft が提供するソースコードのライセンスにおける最小の制限のもので、ソースコードを商用あるいは非商用目的にかかわらず、表示、変更、再配布を許可する。ソースコードを変更し、他者と共有することも可能。必要ならソースコードに加えた変更箇所に対して有料にしてもよい。Microsoft は Ms-PL を開発ツール、アプリケーションおよびコンポーネントに対する通常のライセンス条項として使っている。」

これに加えて、ソースコードの中にライセンスに関する記述があればそれが優先するようですが、ソースコード中に特記がない限り、商用利用を含めて自由に使ってよいと私は解釈しています。

注 法的解釈は別にしてハッキリ言うと、Microsoft が著作権を主張したくなるほど出来がいいわけではありません。

ところで、Ms-PL に関して説明するサイトを見ていると、コードの出所の著作権などを明示しなければならないように書いているものがありますが、勘違いだと思います。つまり、上記のサイトでは義務については何も書いていません。ただし、CodePlex のものはプロジェクトによっては異なる場合があるかもしれませんので、注意が必要です。

下図は、一部のコントロールをテストしたところです。アップダウンコントロールは decimal 型、int 型、double 型の 3 種類の型に対応しています。

Tool Control

カラー選択コントロールはソースの一部を抜き出して独立したコントロールとして表示したところですが、このように単独のコントロールとして利用するにはソースコードにチョットした手を加えなければなりません。ソースコードの再利用性という意味では問題ありです。

Extended WPF Toolkit はコントロールとしてはオマケのようなものではありますが、コードの中に参考になる部分もあります。見掛けにとらわれず、評価することをおすすめします。


−以上−