Go言語 (Golang) は、そのシンプルさと高いパフォーマンスから、現代のシステム開発において欠かせない存在となりました。

読みやすくメンテナンスしやすいコードを維持するためには、適切なコメントの記述が不可欠です。

Go言語には、単なるメモとしてのコメントだけでなく、ドキュメントを自動生成するためのdocコメントという重要な仕組みが備わっています。

本記事では、基本的なコメントの書き方から、開発効率を高めるショートカット、そして2026年現在の標準となっているドキュメント活用のTipsまで詳しく紹介します。

Go言語におけるコメントの基本

Go言語で利用できるコメントの形式は、C言語系の言語と同様に2種類存在します。

1行コメントと複数行コメント (ブロックコメント) です。

Goの設計思想である「シンプルさ」を反映し、これらの使い分けには明確な慣習があります。

1行コメント (//)

Go言語において最も頻繁に利用されるのが1行コメントです。

行の先頭、あるいはコードの末尾に // を記述することで、その行の以降がコメントとして扱われます。

Go
package main

import "fmt"

func main() {
    // 挨拶を表示します
    fmt.Println("Hello, Go!") // 行の末尾にも記述可能です
}

Goの標準ライブラリや著名なオープンソースプロジェクトのコードを見ると、ほとんどの解説がこの1行コメントで記述されていることがわかります。

複数行コメント (/* … */)

/* で始まり */ で終わる形式は、複数行をまとめてコメントアウトする際に利用されます。

Go
/*
このブロックは複数行のコメントです。
複雑なアルゴリズムの説明や、
ライセンス情報の記述などに利用されます。
*/
package main

import "fmt"

func main() {
    fmt.Println("Block comment example")
}

ただし、Goのコミュニティでは、通常のドキュメント記述において複数行コメントよりも、1行コメントを複数並べる形式が好まれる傾向にあります。

複数行コメントは、主に開発中のコードを一時的に無効化 (コメントアウト) する際や、パッケージ全体の大きな説明を記述する場合に限定して使われることが多いです。

効率を上げるコメントアウトのショートカット

プログラミング中に手動で // を入力するのは非効率です。

主要なコードエディタには、選択した範囲を一括でコメントアウト、または解除するためのショートカットが用意されています。

VS Code (Visual Studio Code) での操作

Go開発者の多くが利用しているVS Codeでは、以下のショートカットが標準です。

  • Windows/Linux: Ctrl + /
  • macOS: Command + /

1行だけでなく、複数行を選択した状態でこのショートカットを押すと、すべての行に // が挿入されます。

再度同じ操作をするとコメントが解除されます。

また、ブロックコメントを挿入したい場合は Shift + Alt + A (macOSは Shift + Option + A) を使用します。

GoLand (JetBrains) での操作

強力なGo専用IDEであるGoLandでも、同様の操作が可能です。

  • Windows/Linux: Ctrl + / (1行コメント)、 Ctrl + Shift + / (ブロックコメント)
  • macOS: Command + / (1行コメント)、 Command + Option + / (ブロックコメント)

これらのショートカットを指に覚え込ませておくことで、試行錯誤の段階でコードを素早く切り替えることができ、開発スピードが劇的に向上します

GoDocとdocコメントの書き方・活用法

Go言語の最大の特徴の一つは、ソースコード内のコメントからドキュメントを自動生成する godoc (およびモダンな pkgs.go.dev の仕組み) です。

これを適切に利用するためには、docコメントのルールに従う必要があります。

docコメントの基本ルール

docコメントとは、パッケージ、型、変数、定数、あるいは関数の直前に記述されたコメントのことです。

コメントと宣言の間に空行があってはいけません。

Go
// CalculateArea は長方形の面積を計算します。
// 引数に幅と高さを指定します。
func CalculateArea(width, height float64) float64 {
    return width * height
}

docコメントを書く際の慣習として、コメントの最初の単語を宣言する対象の名前にするというルールがあります。

上記の例では、関数名である CalculateArea から書き始めています。

これにより、ドキュメントを検索した際の視認性が向上します。

パッケージコメントの記述

パッケージ全体の役割を説明するには、package 句の直前にコメントを記述します。

Go
// Package mathutils は数学的な計算を補助する関数群を提供します。
package mathutils

パッケージコメントが非常に長くなる場合は、慣習として doc.go というファイルを作成し、そこにパッケージコメントのみを記述する方法がとられます。

Go 1.19以降の拡張構文

Go 1.19以降、docコメント内でより豊かな表現が可能になりました。

これにより、Markdownに近い感覚でドキュメントを整形できます。

1. 見出し (Headings)

行の先頭に # を置くことで見出しを作成できます。

Go
// # 使用例
//
// 以下のコードは面積を計算する例です。

2. リスト (Lists)

数字や記号を使ってリストを記述できます。

Go
// サポートされている図形:
//   - 長方形
//   - 正方形
//   - 円

3. リンク (Links)

他のパッケージや外部URLへのリンクを記述できます。

Go
// 詳細は [math.Sqrt] を参照してください。
// [math.Sqrt]: https://pkg.go.dev/math#Sqrt

これらの構文を活用することで、外部に公開するライブラリの使い勝手が飛躍的に向上します

Goのコメントにおけるベストプラクティス

単に書き方を知っているだけでなく、どのような内容を書くべきかを理解することが重要です。

良いコメントは、未来の自分やチームメイトを助けます。

「何をしているか」ではなく「なぜしているか」を書く

コードを読めばわかることをコメントに書く必要はありません。

悪い例:

Go
// count に 1 を足す
count++

良い例:

Go
// リトライ回数の上限をチェックするため、カウンターをインクリメントする
count++

コードそのものが「何を (What)」しているかは、命名や構造を工夫することで自己説明的にすべきです。

一方で、なぜその数値を選んだのか、なぜこの特定のアルゴリズムが必要だったのかという「理由 (Why)」はコードから読み取ることが難しいため、コメントで補足すべきです。

コードとの同期を保つ

コードを変更した際にコメントの更新を忘れると、コメントが嘘をつくことになります。

これは間違った情報が含まれるコメントは、コメントがないよりも有害であるという格言を生む原因です。

リファクタリングを行う際は、必ず付随するdocコメントも修正する習慣をつけましょう。

TODOコメントの活用

将来的に対応が必要な箇所には // TODO: という接頭辞をつけてコメントを残します。

Go
// TODO: 高負荷時のパフォーマンス改善のためにキャッシングを導入する
func FetchData() {
    // 処理
}

多くのエディタは TODO をハイライト表示したり、一覧化したりする機能を持っています。

2026年現在のモダンな開発環境では、IssueトラッカーのIDを併記 (例: // TODO(#123): ...) するスタイルが一般的です。

特殊なコメント (ディレクティブ)

Go言語には、コンパイラやツールに対して特定の指示を出すための「ディレクティブ」と呼ばれる特殊な形式のコメントがあります。

これらはコメントの形式をとっていますが、プログラムの動作やビルドプロセスに影響を与えます

ビルドタグ (//go:build)

特定のプラットフォーム (Windows, Linuxなど) でのみコードをコンパイルしたい場合に利用します。

Go
//go:build windows

package osutils

// Windows専用の処理を記述

注意点として、//go:build とパッケージ宣言の間には空行を入れる必要があります。

生成指示 (//go:generate)

コード生成ツールを実行するための指示です。

モックの生成や、Stringerメソッドの自動生成などで多用されます。

Go
//go:generate stringer -type=Pill
type Pill int

ターミナルで go generate ./... を実行すると、このコメントを起点に指定されたツールが起動します。

インライン化やエスケープ解析の制御

高度な最適化が必要な場合、//go:noinline などの指示を送ることがあります。

これらは標準的なアプリケーション開発ではあまり使われませんが、パフォーマンスチューニングの際には重要な役割を果たします。

コメントの自動修正とLinter

Goの文化には「ツールで解決できることはツールに任せる」という考え方があります。

コメントの品質を保つためにもツールを活用しましょう。

  • go fmt: 標準のフォーマッタは、コメントのインデントや配置も自動で整えてくれます。
  • revive / staticcheck: これらのLinterを導入すると、「公開されている関数にdocコメントがない」「docコメントの形式が慣習に従っていない」といった問題を自動で指摘してくれます。

2026年現在では、CI (継続的インテグレーション) のプロセスにこれらのLinterを組み込み、コメントの欠落をビルドエラーとして扱う運用が一般的になっています。

まとめ

Go言語におけるコメントアウトは、単にコードを無効化するための手段ではなく、ドキュメントの一部であり、開発者間のコミュニケーションツールでもあります。

  • 1行コメント (//) を基本とし、必要に応じてブロックコメントを活用する。
  • エディタのショートカットキーを使いこなし、効率的にコードを編集する。
  • 公開する要素には必ずdocコメントを付与し、Go 1.19以降の拡張構文で読みやすく整える。
  • 「なぜ」という意図を記述し、コードとコメントの同期を常に意識する。
  • ビルドタグやディレクティブといった特殊なコメントの役割を理解する。

これらのポイントを意識することで、あなたの書くGoコードはよりプロフェッショナルで、メンテナンス性の高いものへと進化します。

適切なコメントは、チーム全体の生産性を向上させる最高の投資です。

今日から、意味のあるコメントを書く習慣を身につけていきましょう。