開発環境の例

カスタムタグを作るための環境として、OSおよびJDKのバージョンを以下のように想定して進めます。異なる場合は適宜読み替えてください。


OSMicrosoft Windows XP SP2
JDKJava SE 6
表2:カスタムタグを作るための環境

   なおJava SE 6は以下のURLからダウンロードできます。

   JDKはcドライブ直下の「c:\java」にインストールし、今回のカスタムタグ作成プロジェクト「c:\projects \CustomTagletProject」をルートディレクトリとして作成することにします。プロジェクトのディレクトリ構成は以下の通りとします。

spec仕様書を置くディレクトリ
srcソースコードを置くディレクトリ
classesソースコードをコンパイルしてできたクラスファイルを置くディレクトリ
javadocソースコードを基に作成したリファレンスドキュメントを置くディレクトリ
表3:プロジェクトのディレクトリ構成

カスタムタグに必要なメソッド

@specタグはcom.sun.tools.doclets.Tagletインターフェースを実装したSpecTagletクラスとして実装します。メインとなる4つのメソッドの概略は次の通りです。

getName()メソッド
タグ名(spec)を返す。
toString(Tag)メソッド
タグのテキスト引数を元に、リファレンスドキュメントに仕様書へのリンクをあらわす文字列を返す。
toString(Tag[])メソッド
複数のタグのテキスト引数を元に、リファレンスドキュメントに仕様書へのリンクをあらわす文字列を返す。
isInlineTag()メソッド
ブロックタグとするのでfalseを返す。
表4:メインとなる4つのメソッド

これら4つのメソッド以外には、タグを有効とするドキュメンテーションコメントの位置(コンストラクタ、クラス、メソッドなど)を設定するためのinXX()メソッドがあります。

さらにタグレットを有効化するために、以下のstaticメソッドを定義する必要があります。

register(Map)
引数のMapに、key=タグ名、value=タグのインスタンスを追加するよう実装する。
表5:タグレットを有効化するためのメソッド

これ以外のメソッドや詳細は、Sunが提供している以下のドキュメントを参考にしてください。

カスタムタグを利用してみる

コマンドプロンプトを起動して、プロジェクトルートディレクトリに移動します。カスタムタグを利用するには、javadocコマンドをオプション付きで実行する必要があります。必要なオプションは「-tagletオプション」と「-tagletpathオプション」です。

「-tagletオプション」は、Tagletインターフェースを実装したクラスの完全クラス名(今回は「jp.co.ulsystems.tools.taglets.SpecTaglet」が相当します)を指定します。

「-tagletpathオプション」は「-tagletオプション」で指定したクラスのクラスファイルがあるパスを指定します。

javadocコマンドにはカスタムタグに関する以外のオプションもあります。リファレンスドキュメント(HTMLファイル)の文字エンコーディン グや出力先ディレクトリを指定する場合は、それぞれ「-docencodingオプション」と「-dオプション」で指定します。

以下はコマンドの実行例です。


(画像をクリックすると別ウィンドウに拡大図を表示します)

@specタグと同様にして、仕様項目を表示する「@spec.chapter」タグ、仕様番号を表示するカスタムタグ「@spec.id」を、そ れぞれSpecChapterTagletクラス、SpecIdTagletクラスで実装します。こちらも利用してみましょう。

利用する際は、先ほどと同様にコマンドプロンプトからjavadocコマンドを入力します。以下の実行例のように「-tagletオプション」で、利用するカスタムタグクラスの完全クラス名を指定することを忘れないようにしましょう。


(画像をクリックすると別ウィンドウに拡大図を表示します)

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30