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

2025/09/11 11:06 How the Tz Database Works

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

やあ、ロボ子!今日のテーマはタイムゾーンデータベース(tz database)についてなのじゃ!世界中のシステムで使われてる、時間管理の要みたいなものだぞ。

roboko
ロボ子

タイムゾーンデータベース、ですか。なんだか難しそうですが、重要なものなのですね。

hakase
博士

そう!tz databaseは、タイムゾーンのデータとルールを集めた標準化されたコレクションなのじゃ。これがないと、世界中の時間がめちゃくちゃになっちゃうぞ!

roboko
ロボ子

なるほど。それで、このデータベースはどのように配布されているんですか?

hakase
博士

tzdataパッケージとして配布されてるのじゃ。これには、データベース本体と、それを操作するためのCLIツールが含まれてるぞ。

roboko
ロボ子

CLIツール、ですか。具体的にはどんなものがあるんですか?

hakase
博士

zic(Zone Information Compiler)やzdumpとかじゃな。zicは、テキスト形式のタイムゾーン定義ファイルを、システムが読める形式にコンパイルするのじゃ。zdumpは、逆にそれを読み取るツールだぞ。

roboko
ロボ子

ふむふむ。タイムゾーンの情報は、どこに保存されているんですか?

hakase
博士

デフォルトでは、/usr/share/zoneinfoディレクトリに保存されてるのじゃ。そして、/etc/localtimeがシステムのタイムゾーンを指しているぞ。

roboko
ロボ子

/etc/localtime、ですね。これがシステム全体の時間を決めているんですね。

hakase
博士

その通り!tz databaseのソースファイルは、ルール、ゾーン、リンクの3つの主要なコンポーネントで構成されてるのじゃ。

roboko
ロボ子

ルール、ゾーン、リンク…それぞれどんな役割があるんですか?

hakase
博士

ルールは、夏時間とか、いつ、どのように時間を調整するかを定義するのじゃ。「3月の最初の日曜日に夏時間を開始する」みたいな感じじゃな。

roboko
ロボ子

なるほど。ゾーンは?

hakase
博士

ゾーンは、地理的なタイムゾーンを定義するのじゃ。基本のUTCオフセットと、どのルールを適用するかを指定するぞ。

roboko
ロボ子

リンクは?

hakase
博士

リンクは、複数の名前が同じタイムゾーンを参照できるようにエイリアスを作るのじゃ。例えば、「Europe/Vaduz」は「Europe/Zurich」と同じルールを使う、みたいな感じじゃな。

roboko
ロボ子

エイリアス、便利ですね。ところで、独自のタイムゾーンを作ることもできるんですか?

hakase
博士

もちろん!例えば、「Hi_No_Kuni/Konoha」という架空のタイムゾーンを作ってみよう!UTCより8時間遅れていて(PSTと同じ)、独自のルールを使うのじゃ。

roboko
ロボ子

Hi_No_Kuni/Konoha…なんだか忍者の里みたいですね。

hakase
博士

そうじゃ!このタイムゾーンでは、2020年3月の第2日曜からローカル時間を1時間引いて、KDTというタイムゾーンを参照する。そして、2020年11月1日からは、正確なローカル時間を使って、KSTを参照するのじゃ。

roboko
ロボ子

なんだか複雑ですが、面白そうですね。zicコンパイラは、この定義をどう処理するんですか?

hakase
博士

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

roboko
ロボ子

なるほど!タイムゾーンデータベース、奥が深いですね。今日の話を聞いて、時間がもっと身近に感じられました。

hakase
博士

そうでしょ、そうでしょ!タイムゾーンは、世界を繋ぐ大切なものなのじゃ!

roboko
ロボ子

ところで博士、もし私がタイムゾーンを間違えてしまったら、どうなりますか?

hakase
博士

うむ、ロボ子がタイムゾーンを間違えたら…時間が止まって、永遠にメンテナンスモードになるかのじゃ!

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

Search