俺的実験室

インターネット技術を中心に、実際に手を動かして理解を深めるブログ。

OverTime で世界の時間を知る

面白そうなツールがあったので使ってみました。

はじめに

MOONGIFT さんの記事で面白そうなツールを紹介していたので使ってみました。

OverTime - 複数都市のタイムゾーンを確認 MOONGIFT

使ってみた

利用するにはnode.jsが必須です。node.jsの導入方法はこちらが参考になりました。

参考:CentOS 7.2にNode.jsをインストールする - Qiita

導入後、実際にコマンド打ってみると、こんな感じで表示されます。国名を指定すれば指定する分だけ表示されるので便利ですね。

$ overtime show America/Toronto Asia/Bangkok Asia/Tokyo
$
┌─────────────────┬──────────────┬────────────┐
│ America/Toronto │ Asia/Bangkok │ Asia/Tokyo │
├─────────────────┼──────────────┼────────────┤
│  9:00 AM        │  9:00 PM     │  11:00 PM  │
├─────────────────┼──────────────┼────────────┤
│  10:00 AM       │  10:00 PM    │  12:00 AM  │
├─────────────────┼──────────────┼────────────┤
│  11:00 AM       │  11:00 PM    │  1:00 AM   │
├─────────────────┼──────────────┼────────────┤
│  12:00 PM       │  12:00 AM    │  2:00 AM   │
├─────────────────┼──────────────┼────────────┤
│  1:00 PM        │  1:00 AM     │  3:00 AM   │
├─────────────────┼──────────────┼────────────┤
│  2:00 PM        │  2:00 AM     │  4:00 AM   │
├─────────────────┼──────────────┼────────────┤
│  3:00 PM        │  3:00 AM     │  5:00 AM   │
├─────────────────┼──────────────┼────────────┤
│  4:00 PM        │  4:00 AM     │  6:00 AM   │
├─────────────────┼──────────────┼────────────┤
│  5:00 PM        │  5:00 AM     │  7:00 AM   │
├─────────────────┼──────────────┼────────────┤
│  6:00 PM        │  6:00 AM     │  8:00 AM   │
├─────────────────┼──────────────┼────────────┤
│  7:00 PM        │  7:00 AM     │  9:00 AM   │
├─────────────────┼──────────────┼────────────┤
│  8:00 PM        │  8:00 AM     │  10:00 AM  │
├─────────────────┼──────────────┼────────────┤
│  9:00 PM        │  9:00 AM     │  11:00 AM  │
├─────────────────┼──────────────┼────────────┤
│  10:00 PM       │  10:00 AM    │  12:00 PM  │
├─────────────────┼──────────────┼────────────┤
│  11:00 PM       │  11:00 AM    │  1:00 PM   │
├─────────────────┼──────────────┼────────────┤
│  12:00 AM       │  12:00 PM    │  2:00 PM   │
├─────────────────┼──────────────┼────────────┤
│  1:00 AM        │  1:00 PM     │  3:00 PM   │
├─────────────────┼──────────────┼────────────┤
│  2:00 AM        │  2:00 PM     │  4:00 PM   │
├─────────────────┼──────────────┼────────────┤
│  3:00 AM        │  3:00 PM     │  5:00 PM   │
├─────────────────┼──────────────┼────────────┤
│  4:00 AM        │  4:00 PM     │  6:00 PM   │
├─────────────────┼──────────────┼────────────┤
│  5:00 AM        │  5:00 PM     │  7:00 PM   │
├─────────────────┼──────────────┼────────────┤
│  6:00 AM        │  6:00 PM     │  8:00 PM   │
├─────────────────┼──────────────┼────────────┤
│  7:00 AM        │  7:00 PM     │  9:00 PM   │
├─────────────────┼──────────────┼────────────┤
│  8:00 AM        │  8:00 PM     │  10:00 PM  │
└─────────────────┴──────────────┴────────────┘

タイムゾーンの指定につかう引数は、このあたりのサイトを参考にすれば良さそうです。

参考:DateTime::TimeZone タイムゾーン名一覧 - Perlゼミ サンプルコードPerl入門

公式的には、こちらに載っている表記に対応とのこと。

参考:List of tz database time zones - Wikipedia

また、UTC+14みたいな書き方でも認識してくれるようです。

この類のWEBサイトは多数ありますが、このように必要なものを必要な分だけリストで表示できるのは大変便利です。視認性が高いですし、CLI出力なのでフィルタかけられますので。

引数の国名をリスト化しておいて、例えばアジア地域の拠点をまとめて確認する、みたいな使い方もできそうです。

例:

#!/bin/bash

array_default=(UTC Asia/Tokyo)
array_asia=(Asia/Kolkata Asia/Bangkok Asia/Seoul Asia/Shanghai Asia/Singapore Asia/Taipei)

OverTime(){
  overtime show ${array_default[@]} ${arg}
}

case $1 in
  asia )
    arg=${array_asia[@]}
    OverTime
  ;;
## ここにケースを増やしていくだけでOK!
esac

また、地味に便利と感じたのは@表記。これを使うとヘッダ部分の名前を任意のものに変更できます。GitHub の README にあったサンプルを使うとこんな感じ。

$ overtime show utc-8@vancity America/Halifax@halifornia Asia/Tokyo
$
┌────────────┬────────────┬────────────┐
│ vancity    │ halifornia │ Asia/Tokyo │
├────────────┼────────────┼────────────┤
│  6:00 AM   │  10:00 AM  │  11:00 PM  │
~ 以下略 ~

参考:diit/overtime-cli: Easy time-overlap tables for remote teams.

おわりに

業務で全世界の拠点を相手にしているので、メンテナンス時間の確認などには非常に便利だなと感じました。