JSDoc覚書

JavaScript

JSDocは、JavaScriptコードに記述したコメントからHTMLドキュメントを自動生成するツールです。

利用条件:Node.jsがインストール済みであること

JSDocのインストール

コマンドプロンプト上で

npm install -g jsdoc

を実行する。

classをドキュメント化する例

以下のようなファイルを例に説明する。

index.html

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="main.js"></script>
    <title>RPGのキャラクタをクラス化してみる</title>
</head>
<body>
    <p>コンソールに表示しています...</p>
</body>
</html>

main.js

// main.js

class Character{
    constructor(name, hp, mp, type, level){
        this.name = name;
        this.hp = hp;
        this.mp = mp;
        this.type = type;
        this.level = level;
    }

    setHp(hp){
        this.hp = hp;
    }

    getType(){
        return this.type;
    }

    getName(){
        return this.name;
    }
    
    showInfo(){
        console.log(`${this.name}`);
        console.log(`HP: ${this.hp}`);
        console.log(`MP: ${this.mp}`);
        console.log(`${this.type}/Level ${this.level}`);
    }
}

window.addEventListener("load", ()=>{
    // クラスのインスタンス化
    const char1 = new Character("レオンハルト", 100, 20,"戦士", 2);
    const char2 = new Character("カイア", 200, 0, "魔導士", 3);

    // クラスのメソッドを利用
    char1.showInfo();
    char2.showInfo();

});

上記、main.js内のクラスCharacterをJSDoc用のドキュメント生成方法に則って記述すると以下のようになる。

class部分のみ抜粋

/**
 * @classdesc RPGのキャラクタを管理します
 * @author Shuichi Takeda
 * @version 1.0.0
 */
class Character{
    /**
     * 
     * @param {string} name 名前 
     * @param {int} hp ヒットポイント
     * @param {int} mp マジックポイント
     * @param {string} type 種族
     * @param {int} level レベル
     */
    constructor(name, hp, mp, type, level){
        this.name = name;
        this.hp = hp;
        this.mp = mp;
        this.type = type;
        this.level = level;
    }

    /**
     * HPを設定します
     * @param {int} hp 設定するHP
     */
    setHp(hp){
        this.hp = hp;
    }

    /**
     * 種族を返します
     * @return {string} type
     */
    getType(){
        return this.type;
    }

    /**
     * 名前を返します
     * @return {string} name 
     */
    getName(){
        return this.name;
    }
    
    /**
     * キャラクタ情報(名前、HP、MP、レベル)をコンソールに表示します。
     */
    showInfo(){
        console.log(`${this.name}`);
        console.log(`HP: ${this.hp}`);
        console.log(`MP: ${this.mp}`);
        console.log(`${this.type}/Level ${this.level}`);
    }
}

参考

Documentation - JSDocリファレンス
TypeScriptを備えたJavaScriptはどのようなJSDocをサポートしているか

HTMLドキュメントを生成する

コマンドプロンプトで該当フォルダに移動し、

jsdoc main.js

などのように実行する。

outフォルダが生成される。outフォルダにあるindex.htmlを開くと以下のようなイメージでドキュメントが生成されている。

コメント