自作したクラスライブラリのヘルプ(ドキュメント、仕様書)を作成するのは面倒ですが、それを自動で作成してくれるツールがあります。これらのツールを使えば、ソースコードファイルに記述されたドキュメントコメントを基にして、MSDNのようなヘルプやHTMLを簡単に作成できます。ここではこのようなツールを幾つか紹介します。
なおここで紹介しているツール(「コードコメントWebレポート」以外)には、ソースコードファイルのドキュメントコメントを出力したXMLファイルが必要ですので、その作り方がわからないという場合は、まず「ドキュメントコメントにより型の概要をXMLファイルに出力する」をご覧ください。
現在最もメジャーなツールが、「Sandcastle Help File Builder(SHFB)」(現在のバージョンは、1.9.7.0)です。以前はマイクロソフトが「Sandcastle」というツールを開発していましたが、それが終了し、現在ではSandcastleのGUIであるSHFBが引き継いでいます。
SHFBのインストール方法は「Sandcastle Help File Builder Documentation - Installation Instructions」で説明されていますが、SHFB以外にインストールが必要なもの(あるいは、インストールした方がよいもの)が多々あります。しかしインストーラの指示に従えば必要なものがインストールできますので、いきなりインストーラを起動してしまってよいでしょう。
ちなみに、「.NET Framework 4.0」と「Sandcastle tools」は必ずインストールする必要があります。SHFBが作成できるヘルプファイルの種類は、HTML Help 1(Microsoft Compiled HTML Help、.chm)、MS Help 2 (Visual Studio .NET Helpフォーマット、.HxS)、MS Help Viewer (Microsoft ヘルプ ビューアー、.mshc)、ASP.NET HTML (.html, .aspx, .php ...)ですが、HTML Help 1を作成するには「HTML Help Workshop」を、MS Help 2を作成するには「Visual Studio 2005 SDK v4.0」か「Visual Studio 2008 SDK v1.0」をインストールする必要があります。
インストールが成功したとして、SHFBの簡単な使い方を説明します。
「Sandcastle Help File Builder GUI」を起動後、まずは、新しいプロジェクトを作成します。メニューの「File」-「New Project」を選択すると、「Save New Help Project As」というダイアログが表示されますので、保存場所を指定します。
次に「Documentation Source」を追加します。画面右上の「Project Explorer」にある「Documentation Sources」を右クリックしてコンテキストメニューを表示し、「Add Documentation Source」を選択します。「Select the documentation source(s)」というダイアログが表示されますので、ここでヘルプを作成したいライブラリファイル(.dll、.winmd)、実行ファイル(.exe)、XMLドキュメントファイル(.xml)、Visual Studioソリューションファイル(.sln)、Visual Studioプロジェクトファイルのいずれかを選択します。
もし必要ならば、参照しているアセンブリを「References」に追加します。
そして、画面左側の「Project Properties」を適当に変更します。とりあえず変更すべき設定は、「Build」タブの「Framework Version」と、「Help File」タブの「Help title」位です(「Help file language」を「Japanese(Japan)」にしてもほとんど日本語化されません)。デフォルトでは、<summary>などの要素が無いとヘルプに赤い警告文が表示されますが、これを消す場合は、「Missing Tags」タブでチェックを外します。
準備が整ったら、メニューから「Documentation」-「Build Project」を選択して、ヘルプファイルを作成します。ビルドを開始すると「Build Output」タブが開き、進行状況が表示されます。ビルドが終わると、デフォルトでは、「Save New Help Project As」で指定したフォルダに「Help」というフォルダができ、その中にヘルプファイルとログファイルが作成されます。
「Visual Studio Integration Package」をインストールした時は、Visual Studio(2010以降)でヘルプを作成することもできます。その場合は、「新しいプロジェクト」ダイアログ(メニューの「ファイル」-「新規作成」-「プロジェクト」で表示)の「Documentation」タブにある「Sandcastle Help File Builder Project」を選択することで、SHFBのプロジェクトを作成できます。後は先ほどの「Sandcastle Help File Builder GUI」とほぼ同じ操作です。プロジェクトをビルドすると、ヘルプが作成されます。
このような方法で作成したヘルプファイルを以下のリンク先に置いておきます(ZIP圧縮されています)。
以下にSandcastleを単独で使用する方法を説明しますが、バージョンが「June 2007 Community Technology Preview (CTP)」の時の情報ですので、昔の情報であることをご了承ください。
ここでは、以下のようなクラスライブラリ「ClassLibrary1」があるとして、このヘルプファイルを作成します。
using System; namespace ClassLibrary1 { /// <summary> /// テストのクラスです。 /// </summary> /// <exception cref="System.Exception"> /// ここには例外の説明を書きます。 /// </exception> public class TestClass { /// <summary> /// 現在の合計値を保存するフィールド /// </summary> private int _sum; /// <summary> /// 現在の合計値を取得設定します。 /// </summary> /// <value>現在の合計値</value> public int Sum { get {return _sum;} set {_sum = value;} } /// <summary> /// <c>TestClass</c>クラスの新規インスタンスを初期化し、 /// 指定した数を合計値に設定します。 /// </summary> /// <param name="val">初期値</param> public TestClass(int val) { _sum = val; } /** <summary> TestClassクラスの新規インスタンスを初期化します。 </summary> */ public TestClass() { _sum = 0; } /// <summary> /// 指定した値を合計値に加算します。 /// </summary> /// <param name="val">加算する整数</param> /// <returns>現在の合計値</returns> /// <remarks> /// <c>Plus</c>メソッドの /// <paramref name="val"/>パラメータで加算する整数を指定します。 /// <para>合計値は<see cref="Sum"/>で /// 取得できます。</para> /// </remarks> /// <example>Plusメソッドの使用コード例です。 /// <code> /// class MainClass /// { /// public static void Main() /// { /// TestNP.TestClass tc = new TestNP.TestClass(100); /// tc.Plus(10); /// } /// } /// </code> /// </example> /// <seealso cref="System.Int32">Int32構造体</seealso> /// <seealso cref="Minus"/> /// <permission cref="System.Security.PermissionSet"> /// このメソッドへは誰でもアクセスできます。</permission> public int Plus(int val) { _sum += val; return _sum; } /// <include file='include.xml' /// path='TestDocs/TestMembers[@name="Minus"]/*' /> public int Minus(int val) { _sum -= val; return _sum; } } }
また、「include.xml」の中身は次のようになっているものとします。
<?xml version="1.0" encoding="utf-8" ?> <TestDocs> <TestMembers name="Minus"> <summary> 指定した値を合計値から除算する。 </summary> <param name="val">除算する値。</param> <returns>現在の合計値。</returns> </TestMembers> </TestDocs>
それでは、Sandcastleでヘルプファイル(.chm)を作成する手順を示します。
"(バッチファイルのパス)" "$(TargetPath)" "$(TargetDir)" vs2005と記述します。「(バッチファイルのパス)」は先ほど作成したバッチファイルのパスに書き換えてください。
ちなみに、上記のようにして作成されたヘルプ(ヘルプファイルの基になったHTMLファイル)を以下の場所に置いておきます(ZIP圧縮されています)。
「Sandcastle Help File Builder」以外にもSandcastleのGUIツールが幾つかありますので、紹介しておきます。しかしこれらは皆古いため、特別な理由がなければ「Sandcastle Help File Builder」を使うべきです。
.NET Framework 1.1以前は、「NDoc」(日本語版)が定番でした。しかしNDocは.NET Framework 2.0からは使用できなくなりました。以下にNDocの使い方を簡単に説明します。
NDocは「ドキュメントコメントにより型の概要をXMLファイルに出力する」で紹介したXMLドキュメントが必要になりますので、NDocを使用する前に作成しておきます。アセンブリファイルも必要ですので、ビルドしておく必要もあります。Visual Studio .NETの場合は、プロジェクトの設定の「XMLドキュメントファイル」にファイル名が指定されていれば、そのソリューションファイルをNDocの「New from Visual Studio Solution」で開くことにより、自動的にアセンブリファイルとXMLドキュメントファイルのパスが読み込まれ、「Select Assemblies to Document」のリストに追加されます(Addボタンを押してアセンブリファイルとXMLドキュメントファイルのパスを指定することもできます)。後は「Build Documentation」をクリックするだけで、HTMLファイルとHTML Helpファイルがプロジェクトフォルダの下のdocフォルダ内に作られます(デフォルトの設定の場合)。
NDoc Ver 1.3-beta1aで作成したHTMLファイルと、日本語版 Ver 0.1のデフォルトの設定で作成したHTMLファイルを以下のリンク先に置いておきます(ZIP圧縮されています)。
先述した通り、NDocは.NET Framework 2.0以降では使用できなくなりました。しかしNDoc Version 1.3.1をインストール後に、「Much improved NDoc for .Net 2.0」(現在リンク切れ)で公開されていた"ndoc-bin-1.3.1-v16.zip"の中身を上書きすることにより、.NET Framework 2.0でも使えるようになります。現在ダウンロードできる場所は、Googleで"ndoc-bin-1.3.1-v16.zip"を検索してみてください。
また、NDocを基にして作られた「NDoc 2.0 Alpha」や「NDoc 2005」なども公開されています。
上記で紹介したツール以外では、以下のようなものがあります。
Visual Studio .NETには「コードコメントWebレポート」という機能があり、プロジェクトで定義されているオブジェクト、インターフェイス、メンバ等の構造やコメントなどの情報を.htmファイルとして作成することができました。ただし、Visual Studio 2005からはこの機能が無くなりましたので、Visual Studio .NET 2003以前でしか使用できません。
コードコメントWebレポートは、「ドキュメントコメントにより型の概要をXMLファイルに出力する」で紹介したドキュメントコメントのタグの一部を認識し、レポートに反映します。認識するタグは、<summary>、<remarks>、<param>、<returns>、<newpara>(コメント内で新しい段落を開始します)です。ただしVisual Studio .NET 2003以前では、ドキュメントコメントはC#だけで使用でき、VB.NETでは使用できません。
実際どのようなレポートが出力されるのか、見てみましょう。ここでは、上記「Sandcastleを使用してヘルプを作成する」で使用したクラスライブラリ「ClassLibrary1」のコードコメントWebレポートを作成してみます。
まず、Visual Studio .NETのメニュー「ツール」-「Webページのビルドコメント」で「Webページのビルドコメントダイアログ」を表示します。ここでリポートを作成する場所(デフォルトではプロジェクトフォルダの下のCodeCommentReportフォルダ)等を指定し、「OK」をクリックすると、出来上がりです。
このようにして実際に作成されたコードコメントWebレポートを以下のリンク先に置いておきます(ZIP圧縮されています)。正しく表示されませんが、これは作成されたHTMLのリンク先と実際のファイル名が大文字、小文字で異なり、正しくリンクされないためです。VS.NETの不具合と思われます。
XSLTスタイルシートを使えば、ツールを使うことなく、XMLをHTMLに変換してWebブラウザで表示できます。
XMLコメントファイルをXSLTスタイルシートで見やすくするための方法が、MSDNの「Introducing the Visual Studio .NET Lab Series」の「Lab 2: XML Comments」で紹介されています。以下に、「Lab 2: XML Comments」の方法をごく簡単に説明します。
まずXSLファイルを用意し(下のリンク先に置いておきます)、このXSLファイルをXMLファイルと同じフォルダに置き、XMLファイルの先頭の
<xml version="1.0"?>
と
<doc>
の間に
<xml-stylesheet href="doc.xsl" type="text/xsl"?>
を書き足して、おしまいです。こうしてできたXMLファイルを下のリンク先に置いておきます(ZIP圧縮されています)。
上記のXSLファイルはxsl:script要素を使っていますが、これを使わないXSLファイルの例が「Simple XSLT stylesheet for Visual Studio .NET XML documentation」にあります。このXSLファイルを日本語化したものを下に置いておきます(ZIP圧縮されています)。
(この記事は、「.NETプログラミング研究 第36号」で紹介したものです。)