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

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

このコミットは、Go言語の公式ドキュメントに「Godoc: documenting Go code」という記事を追加するものです。この記事は、GoのコードをGodocツールを使ってどのようにドキュメント化するかについて解説しており、元々はGoプログラミング言語の公式ブログで2011年3月31日に公開されたものです。このコミットにより、外部ブログへのリンクが内部ドキュメントへのリンクに更新され、Godocに関する重要な情報がGoの公式ドキュメントセットに統合されました。

コミット

commit 235863cb128bbc00a659ed7446e42cb810cbaa46
Author: Francisco Souza <franciscossouza@gmail.com>
Date:   Thu Mar 15 14:51:44 2012 +1100

    doc: add "Godoc: documenting Go code" article
    
    Originally published on The Go Programming Language Blog, March 31, 2011.
    
    http://blog.golang.org/2011/03/godoc-documenting-go-code.html
    
    R=golang-dev, adg
    CC=golang-dev
    https://golang.org/cl/5830043

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

https://github.com/golang/go/commit/235863cb128bbc00a659ed7446e42cb810cbaa46

元コミット内容

doc: add "Godoc: documenting Go code" article

Originally published on The Go Programming Language Blog, March 31, 2011.

http://blog.golang.org/2011/03/godoc-documenting-go-code.html

R=golang-dev, adg
CC=golang-dev
https://golang.org/cl/5830043

変更の背景

Go言語は、その設計思想において「シンプルさ」と「ツールによるサポート」を重視しています。ドキュメンテーションも例外ではなく、コードと密接に連携し、開発者が容易に記述・保守できる仕組みが求められていました。その中心となるのがgodocツールです。

このコミットが行われた背景には、godocの重要性が認識され、その利用方法やベストプラクティスに関する情報が、Goの公式ドキュメントの一部として永続的に提供されるべきだという判断があったと考えられます。元々ブログ記事として公開されていた内容を公式ドキュメントに組み込むことで、ユーザーがGoのドキュメンテーションに関する情報をより簡単に見つけ、参照できるようになります。これにより、Goエコシステム全体のドキュメンテーション品質の向上に寄与することが期待されます。

また、外部ブログへのリンクではなく、公式ドキュメント内のパスに統一することで、情報の信頼性、永続性、そして一貫性を高める狙いもあります。

前提知識の解説

このコミットを理解するためには、以下のGo言語に関する前提知識が必要です。

  • Go言語のドキュメンテーション文化: Go言語では、コードのコメントがそのままドキュメンテーションとして機能する「ドキュメンテーション・アズ・コード」の文化が強く根付いています。これは、コードとドキュメントの乖離を防ぎ、常に最新のドキュメントを維持しやすくするための設計思想です。
  • godocツール: godocはGo言語に標準で付属するドキュメンテーション生成ツールです。Goのソースコード(コメントを含む)を解析し、HTMLやプレーンテキスト形式でドキュメンテーションを生成します。ローカルでHTTPサーバーとして起動することもでき、ブラウザを通じてコードのドキュメントを閲覧したり、関数定義からその実装コードへ直接ジャンプしたりする機能を提供します。
  • Goのコメント規約: godocがドキュメントとして認識するコメントには特定の規約があります。
    • 宣言の直前: 型、変数、定数、関数、パッケージなどの宣言の直前に、空行を挟まずに記述されたコメントがその要素のドキュメントとして扱われます。
    • 最初の文: ドキュメントの最初の文は、その要素の名前で始まる完全な文であるべきです(例: Fprint formats using the default...)。これは、godocがドキュメントを短縮表示する際に、最初の文を要約として利用するためです。
    • パッケージコメント: パッケージ宣言のコメントは、パッケージ全体の概要を説明します。大規模なパッケージでは、doc.goという専用のファイルにパッケージコメントを記述する慣習があります。
    • BUG(who)コメント: BUG(誰々)で始まるトップレベルのコメントは、既知のバグとしてパッケージドキュメントの「Bugs」セクションに表示されます。
  • Goのドキュメント構造: Goの公式ドキュメントは、docディレクトリ以下にHTMLファイルとして管理されており、Makefileによってビルドプロセスが制御されています。

技術的詳細

