javadocコマンド – 生成コマンド・オプション・タグの使い方 –

Java



※私は転職で年収72万upしました。


今回はJavaでプログラム仕様書を作成する際に用いられるjavadocの使い方について紹介します。javadocを使用して、作成された仕様書は以下のようになります。

公式のJavaAPIドキュメントの仕様書に類似しています






基本的なコマンドとオプション

まずはjavadocコマンドとそのオプションについて確認しましょう。

[基本形]

command $ javadoc  [オプション]  ソースファイル



クラス内にあるprivateで指定されたフィールドはプログラム仕様書に出力されません。出力させるためには[-private]オプションを使用します。

command $ javadoc  -private  ソースファイル



プログラム仕様書を指定したフォルダ内に作成させるには[-d]オプションを使用します。

command $ javadoc -d /Users/key/Desktop/Java_Practice  ソースファイル


ロケールやエンコーディングを指定する場合には[-locale]や[-encoding]オプションを使用します。

javadocのオプションを確認したい場合は以下で全てのオプションを確認できます。(ぜひ一度確認してみてください)

command $ javadoc -help
使用方法:
    javadoc [options] [packagenames] [sourcefiles] [@files]
オプションは次のとおりです:
    --add-modules <module>(,<module>)*
                  初期モジュールに加えて解決するルート・モジュール、または
                  <module>がALL-MODULE-PATHである場合はモジュール・パスの
                  すべてのモジュール。
    -bootclasspath <path>
                  非モジュラ・リリースで使用されるプラットフォーム・クラス・ファイル
                  の場所をオーバーライドする
    -breakiterator
                  BreakIteratorで最初の文を計算する
    --class-path <path>, -classpath <path>, -cp <path>
                  ユーザー・クラス・ファイルのある場所を指定する
    -doclet <class>
                  代替docletを介して出力を生成する
    -docletpath <path>
                  docletクラス・ファイルのある場所を指定する
    --enable-preview
                  プレビュー言語機能を有効にする。-sourceまたは--releaseとともに
                  使用されます。
    -encoding <name>
                  ソース・ファイルのエンコーディング名
    -exclude <pkglist>
                  除外するパッケージ・リストを指定する
    --expand-requires <value>
                  ドキュメント化するモジュールのセットを拡張するための
                  ツールを指定する。デフォルトでは、コマンドラインで明示的に
                  指定されたモジュールのみがドキュメント化されます。"transitive"の値は、
                  それらのモジュールのすべての"requires transitive"依存性を追加で
                  含めます。"all"の値は、それらのモジュールのすべての依存性を
                  含めます。
    -extdirs <dirlist>
                  インストール済み拡張機能の位置をオーバーライドする
    --help, -help, -?, -h
                  コマンドライン・オプションを表示して終了する
    --help-extra, -X
                  非標準オプションの概要を出力し終了する
    -J<flag>      <flag>を実行システムに直接渡す
    --limit-modules <module>(,<module>)*
                  参照可能なモジュールの領域を制限します
    -locale <name>
                  en_USやen_US_WINなどの使用するロケール
    --module <module>(,<module>)*
                  指定されたモジュールをドキュメント化する
    --module-path <path>, -p <path>
                  アプリケーション・モジュールを検索する位置を指定する
    --module-source-path <path>
                  複数モジュールの入力ソース・ファイルを検索する位置を指定する
    -package
                  package/protected/publicタイプとメンバーを表示します。名前のある
                  モジュールの場合、すべてのパッケージとすべてのモジュール詳細を表示します。
    -private
                  すべてのタイプとメンバーを表示します。名前のあるモジュールの場合、
                  すべてのパッケージとすべてのモジュール詳細を表示します。
    -protected
                  protected/publicタイプとメンバー(デフォルト)を表示します。名前のある
                  モジュールの場合、エクスポートされたパッケージとモジュールのAPIを表示します。
    -public
                  publicタイプとメンバーのみを表示します。名前のあるモジュールの場合、
                  エクスポートされたパッケージとモジュールのAPIを表示します。
    -quiet        状態メッセージを表示しない
    --release <release>
                  指定されたリリースとソースの互換性を保つ
    --show-members <value>
                  値が"public"、"protected"、"package"または"private"のいずれかの
                  どのメンバー(フィールドやメソッドなど)をドキュメント化するかを指定する。
                  デフォルトは"protected"で、publicおよびprotectedメンバーが表示され、
                  "public"ではpublicメンバーのみが表示されます。"package"では
                  public、protectedおよびpackageメンバーが表示され、"private"
                  ではすべてのメンバーが表示されます。
    --show-module-contents <value>
                  モジュール宣言のドキュメント化の粒度を指定する。
                  使用可能な値は、"api"または"all"です。
    --show-packages <value>
                  どのモジュールのパッケージをドキュメント化するかを指定する。使用可能な
                  値は、"exported"または"all"パッケージです。
    --show-types <value>
                  値が"public"、"protected"、"package"または"private"のいずれかの
                  どの型(クラスやインタフェースなど)をドキュメント化するかを指定する。
                  デフォルトは"protected"で、publicおよびprotected型が表示され、
                  "public"ではpublic型のみが表示されます。"package"では
                  public、protectedおよびpackage型が表示され、"private"
                  ではすべての型が表示されます。
    -source <release>
                  指定されたリリースとソースの互換性を保つ
    --source-path <path>, -sourcepath <path>
                  ソース・ファイルのある場所を指定する
    -subpackages <subpkglist>
                  再帰的にロードするサブパッケージを指定する
    --system <jdk>
                  モジュラ・リリースで使用されるシステム・モジュールの場所をオーバーライドする
    --upgrade-module-path <path>
                  アップグレード可能なモジュールの位置をオーバーライドする
    -verbose      Javadocの動作についてメッセージを出力する
    --version     バージョン情報を出力する

