[インデックス 12948] ファイルの概要
このコミットは、Go言語のOS X(macOS)インストーラーの視覚的なカスタマイズに関する変更を導入しています。具体的には、インストーラーのデフォルトの背景画像を、GoのマスコットであるGopherの画像に置き換えることを目的としています。これにより、インストーラーのブランドイメージを向上させ、ユーザーエクスペリエンスをよりGoプロジェクトに即したものにしています。
コミット
commit 78e4d1752e207d4c1663c131eef50842366e77db
Author: Mikkel Krautz <mikkel@krautz.dk>
Date: Tue Apr 24 09:24:19 2012 -0700
misc/dist: more gophers for OS X installer
Replaces the default OS X installer background
with a more fitting image.
R=golang-dev
CC=golang-dev
https://golang.org/cl/6116043
GitHub上でのコミットページへのリンク
https://github.com/golang/go/commit/78e4d1752e207d4c1663c131eef50842366e77db
元コミット内容
このコミットの元の内容は、OS Xインストーラーの背景をより適切な画像に置き換えるというものです。これは、Go言語の公式インストーラーのビルドプロセスの一部として行われ、ユーザーがGoをインストールする際の視覚的な体験を向上させることを意図しています。
変更の背景
Go言語のインストーラーは、ユーザーがGo開発環境をセットアップする際の最初の接点となります。このコミットが行われた2012年当時、OS X向けのインストーラーは存在していましたが、その視覚的な要素は一般的なAppleのインストーラーのままでした。プロジェクトのブランドイメージを強化し、ユーザーにGo言語の親しみやすいGopherマスコットを提示することで、より統一された体験を提供することが変更の背景にあります。
具体的には、以下の点が挙げられます。
- ブランド統一: Go言語の公式インストーラーとして、Goプロジェクトの視覚的アイデンティティ(Gopher)を反映させることで、ブランドの一貫性を保つ。
- ユーザーエクスペリエンスの向上: デフォルトの無味乾燥な背景ではなく、Goに特化した画像を使用することで、インストールのプロセスをより魅力的で記憶に残るものにする。
- プロフェッショナリズム: 公式の配布物として、細部にわたる配慮を示すことで、プロジェクト全体のプロフェッショナリズムをアピールする。
前提知識の解説
このコミットを理解するためには、以下の前提知識が必要です。
-
macOSインストーラーパッケージ (.pkg): macOSアプリケーションやシステムコンポーネントを配布するための標準的な形式です。これらは通常、
productbuild
コマンドやXcodeのパッケージャーによって作成されます。.pkg
ファイルは、インストール手順、ファイル、スクリプト、そしてインストーラーのUI要素(背景画像など)を定義するDistribution
ファイルを含んでいます。 -
productbuild
コマンド: macOSのコマンドラインツールで、インストーラーパッケージ(.pkg)を作成するために使用されます。このコマンドは、配布用のコンポーネント、スクリプト、およびUI定義ファイル(Distribution
ファイル)を組み合わせて、最終的なインストーラーを生成します。特に、--distribution
オプションでインストーラーの動作を定義するXMLファイルを指定し、--resources
オプションで画像やローカライズファイルなどのリソースを含むディレクトリを指定できます。 -
Distribution
ファイル: macOSインストーラーの動作と外観を定義するXML形式のファイルです。このファイルは、インストーラーのタイトル、インストールオプション、前提条件チェック、そして背景画像などのUI要素を指定するために使用されます。<background>
タグは、インストーラーの背景として表示される画像ファイルを指定するために用いられます。 -
Go言語のビルドシステム: Go言語のプロジェクトは、通常、
go
コマンドやmake
ファイルを使用してビルドされます。misc/dist
ディレクトリは、Goの配布物(バイナリディストリビューション)を構築するためのスクリプトや設定ファイルが含まれていることが多いです。bindist.go
のようなファイルは、Goで書かれたビルドスクリプトであり、クロスプラットフォームのバイナリ配布物を生成するロジックを含んでいます。
技術的詳細
このコミットは、macOSインストーラーのビルドプロセスに以下の技術的な変更を加えています。
-
productbuild
コマンドへの--resources
オプションの追加:misc/dist/bindist.go
ファイルにおいて、productbuild
コマンドの呼び出しに新たに--resources
オプションが追加されました。- このオプションは、インストーラーが使用する追加のリソース(画像、ローカライズファイルなど)が格納されているディレクトリのパスを指定します。
- 具体的には、
filepath.Join(dist, "darwin/Resources")
というパスが渡されており、これはビルドプロセス中に生成されるdarwin/Resources
ディレクトリがインストーラーのリソースとして含まれることを意味します。
-
Distribution
ファイルへの背景画像指定の追加:misc/dist/darwin/Distribution
ファイルは、macOSインストーラーの動作と外観を定義するXMLファイルです。- このファイルに、
<background mime-type="image/png" file="bg.png"/>
という新しいXMLタグが追加されました。 - このタグは、インストーラーの背景として
bg.png
というPNG画像ファイルを使用することを指示しています。file="bg.png"
は、--resources
オプションで指定されたディレクトリ(この場合はdarwin/Resources
)内にあるbg.png
を参照します。
-
新しい背景画像ファイル
bg.png
の追加:misc/dist/darwin/Resources/bg.png
という新しいバイナリファイルがリポジトリに追加されました。- このファイルは、実際にインストーラーの背景として表示されるGo Gopherの画像です。コミットログには「Bin 0 -> 11466 bytes」とあり、これは新しいバイナリファイルが追加されたことを示しています。
これらの変更により、productbuild
コマンドがインストーラーパッケージを生成する際に、指定されたリソースディレクトリからbg.png
を読み込み、Distribution
ファイルに定義された通りにインストーラーの背景として設定するようになります。
コアとなるコードの変更箇所
misc/dist/bindist.go
--- a/misc/dist/bindist.go
+++ b/misc/dist/bindist.go
@@ -256,6 +256,7 @@ func (b *Build) Do() error {
targ := base + ".pkg"
_, err = b.run("", "productbuild",
"--distribution", filepath.Join(dist, "darwin/Distribution"),
+ "--resources", filepath.Join(dist, "darwin/Resources"),
"--package-path", pkgdest,
targ)
if err != nil {
misc/dist/darwin/Distribution
--- a/misc/dist/darwin/Distribution
+++ b/misc/dist/darwin/Distribution
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<installer-script minSpecVersion="1.000000">
<title>Go</title>
+ <background mime-type="image/png" file="bg.png"/>
<options customize="never" allow-external-scripts="no"/>
<domains enable_localSystem="true" />
<installation-check script="installCheck();"/>
misc/dist/darwin/Resources/bg.png
--- /dev/null
+++ b/misc/dist/darwin/Resources/bg.png
Binary files /dev/null and b/misc/dist/darwin/Resources/bg.png differ
(これは新しいバイナリファイルが追加されたことを示す差分です。実際の画像データは表示されません。)
コアとなるコードの解説
-
misc/dist/bindist.go
の変更:- このGoファイルは、Go言語のバイナリ配布物を構築するためのスクリプトの一部です。
productbuild
コマンドは、macOSインストーラーパッケージ(.pkg
)を作成するために使用されます。- 追加された行
"--resources", filepath.Join(dist, "darwin/Resources"),
は、productbuild
コマンドに--resources
オプションを渡し、インストーラーが使用する追加のリソース(この場合は背景画像)がdarwin/Resources
ディレクトリに存在することを指定しています。これにより、productbuild
は、このディレクトリ内のファイルをインストーラーパッケージに含めるようになります。
-
misc/dist/darwin/Distribution
の変更:- このXMLファイルは、macOSインストーラーの構成を定義します。
<background mime-type="image/png" file="bg.png"/>
という行が<installer-script>
タグ内に追加されました。- これは、インストーラーのUIにおいて、
bg.png
という名前のPNG画像を背景として表示するように指示しています。file="bg.png"
は、productbuild
コマンドの--resources
オプションで指定されたディレクトリ(darwin/Resources
)からの相対パスとして解釈されます。
-
misc/dist/darwin/Resources/bg.png
の追加:- このファイルは、実際にインストーラーの背景として表示されるGo Gopherの画像データです。
- このバイナリファイルがリポジトリに追加されたことで、ビルドプロセス中に
darwin/Resources
ディレクトリに配置され、最終的なインストーラーパッケージに組み込まれるようになります。
これらの変更が連携することで、Go言語のmacOSインストーラーがビルドされる際に、Go Gopherの画像が背景として表示されるようになります。
関連リンク
- Apple Developer Documentation - productbuild:
productbuild
コマンドに関する公式ドキュメント。 - Apple Developer Documentation - Distribution XML Schema:
Distribution
ファイルのXMLスキーマに関する情報。 - Go言語公式サイト: Go言語に関する公式情報。
参考にした情報源リンク
- 上記のApple Developer Documentation
- Go言語のソースコードリポジトリ(GitHub)
- 一般的なmacOSインストーラー作成に関する技術ブログやフォーラム(具体的なURLは割愛しますが、
productbuild
やDistribution
ファイルに関する情報源を参考にしました。)