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

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

このコミットは、Goの公式ドキュメントである doc/install-source.html に、go.tools リポジトリに含まれる追加ツールのインストール方法に関する説明を追加するものです。具体的には、godoc などのツールを go get コマンドを使ってインストールする手順が記載されています。

コミット

commit b3caa86f91a22f1aa31ac6a6cabf3a5e88751940
Author: Andrew Gerrand <adg@golang.org>
Date:   Wed Sep 25 14:10:49 2013 +1000

    doc: document installation of go.tools commands
    
    Fixes #5663.
    
    R=golang-dev, r
    CC=golang-dev
    https://golang.org/cl/13891043

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

https://github.com/golang/go/commit/b3caa86f91a22f1aa31ac6a6cabf3a5e88751940

元コミット内容

doc: document installation of go.tools commands

Fixes #5663.

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/13891043

変更の背景

このコミットは、GoのIssue #5663を修正するために行われました。当時のGoのドキュメントでは、Go本体のインストール方法については詳しく説明されていましたが、godoc のようなGoエコシステムで広く利用されている重要なツール群(これらは go.tools リポジトリで管理されていました)のインストール方法については、明確な記述が不足していました。

ユーザーがGoをインストールした後、これらの追加ツールをどのように入手し、利用開始すればよいかという点で混乱が生じる可能性がありました。特に、go get コマンドの利用方法や、GOPATH の設定がこれらのツールのインストールに必要であるという点が、新規ユーザーにとっては分かりにくいポイントでした。このコミットは、このような情報不足を解消し、ユーザーがGo開発環境をよりスムーズにセットアップできるようにすることを目的としています。

前提知識の解説

このコミットの変更内容を理解するためには、以下のGo言語に関する基本的な概念を理解しておく必要があります。

  • go get コマンド: go get は、Go言語のパッケージやコマンドをリモートリポジトリからダウンロードし、ビルドしてインストールするためのコマンドです。これはGoのモジュール管理システムの一部であり、依存関係の解決と取得を自動化します。go get は、指定されたURL(通常はバージョン管理システムのURL)からソースコードを取得し、GOPATH 内の適切な場所に配置し、必要に応じてビルドを行います。

  • GOPATH 環境変数: GOPATH は、Goのワークスペースのルートディレクトリを指定する環境変数です。Go 1.11以降のGo Modulesの導入により、GOPATH の役割は以前よりも限定的になりましたが、このコミットが作成された2013年当時は、Goのソースコード、パッケージ、実行可能ファイルが配置される中心的な場所として非常に重要でした。 GOPATH ディレクトリ構造は通常、以下のようになります。

    • src: ソースコードが配置されます。go get で取得した外部パッケージもここにダウンロードされます。
    • pkg: コンパイル済みのパッケージオブジェクトが配置されます。
    • bin: go installgo get でビルドされた実行可能ファイルが配置されます。
  • go.tools リポジトリ: go.tools は、Go言語の公式ツール群をホストしていたGoogle Code上のリポジトリです(現在はGitHubの golang/tools に移行しています)。godoc (Goのソースコードからドキュメントを生成・表示するツール) や goimports (Goのimport文を自動的に整理するツール) など、Go開発を支援する多くの便利なツールが含まれていました。これらのツールはGo本体とは別に開発・配布されていました。

  • Mercurial (Hg): Mercurialは、Gitと同様の分散型バージョン管理システムです。このコミットが作成された当時、GoプロジェクトはMercurialを使用してソースコードを管理していました。go get コマンドは、リポジトリからソースコードを取得するために、そのリポジトリが使用しているバージョン管理システム(Git、Mercurialなど)がローカルにインストールされていることを要求します。したがって、go.tools リポジトリがMercurialでホストされていたため、go get でそれらのツールをインストールするにはMercurialがシステムにインストールされている必要がありました。

技術的詳細

このコミットは、Goの公式ドキュメントである doc/install-source.html に、go.tools リポジトリからの追加ツールのインストール手順を追記するものです。

