第2章.コメントを書こう

第2章.コメントを書こう
読 み や す い プ ロ グ ラ ム を 書 く に は 、 コ メン ト を書 く こ と が 大 切 です 。
も ち ろん 、 コ メン ト が なく て も 十 分 読 み や す い プ ロ グ ラム を 書 く べ き で は あ り ます が 、 それ で も ソ ー ス コ
ー ドの 要 約 や その 処 理 の 意 図 な ど を明 確 に 緑 色 の 日 本 語 の 文 字 で説 明 し て おく べ き です 。 そ うす る
こ と で 、 ロ ジ ッ ク を解 析 す る 手 間 が 省 け た り 、 ソ ー ス コー ド を読 ん で も す ぐ に は 理 解 で き な いよ うな 情 報 を
読 む 人 に 伝 えた り す る こ と が で き ます 。
こ の 章 では 、 ソ ー ス コ ー ドの ど こ に 、ど の よ う なコ メ ン ト を書 く べ き か を説 明 し ます 。
2-1.ソース看板コメントを記述しよう
各 モジュールのソースコードの先 頭 部 分 の、 package と import の間 には、ファイル名 や作 成 日 等 を記 述
するコメントを書 きましょう。
作 成 日 や変 更 日 、変 更 内 容 を記 録 することにより、ソースコードを読 まなくても修 正 箇 所 や変 更 箇 所 を
把 握 することができます。 通 常 は、開 発 現 場 ごとに、記 述 する内 容 や形 式 が決 まっていることが多 いで
す。
2-2.javadoc コメントを記述しよう
javadoc とは、クラス・フィールド・メソッドの説 明 時 に使 用 するドキュメンテーションコメントのことを指 します。
自 作 したクラスの先 頭 部 分 には、そのクラスの概 要 や作 成 者 等 を説 明 するコメントを書 きましょう。
また、自 作 したメソッドの先 頭 部 分 には、その処 理 の概 要 や戻 り値 の内 容 等 を説 明 するコメントを書 きま
しょう。
説 明 を記 述 することにより、ソースコードを読 まなくてもそのクラスやメソッドの役 割 ・機 能 や使 い方 を把 握
Copyright (C) 2015 株式会社 JOBSUPPORT All Rights Reserved.
することができます 通 常 は、開 発 現 場 ごとに、関 数 の説 明 として記 述 する内 容 や形 式 が決 まっていること
が多 いです。
javadoc 内 では、コメントを記 入 する際 にクラスやメソッドの役 割 を示 す為 のタグを使 用 します。
以下のタグは代表例です。
@version
@author
@param
@return
@throws
:
:
:
:
:
バージョンを記述します。
クラスやメソッドの作成者名を記述します。
メソッドの引数の説明を記述します。
メソッドの戻り値の説明を記述します。
throws がある場合、例外クラスの説明を記述します。
Copyright (C) 2015 株式会社 JOBSUPPORT All Rights Reserved.
2-3.特殊な変数は、用途を説明しよう
変 数 のスコープが狭 い場 合 は、適 切 な変 数 名 さえつけてあれば変 数 に対 するコメントなどは特 に必 要 と
しません。 しかし、例 えばフィールドなど、変 数 のスコープが広 い場 合 や、保 持 する値 が特 殊 な変 数 の場
合 は、 その用 途 や保 持 する値 の内 容 をコメントで説 明 しましょう。
(1) スコープが広い変数
フィールドなど、複 数 のクラスやメソッドから参 照 される変 数 は、どのような使 われ方 をするのか、 どのよう
な値 を保 持 するのかを説 明 しましょう。
ローカル変 数 はそのメソッド内 のみで使 用 されるので、そのメソッドのソースコードを読 めばどのように使 っ
ているのかが分 かります。 しかし、フィールドは、まずどのクラスで使 っているのかを調 べて、 該 当 したそれ
ぞれのクラスのソースコードを読 まないとどのように使 っているのかが分 かりません。 場 合 によってはそれぞ
れのクラスがどのタイミングでどこから呼 ばれるクラスなのか、 ということまで調 べないと役 割 が理 解 できな
いこともあります。
このような手 間 を少 しでも軽 減 するため、ソースコードを読 む人 の理 解 の助 けになるよう、スコー プの広 い
変 数 には説 明 コメントを書 きましょう。
(2) データ構造に関わるような重要な変数
プログラムでデータをどのように扱 うか、その方 法 に大 きく影 響 する変 数 には、詳 細 な説 明 を記 述 しましょ
う。
プログラムは、データを処 理 するためにあります。
データの集 まりを保 持 する形 式 のことをデータ構 造 と呼 び、 配 列 やリスト、ハッシュテーブル、スタック、キ
ューなど、さまざまな種 類 があります。 どのデータ構 造 を使 用 するかによって、プログラムの処 理 の仕 方 に
大 きく影 響 します。
よって、データ構 造 が把 握 できれば、そのプログラムでどのような処 理 が行 われているかを自 ずと予 想 でき
たりすることがあります。 そのため、データ構 造 そのもの、もしくはそのデータ構 造 に関 わる変 数 に対 しては、
データの保 持 の仕 方 や保 持 するデータの内 容 などの詳 細 な説 明 を記 述 しましょう。
(3) フラグのような特殊な使われ方をする変数
通 常 の正 常 でストレートなロジックを乱 してしまうような、例 えばフラグのような変 数 には、 どのように扱 わ
れる変 数 なのかを説 明 しましょう。
フラグのような変 数 は、プログラムのどこでどんな値 を設 定 しているのか、 どこで参 照 しているのかが分
かりづらくなることがあるため、プログラムが難 解 になってしまいます。 そのような変 数 はできるだけ使 用 し
ないようにするべきですが、やむを得 ず使 用 せざるを得 ない時 もあります。 その時 は、どのような役 割 を持
った変 数 なのか、必 要 であれば保 持 する値 によって プログラムの挙 動 がどう変 化 するのかといったことま
で説 明 を記 述 しましょう。
Copyright (C) 2015 株式会社 JOBSUPPORT All Rights Reserved.
2-4.ブロックの先頭に概要説明を記述しよう
if や for/while、switch 等 のブロックの先 頭 には、 そのブロックで行 おうとしている処 理 の概 要 を説 明
するコメントを記 述 しましょう。
ブロックの先 頭 に説 明 を記 述 することにより、 そのブロック内 のソースコードを読 まなくてもそこで行 おうと
している処 理 の概 要 が把 握 でき、 ソースコードをかいつまんで読 む際 にとても役 に立 ちます。
処 理 内 容 を要 約 するという役 割 において、コメントの効 果 は絶 大 です。
2-5.特殊な処理、際どい処理には、理由や意図を書こう
プログラムは読 みやすさを考 慮 して、できるだけ明 快 かつ自 然 な流 れで、 安 全 で安 定 した処 理 になるよ
う記 述 するべきですが、 ときにはどうしても複 雑 で際 どい処 理 を書 かなければならない場 面 があります。
そのときは、後 々他 人 が、または未 来 の自 分 がそのプログラムを読 んだ時 に、 「なぜこんな複 雑 な処 理
を行 っているのだろうか?」と困 惑 してしまわないよう、 きちんと説 明 を記 述 しておく必 要 があります。
具 体 的 には、記 述 したプログラムを読 み返 したときに、以 下 のようなイレギュラーな処 理 内 容 が見 つかっ
た場 合 、 その理 由 や意 図 をコメントとして記 述 しましょう。