Standard docletにより提供されるもの:
    --add-stylesheet <file>
                  生成されたドキュメントの追加スタイルシート・ファイル
    --allow-script-in-comments
                  オプションおよびコメントでJavaScriptを許可します
    -author       @authorパラグラフを含めます
    -bottom <html-code>
                  各ページに下部テキストを含めます
    -charset <charset>
                  生成されるドキュメントのクロスプラットフォームでの文字セット
    -d <directory>
                  出力ファイルの転送先ディレクトリ
    -docencoding <name>
                  出力の文字エンコーディングを指定します
    -docfilessubdirs
                  doc-fileサブディレクトリを再帰的にコピーします
    -doctitle <html-code>
                  概要ページにタイトルを含めます
    -excludedocfilessubdir <name>:..
                  指定された名前のdoc-filesサブディレクトリをすべて除外します
    -footer <html-code>
                  各ページにフッター・テキストを含めます
    --frames      生成された出力でフレームの使用を有効にします
    -group <name> <g1>:<g2>...
                  指定する要素を概要ページにおいてグループ化します
    -header <html-code>
                  各ページにヘッダー・テキストを含めます
    -helpfile <file>
                  ヘルプ・リンクのリンク先ファイルを含めます
    -html4        HTML 4.01出力を生成します
    -html5        HTML 5出力を生成します
    --javafx, -javafx
                  JavaFX機能を有効にします
    -keywords     HTMLのmetaタグに、パッケージ、クラスおよびメンバーの情報を含めます
    -link <url>   <url>にjavadoc出力へのリンクを作成します
    -linkoffline <url1> <url2>
                  <url2>にあるパッケージ・リストを使用して<url1>のdocsにリンクします
    -linksource   HTML形式でソースを生成します
    --main-stylesheet <file>, -stylesheetfile <file>
                  生成されたドキュメントのスタイル変更用ファイル
    -nocomment    記述およびタグを抑制して宣言のみを生成します
    -nodeprecated
                  @deprecated情報を除外します
    -nodeprecatedlist
                  非推奨のリストを生成しません
    --no-frames   生成された出力でフレームの使用を無効にします(デフォルト)
    -nohelp       ヘルプ・リンクを生成しません
    -noindex      索引を生成しません
    -nonavbar     ナビゲーション・バーを生成しません
    -noqualifier <name1>:<name2>:..
                  出力から修飾子のリストを除外します
    -nosince      @since情報を除外します
    -notimestamp  非表示のタイムスタンプを除外します
    -notree       クラス階層を生成しません
    --override-methods (詳細|要約)
                  オーバーライドされたメソッドを詳細または要約セクションでドキュメント化します
    -overview <file>
                  HTMLファイルから概要ドキュメントを読み込みます
    -serialwarn   @serialタグに関する警告を生成しません
    -sourcetab <tab length>
                  ソース内のタブの空白文字の数を指定します
    -splitindex   1字ごとに1ファイルに索引を分割します
    -tag <name>:<locations>:<header>
                  単一の引数を持つカスタム・タグを指定します
    -taglet       タグレットの完全修飾名を登録します
    -tagletpath   タグレットのパス
    -top <html-code>
                  各ページに上部テキストを含めます
    -use          クラスとパッケージの使用ページを作成します
    -version      @versionパラグラフを含めます
    -windowtitle <text>
                   ドキュメント用のブラウザ・ウィンドウ・タイトル

