【初心者向け】プログラミングの「コメント」正しい書き方を徹底解説

プログラミング初心者向けにコメントの正しい書き方と効果的な使い方を詳しく解説。良いコメントと悪いコメントの例も具体的に紹介します。

Learning Next 運営
13 分で読めます

【初心者向け】プログラミングの「コメント」正しい書き方を徹底解説

みなさん、プログラミングを学んでいて「コメントって本当に必要?」と思ったことはありませんか?

「コメントを書くと時間がかかる」「どんなコメントを書けばいいかわからない」と悩んだことはありませんか?

この記事では、プログラミング初心者向けに、コメントの正しい書き方と効果的な使い方について詳しく解説します。適切なコメントは、あなたのコードを格段に理解しやすくしてくれます。

コメントとは何か?

コメントの基本的な役割

プログラミングにおけるコメントは、コードの説明や補足情報を記述するためのテキストです。

プログラムの実行には影響しない、開発者向けの説明文です。 コードの意図や背景を他の開発者(未来の自分も含む)に伝える役割があります。 複雑な処理や特殊な実装について、理解を助ける情報を提供します。

コメントの種類

多くのプログラミング言語では、複数のコメント記法があります。

// 単行コメント:一行の説明に使用
/*
* 複数行コメント:
* 長い説明や詳細な仕様を
* 複数行で記述する場合に使用
*/
/**
* ドキュメンテーションコメント:
* 関数やクラスの仕様を記述
* @param {string} name - ユーザー名
* @returns {boolean} - 処理の成功可否
*/

用途に応じて適切なコメント記法を選択しましょう。

良いコメントの特徴

「なぜ」を説明する

良いコメントは「何をしているか」ではなく「なぜそうするのか」を説明します。

// 悪い例:何をしているかを説明
// ユーザーの年齢をチェックする
if (user.age >= 18) {
allowAccess = true;
}
// 良い例:なぜそうするかを説明
// 法的制約により、18歳未満は酒類購入ページにアクセス不可
if (user.age >= 18) {
allowAccess = true;
}

コードを読めばわかることではなく、判断の理由や背景を説明することが重要です。

複雑な処理の概要説明

アルゴリズムが複雑な場合は、処理の概要を説明します。

/**
* クイックソートアルゴリズムで配列をソート
* 分割統治法を使用し、平均的にO(n log n)の時間計算量で実行
*/
function quickSort(array) {
if (array.length <= 1) {
return array;
}
// 基準値(ピボット)を配列の中央から選択
const pivot = array[Math.floor(array.length / 2)];
// ピボットより小さい、等しい、大きい要素に分割
const left = array.filter(x => x < pivot);
const middle = array.filter(x => x === pivot);
const right = array.filter(x => x > pivot);
// 再帰的にソートして結合
return [...quickSort(left), ...middle, ...quickSort(right)];
}

処理のアプローチと重要なステップについて説明を加えます。

注意点や制約の明記

特別な注意が必要な箇所や制約について明記します。

function calculateDiscount(price, discountRate) {
// 注意:discountRateは0.0~1.0の範囲で指定すること
// 例:20%割引の場合は0.2を指定
if (discountRate < 0 || discountRate > 1) {
throw new Error('割引率は0.0~1.0の範囲で指定してください');
}
return price * (1 - discountRate);
}

使用する際の前提条件や制約を明確にします。

悪いコメントの例

自明なことを説明するコメント

コードを見ればわかることをコメントにするのは避けましょう。

// 悪い例:自明なことを説明
// 変数iに1を代入
let i = 1;
// 配列の長さを取得
let length = array.length;
// ループを実行
for (let j = 0; j < 10; j++) {
// コンソールにjを出力
console.log(j);
}

このようなコメントは、コードを冗長にするだけで価値がありません。

古くなったコメント

コードが変更されたのに、コメントが更新されていない場合は有害です。

// 悪い例:コードと一致しないコメント
// ユーザー名とパスワードをチェックする
function validateUser(user) {
// 実際にはメールアドレスとパスワードをチェックしている
return user.email && user.password && user.email.includes('@');
}

間違った情報を与えるコメントは、理解を妨げる原因となります。

感情的なコメント

個人的な感情や批判的な内容は避けましょう。

// 悪い例:感情的なコメント
// この関数は最悪の設計だが、時間がないので仕方ない
function badFunction() {
// なんでこんなことをしなければならないんだ
// ...
}

建設的でない内容は、チーム開発において問題となります。

コメントを書くタイミング

設計時のコメント

コードを書く前に、設計や仕様をコメントで整理することが効果的です。

