皆さん、こんにちは。リーダーです。
C++の学習を始めると、まず最初に覚えることの一つが「コメントアウト」ですよね。
プログラムの動きを一時的に止めたり、コードの意図をメモしたりと、開発において欠かせないツールです。
しかし、このコメントアウト、実は「とりあえず隠せればいい」というわけではありません。
私も昔、適当なコメントアウトを放置したせいで、数ヶ月後の自分が「このコード、なんで消されてるんだっけ……?」と数時間悩むという失態を演じたことがあります。
今日は、そんな苦い経験も踏まえて、C++におけるコメントアウトの基本から、現場のエンジニアが実際に使っているテクニックまで、じっくりお話ししていきます。
執筆者:リーダー |
|
C++でコメントアウトを使い分ける基本の2種類
C++には、大きく分けて2つのコメントアウトの書き方があります。
「1行だけ」を対象にするか、「広い範囲」を対象にするかによって使い分けるのが一般的です。
まず、最も頻繁に使うのが「//」を使った1行コメントです。
「//」を書いた場所から、その行の終わりまでがコメントとして扱われます。
#include <iostream>
int main() {
// ここは1行コメントです。プログラムの実行には影響しません。
int speed = 100; // 変数の後ろに説明を書くこともできます
std::cout << "現在の速度: " << speed << std::endl;
return 0;
}
このコードのように、変数の役割をサッとメモしたり、特定の行だけを一時的に無効化したりするのに非常に便利です。
次に紹介するのが「/* */」で囲む範囲コメントです。
これは、スラッシュとアスタリスクで囲んだ範囲すべてをコメントにします。
/*
複数行にわたって
長い説明を書きたい場合や、
大きな処理をまとめて停止させたい時に使います。
*/
int x = 10;
この書き方は非常に強力ですが、実は現場では「ある理由」から、プログラムの無効化(デバッグ)目的で使う場合には注意が必要です。
その理由を、次の見出しで詳しくお話ししますね。
複数行をまとめてコメントアウトする際の陥りやすい罠
「/* */」を使えば、何行でも一気にコメントにできるので便利ですが、C++には「ネスト(入れ子)ができない」というルールがあります。
これが、初心者がよくハマるポイントです。
もし、既にコメントが含まれているコードを、さらに大きな「/* */」で囲もうとすると、コンパイルエラーが発生してしまいます。
/* ここから全体をコメントにしたい……
int x = 5;
/* すでにここにもコメントがある */
この直後のアスタリスク・スラッシュでコメントが終わってしまいます。
*/
この例のように、中にあるコメントの終わりの記号「*/」を、外側のコメントの終わりだと勘違いして、途中でコメント化が終了してしまうんです。
私も昔、デバッグのために大きな関数をこの方法で消そうとして、大量のエラーが出てパニックになったことがあります。
「コードを一時的に消したい」という目的であれば、次に紹介する方法がはるかに安全で、プロの現場でも好まれます。
プロの現場で多用される#if 0による強力な無効化術
C++(およびC言語)には、プリプロセッサ(コンパイルの前に処理を行う仕組み)を使った「#if 0」というコメントアウトの方法があります。
実はこの「#if 0」を使う方法が、実務において最も確実で安全な「コードの無効化」手段です。
#if 0
/* この中にはどんなコメントが含まれていても大丈夫です */
void oldFunction() {
std::cout << "この古い処理は実行されません" << std::endl;
}
#endif
この書き方の優れている点は、先ほどの「/* */」のようなネスト問題を完全に無視できることです。
「#if 0」から「#endif」までをプリプロセッサが物理的に削除してしまうので、どんなに複雑なコードであっても、確実に無効化できます。
現場のコードレビューで、広い範囲を「/* */」で消している後輩がいると、私は「ここは#if 0を使ったほうが、将来誰かが中身を編集した時も安全だよ」とアドバイスするようにしています。
効率を劇的に上げるIDE別のショートカットキー一覧
いちいちスラッシュを入力するのは、開発スピードを落とす「無駄」ですよね。
現代の開発では、エディタ(IDE)のショートカットキーを使って、1秒でコメントアウトするのが当たり前です。
よく使われる主要なツールのショートカットを整理しました。
| エディタ / IDE | Windowsのショートカット | Macのショートカット |
|---|---|---|
| Visual Studio | Ctrl + K, Ctrl + C | – |
| VS Code | Ctrl + / | Cmd + / |
| Xcode | – | Cmd + / |
| CLion (JetBrains) | Ctrl + / | Cmd + / |
ちなみにVisual Studioの場合、コメントを外すのは「Ctrl + K, Ctrl + U」です。
これらは手が勝手に動くようになるまで使い込みましょう。
私も、ショートカットを覚えただけで開発効率が3割くらい上がった記憶がありますよ。
保守性を高めるための良いコメントの書き方
最後は技術的なことではなく、エンジニアとしての「マナー」の話です。
良いコメントとは、「何(What)を」しているかではなく、「なぜ(Why)」そうしているかを説明するものです。
例えば i = i + 1; というコードに対して // iに1を足す と書くのは、見ればわかることなので無意味です。
// ダメな例
// ユーザーをループで回す
for (auto& user : users) { ... }
// 良い例
// 通信失敗時の再試行回数を制限するため、最大10回までとする
for (int i = 0; i < MAX_RETRY; ++i) { ... }
また、C++では「Doxygen(ドキシジェン)」といった、コメントから設計書を自動生成するツールもよく使われます。
/** … */ という形式で関数の説明を書く習慣をつけておくと、後でチームのメンバーから感謝されること間違いなしです。
まとめ
C++のコメントアウトについて、基本から応用までお伝えしてきました。
1行なら「//」、範囲なら「/* */」を使う。
広い範囲を安全に消すなら「#if 0」が最適。
IDEのショートカットを駆使してスピードを上げる。
「なぜその処理を書いたのか」という意図をコメントに残す。
コメントアウトは、ただの「書き込み」ではなく、未来の自分や仲間への「手紙」です。
適当に済ませず、優しさを持ってコメントを書けるようになると、一人前のエンジニアとして周囲に認められるようになりますよ。
それでは、また次の記事でお会いしましょう。リーダーでした。



コメント