自分が保守 1 しているアプリケーション、画面に表示する情報は他企業が運営しているアプリケーションから取得している。 すでにリリースされている機能に「時刻を指定して、過去データのサマリを出す」ものがある。
これの改修に当たろうとしたとき、「あれ?」となった。
自分の運用しているアプリケーションは日本向けなので、画面ではJSTで時刻指定する。
しかし、元データを取得するアプリケーションは海外資本なのでUTC時間で from ~ to
を指定する。
時差があるので、UTCの時刻 = JSTの時刻 - 9h(遡る)
必要がある。ここを考慮しないと、ユーザーが認識している時刻と取得したデータの実態が異なってしまう。
対処法としては、次の2点が挙げられる
- 適切なタイミングで
JST
の時刻から-9h
する - 画面の中にタイムゾーン切り替え機能を設ける
- 要件によるが、レポート系は常にタイムゾーン表記する方が親切だと思う
このタイムゾーン、ログ収集基盤を作るときは特に注意した方が良い。
データのtimestamp
をあらかじめ変換した状態で入れないと「時刻指定するときに-9hしないといけない」使いにくい分析ツールになる可能性がある。
ツールによってはデータ収集のとき勝手にUTCに変換したりする。実際に収集したいログのサンプルデータを使ってよく検証した方が良い。2
過去履歴を表示する画面開発や、メトリクス収集用ミドルウェアの導入時はタイムゾーン考慮漏れに注意しておきたい。