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

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

このコミットは、Go言語の標準ライブラリが使用するタイムゾーン情報ファイル lib/time/zoneinfo.zip を、IANA (Internet Assigned Numbers Authority) のタイムゾーンデータベースのリリース 2014c に更新するものです。これは、世界中のタイムゾーン規則(夏時間など)の変更に対応するための定期的なメンテナンス更新です。

コミット

commit b04146e492ff88793ef834b85aea75044111a222
Author: Rob Pike <r@golang.org>
Date:   Fri May 16 22:06:37 2014 +0000

    lib/time/zoneinfo.zip: update to IANA release 2014c
    
    LGTM=minux.ma
    R=golang-codereviews, minux.ma
    CC=golang-codereviews
    https://golang.org/cl/93420046

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

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

元コミット内容

lib/time/zoneinfo.zip: update to IANA release 2014c

LGTM=minux.ma
R=golang-codereviews, minux.ma
CC=golang-codereviews
https://golang.org/cl/93420046

変更の背景

タイムゾーンの規則は、各国の政府や地域によって定期的に変更されます。例えば、夏時間(Daylight Saving Time, DST)の開始・終了日、標準時のオフセット、新しいタイムゾーンの導入などがこれに該当します。これらの変更は、IANA (Internet Assigned Numbers Authority) が管理する「タイムゾーンデータベース」(tz database または zoneinfo database とも呼ばれる)に集約され、定期的に新しいバージョンがリリースされます。

Go言語の time パッケージは、正確な時刻変換(特に異なるタイムゾーン間での変換や夏時間の考慮)を行うために、このIANAタイムゾーンデータベースの情報を利用します。Goは、このデータベースを zoneinfo.zip という形で内部にバンドルしており、これによりGoアプリケーションは実行環境のシステムタイムゾーン設定に依存することなく、一貫したタイムゾーン処理を提供できます。

このコミットの背景は、Goが常に最新かつ正確なタイムゾーン情報を使用できるようにするため、IANAタイムゾーンデータベースの新しいリリース 2014c に追従して zoneinfo.zip を更新することです。これにより、Goアプリケーションが古いタイムゾーン情報に基づいて誤った時刻計算を行うリスクを回避します。

前提知識の解説

IANA Time Zone Database (tz database / zoneinfo database)

IANAタイムゾーンデータベースは、世界中のタイムゾーン規則と歴史的な変更を記録した公開データベースです。これは、コンピュータシステムが正確な時刻変換を行うための標準的な情報源として広く利用されています。データベースには、各タイムゾーンのUTCからのオフセット、夏時間の適用規則、およびそれらの規則が歴史的にどのように変化してきたかに関する詳細な情報が含まれています。

このデータベースは、世界中のタイムゾーンの専門家やボランティアによって維持されており、政府の決定や地理的な変更に応じて頻繁に更新されます。例えば、ある国が夏時間を廃止したり、新しいタイムゾーンを導入したりすると、データベースが更新されます。

Go言語における time パッケージとタイムゾーン処理

Go言語の標準ライブラリである time パッケージは、日付と時刻を扱うための包括的な機能を提供します。このパッケージは、time.Time 型を使用して時刻を表現し、time.Location 型を使用してタイムゾーンを表現します。

Goの time パッケージがタイムゾーン情報を解決する際、通常は以下の順序で情報を探します。

  1. zoneinfo.zip: Goのビルドに組み込まれている zoneinfo.zip ファイルからタイムゾーン情報を読み込みます。これは、Goアプリケーションが自己完結型であり、実行環境のシステム設定に依存しないようにするための重要なメカニズムです。
  2. システムタイムゾーン情報: zoneinfo.zip が利用できない場合(例えば、Goのビルド時にタイムゾーン情報が組み込まれていない場合)、Goはオペレーティングシステムが提供するタイムゾーン情報(通常は /usr/share/zoneinfo など)を利用しようとします。

zoneinfo.zip をGoにバンドルするアプローチは、クロスプラットフォームでの一貫性と、システム環境に依存しない正確なタイムゾーン処理を保証するために非常に重要です。このため、IANAデータベースの更新に追従して zoneinfo.zip を定期的に更新することが不可欠となります。

技術的詳細

