コンテンツにスキップ

Rustのコメント

コメントは、人間が読むためにコードの中に残しておくメモです。Rustはコンパイルのときにコメントを完全に無視するので、プログラムの動きに影響することはありません。よいコメントは、コードが何をしているかだけでなく、なぜそうしているかを説明します。

いちばんよく使うコメントは // で始まります。その行の // より後ろは、すべて無視されます。

fn main() {
// これはコメント。Rustは完全に読み飛ばす
println!("こんにちは!"); // 行の最後にもコメントを置ける
}

実行結果:

こんにちは!
▶ 実際に試してみよう

長めのメモを書きたいときは、各行を // で始めます。

fn main() {
// このプログラムはユーザーにあいさつする。
// 1行のテキストを表示するだけ。
// 最初の例として書いたもの。
println!("こんにちは!");
}

実行結果:

こんにちは!
▶ 実際に試してみよう

Rustには、/* と */ で囲むブロックコメントもあり、複数行にまたがって書けます。

fn main() {
/*
これはブロックコメント。
各行に // を付けなくても
複数行にわたって書ける。
*/
println!("こんにちは!");
}

実行結果:

こんにちは!
▶ 実際に試してみよう

実際には、ほとんどのRustのコードでは、複数行でも // を使います。それがコミュニティの慣習で、エディタのショートカットとも相性がいいからです。

何かを試している間、一時的にある行を無効にしたいときにもコメントは便利です。

fn main() {
println!("この行は実行される");
// println!("この行は今はオフにしてある");
}

実行結果:

この行は実行される
▶ 実際に試してみよう

コードをそのまま言い直しているだけのコメントは、何の役にも立ちません。何が起きるかは、コードを見ればわかるからです。よいコメントはなぜそうするのかを説明したり、読む人には見えないことを注意したりします。

fn main() {
let minutes = 135;
// タイマーは「何時間」の部分だけを表示する。整数の割り算は
// 余りを切り捨てるので、ここではそれがちょうど都合がいい。
let hours = minutes / 60;
let leftover = minutes - hours * 60; // 1時間に満たなかった分
println!("{hours}時間{leftover}分");
}

実行結果:

2時間15分
▶ 実際に試してみよう

// minutes を 60 で割る のようなコメントと比べてみてください。間違ってはいませんが、minutes / 60 は誰でも読めます。役に立つ情報は、ここで割り算をしても問題ない理由のほうです。

ほかにも、身につけておきたい習慣がいくつかあります。

  • コメントは最新の状態に保ちましょう。コードと合わなくなったコメントは、コメントがないよりも悪いものです。読む人はコメントを信じてしまうからです。
  • // TODO: は、まだ終わっていない作業に印を付けるよく使われる書き方です。たとえば // TODO: 負の数を扱う のように書きます。多くのエディタはこれを強調表示し、プロジェクト内のTODOを一覧にすることもできます。
  • Rustのブロックコメントは入れ子にできます。C言語とは違い、すでに /* */ のコメントを含んでいるコードを、さらに別のブロックコメントで囲んでも、ちゃんと動きます。
fn main() {
/* 今はオフにしてある:
println!("古いあいさつ"); /* みんなにあいさつしていた */
*/
println!("新しいあいさつ");
}

実行結果:

新しいあいさつ
▶ 実際に試してみよう

ドキュメンテーションコメント

Section titled “ドキュメンテーションコメント”

Rustには、///(スラッシュ3つ)で始まる特別なコメントがあります。これはドキュメンテーションコメント(doc comment)と呼ばれ、関数などの説明を書くのに使います。cargo doc を使うと、Rustがこれをブラウザで見られるドキュメントのWebサイトに変換してくれます。

/// 2つの数を足して、その結果を返す。
fn add(a: i32, b: i32) -> i32 {
a + b
}

初心者のうちは、ドキュメンテーションコメントはまだ使わなくて大丈夫です。/// はドキュメント用、// は普通のメモ用、とだけ覚えておきましょう。準備ができたら、ドキュメントのページで、書き方、ドキュメントのビルド方法、さらには例をテストに変える方法まで紹介しています。

このプログラムは3行を表示します。真ん中の行をコメントにして、1行目 と 3行目 だけが表示されるようにしてください。ヒント:オフにしたい行の先頭に // を付けます。

fn main() {
println!("1行目");
println!("2行目");
println!("3行目");
}
解答を見る
fn main() {
println!("1行目");
// println!("2行目");
println!("3行目");
}

実行結果:

1行目
3行目
▶ 実際に試してみよう

今度は 1行目 から 4行目 までを表示するプログラムで、ブロックコメントを1つだけ使って2行目と3行目をオフにしてください。ヒント:2行目の前で /* を書いてコメントを始め、3行目のあとに */ で閉じます。

解答を見る
fn main() {
println!("1行目");
/*
println!("2行目");
println!("3行目");
*/
println!("4行目");
}

実行結果:

1行目
4行目
▶ 実際に試してみよう
  • コメントはRustが無視するメモです。コードの説明に使いましょう。
  • // は行コメントを始めます(いちばんよく使う種類です)。
  • /* ... */ は、複数行に使えるブロックコメントです。ブロックコメントは入れ子にできます。
  • よいコメントは、コードを見ればわかることではなく、なぜを説明します。
  • /// は、ドキュメントを生成するためのドキュメンテーションコメントです。

理解度チェック

1. コードをコンパイルするとき、Rustはコメントをどう扱いますか?

2. /// のドキュメンテーションコメントは何に使いますか?

スコア: 0 / 2