Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

[インデックス 15943] ファイルの概要

このコミットは、doc/articles/godoc_documenting_go_code.html ファイルに対する変更です。このファイルは、Go言語のドキュメンテーションツールであるgodocがGoコードをどのようにドキュメント化するかについて解説している記事です。具体的には、実行可能コマンド(package mainを持つプログラム)のドキュメンテーション方法に関する記述が更新されています。

コミット

  • コミットハッシュ: 1e0e65ea59205ef0b891b8672d66a7b92776ac88
  • 作者: David Symonds dsymonds@golang.org
  • コミット日時: 2013年3月26日 火曜日 13:01:24 +1100
  • コミットメッセージ:
    doc/articles: update reference to obsolete "package documentation".
    
    R=golang-dev, r
    CC=golang-dev
    https://golang.org/cl/7475048
    

GitHub上でのコミットページへのリンク

https://github.com/golang/go/commit/1e0e65ea59205ef0b891b8672d66a7b92776ac88

元コミット内容

diff --git a/doc/articles/godoc_documenting_go_code.html b/doc/articles/godoc_documenting_go_code.html
index 18a3ee9532..96ae7451d0 100644
--- a/doc/articles/godoc_documenting_go_code.html
+++ b/doc/articles/godoc_documenting_go_code.html
@@ -91,10 +91,9 @@ known issue from the <a href="/pkg/bytes/#pkg-bugs"><code>bytes</code></a> packa
 </pre>
 
 <p>
-Godoc treats executable commands somewhat differently. Instead of inspecting the
-command source code, it looks for a Go source file belonging to the special
-package "documentation". The comment on the "package documentation" clause is
-used as the command's documentation. For example, see the
+Godoc treats executable commands in the same way. It looks for a comment on
+package main, which is sometimes put in a separate file called <code>doc.go</code>.
+For example, see the
 <a href="/cmd/godoc/">godoc documentation</a> and its corresponding
 <a href="/src/cmd/godoc/doc.go">doc.go</a> file.
 </p>

変更の背景

このコミットの背景には、Go言語のドキュメンテーションツールgodocが実行可能コマンド(package mainを持つプログラム)のドキュメンテーションをどのように扱うかという仕様の変更があります。

以前のgodocは、実行可能コマンドのドキュメンテーションを生成する際に、特別な「package documentation」というパッケージに属するGoソースファイルを探し、そのパッケージ句に対するコメントをコマンドのドキュメンテーションとして利用していました。これは、通常のライブラリパッケージのドキュメンテーションとは異なる特殊な扱いです。

しかし、この「package documentation」という概念は、Go言語のドキュメンテーションの慣習として一般的ではなく、混乱を招く可能性がありました。より一貫性のあるアプローチとして、godocは実行可能コマンドについても、通常のライブラリパッケージと同様にpackage mainに対するコメントをドキュメンテーションとして扱うように変更されました。このコメントは、しばしばdoc.goという専用のファイルに記述されることが推奨されます。

このコミットは、Goの公式ドキュメンテーション記事であるgodoc_documenting_go_code.html内の記述を、この新しい(より標準的な)ドキュメンテーションの慣習に合わせて更新することを目的としています。これにより、読者が誤った情報に基づいてドキュメンテーションを作成することを防ぎ、Goのエコシステム全体でのドキュメンテーションの一貫性を向上させます。

前提知識の解説

1. godocとは

godocは、Go言語のソースコードからドキュメンテーションを自動生成し、Webブラウザで閲覧可能にするツールです。Go言語の設計思想の一つに「ドキュメンテーションはコードの一部であるべき」という考え方があり、godocはその思想を具現化しています。

  • 機能:
    • Goのソースコード内のコメント(特にパッケージ、関数、型、変数、定数に対するコメント)を解析し、構造化されたドキュメンテーションを生成します。
    • コード例(Example関数)を自動的に実行し、その出力をドキュメンテーションに含めることができます。
    • Webサーバーとして動作し、ローカルでドキュメンテーションを閲覧できます。
    • Goの標準ライブラリのドキュメンテーションもgodocによって生成され、pkg.go.dev(旧golang.org/pkg)で公開されています。

2. Go言語におけるパッケージドキュメンテーションの慣習

Go言語では、パッケージのドキュメンテーションは、そのパッケージ内の任意のGoソースファイルの先頭にあるpackage句の直前のコメントブロックとして記述されます。このコメントは、パッケージの目的や機能の概要を説明するものです。

例:

// Package mypackage provides functions for doing X and Y.
// It is designed to be simple and efficient.
package mypackage

// MyFunction does something important.
func MyFunction() {
    // ...
}

3. package mainと実行可能コマンド

Go言語において、package mainは実行可能なプログラムのエントリポイントとなるパッケージを指します。mainパッケージには、プログラムの実行開始点となるmain関数が含まれます。

例:

package main

import "fmt"

func main() {
    fmt.Println("Hello, world!")
}

このようなmainパッケージを持つGoファイルは、コンパイルされて実行可能なバイナリとなります。

4. doc.goファイルの役割

doc.goは、Go言語の慣習として、パッケージ全体のドキュメンテーションコメントを記述するために使用される特別なファイル名です。特に、パッケージの概要が長くなる場合や、パッケージ内に他のコードがない場合(例えば、mainパッケージで実行可能コマンドのドキュメンテーションのみを提供したい場合)に便利です。

doc.goファイルは、通常、以下のような構造を持ちます。