追加されたセクションは <h2 id="tools">Install additional tools</h2> という見出しで始まります。

  1. go.tools リポジトリの紹介: godoc を含むいくつかのGoツールが https://code.google.com/p/go.tools にあることが説明されています。

  2. 全ツールのインストール方法: go get code.google.com/p/go.tools/cmd/... というコマンドが提示されています。このコマンドは、go.tools リポジトリ内の cmd ディレクトリ以下にあるすべてのコマンド(実行可能ファイルとしてビルドされるもの)を再帰的に取得し、インストールすることを意味します。... はワイルドカードとして機能し、指定されたパス以下のすべてのサブパッケージやコマンドを対象とします。

  3. 特定ツールのインストール方法: go get code.google.com/p/go.tools/cmd/godoc のように、特定のコマンド(例: godoc)のみをインストールする方法も示されています。これにより、ユーザーは必要なツールだけを選択してインストールできます。

  4. 前提条件の明記:

    • Mercurialのインストール: go get コマンドがこれらのツールをインストールするためには、ローカルにMercurialがインストールされている必要があることが明記されています。これは、当時の go.tools リポジトリがMercurialで管理されていたためです。
    • GOPATH の設定: ユーザーが GOPATH を設定している必要があることも強調されています。go get は取得したソースコードやビルドされたバイナリを GOPATH 内に配置するため、これが正しく設定されていないとインストールが機能しません。ドキュメントの別のセクションである「How to Write Go Code」へのリンクも提供されており、GOPATH の詳細な設定方法を参照できるようになっています。

この変更により、Goのインストール手順がより包括的になり、ユーザーがGo開発に必要な基本的なツール群を容易にセットアップできるようになりました。

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

変更は doc/install-source.html ファイルに対して行われています。

--- a/doc/install-source.html
+++ b/doc/install-source.html
@@ -220,6 +220,36 @@ The document <a href="/doc/code.html">How to Write Go Code</a> explains how to
 set up a work environment in which to build and test Go code.
 </p>
 
+<h2 id="tools">Install additional tools</h2>
+<p>
+The source code for seeral Go tools (including <a href="/cmd/godoc/">godoc</a>)
+is kept in <a href="https://code.google.com/p/go.tools">the go.tools repository</a>.
+To install all of them, run the <code>go</code> <code>get</code> command:
+</p>
+<pre>
+$ go get code.google.com/p/go.tools/cmd/...
+</pre>
+<p>
+Or if you just want to install a specific command (<code>godoc</code> in this case):
+</p>
+<pre>
+$ go get code.google.com/p/go.tools/cmd/godoc
+</pre>
+<p>
+To install these tools, the <code>go</code> <code>get</code> command requires 
+that <a href="#mercurial">Mercurial</a> be installed locally.
+</p>
+<p>
+You must also have a workspace (<code>GOPATH</code>) set up;
+see <a href="/doc/code.html">How to Write Go Code</a> for the details.
+</p>
+<h2 id="community">Community resources</h2>

コアとなるコードの解説

追加されたHTMLスニペットは、Goのインストールガイドに新しいセクションを挿入しています。

  • <h2 id="tools">Install additional tools</h2>: 「追加ツールのインストール」という新しいセクション見出しを定義しています。id="tools" は、このセクションへの内部リンクを可能にします。
  • 最初の <p> タグでは、godoc を含むGoツールが go.tools リポジトリに存在することを説明し、そのリポジトリへのリンクを提供しています。また、godoc コマンド自体へのリンクも含まれています。
  • <pre> タグで囲まれたブロックは、シェルコマンドの例を示しています。
    • $ go get code.google.com/p/go.tools/cmd/...: go.tools リポジトリ内のすべてのコマンドをインストールするためのコマンドです。
    • $ go get code.google.com/p/go.tools/cmd/godoc: 特定のコマンド(この場合は godoc)のみをインストールするためのコマンドです。
  • 次の <p> タグでは、go get コマンドがこれらのツールをインストールするためにMercurialがローカルにインストールされている必要があることを説明しています。#mercurial へのリンクは、ドキュメント内のMercurialに関する既存のセクションを指しています。
  • 最後の <p> タグでは、GOPATH ワークスペースが設定されている必要があることを強調し、GOPATH の詳細な設定方法が記載されている「How to Write Go Code」ドキュメントへのリンクを提供しています。

この追加により、Goの公式インストールガイドがより完全なものとなり、ユーザーがGo開発環境をセットアップする際の障壁が低減されました。

関連リンク

参考にした情報源リンク

  • Go言語の公式ドキュメント (当時のバージョン): doc/install-source.html および doc/code.html の内容
  • Go言語のIssueトラッカー: Issue #5663 (ただし、検索では詳細が見つからなかったため、コミットメッセージからの推測が主)
  • Go言語の歴史とツールに関する一般的な知識
  • Mercurial 公式サイト: https://www.mercurial-scm.org/
  • Google Code Archive (go.toolsリポジトリの当時のURL): https://code.google.com/p/go.tools (現在はアーカイブされており、GitHubに移行しています)
  • golang/tools GitHubリポジトリ: https://github.com/golang/tools (go.toolsの後継)