変 則 的 な処 理 。 (例 ) 通 常 行 わなくてもいいような処 理 を、わざわざ行 っている。

不 順 な処 理 。
(例 ) 通 常 の処 理 手 順 からするとそこで行 うべきではない処 理 を、あえてそこで行 ってい
る。

特 殊 な処 理 。
(例 ) データの単 純 な参 照 を行 わず、文 字 列 の部 分 切 り出 し等 の特 別 な加 工 をしてい
る。

複 雑 な制 御 。
(例 ) 処 理 を行 うかどうかの制 御 や条 件 が複 雑 、または多 い。

複 雑 な処 理 。
(例 ) 複 雑 なアルゴリズムを採 用 している。
もし、コメントを記 述 しようとして説 明 内 容 を考 えたときに明 確 でもっともらしい理 由 や意 図 が思 いつかな
いようであれば、 そのプログラムのロジックに問 題 があるのかもしれません。 一 度 プログラムの処 理 内 容
を見 直 し、適 切 なロジックになるようコーディングし直 してください。
Copyright (C) 2015 株式会社 JOBSUPPORT All Rights Reserved.
コメントを記 述 する作 業 は、自 分 の頭 の中 を整 理 し直 す作 業 でもあります。 この処 理 は何 か? 何 のた
めの処 理 か? なぜこの位 置 で行 っているのか? コメントは要 るか? というようなことを考 えることにより、
時 にはそのプログラムの不 必 要 に複 雑 になっている部 分 や無 駄 な記 述 に気 付 いたりすることがあります。
それを修 正 することで、より読 みやすくて無 駄 のないプログラムに近 づくことができます。
このように、コメントを書 くことはプログラムの保 守 性 を向 上 させ、 更 に自 身 のコーディングレベルの向 上
にもつながりますので、面 倒 くさがらず、しっかり記 述 するようにしましょう。
2-6.処理のひとまとまりに、目印になる要約コメントを書こう
プログラムは読 みやすさを考 慮 して、メソッドの処 理 が長 くなりすぎないようにメソッドを分 割 したり する必
要 がありますが、ときにはどうしても長 い処 理 を書 かなければならない場 面 があります。
そのときは、長 い処 理 の中 でも関 連 する処 理 ごとに空 行 で記 述 エリアを分 け、 そのひとまとまりに目 印
になる要 約 コメントを記 述 しておくと、長 い処 理 でもだいぶ流 れが追 いやすくなります。
以 下 に、要 約 コメントの記 述 例 を示 します。
Copyright (C) 2015 株式会社 JOBSUPPORT All Rights Reserved.
Copyright (C) 2015 株式会社 JOBSUPPORT All Rights Reserved.
目立つコメントは、書きすぎに注意
上 述 のように目 印 になるような目 立 つコメントは、 要 所 要 所 に記 述 すると長 いプログラムの処 理 が追 い
やすくなってとても役 に立 ちますが、 記 述 する際 は書 きすぎないように注 意 してください。
本 当 はそれほど長 くない処 理 だったり目 立 たせる必 要 がなかったりする場 面 で、 何 でもかんでも目 立 つ
コメントを書 いてしまうと、 処 理 の記 述 が埋 もれてしまい逆 に読 みづらくなってしまうことがあります。
また、コメントに頼 りすぎず、「うまくメソッド分 割 ができないか?」等 、簡 潔 に記 述 する方 法 もきちんと検 討
しましょう。
2-7.無駄なことを書かず、プログラムの理解を助けるためのコメントを書こう
コメントには、当 たり前 すぎることは書 かず、プログラムを読 む人 の理 解 を助 けるための説 明 を記 述 しまし
ょう。
日 本 語 での説 明 のほうが分 かりやすいからと言 って、全 ての処 理 一 行 一 行 に対 してコメントを書 く必 要 は
ありません。 何 でもかんでもコメントを記 述 すると、処 理 の部 分 が埋 もれてしまい、逆 に読 みづらくなります。
また、本 当 に注 目 すべき説 明 文 が目 立 たなくなってしまい、 せっかく書 いた注 釈 としてのコメントの効 果 が
薄 くなってしまうこともあります。
コメントを記 述 する際 は、そのソースコードを他 人 が読 んだ時 にすんなり理 解 できるか? そのままでは誤
解 や混 乱 を招 いてしまうようなロジックになっていないか? というようなことを考 え、 コメントの要 /不 要 を
判 断 するようにしてください。
当 たり前 すぎて説 明 する必 要 のない処 理 にまでコメントを書 く必 要 はありません。 「これは説 明 しておか
ないとコードを見 てもすぐには理 解 できないだろう」と思 われる箇 所 にコメントを書 きましょう 。
Copyright (C) 2015 株式会社 JOBSUPPORT All Rights Reserved.
Copyright (C) 2015 株式会社 JOBSUPPORT All Rights Reserved.