タイムゾーンは考慮漏れがち

自分が保守 1 しているアプリケーション、画面に表示する情報は他企業が運営しているアプリケーションから取得している。 すでにリリースされている機能に「時刻を指定して、過去データのサマリを出す」ものがある。

これの改修に当たろうとしたとき、「あれ?」となった。

自分の運用しているアプリケーションは日本向けなので、画面ではJSTで時刻指定する。 しかし、元データを取得するアプリケーションは海外資本なのでUTC時間で from ~ toを指定する。

時差があるので、UTCの時刻 = JSTの時刻 - 9h(遡る)必要がある。ここを考慮しないと、ユーザーが認識している時刻と取得したデータの実態が異なってしまう。

対処法としては、次の2点が挙げられる

  • 適切なタイミングで JSTの時刻から-9hする
  • 画面の中にタイムゾーン切り替え機能を設ける
    • 要件によるが、レポート系は常にタイムゾーン表記する方が親切だと思う

このタイムゾーン、ログ収集基盤を作るときは特に注意した方が良い。 データのtimestampをあらかじめ変換した状態で入れないと「時刻指定するときに-9hしないといけない」使いにくい分析ツールになる可能性がある。

ツールによってはデータ収集のとき勝手にUTCに変換したりする。実際に収集したいログのサンプルデータを使ってよく検証した方が良い。2

過去履歴を表示する画面開発や、メトリクス収集用ミドルウェアの導入時はタイムゾーン考慮漏れに注意しておきたい。


  1. 機能追加していても新規リリース以外は保守扱い?

  2. 昔のElasticSearchとかそんな感じだった。今はどうだろ〜。