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

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

このコミットは、misc/chrome/gophertool ディレクトリ内の manifest.json ファイルに対する修正です。具体的には、Chrome拡張機能のマニフェストファイルにおいて、ブラウザアクションのポップアップ指定方法が古い形式 ("popup") から新しい推奨形式 ("default_popup") へと変更されています。これにより、Chrome拡張機能の仕様変更に対応し、将来的な互換性と正しい動作を保証します。

コミット

commit b213891c06aece21cdfe0e8ebb672f061bb2d7e2
Author: Shenghou Ma <minux.ma@gmail.com>
Date:   Thu Jul 5 16:52:13 2012 -0400

    misc/chrome/gophertool: fix manifest
    according to http://code.google.com/chrome/extensions/browserAction.html,
    it should use "default_popup" instead of "popup".
    
    R=golang-dev, adg
    CC=golang-dev
    https://golang.org/cl/6349077

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

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

元コミット内容

misc/chrome/gophertool: fix manifest
according to http://code.google.com/chrome/extensions/browserAction.html,
it should use "default_popup" instead of "popup".

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

変更の背景

この変更は、Google Chrome拡張機能のAPI仕様の更新に対応するために行われました。コミットメッセージに明記されているように、当時の http://code.google.com/chrome/extensions/browserAction.html (現在のChrome Developersドキュメントに相当) の情報に基づき、ブラウザアクションのポップアップを指定するキーが "popup" から "default_popup" に変更されたためです。

Chrome拡張機能は、ブラウザの機能拡張を可能にするための小さなプログラムです。これらの拡張機能は、manifest.json というファイルを通じてそのメタデータ、権限、および動作を定義します。ブラウザアクションは、ブラウザのツールバーに表示されるアイコンで、クリックするとポップアップウィンドウを表示したり、特定のスクリプトを実行したりすることができます。

この変更が行われた2012年頃は、Chrome拡張機能のAPIが活発に開発・改善されていた時期であり、後方互換性を維持しつつも、より明確で堅牢なAPI設計へと移行が進んでいました。"default_popup" の導入は、ブラウザアクションのデフォルトのポップアップ動作をより明示的に定義するための変更と考えられます。古い "popup" キーを使用し続けると、将来的に拡張機能が正しく動作しなくなる可能性や、警告が表示される可能性があったため、この修正は必須でした。

前提知識の解説

Google Chrome拡張機能

Google Chrome拡張機能は、Google Chromeブラウザの機能を拡張するための小さなソフトウェアプログラムです。これらはHTML、CSS、JavaScriptといったWeb標準技術を用いて開発され、ブラウザのUIを変更したり、Webページと連携したり、新しい機能を追加したりすることができます。

manifest.json

manifest.json は、Chrome拡張機能の「設計図」となるJSON形式のファイルです。拡張機能の名前、バージョン、説明、必要な権限、バックグラウンドスクリプト、コンテンツスクリプト、ブラウザアクション、ページアクションなど、拡張機能に関するすべての重要なメタデータと設定が記述されています。Chromeブラウザは、このファイルを読み込むことで拡張機能の動作を理解し、実行します。

ブラウザアクション (Browser Action)

ブラウザアクションは、Chromeブラウザのツールバー(アドレスバーの右側)に表示されるアイコンです。ユーザーがこのアイコンをクリックすると、以下のような動作をさせることができます。

  • ポップアップの表示: 小さなHTMLページ(ポップアップ)を表示し、ユーザーが拡張機能と対話できるようにします。
  • イベントのトリガー: バックグラウンドスクリプトで特定のイベントをトリガーし、何らかの処理を実行します。
  • 特定のページへのリダイレクト: クリック時に新しいタブで特定のURLを開きます。

browser_action マニフェストキー