このコミットの技術的な詳細は、主にデータファイルの更新と、その更新プロセスを管理するスクリプトのバージョン番号の変更に集約されます。

  1. zoneinfo.zip の更新:

    • zoneinfo.zip は、IANAタイムゾーンデータベースのコンパイル済みバイナリデータを含むZIPアーカイブです。このファイルは、Goの time パッケージが内部的に使用するタイムゾーン規則の集合体です。
    • コミットの差分を見ると、lib/time/zoneinfo.zip がバイナリファイルとして変更されており、ファイルサイズが 352541バイト から 358933バイト に増加しています。これは、新しいタイムゾーン規則が追加または変更された結果として、データ量が増加したことを示しています。
    • この更新により、Goアプリケーションは、IANA 2014cリリースに含まれる最新のタイムゾーン規則(例えば、特定の地域の夏時間開始・終了日の変更や、新しいタイムゾーンの定義など)を認識し、適用できるようになります。
  2. lib/time/update.bash の変更:

    • update.bash スクリプトは、IANAタイムゾーンデータベースの新しいバージョンをダウンロードし、zoneinfo.zip ファイルを生成するために使用されるシェルスクリプトです。
    • このコミットでは、スクリプト内の CODE および DATA 変数の値が 2014b から 2014c に変更されています。これらの変数は、スクリプトがダウンロードするIANAデータベースの特定のバージョンを指定するために使用されます。
    • この変更は、update.bash スクリプト自体が、どのバージョンのIANAデータベースを処理すべきかを正しく認識するためのものです。これにより、将来的にこのスクリプトが実行された際に、意図した最新バージョンのタイムゾーンデータが取得されることが保証されます。

このコミットは、Goのタイムゾーン処理の正確性を維持するためのルーチンワークであり、Goアプリケーションが常に最新の国際的な時刻規則に準拠することを保証します。

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

このコミットで変更された主要なファイルは以下の2つです。

  1. lib/time/update.bash
  2. lib/time/zoneinfo.zip

lib/time/update.bash の差分

--- a/lib/time/update.bash
+++ b/lib/time/update.bash
@@ -7,8 +7,8 @@
 # downloaded from the ICANN/IANA distribution.
 
 # Versions to use.
-CODE=2014b
-DATA=2014b
+CODE=2014c
+DATA=2014c
 
 set -e
 rm -rf work

lib/time/zoneinfo.zip の差分

--- a/lib/time/zoneinfo.zip
+++ b/lib/time/zoneinfo.zip
index 65eaddde58..cf71f5f7fc 100644
Binary files a/lib/time/zoneinfo.zip and b/lib/time/zoneinfo.zip differ

コアとなるコードの解説

lib/time/update.bash

このシェルスクリプトは、Goのタイムゾーンデータを更新するためのユーティリティです。変更された行は以下の通りです。

-CODE=2014b
-DATA=2014b
+CODE=2014c
+DATA=2014c
  • CODEDATA 変数は、IANAタイムゾーンデータベースのバージョンを指定するために使用されます。CODE はソースコードのバージョンを、DATA はデータファイルのバージョンを指します。
  • この変更は、スクリプトがIANAデータベースの 2014b バージョンではなく、新しくリリースされた 2014c バージョンをダウンロードして処理するように指示するものです。これにより、zoneinfo.zip が最新のデータで生成されることが保証されます。

lib/time/zoneinfo.zip

このファイルはバイナリファイルであり、IANAタイムゾーンデータベースのコンパイル済みデータを含んでいます。コミットの差分では、このファイルが変更されたこと(バイナリ差分)と、ファイルサイズがわずかに増加したことが示されています。

  • このバイナリファイルの更新は、update.bash スクリプトを実行して新しいIANAデータベースバージョン(2014c)から再生成された結果です。
  • Goの time パッケージは、この zoneinfo.zip ファイルを読み込み、世界中のタイムゾーンに関する情報をメモリにロードします。これには、各タイムゾーンのUTCオフセット、夏時間の開始・終了日、および過去のタイムゾーン規則の変更履歴などが含まれます。
  • このファイルの更新により、Goアプリケーションは、2014cリリースで導入された最新のタイムゾーン規則変更(例えば、特定の国の夏時間規則の変更や、新しいタイムゾーンの追加など)を正確に処理できるようになります。これにより、Goアプリケーションが提供する時刻関連の機能が、現実世界のタイムゾーンの変更に追従し、正確性を保つことができます。

関連リンク

参考にした情報源リンク

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

