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

[インデックス 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に特化した画像を使用することで、インストールのプロセスをより魅力的で記憶に残るものにする。
  • プロフェッショナリズム: 公式の配布物として、細部にわたる配慮を示すことで、プロジェクト全体のプロフェッショナリズムをアピールする。

前提知識の解説

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

  1. macOSインストーラーパッケージ (.pkg): macOSアプリケーションやシステムコンポーネントを配布するための標準的な形式です。これらは通常、productbuildコマンドやXcodeのパッケージャーによって作成されます。.pkgファイルは、インストール手順、ファイル、スクリプト、そしてインストーラーのUI要素(背景画像など)を定義するDistributionファイルを含んでいます。

  2. productbuildコマンド: macOSのコマンドラインツールで、インストーラーパッケージ(.pkg)を作成するために使用されます。このコマンドは、配布用のコンポーネント、スクリプト、およびUI定義ファイル(Distributionファイル)を組み合わせて、最終的なインストーラーを生成します。特に、--distributionオプションでインストーラーの動作を定義するXMLファイルを指定し、--resourcesオプションで画像やローカライズファイルなどのリソースを含むディレクトリを指定できます。

  3. Distributionファイル: macOSインストーラーの動作と外観を定義するXML形式のファイルです。このファイルは、インストーラーのタイトル、インストールオプション、前提条件チェック、そして背景画像などのUI要素を指定するために使用されます。<background>タグは、インストーラーの背景として表示される画像ファイルを指定するために用いられます。

  4. Go言語のビルドシステム: Go言語のプロジェクトは、通常、goコマンドやmakeファイルを使用してビルドされます。misc/distディレクトリは、Goの配布物(バイナリディストリビューション)を構築するためのスクリプトや設定ファイルが含まれていることが多いです。bindist.goのようなファイルは、Goで書かれたビルドスクリプトであり、クロスプラットフォームのバイナリ配布物を生成するロジックを含んでいます。

技術的詳細

このコミットは、macOSインストーラーのビルドプロセスに以下の技術的な変更を加えています。

  1. productbuildコマンドへの--resourcesオプションの追加:

    • misc/dist/bindist.goファイルにおいて、productbuildコマンドの呼び出しに新たに--resourcesオプションが追加されました。
    • このオプションは、インストーラーが使用する追加のリソース(画像、ローカライズファイルなど)が格納されているディレクトリのパスを指定します。
    • 具体的には、filepath.Join(dist, "darwin/Resources")というパスが渡されており、これはビルドプロセス中に生成されるdarwin/Resourcesディレクトリがインストーラーのリソースとして含まれることを意味します。
  2. 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を参照します。
  3. 新しい背景画像ファイル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

(これは新しいバイナリファイルが追加されたことを示す差分です。実際の画像データは表示されません。)

コアとなるコードの解説

  1. misc/dist/bindist.goの変更:

    • このGoファイルは、Go言語のバイナリ配布物を構築するためのスクリプトの一部です。
    • productbuildコマンドは、macOSインストーラーパッケージ(.pkg)を作成するために使用されます。
    • 追加された行"--resources", filepath.Join(dist, "darwin/Resources"),は、productbuildコマンドに--resourcesオプションを渡し、インストーラーが使用する追加のリソース(この場合は背景画像)がdarwin/Resourcesディレクトリに存在することを指定しています。これにより、productbuildは、このディレクトリ内のファイルをインストーラーパッケージに含めるようになります。
  2. 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)からの相対パスとして解釈されます。
  3. misc/dist/darwin/Resources/bg.pngの追加:

    • このファイルは、実際にインストーラーの背景として表示されるGo Gopherの画像データです。
    • このバイナリファイルがリポジトリに追加されたことで、ビルドプロセス中にdarwin/Resourcesディレクトリに配置され、最終的なインストーラーパッケージに組み込まれるようになります。

これらの変更が連携することで、Go言語のmacOSインストーラーがビルドされる際に、Go Gopherの画像が背景として表示されるようになります。

関連リンク

参考にした情報源リンク

  • 上記のApple Developer Documentation
  • Go言語のソースコードリポジトリ(GitHub)
  • 一般的なmacOSインストーラー作成に関する技術ブログやフォーラム(具体的なURLは割愛しますが、productbuildDistributionファイルに関する情報源を参考にしました。)