manifest.json 内の "browser_action" キーは、ブラウザアクションの動作と外観を定義するために使用されます。このオブジェクト内には、アイコンのパス、ツールチップのテキスト、そしてポップアップHTMLファイルのパスなどが指定されます。

  • "popup": これは古いバージョンのChrome拡張機能APIで使用されていたキーで、ブラウザアクションをクリックしたときに表示されるHTMLファイルを指定していました。
  • "default_popup": これは新しい(そして現在の)推奨されるキーです。機能的には "popup" と同じですが、APIの進化に伴い、より明確な命名規則として導入されました。このキーを使用することで、拡張機能は最新のAPI仕様に準拠し、将来的な互換性が保証されます。

この変更は、APIのセマンティクスを改善し、開発者がより意図を明確にコードを書けるようにするための典型的な例です。

技術的詳細

このコミットの技術的詳細は、manifest.json ファイル内の単一のキー名の変更に集約されます。

変更前:

"popup": "popup.html"

変更後:

"default_popup": "popup.html"

この変更は、Chrome拡張機能のブラウザアクションがクリックされたときに表示されるポップアップHTMLファイル (popup.html) の指定方法を、古いAPIから新しいAPIに準拠させるものです。

Chrome拡張機能のランタイムは、manifest.json を解析して拡張機能の動作を決定します。古いAPIでは "popup" キーが使用されていましたが、APIのバージョンアップに伴い、このキーは非推奨となり、代わりに "default_popup" が導入されました。この変更は、拡張機能が正しく動作し続けるために必要でした。もしこの変更が行われなかった場合、Chromeブラウザの新しいバージョンでは、gophertool 拡張機能のブラウザアクションをクリックしてもポップアップが表示されない、あるいはエラーが発生する可能性がありました。

この修正は、Go言語プロジェクトの一部である misc/chrome/gophertool という、Go言語に関連するChrome拡張機能のメンテナンスの一環として行われました。これは、Go言語のエコシステムが単に言語やツールだけでなく、関連するユーティリティやツール(この場合はChrome拡張機能)の最新のプラットフォーム要件への対応も重視していることを示しています。

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

diff --git a/misc/chrome/gophertool/manifest.json b/misc/chrome/gophertool/manifest.json
index 1a2e920300..04386594ae 100644
--- a/misc/chrome/gophertool/manifest.json
+++ b/misc/chrome/gophertool/manifest.json
@@ -8,7 +8,7 @@
   },\n   "browser_action": {\n     "default_icon": "gopher.png",\n-    "popup": "popup.html"\n+    "default_popup": "popup.html"\n   },\n   "omnibox": { "keyword": "golang" },\n   "icons": {\n```

## コアとなるコードの解説

上記の差分は、`misc/chrome/gophertool/manifest.json` ファイルに対する変更を示しています。

*   `-    "popup": "popup.html"`: この行は削除されたことを示しています。これは、古いAPIでブラウザアクションのポップアップを指定するために使用されていた `"popup"` キーと、その値である `popup.html` (ポップアップとして表示されるHTMLファイル)の定義です。
*   `+    "default_popup": "popup.html"`: この行は追加されたことを示しています。これは、新しいAPIでブラウザアクションのポップアップを指定するために推奨される `"default_popup"` キーと、その値である `popup.html` の定義です。

この変更により、`gophertool` Chrome拡張機能は、Chromeブラウザの最新のAPI仕様に準拠し、ブラウザアクションのポップアップ機能が引き続き正しく動作するようになります。機能的な変更はなく、単にAPIのキー名が更新されただけです。

## 関連リンク

*   [Chrome Extensions: browserAction - Google Chrome](https://developer.chrome.com/docs/extensions/reference/browserAction/) (現在のドキュメント。コミットメッセージのリンクは古い)
*   [Go Gerrit Change 6349077](https://golang.org/cl/6349077) (Goプロジェクトのコードレビューシステムにおけるこの変更のリンク)

## 参考にした情報源リンク

*   [Chrome Extensions: browserAction - Google Chrome](https://developer.chrome.com/docs/extensions/reference/browserAction/)
*   [JSON (JavaScript Object Notation) - MDN Web Docs](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/JSON)
*   [Git Diff - Git SCM](https://git-scm.com/docs/git-diff)