GNUスタイル・オプションでは、オプションの名前とその値を区切るために空白ではなく=を
使用できます。
command $ 





プログラム仕様書に詳細な解説を出力する

プログラム仕様書に詳細な解説を出力させるには、プログラム内の対象箇所を[ /**  */ ]で囲みます。※javadocタグ(@〜)についてはこのあと紹介します。

/**
 * Heroクラス
 * @author キー
 * @version 1.0
 */

public class Hero {
・・・・処理・・・・
}





javadocタグの利用

プログラム仕様書にメソッドのパラメータや戻り値の記述などを含める場合にはjavadcoタグを使用します。

[主なjavadocタグ]

コメントの形式意味利用可能な場所
class or interfacefieldmethod
@author 作者名クラスの作者名
@version バージョンバージョン情報
@param 引数名 解説引数とその解説
@return 解説戻り値の解説
@exception FQCN 解説出力する可能性がある例外
@see クラス名参考にしてほしいほかのクラス
@since バージョン実装されたバージョン
@deprecated 解説非推奨として表示する場合に使う

※「スッキリわかるJava入門|実践編(第2版)」より引用





javadocの作成

では実際に紹介したjavadocタグを使用し、プログラム仕様書を作成していきます。
プログラム仕様書を作成する対象のソースファイルは2ファイルとしています。

[Mainクラス]

public class Main {
    
    public static void main(String[] args) {

        Hero h = new Hero();
        Hero hero =h.status("バットマン",100,70);

        System.out.println("ヒーローのステータスを表示");
        System.out.println("名前:" + hero.getName());
        System.out.println("HP:" + hero.getHp());
        System.out.println("MP:" + hero.getMp());
    }
}



[Heroクラス]

public class Hero {
    
    private String name;
    private int hp;
    private int mp;

    public String getName() {
        return this.name;
    };

    public void setName(String name) {
    this.name = name;
    };

    public int getHp() {
        return this.hp;
    }

    public void setHp(int hp) {
    this.hp = hp;
    }

    public int getMp() {
        return this.mp;
    }

    public void setMp(int mp) {
    this.mp = mp;
    }

    public Hero status(String name, int hp, int mp){
    
        Hero hero = new Hero();
        hero.setName(name);
        hero.setHp(hp);
        hero.setMp(mp);

        return hero;
    }

}


実行すると以下のようにコンソールに表示されます。

名前:バットマン
HP:100
MP:70



ではまず初めにjavadocタグを使用して、プログラム仕様書に出力する解説文を作成していきます。

[Mainクラス]

/**
 * Mainクラス(ヒーローの情報をコンソールに出力させる)
 * @author キー
 * @see    Hero
 */
public class Main {
    
    public static void main(String[] args) {

        Hero h = new Hero();
        Hero hero =h.status("バットマン",100,70);

        System.out.println("ヒーローのステータスを表示");
        System.out.println("名前:" + hero.getName());
        System.out.println("HP:" + hero.getHp());
        System.out.println("MP:" + hero.getMp());

    }
}



[Heroクラス]

/**
 * Heroクラス
 * @author キー
 * @version 1.0
 */

public class Hero {
    
    private String name;
    private int hp;
    private int mp;

