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

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

このコミットは、Go 1リリースに関するドキュメント(doc/go1.html および doc/go1.tmpl)を更新し、htmlパッケージの変更点を反映させることを目的としています。具体的には、htmlパッケージがexp(experimental/experimental)パッケージ群に移動したこと、およびEscapeStringUnescapeString関数が引き続きhtmlパッケージに残ることを明記しています。

コミット

  • コミットハッシュ: 47d614e667d15aa324ec1909ae2422202947ff20
  • Author: Andrew Gerrand adg@golang.org
  • Date: Fri Mar 2 11:52:46 2012 +1100
  • コミットメッセージ:
    doc: update go1 for html changes
    
    R=golang-dev, rsc, r
    CC=golang-dev
    https://golang.org/cl/5713054
    

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

https://github.com/golang/go/commit/47d614e667d15aa324ec1909ae2422202947ff20

元コミット内容

doc: update go1 for html changes

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

変更の背景

Go言語は、バージョン1(Go 1)のリリースに向けて、標準ライブラリの安定化と整理を行っていました。この過程で、一部のパッケージはまだ実験的な段階にあると判断され、将来的な変更の可能性を考慮してexpディレクトリに移動されました。htmlパッケージもその一つであり、このコミットは、Go 1の公式ドキュメントがこの変更を正確に反映するようにするためのものです。

特に、EscapeStringUnescapeStringという特定の関数は、HTMLエンコーディング/デコーディングにおいて非常に基本的な機能であり、これらが引き続きhtmlパッケージに残ることを明記することで、開発者が混乱することなくこれらの機能を利用できるように配慮されています。これは、パッケージ全体の移動とは別に、特定の重要な機能のアクセシビリティを維持するための措置と考えられます。

前提知識の解説

Go 1リリース

Go 1は、Go言語の最初の安定版リリースであり、言語仕様と標準ライブラリの互換性を保証する重要なマイルストーンでした。Go 1以降、既存のGo 1プログラムは、将来のGoのバージョンでも動作することが保証されています。この安定化の過程で、一部のパッケージはexp(experimental)ディレクトリに移動され、将来の変更や削除の可能性が示唆されました。

expパッケージ

Go言語の標準ライブラリには、expという特別なディレクトリが存在します。このディレクトリに配置されたパッケージは「実験的」と見なされ、将来のGoのバージョンでAPIが変更されたり、完全に削除されたりする可能性があります。これは、Goチームが新しいアイデアや機能のプロトタイプを開発し、コミュニティからのフィードバックを収集するためのメカニズムです。expパッケージは、安定版のGo APIの一部とは見なされず、プロダクション環境での使用は推奨されません。

htmlパッケージとHTMLエスケープ/アンエスケープ