このコミットは、主に以下のファイル変更によって構成されています。

  1. doc/Makefileの変更:

    • RAWHTML変数に、新しく追加される記事のパスarticles/godoc_documenting_go_code.rawhtmlが追加されています。
    • これは、Goのドキュメントビルドシステムにおいて、この新しいHTMLファイルが処理対象として認識され、最終的なドキュメントサイトに組み込まれるようにするための設定変更です。RAWHTMLは、生のHTMLファイルがそのままドキュメントとして扱われることを示唆しています。
  2. doc/articles/godoc_documenting_go_code.htmlの新規追加:

    • このファイルは、godocツールとGoコードのドキュメンテーションに関する詳細な解説記事の本体です。
    • HTML形式で記述されており、godocの基本的な使い方、コメントの書き方、パッケージコメントの慣習(doc.goの使用など)、godocがコメントをHTMLに変換する際の書式ルールなどが説明されています。
    • 記事内には、fmt.Fprintsortパッケージの例、gobパッケージのdoc.goの例など、具体的なコードスニペットやリンクが含まれています。
    • 特に注目すべきは、{{code ...}}のようなテンプレート構文が使用されている点です。これは、Goのドキュメントシステムが、コード例を動的に埋め込むための独自のテンプレートエンジンを持っていることを示しています。これにより、コード例が常に最新のコードベースと同期されるようになります。
  3. 既存のドキュメントファイルのリンク更新:

    • doc/docs.htmldoc/reference.htmlmisc/dashboard/godashboard/package.htmlsrc/cmd/godoc/doc.goの4つのファイルで、godocに関する既存のリンクが更新されています。
    • 変更前は、http://blog.golang.org/2011/03/godoc-documenting-go-code.htmlというGo公式ブログへの外部リンクが使用されていました。
    • 変更後は、新しく追加された内部ドキュメントのパス/doc/articles/godoc_documenting_go_code.html(またはhttp://golang.org/doc/articles/godoc_documenting_go_code.html)に置き換えられています。
    • この変更により、ユーザーはGoのドキュメントサイト内でgodocに関する情報を完結して参照できるようになり、外部サイトへの遷移が不要になります。これは、ユーザーエクスペリエンスの向上と、ドキュメントの一貫性維持に貢献します。

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

このコミットのコアとなる変更は、以下の2点に集約されます。

  1. doc/articles/godoc_documenting_go_code.htmlの新規追加:

    • これは、godocに関する包括的な解説記事の本体であり、このコミットの主要な目的です。
    • ファイルモードがnew file mode 100644となっており、新規ファイルとして追加されたことがわかります。
    • 記事の内容は、godocの哲学、コメント規約、書式ルール、そして実際の使用例を詳細に説明しています。
  2. doc/Makefileへのエントリ追加:

    • doc/MakefileRAWHTML変数に、新しく追加されたHTMLファイルへの参照が追加されています。
    • これにより、Goのドキュメントビルドシステムがこの新しい記事を認識し、公式ドキュメントサイトの一部として公開できるようになります。
--- a/doc/Makefile
+++ b/doc/Makefile
@@ -9,6 +9,7 @@ RAWHTML=\
 	articles/laws_of_reflection.rawhtml\
 	articles/c_go_cgo.rawhtml\
 	articles/go_concurrency_patterns_timing_out_moving_on.rawhtml\
+\tarticles/godoc_documenting_go_code.rawhtml\
 	articles/image_draw.rawhtml\
 	effective_go.rawhtml\
 	go1.rawhtml\

コアとなるコードの解説

doc/articles/godoc_documenting_go_code.htmlは、Go言語におけるドキュメンテーションのベストプラクティスとgodocツールの利用方法を体系的にまとめたものです。この記事は、Goの設計哲学である「ドキュメンテーションはコードと密接に結合されるべき」という考え方を具体的に示しています。

記事の主要なポイントは以下の通りです。

  • ドキュメンテーションの重要性: ソフトウェアのアクセシビリティと保守性にとってドキュメンテーションがいかに重要であるかを強調しています。
  • godocの役割: godocがGoのソースコード(コメントを含む)を解析し、HTMLやプレーンテキスト形式のドキュメントを生成するツールであることを説明しています。これにより、ドキュメントがコードと密接に結合され、常に最新の状態に保たれる利点が強調されています。
  • コメント規約: godocがドキュメントとして認識するコメントの具体的な書き方について詳細に解説しています。
    • 宣言の直前に空行なしでコメントを記述すること。
    • コメントの最初の文が、その要素の名前で始まる完全な文であるべきこと。
    • パッケージコメントの書き方、特にdoc.goファイルの利用。
    • BUG(who)コメントの特殊な扱い。
  • 書式ルール: godocがコメントをHTMLに変換する際の書式ルール(段落の区切り、整形済みテキストのインデント、URLの自動リンク化)について説明しています。これらのルールは、特別なマークアップを必要とせず、通常の良いコメントを書くことで自然に適用されることを示しています。
  • godocの利用: godoc$GOROOT/src/pkgGOPATHワークスペース内のGoパッケージを自動的にドキュメント化すること、および-pathフラグやgodoc .コマンドで追加のパスを指定できることを説明しています。

この記事が公式ドキュメントに組み込まれたことで、Go開発者はgodocの利用方法に関する信頼できる情報源を容易に参照できるようになり、Goエコシステム全体のドキュメンテーション品質の向上に大きく貢献しています。

関連リンク

参考にした情報源リンク

  • Goプログラミング言語ブログ: http://blog.golang.org/2011/03/godoc-documenting-go-code.html
  • Go言語の公式ドキュメント (コミット内容から推測される一般的な情報源)
  • Go言語のソースコード (特にdocディレクトリとsrc/cmd/godocディレクトリ)
  • Go言語のドキュメンテーションに関する一般的な知識 (Goコミュニティの慣習など)