// Package mypackage provides a comprehensive set of tools for data processing.
//
// It includes functionalities for:
// - Reading various data formats
// - Transforming data structures
// - Exporting results to different destinations
//
// For more details, see the sub-packages.
package mypackage

godocは、このdoc.goファイル内のpackage句に対するコメントを、そのパッケージの主要なドキュメンテーションとして認識します。

技術的詳細

このコミットが示す技術的変更は、godocが実行可能コマンドのドキュメンテーションをどのように解釈するかという内部的なロジックの進化を反映しています。

変更前のアプローチ(旧来の「package documentation」): 以前のgodocは、実行可能コマンド(package main)のドキュメンテーションに対して、特殊なルールを適用していました。それは、コマンドのソースコード自体を直接検査するのではなく、"package documentation"という名前の特別なパッケージに属するGoソースファイルを探すというものでした。そして、その"package documentation"句に付随するコメントが、そのコマンドのドキュメンテーションとして扱われました。

このアプローチは、通常のライブラリパッケージのドキュメンテーション方法(package句に対するコメント)とは異なり、Goのドキュメンテーション慣習から逸脱していました。これは、mainパッケージが通常、エクスポートされたAPIを持たないため、通常のパッケージドキュメンテーションのルールが適用しにくいという背景があったのかもしれません。しかし、この特殊な扱いは、開発者にとって理解しにくく、一貫性を欠くものでした。

変更後のアプローチ(package maindoc.go: このコミットが反映しているのは、godocが実行可能コマンドのドキュメンテーションを、通常のライブラリパッケージと同じように扱うようになったという変更です。具体的には、godocpackage mainに対するコメントを、そのコマンドのドキュメンテーションとして認識するようになりました。

この変更の重要な点は、doc.goファイルの活用です。mainパッケージのコードが複雑で、main.goファイルにパッケージコメントを記述するとコードの可読性が損なわれる場合や、main関数以外のエクスポートされたシンボルがない場合に、doc.goファイルは非常に有効です。doc.gopackage mainのコメントを記述することで、コマンドの概要や使用方法を明確に分離して記述できるようになります。

この変更により、Goのドキュメンテーションシステム全体の一貫性が向上し、開発者はライブラリとコマンドの両方で統一された方法でドキュメンテーションを作成できるようになりました。これは、Go言語の「シンプルさ」と「一貫性」という設計原則に合致する改善と言えます。

コアとなるコードの変更箇所

変更は、doc/articles/godoc_documenting_go_code.html ファイルのHTMLコンテンツ内で行われています。

--- a/doc/articles/godoc_documenting_go_code.html
+++ b/doc/articles/godoc_documenting_go_code.html
@@ -91,10 +91,9 @@ known issue from the <a href="/pkg/bytes/#pkg-bugs"><code>bytes</code></a> packa
 </pre>
 
 <p>
-Godoc treats executable commands somewhat differently. Instead of inspecting the
-command source code, it looks for a Go source file belonging to the special
-package "documentation". The comment on the "package documentation" clause is
-used as the command's documentation. For example, see the
+Godoc treats executable commands in the same way. It looks for a comment on
+package main, which is sometimes put in a separate file called <code>doc.go</code>.
+For example, see the
 <a href="/cmd/godoc/">godoc documentation</a> and its corresponding
 <a href="/src/cmd/godoc/doc.go">doc.go</a> file.
 </p>

具体的には、以下の行が削除され、新しい行が追加されています。

削除された行:

Godoc treats executable commands somewhat differently. Instead of inspecting the
command source code, it looks for a Go source file belonging to the special
package "documentation". The comment on the "package documentation" clause is
used as the command's documentation. For example, see the

追加された行:

Godoc treats executable commands in the same way. It looks for a comment on
package main, which is sometimes put in a separate file called <code>doc.go</code>.
For example, see the

コアとなるコードの解説

このHTMLの変更は、godocが実行可能コマンドのドキュメンテーションを処理する方法に関する説明を修正しています。

  • 削除された部分:

    • Godoc treats executable commands somewhat differently.」(godocは実行可能コマンドを多少異なる方法で扱います。)という記述は、もはや真実ではないため削除されました。
    • Instead of inspecting the command source code, it looks for a Go source file belonging to the special package "documentation". The comment on the "package documentation" clause is used as the command's documentation.」(コマンドのソースコードを検査する代わりに、特別な"package documentation"というパッケージに属するGoソースファイルを探します。"package documentation"句に対するコメントがコマンドのドキュメンテーションとして使用されます。)という記述は、旧来の、もはや推奨されない方法を説明しているため削除されました。
  • 追加された部分:

    • Godoc treats executable commands in the same way.」(godocは実行可能コマンドを同じ方法で扱います。)という記述が追加され、通常のライブラリパッケージと同様のドキュメンテーション方法が適用されることを明確にしています。
    • It looks for a comment on package main, which is sometimes put in a separate file called <code>doc.go</code>.」(package mainに対するコメントを探します。これは、しばしばdoc.goという別のファイルに置かれます。)という記述が追加され、新しい(標準的な)ドキュメンテーション方法を説明しています。特に、doc.goファイルの利用が推奨されることが明記されています。

この変更により、godocのドキュメンテーション記事が最新の慣習と一致し、Go開発者が実行可能コマンドのドキュメンテーションを適切に作成するための正確な情報を提供するようになりました。

関連リンク

参考にした情報源リンク