    public String getName() {
        return this.name;
    };

    public void setName(String name) {
    this.name = name;
    };

    public int getHp() {
        return this.hp;
    }

    public void setHp(int hp) {
    this.hp = hp;
    }

    public int getMp() {
        return this.mp;
    }

    public void setMp(int mp) {
    this.mp = mp;
    }

    /**
     * ヒーローの情報を格納するクラス
     * @param name  ヒーローの名前
     * @param hp    ヒーローのHP
     * @param mp    ヒーローのMP
     * @return      格納されたヒーローの情報
     */
    public Hero status(String name, int hp, int mp){
    
        Hero hero = new Hero();
        hero.setName(name);
        hero.setHp(hp);
        hero.setMp(mp);

        return hero;
    }

}



ではjavadocコマンドを使用してプログラム仕様書を作成していきます。(今回はMacのターミナルで実行しています)

javadocディレクトリを作成し、そこにプログラム仕様書を作成するようにします。

command $ pwd
/Users/key/Desktop/Java_Practice/src
command $ ls
Hero.java	Main.java	javadoc
command $ 



以下を実行します。

command $ javadoc -private -d /Users/key/Desktop/Java_Practice/src/javadoc/ Main.java Hero.java
ソース・ファイルMain.javaを読み込んでいます...
ソース・ファイルHero.javaを読み込んでいます...
Javadoc情報を構築しています...
標準Docletバージョン11.0.13
全パッケージとクラスの階層ツリーを作成しています...
/Users/key/Desktop/Java_Practice/src/javadoc/Hero.htmlの生成中...
/Users/key/Desktop/Java_Practice/src/javadoc/Main.htmlの生成中...
/Users/key/Desktop/Java_Practice/src/javadoc/package-summary.htmlの生成中...
/Users/key/Desktop/Java_Practice/src/javadoc/package-tree.htmlの生成中...
/Users/key/Desktop/Java_Practice/src/javadoc/constant-values.htmlの生成中...
全パッケージとクラスのインデックスを作成しています...
/Users/key/Desktop/Java_Practice/src/javadoc/overview-tree.htmlの生成中...
/Users/key/Desktop/Java_Practice/src/javadoc/index-all.htmlの生成中...
全クラスのインデックスを作成しています...
/Users/key/Desktop/Java_Practice/src/javadoc/allclasses-index.htmlの生成中...
/Users/key/Desktop/Java_Practice/src/javadoc/allpackages-index.htmlの生成中...
/Users/key/Desktop/Java_Practice/src/javadoc/deprecated-list.htmlの生成中...
全クラスのインデックスを作成しています...
/Users/key/Desktop/Java_Practice/src/javadoc/allclasses.htmlの生成中...
/Users/key/Desktop/Java_Practice/src/javadoc/allclasses.htmlの生成中...
/Users/key/Desktop/Java_Practice/src/javadoc/index.htmlの生成中...
/Users/key/Desktop/Java_Practice/src/javadoc/help-doc.htmlの生成中...
command  $



javadocディレクトリ内を確認

command $ cd javadoc
command $ ls
Hero.html			index-all.html			package-tree.html
Main.html			index.html			resources
allclasses-index.html		jquery				script.js
allclasses.html			member-search-index.js		search.js
allpackages-index.html		member-search-index.zip		stylesheet.css
constant-values.html		overview-tree.html		type-search-index.js
deprecated-list.html		package-search-index.js		type-search-index.zip
element-list			package-search-index.zip
help-doc.html			package-summary.html
command $

様々なファイルが作成されています。



対象クラスのプログラム仕様書を確認

Main.java | Hero.java のプログラム仕様書はそれぞれ「Main.html」と「Hero.html」になります。これらをブラウザに貼り付けると以下のようにjavadocで作成されたプログラム仕様書が確認できます。

Mainクラスのプルグラム仕様書

Heroクラスのプログラム仕様書

しっかりとそれぞれのプログラム仕様書が作成されていることが確認できました。今回はjavadocを使用して、Javaのプログラム仕様書を作成する方法について確認していきました。

[オススメ記事]

Javaで作成するWebアプリケーション#1〜7

コメント

タイトルとURLをコピーしました