6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Delphi と XML ドキュメントコメント

Last updated at Posted at 2021-05-05

はじめに

Delphi 10.4.2 Sydney で XML ドキュメントコメントを書いていて**「ん?」**と思ったので記事にしてみました。

XML ドキュメントコメント

Delphi 2007 以降では (というか Delphi 2007 以降で "も") トリプルスラッシュ (///) で始まるコメントは XML ドキュメントコメントとして扱われます。

例えば、このような関数があったとします。

function Test(a, b: Integer): Integer;
begin
  result := a * b;
end;

Test() 関数の直上に次のような XML ドキュメントコメントを記述できます。

/// <summary>
///   テスト関数
/// </summary>
/// <param name="a">
///   被乗数
/// </param>
/// <param name="b">
///   乗数
/// </param>
/// <returns>
///   a * b の結果を返します。
/// </returns>
/// <remarks>
///   特に意味のない関数です。
/// </remarks>
function Test(a, b: Integer): Integer;
begin
  result := a * b;
end;

XML ドキュメントコメントはコードエディタで折りたたむことができます。

See also:

ヘルプインサイト

Test() 関数が使われている場所でヘルプインサイトを表示させると、ソースコード中に記述した Test() 関数の XML ドキュメントコメントがポップアップで表示されます。
image.png
ヘルプインサイトは

  • コードエディタでマウスポインタを識別子の上に置いてしばらく待つ。
  • 〔Ctrl〕+〔Shift〕+〔H〕を押す。

いずれかの方法で表示できます。

See also:

Delphi 10.4.2 におけるヘルプインサイト

Delphi 10.4 で LSP (Language Server Protocol) が実装され、10.4.2 において *.dpr (コンソールアプリケーションを含む Delphi プロジェクトファイル) でも LSP が正しく動作するようになった影響なのか、*.dpr でもヘルプインサイトで XML ドキュメントコメントが使えるようになっているようです。

以前のバージョンでは *.dpr 内ではヘルプインサイトが効かなかったと記憶しています。
image.png
試しに Delphi 10.4.2 で LSP を切ってみると、*.dpr でのヘルプインサイトで XML ドキュメントコメントが無視されました。
image.png
See also:

ドキュメントコメントがヘルプインサイトに表示されない?

記述方法によってはドキュメントコメントがヘルプインサイトに表示されない事があるようです。古い Delphi (IDE) のバグのような気がするのですが...。

・可視性セクション

高度なレコード型でメソッド定義の前に public 等の可視性指定子がないとドキュメントコメントが表示されなかったり、最上位にあるメソッドのドキュメントコメントがそれ以降のメソッドにも表示される事があるようです。

type
  TMyRecord = record
    Data: string;
  public // <- これ
    /// <summary>
    ///   テスト関数
    /// </summary>
    function Test(a, b: Integer): Integer;

・連続して定義された型

たとえば、次のように型が連続して定義されていると、ドキュメントコメントがヘルプインサイトに表示されない事があるようです。

type
  TMyRecord1 = record
    ...

  TMyRecord2 = record // <- TMyRecord2 のドキュメントコメントが表示されない
    ...

この場合 type を挿入してやればいいようです。

type
  TMyRecord1 = record
    ...

type // <- これ
  TMyRecord2 = record
    ...

ライブテンプレート

XML ドキュメントコメントはライブテンプレートを使うと簡単に挿入できます。例えば summary〔Tab〕 と入力すると、

/// <summary>
///
/// </summary>

が挿入されます。

[表示 | ツールウィンドウ | テンプレート] (古いバージョンでは [表示 | テンプレート]) でテンプレートウィンドウを表示し、リストからダブルクリックする事でもテンプレートを挿入できます。
image.png

See also:

XML ドキュメントコメント関連のライブテンプレート

XML ドキュメントコメント関連のライブテンプレートには次のようなものがあります。

テンプレート名 説明
summary XMLDoc の <summary> タグを作成します
param XMLDoc の <param> タグ タグを作成します
returns XMLDoc の <returns> タグを作成します
remarks XMLDoc の <remarks> タグを作成します
para XMLDoc の <para> タグを作成します

See also:

ライブテンプレートの格納位置

ユーザが作成したライブテンプレートは %UserProfile%\Documents\Embarcadero\Studio\code_templates に保存されますが、この位置はライブテンプレートが利用可能なすべてのバージョンの Delphi が参照しています。よって、複数のバージョンの Delphi をインストールしている場合には、動作しないライブテンプレートが含まれてしまう可能性があります。

バージョン固有のライブテンプレートは <Delphi インストールフォルダ>\ObjRepos 以下のフォルダに保存することで、競合を解決する事が出来ます。

種類 ライブテンプレートの保存場所
古い Delphi <Delphi インストールフォルダ>\ObjRepos\code_templates\delphi
Delphi (英語 UI) <Delphi インストールフォルダ>\ObjRepos\en\Code_Templates\Delphi
Delphi (日本語 UI) <Delphi インストールフォルダ>\ObjRepos\ja\Code_Templates\Delphi

Documentation Insight

Delphi XE2~XE5 には Documentation Insight という XML コメント入力支援ツールの Express 版がバンドルされていました。有償版は現在でも入手可能です。
image.png
See also:

おわりに

活用しようとするとさまざまな要素が絡んでくる XML ドキュメントコメントですが、情報を整理してみるとそんなに難しいものではありませんね。

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?