Go言語の標準ライブラリには、HTMLの処理に関連するパッケージがいくつか存在します。このコミットで言及されているhtmlパッケージは、HTMLの構文解析やエスケープ処理に関連する機能を提供します。

  • HTMLエスケープ: HTMLエスケープとは、特殊文字(例: <, >, &, ", ')をHTMLエンティティ(例: &lt;, &gt;, &amp;, &quot;, &#39;)に変換するプロセスです。これにより、ユーザーが入力したデータがHTMLとして解釈されることを防ぎ、クロスサイトスクリプティング(XSS)などのセキュリティ脆弱性を回避できます。
  • HTMLアンエスケープ: HTMLアンエスケープは、エスケープされたHTMLエンティティを元の特殊文字に戻すプロセスです。

EscapeStringUnescapeStringは、これらのエスケープ/アンエスケープ処理を行うための関数であり、Webアプリケーション開発においてセキュリティとデータの正確性を確保するために不可欠です。

技術的詳細

このコミットは、doc/go1.htmldoc/go1.tmplという2つのドキュメントファイルを変更しています。これらのファイルは、Go 1リリースに関する公式ドキュメントの一部であり、Go 1で導入された変更点やパッケージの移動について説明しています。

変更の核心は、htmlパッケージがexpパッケージ群に移動したことを明記しつつ、その中でもEscapeStringUnescapeStringという特定の関数は引き続きhtmlパッケージに残るという例外を明確にすることです。

具体的には、以下の変更が行われています。

  1. expパッケージリストへのhtmlの追加: ebnf, go/types, os/signalといった既存のexpパッケージのリストに、新たにhtmlが追加されています。これにより、htmlパッケージ全体が実験的なものとして扱われることが示されます。

  2. EscapeStringUnescapeStringの例外の明記: htmlパッケージがexpに移動したにもかかわらず、EscapeStringUnescapeStringという2つの重要な関数は引き続きhtmlパッケージに残るという注釈が追加されています。これは、これらの関数がHTML処理において非常に基本的かつ頻繁に使用されるため、開発者が引き続き簡単にアクセスできるようにするための配慮です。注釈には&#8224;(ダガー記号)が使用され、補足説明があることを示しています。

これらの変更は、Go 1のリリースに伴うパッケージの再編成と、その中でも特に重要な機能の扱いに関する公式な情報提供の一環です。

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

diff --git a/doc/go1.html b/doc/go1.html

--- a/doc/go1.html
+++ b/doc/go1.html
@@ -650,10 +650,16 @@ Several packages have moved under <code>exp</code> at the time of Go 1's release
 
 <ul>
 <li><code>ebnf</code></li>
+<li><code>html</code>&#8224;</li>
 <li><code>go/types</code></li>
 <li><code>os/signal</code></li>
 </ul>
 
+<p>
+(&#8224;The <code>EscapeString</code> and <code>UnescapeString</code> types remain
+in package <code>html</code>.)
+</p>
+
 <p>
 All these packages are available under the same names, with the prefix <code>exp/</code>: <code>exp/ebnf</code> etc.
 </p>

diff --git a/doc/go1.tmpl b/doc/go1.tmpl

--- a/doc/go1.tmpl
+++ b/doc/go1.tmpl
@@ -574,10 +574,16 @@ Several packages have moved under <code>exp</code> at the time of Go 1's release
 
 <ul>
 <li><code>ebnf</code></li>
+<li><code>html</code>&#8224;</li>
 <li><code>go/types</code></li>
 <li><code>os/signal</code></li>
 </ul>
 
+<p>
+(&#8224;The <code>EscapeString</code> and <code>UnescapeString</code> types remain
+in package <code>html</code>.)
+</p>
+
 <p>
 All these packages are available under the same names, with the prefix <code>exp/</code>: <code>exp/ebnf</code> etc.
 </p>

コアとなるコードの解説

両方のファイル(doc/go1.htmldoc/go1.tmpl)で、以下の変更が加えられています。

  1. <li><code>html</code>&#8224;</li> の追加: これは、expパッケージとしてリストされている項目(ebnf, go/types, os/signal)の中に、新たにhtmlパッケージが追加されたことを示しています。&#8224;はHTMLエンティティで、ダガー記号(†)を表し、この項目に補足説明があることを示唆しています。

  2. (&#8224;The <code>EscapeString</code> and <code>UnescapeString</code> types remain in package <code>html</code>.) の追加: この段落は、直前のhtmlパッケージのリスト項目に対する補足説明です。ダガー記号で示されたように、htmlパッケージ全体がexpに移動したにもかかわらず、EscapeStringUnescapeStringという2つの型(実際には関数ですが、ドキュメントでは型として言及されている可能性があります)は引き続きhtmlパッケージに残ることを明確にしています。これは、これらの機能がHTML処理において非常に重要であり、開発者が引き続き直接htmlパッケージからアクセスできるようにするための意図的な設計判断を示しています。

これらの変更は、Go 1のリリースノートやドキュメントにおいて、パッケージの再編成に関する正確な情報を提供し、開発者がGo 1への移行時に混乱しないようにするためのものです。

関連リンク

  • Go言語公式サイト: https://go.dev/
  • Go 1リリースノート(公式ドキュメントに統合されている可能性が高い)

参考にした情報源リンク