/**
* ユーザー認証システム
*
* 処理の流れ:
* 1. 入力値の検証(メールアドレス、パスワード)
* 2. データベースからユーザー情報を取得
* 3. パスワードのハッシュ値を比較
* 4. 認証結果に応じてJWTトークンを生成
* 5. セッション情報を更新
*/
function authenticateUser(email, password) {
// TODO: 実装する
}

実装前に処理の流れを整理することで、実装がスムーズになります。

実装中のメモ

実装中に気づいた問題や改善点をメモしておきます。

function processData(data) {
// FIXME: この処理は効率が悪いので、後で最適化が必要
for (let i = 0; i < data.length; i++) {
for (let j = 0; j < data[i].length; j++) {
// 処理...
}
}
// TODO: エラーハンドリングを追加
return result;
}

TODO、FIXME、NOTEなどのキーワードを使って、後で対応すべき項目を明記します。

コードレビュー後の追加

コードレビューで指摘された内容や議論の結果を反映します。

// レビューコメント:なぜMath.floor()を使用するのか?
// 回答:小数点を切り捨てて整数のページ番号を取得するため
const currentPage = Math.floor(offset / itemsPerPage) + 1;

議論の結果や判断理由を記録しておくことで、将来の参考になります。

言語別のコメント規約

JavaScript/TypeScript

JSDocスタイルのコメントが一般的です。

/**
* 商品の税込み価格を計算する
* @param {number} price - 税抜き価格
* @param {number} taxRate - 税率(0.1 = 10%)
* @returns {number} 税込み価格
* @example
* const totalPrice = calculateTaxIncludedPrice(1000, 0.1);
* console.log(totalPrice); // 1100
*/
function calculateTaxIncludedPrice(price, taxRate) {
return price * (1 + taxRate);
}

パラメータや戻り値の型と説明を明記します。

Python

Pythonではdocstringを使用します。

def calculate_bmi(weight, height):
"""
BMI(体格指数)を計算する
Args:
weight (float): 体重(kg)
height (float): 身長(m)
Returns:
float: BMI値
Raises:
ValueError: 体重または身長が0以下の場合
Example:
>>> calculate_bmi(70, 1.75)
22.857142857142858
"""
if weight <= 0 or height <= 0:
raise ValueError("体重と身長は正の数である必要があります")
return weight / (height ** 2)

Google StyleやNumPy Styleなど、確立されたフォーマットを使用します。

コメントの保守

コードと同期させる

コメントは常にコードと同期させる必要があります。

コードを修正した際は、関連するコメントも必ず確認し、必要に応じて更新します。 古くなったコメントは、削除するか正しい内容に更新します。

定期的な見直し

プロジェクトの進行に伴って、コメントも見直しを行います。

// 古いコメント:暫定的な実装のため、後で修正予定
// → 実装が確定したら、このコメントは削除
// 更新されたコメント:パフォーマンス最適化済み
function optimizedFunction() {
// 最適化された実装
}

不要になったコメントは積極的に削除し、コードをクリーンに保ちます。

チーム開発でのコメント

チーム内の規約統一

チーム内でコメントの書き方を統一します。

使用する言語(日本語 or 英語)を決めます。 コメントの詳しさのレベルを合わせます。 TODO、FIXME、NOTEなどのキーワードの使い方を統一します。

レビューでのコメント活用

コードレビューでは、コメントの品質も確認します。

必要な箇所にコメントがあるかチェックします。 コメントの内容が正確で有用かを評価します。 コメントによって理解が促進されるかを確認します。

コメント作成のツール活用

IDEの支援機能

多くのIDEでは、コメント作成を支援する機能があります。

関数の定義からドキュメンテーションコメントのテンプレートを自動生成します。 TODO、FIXMEコメントを一覧表示し、管理を支援します。 コメントの構文チェックやフォーマット機能を提供します。

ドキュメント生成ツール

JSDoc、Sphinx、Doxygenなどのツールで、コメントからドキュメントを自動生成できます。

APIドキュメントの作成が自動化されます。 コメントの品質向上のモチベーションが高まります。

まとめ

プログラミングにおけるコメントは、コードの理解を助ける重要な要素です。

良いコメントは「なぜ」を説明し、複雑な処理の概要や注意点を明記します。 悪いコメントは自明なことを説明したり、古くなった情報を含んだりします。

コメントはコードと同様に保守が必要であり、常に最新の状態に保つことが重要です。

チーム開発では、コメントの書き方を統一し、レビューでも品質を確認しましょう。 適切なツールを活用することで、効率的にコメントを作成・管理できます。

最初は慣れないかもしれませんが、良いコメントを書く習慣を身につけることで、あなたのコードはより理解しやすく、保守しやすいものになります。

ぜひ、この記事を参考に、効果的なコメントの書き方をマスターしてください。 良いコメントは、あなた自身とチームメンバーの開発効率を大幅に向上させてくれるでしょう。

関連記事