このコミットは、Go言語の標準ライブラリが使用するタイムゾーン情報ファイル lib/time/zoneinfo.zip を、IANA (Internet Assigned Numbers Authority) のタイムゾーンデータベースのリリース 2014c に更新するものです。これは、世界中のタイムゾーン規則(夏時間など)の変更に対応するための定期的なメンテナンス更新です。

コミット

commit b04146e492ff88793ef834b85aea75044111a222
Author: Rob Pike <r@golang.org>
Date:   Fri May 16 22:06:37 2014 +0000

    lib/time/zoneinfo.zip: update to IANA release 2014c
    
    LGTM=minux.ma
    R=golang-codereviews, minux.ma
    CC=golang-codereviews
    https://golang.org/cl/93420046

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

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

元コミット内容

lib/time/zoneinfo.zip: update to IANA release 2014c

LGTM=minux.ma
R=golang-codereviews, minux.ma
CC=golang-codereviews
https://golang.org/cl/93420046

変更の背景

タイムゾーンの規則は、各国の政府や地域によって定期的に変更されます。例えば、夏時間(Daylight Saving Time, DST)の開始・終了日、標準時のオフセット、新しいタイムゾーンの導入などがこれに該当します。これらの変更は、IANA (Internet Assigned Numbers Authority) が管理する「タイムゾーンデータベース」(tz database または zoneinfo database とも呼ばれる)に集約され、定期的に新しいバージョンがリリースされます。

Go言語の time パッケージは、正確な時刻変換(特に異なるタイムゾーン間での変換や夏時間の考慮)を行うために、このIANAタイムゾーンデータベースの情報を利用します。Goは、このデータベースを zoneinfo.zip という形で内部にバンドルしており、これによりGoアプリケーションは実行環境のシステムタイムゾーン設定に依存することなく、一貫したタイムゾーン処理を提供できます。

このコミットの背景は、Goが常に最新かつ正確なタイムゾーン情報を使用できるようにするため、IANAタイムゾーンデータベースの新しいリリース 2014c に追従して zoneinfo.zip を更新することです。これにより、Goアプリケーションが古いタイムゾーン情報に基づいて誤った時刻計算を行うリスクを回避します。

前提知識の解説

IANA Time Zone Database (tz database / zoneinfo database)

IANAタイムゾーンデータベースは、世界中のタイムゾーン規則と歴史的な変更を記録した公開データベースです。これは、コンピュータシステムが正確な時刻変換を行うための標準的な情報源として広く利用されています。データベースには、各タイムゾーンのUTCからのオフセット、夏時間の適用規則、およびそれらの規則が歴史的にどのように変化してきたかに関する詳細な情報が含まれています。

このデータベースは、世界中のタイムゾーンの専門家やボランティアによって維持されており、政府の決定や地理的な変更に応じて頻繁に更新されます。例えば、ある国が夏時間を廃止したり、新しいタイムゾーンを導入したりすると、データベースが更新されます。

Go言語における time パッケージとタイムゾーン処理

Go言語の標準ライブラリである time パッケージは、日付と時刻を扱うための包括的な機能を提供します。このパッケージは、time.Time 型を使用して時刻を表現し、time.Location 型を使用してタイムゾーンを表現します。

Goの time パッケージがタイムゾーン情報を解決する際、通常は以下の順序で情報を探します。

  1. zoneinfo.zip: Goのビルドに組み込まれている zoneinfo.zip ファイルからタイムゾーン情報を読み込みます。これは、Goアプリケーションが自己完結型であり、実行環境のシステム設定に依存しないようにするための重要なメカニズムです。
  2. システムタイムゾーン情報: zoneinfo.zip が利用できない場合(例えば、Goのビルド時にタイムゾーン情報が組み込まれていない場合)、Goはオペレーティングシステムが提供するタイムゾーン情報(通常は /usr/share/zoneinfo など)を利用しようとします。

zoneinfo.zip をGoにバンドルするアプローチは、クロスプラットフォームでの一貫性と、システム環境に依存しない正確なタイムゾーン処理を保証するために非常に重要です。このため、IANAデータベースの更新に追従して zoneinfo.zip を定期的に更新することが不可欠となります。

技術的詳細

