【ジェイエスドック】

JSDoc とは?

💡 コメントを書くだけでドキュメントが生まれる魔法のルール
📌 このページのポイント
JSDoc の2つの役割 JSDocコメント /** @param {string} name - ユーザー名 @returns {User} ユーザー情報 */ function getUser(name) { ... } エディタ連携 コード補完の精度向上 ホバー時の型情報表示 型エラーの検出(checkJs) ドキュメント生成 HTML APIリファレンス 関数・クラス一覧ページ .d.ts 型定義ファイル出力 TypeScriptなしでも型の恩恵が得られる仕組み
JSDocの2つの役割のイメージ
ひよこ ひよこ

JSDocって何のために使うの?

ペンギン先生 ペンギン先生

関数やクラスの上に特別なコメントを書くと、2つの良いことがあるんだ。1つはHTMLドキュメントを自動生成できること。もう1つはエディタがそのコメントを読み取って、コード補完やエラー検出を賢くしてくれることだよ

ひよこ ひよこ

どんなふうに書くの?

ペンギン先生 ペンギン先生

/** */というブロックコメントの中に、@param {string} name - ユーザー名 のようにタグを書くんだ。@param で引数の型と説明、@returns で戻り値、@throws で例外を記述できるよ

ひよこ ひよこ

TypeScriptがあればJSDocはいらないんじゃないの?

ペンギン先生 ペンギン先生

いい質問だね。実はTypeScriptを導入できないプロジェクトでもJSDocで型情報を書けば、VSCodeが型チェックしてくれるんだ。tsconfig.jsonで「checkJs」を有効にすると、JSDocの型アノテーションTypeScriptの型チェッカーが読み取ってくれるよ

ひよこ ひよこ

大きなプロジェクトでも使われているの?

ペンギン先生 ペンギン先生

実はGoogleの社内標準コーディングスタイルにもJSDocが含まれているよ。SvelteやPreactなど、あえてTypeScriptではなくJSDoc + JavaScriptで開発しているプロジェクトもあるんだ。ビルドステップが不要で、純粋なJavaScriptのまま型の恩恵を受けられるのが理由だね

ひよこ ひよこ

ドキュメント生成以外にも活用方法があるんだね!

ペンギン先生 ペンギン先生

そうなんだ。最近はTypeScriptの型定義ファイル(.d.ts)をJSDocから自動生成することもできるよ。ライブラリJavaScriptで書きつつ、利用者にはTypeScriptの型情報を提供する、というハイブリッドなアプローチが注目されているんだ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「JSDoc」って出てきたら「JavaScriptのコメントで型情報やドキュメントを書く仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「JSDoc」 = JavaScript Documentation
💬 「JavaScript」と「Documentation(ドキュメント)」を組み合わせた名前。JavaのJavadocにインスパイアされて作られたよ
← 用語集にもどる