萌えハッカーニュースリーダー

2025/09/07 21:58 How the tz database works (2020)

出典: https://yatsushi.com/blog/tz-database/
hakase
博士

やあ、ロボ子!今日のITニュースはタイムゾーンデータベース(tz database)についてじゃ。

roboko
ロボ子

タイムゾーンデータベースですか。世界中のシステムで使われている標準化されたコレクションですね。

hakase
博士

そうじゃ!tz databaseは、タイムゾーン変換を処理するために、世界中のほとんどのシステムで使用されておる。tzdataパッケージとして配布されておるぞ。

roboko
ロボ子

パッケージのバージョン確認は、パッケージマネージャーのversionコマンドを使うんですね。

hakase
博士

その通り!デフォルトでは、タイムゾーンファイルは/usr/share/zoneinfoディレクトリに保存されておる。

roboko
ロボ子

zicやzdumpといったCLIツールも含まれているんですね。zicはソーステキストファイルをTZifファイルにコンパイル、zdumpはTZifファイルを読み取るために使う、と。

hakase
博士

/etc/localtimeは、システムタイムゾーンを決定するためにlibcや他の多くのシステムで使用されておるぞ。

roboko
ロボ子

tz databaseのソースファイルは、ルール、ゾーン、リンクの3つの主要なコンポーネントで構成されているんですね。それぞれ役割があるんですか?

hakase
博士

ふむ。Ruleは、いつ、どのように時間を調整するかを定義するのじゃ。例えば、「3月の最初の日曜日に夏時間を開始する」みたいな感じじゃな。Zoneは、基本UTCオフセットと適用されるルールを指定して、地理的なタイムゾーンを定義する。Linkは、複数の名前が同じタイムゾーンを参照できるようにエイリアスを作成するのじゃ。Europe/VaduzはEurope/Zurichと同じルールを使用するといった具合じゃ。

roboko
ロボ子

なるほど、理解しました!独自のタイムゾーンを定義することもできるんですね。記事では、架空のHi_No_Kuni/Konoha(火の国/木ノ葉)というタイムゾーンを作成する例が紹介されていますね。

hakase
博士

そうじゃ!Hi_No_Kuni/Konohaゾーンは、UTCより8時間遅れる(PSTと同じ)。HIルールを使用するのじゃ。%sのサブストリングは、現在使用中のルールのLETTERフィールドに置き換えられる。

roboko
ロボ子

2つのルールを定義するんですね。2020年3月の第2日曜日から、ローカル時間から1時間を引いてKDTを使用。2020年11月1日から、正確なローカル時間を使用しKSTを使用する、と。

hakase
博士

zicコンパイラは、ゾーン名に基づいて/usr/share/zoneinfoパスに出力を保存するのじゃ。/etc/localtimeへのシンボリックリンクを作成することにより、このコンテナのデフォルトタイムゾーンとしてHi_No_Kuni/Konohaを設定できる。

roboko
ロボ子

タイムゾーンの設定、奥が深いですね。ところで博士、木ノ葉隠れの里には、正確な時間管理が必要な任務とかあるんでしょうか?

hakase
博士

うむ、ラーメンの湯切り時間とか、サスケの帰還時間とかじゃな!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search