このコミットの技術的な詳細は、主にデータファイルの更新と、その更新プロセスを管理するスクリプトのバージョン番号の変更に集約されます。

  1. zoneinfo.zip の更新:

    • zoneinfo.zip は、IANAタイムゾーンデータベースのコンパイル済みバイナリデータを含むZIPアーカイブです。このファイルは、Goの time パッケージが内部的に使用するタイムゾーン規則の集合体です。
    • コミットの差分を見ると、lib/time/zoneinfo.zip がバイナリファイルとして変更されており、ファイルサイズが 352541バイト から 358933バイト に増加しています。これは、新しいタイムゾーン規則が追加または変更された結果として、データ量が増加したことを示しています。
    • この更新により、Goアプリケーションは、IANA 2014cリリースに含まれる最新のタイムゾーン規則(例えば、特定の地域の夏時間開始・終了日の変更や、新しいタイムゾーンの定義など)を認識し、適用できるようになります。
  2. lib/time/update.bash の変更:

    • update.bash スクリプトは、IANAタイムゾーンデータベースの新しいバージョンをダウンロードし、zoneinfo.zip ファイルを生成するために使用されるシェルスクリプトです。
    • このコミットでは、スクリプト内の CODE および DATA 変数の値が 2014b から 2014c に変更されています。これらの変数は、スクリプトがダウンロードするIANAデータベースの特定のバージョンを指定するために使用されます。
    • この変更は、update.bash スクリプト自体が、どのバージョンのIANAデータベースを処理すべきかを正しく認識するためのものです。これにより、将来的にこのスクリプトが実行された際に、意図した最新バージョンのタイムゾーンデータが取得されることが保証されます。

このコミットは、Goのタイムゾーン処理の正確性を維持するためのルーチンワークであり、Goアプリケーションが常に最新の国際的な時刻規則に準拠することを保証します。

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

このコミットで変更された主要なファイルは以下の2つです。

  1. lib/time/update.bash
  2. lib/time/zoneinfo.zip

lib/time/update.bash の差分

--- a/lib/time/update.bash
+++ b/lib/time/update.bash
@@ -7,8 +7,8 @@
 # downloaded from the ICANN/IANA distribution.
 
 # Versions to use.
-CODE=2014b
-DATA=2014b
+CODE=2014c
+DATA=2014c
 
 set -e
 rm -rf work

lib/time/zoneinfo.zip の差分

--- a/lib/time/zoneinfo.zip
+++ b/lib/time/zoneinfo.zip
index 65eaddde58..cf71f5f7fc 100644
Binary files a/lib/time/zoneinfo.zip and b/lib/time/zoneinfo.zip differ

コアとなるコードの解説

lib/time/update.bash

このシェルスクリプトは、Goのタイムゾーンデータを更新するためのユーティリティです。変更された行は以下の通りです。

-CODE=2014b
-DATA=2014b
+CODE=2014c
+DATA=2014c
  • CODEDATA 変数は、IANAタイムゾーンデータベースのバージョンを指定するために使用されます。CODE はソースコードのバージョンを、DATA はデータファイルのバージョンを指します。
  • この変更は、スクリプトがIANAデータベースの 2014b バージョンではなく、新しくリリースされた 2014c バージョンをダウンロードして処理するように指示するものです。これにより、zoneinfo.zip が最新のデータで生成されることが保証されます。

lib/time/zoneinfo.zip

このファイルはバイナリファイルであり、IANAタイムゾーンデータベースのコンパイル済みデータを含んでいます。コミットの差分では、このファイルが変更されたこと(バイナリ差分)と、ファイルサイズがわずかに増加したことが示されています。

  • このバイナリファイルの更新は、update.bash スクリプトを実行して新しいIANAデータベースバージョン(2014c)から再生成された結果です。
  • Goの time パッケージは、この zoneinfo.zip ファイルを読み込み、世界中のタイムゾーンに関する情報をメモリにロードします。これには、各タイムゾーンのUTCオフセット、夏時間の開始・終了日、および過去のタイムゾーン規則の変更履歴などが含まれます。
  • このファイルの更新により、Goアプリケーションは、2014cリリースで導入された最新のタイムゾーン規則変更(例えば、特定の国の夏時間規則の変更や、新しいタイムゾーンの追加など)を正確に処理できるようになります。これにより、Goアプリケーションが提供する時刻関連の機能が、現実世界のタイムゾーンの変更に追従し、正確性を保つことができます。

関連リンク

参考にした情報源リンク