コメント (コンピュータ)

コメント（）とは、コンピュータ言語（プログラミング言語やデータ記述言語）によって書かれたソースコードのうち、人間のために覚え書きとして挿入された注釈のことである。この部分はコンピュータが処理を行うときには存在しないものとして無視されるため、自由に文を挿入することができる。
用途.
プログラムの意図の明示.
どのような言語を用いてソースコードを書いたとしても、記述者とは別の人が読んだり、当人であっても時間をおいてから読んだりする場合には、ソースコードからその意図を正しく読み取ることが困難な場合がある。そのために、ソースコードの意図をコメントとしてソースコード中に挿入することが役立つ。
コメントアウト.
注釈ではなく有効なコードのうち、一時的にコンピュータに処理させたくない部分を削除するかわりにコメントとすることもしばしば行われる。これをコメントアウト (comment-out) という。このとき、コメントアウトさせたい部分中にコメントが記述されている場合もあるため、構文的にコメントの入れ子が可能かどうかは大きな意味を持つ。なお、対義語、すなわちコメントを解除し処理を有効にすることはアンコメント (uncomment) などと呼ぶ。
バージョンの相違への対応.
特殊な用途としては、ある言語を拡張した際、古いバージョンではその部分を解釈させたくないときにコメントアウトすることがある。HTMLの中にJavaScriptを組み込む場合、Internet Explorerの独自拡張である条件付きコメントなどが該当する。
種類.
コメントは、特定の記号などの文字あるいは文字列（トークン）から行末までをコメントとして扱う行コメントと、2つのトークンで前後を括りその内部をコメントとして扱うブロックコメントに大別される。行コメントは、言語により行のどこからでもコメントを開始できるものと、行頭にのみコメント開始記号を記述できるものがある。いずれにしても行コメントは行の途中でコメントを終了することができない、コメントが数行に渡る場合にも行ごとにコメントの開始を指示しなければならないといったデメリットがあるかわり、コメントの終了を指示しなくてもよいというメリットがある。
行コメント.
代表的な行コメントには以下のようなものがある。基本的に半角（ASCII）の英数字や記号が開始トークンとして使用される。
ブロックコメント.
代表的なブロックコメントには以下のようなものがある。
C/C++およびC#では、プリプロセッサディレクティブのcodice_41 - codice_42が、ブロックコメントの代用として使われることもある。ディレクティブは入れ子にすることができ、また簡単にコードの有効化／無効化を切り替えることができるというメリットがある一方、多用すると「どのコードが有効であるか」が一見して判別しにくくなるというデメリットもある。
コメントに類似のもの.
コンピュータ言語のソースコード以外のデータを扱うアプリケーションソフトウェアでも、コメント同様の機能が利用できる場合がある。ワードプロセッサソフトや表計算ソフトにおける「コメント」あるいは「付箋」などの機能が該当する。
備考.
オープンソース／クローズドソースを問わず、コメントはプログラムの共同開発やソースコードの保守管理に欠かせないものである。特にプログラム内にコメントによるドキュメントを含ませることで、チームを組んで共同作業したり保守したりするうえで役立つ。また、担当者が変わった後でも保守・改良、またはバグ修正に大きな力を発揮する。ただし、それは「正しいコメントが記述されている」という前提の話である。間違ったコメントが書かれている場合、解読を妨げたり誤解を生んだりする原因にもなる。
コメントの良し悪しは、読者の前提知識や主観もかかわってくるので、どのようなコメントが適切であるかは一概には述べることができない。プログラムコードの各ステップ行で何を実行しているかを自然言語によって逐一説明するようなコメントは、「冗長である」「記憶領域を無駄に浪費する」「読みづらくなる」などの短所をはらむ可能性もあるが、初心者や入門者向けのサンプルコードとしては役に立つこともある。
プログラムコードの本文を読めば、「何を実行しているか」自体は分かるため、コメントには「何を実行しているか」を記述するよりも、「なぜそのようなコードを書いたのか」という設計理由を記述するべきである、という方法論もある。