ブログ

2022年4月26日

グローバルで展開するカレンダーサービスを悩ませ続けるタイムゾーン問題——TimeTreeラヂオ vol.026

TimeTreeラヂオポッドキャスト

「TimeTreeラヂオ」はカレンダーシェアアプリTimeTreeを運営する私たちメンバーが、ふだんの仕事に関係することもそうでないことも、だいたい15分でひとつのテーマを話しきるインターネットラジオ番組です。

テーマは「グローバルで展開するカレンダーサービスを悩ませ続けるタイムゾーン問題」の話。

CPOのLouis @lciel 、CEOのFred @preface 、PRのSteve @ShinyaWatanabe_ の3人で話しました!

ラヂオを聴く👂🏻

ラヂオを読む📝

配信の内容を文章でお読みになりたい方はこのままお進みください!


(02:18〜)

タイムゾーンってなんですか?

Steve 今日のテーマはちょっと久しぶりかもしれないですが、開発のお話なんですけど、グローバルで展開しているカレンダーサービスのタイムツリーがですね、実は悩まされ続けている問題というか課題として「タイムゾーン」というのがありまして、そのタイムゾーンってあんまり聞きなれない言葉かもしれないんですけど、そのことについてちょっと今日は紹介しつつお話ししていけたらなと思っています。まず、タイムゾーンってなんですか?の話をLouisに紹介してもらってもいいですか。

Louis はい。タイムゾーンがなんですかって結構その、一言で話すっていうのは難しいんですけど(笑)。タイムゾーンは要するに、その地域がいま何時なのかっていうのを決めるルールですね。例えば7時は朝だったりとか、12時は昼だったりとか、19時は夜っていう時間で朝昼夜って決まってると思うんですよ。それが地球上のどこへ行ってもだいたい同じ感覚になるっていう風に定められてるのがタイムゾーンというルールですね。日本だと標準時間がイギリスのグリニッジ天文台ですけど、あそこから9時間早く時間を迎えるっていう設定になっていますね。

Steve なるほど。世界中の人が同じ時間の感覚で、物事のやり取りができるようにするためのフォーマットってことですね。

Louis そうですね。

Fred 日付変更線とか社会で習ったよね。

Louis そうですね。太平洋の区切りのところにありますよね。あそこを中心にして西側にあるところから時間が始まってます。

Steve いま日付変更線ていうワードを25年ぶりぐらいに聞きました(笑)。社内のエンジニアとかもタイムゾーンに関していろいろコメントをするメンバーが多くてですね。例えば、iOSエンジニアのStudは「日々タイムゾーンに苦しめられている。我々としては、地球平面説を推していきたいのに、陰謀論の一番上になってしまっている。」これLouisからすると分かるなぁって感じですか?

Louis はい。まずそのタイムゾーンに苦しめられているので、世界中のどこへ行っても同じ時間で朝を迎えて、同じ時間で夜を迎えてほしいんですよ。

Steve なるほど。どの国だろうと。

Louis そうですね。それでそのフラットアースっていう地球平面説っていうのがあるんですけど、それを信じたい気持ちはありますね。それを本気で信じてる人たちがいて、ちょっと陰謀論として扱われてるって感じで(笑)。

地球を平面にしてほしいです、本当に(笑)

Steve 何かこう開発としてどんな点が大変なのかって、具体的にどういう難しさがあるんですか?

Louis そうですね。地域によって時間が違うんですよ。例えばよくあるのは、日本は標準よりも9時間早いんですけど、その時間帯によって昨日になっちゃうとか、そういう問題が起きたりするんですよね。例えば午前中、朝9時くらいまで前日判定になっちゃうとか。

Steve ああ、そういうことか。

Louis そういう時間がズレちゃうっていうふうな問題が起きやすいんですよね。うまくタイムゾーンを扱えないと。

Steve なるほど。地域によってそういう時間判定のバグが出ちゃう。

Louis そういう感じです。あとよくあるのは「サマータイム」ですね。

Steve あ、出てきた。

Louis はい。サマータイムって英語だと「DST」デイライトセービングタイムと言うんですけど、日光を有効活用しようという考え方なんですね。そのさっきの朝が何時っていうのを、夏って日が昇る時刻が早いのでズラすっていうふうにして、そのエネルギーを効率的に使うようにしようっていう考えなんです。それで何が起きるかっていうと、それを導入してる地域では、一定の季節では1時間、時間が早くなるとかそういうことが起きるんですね。なので先程のタイムゾーンと同様に、サマータイムをちゃんと扱えないと「なんかこの季節だけ時間がおかしくなったんだけど」みたいな問題が発生してしまうんですね。

Steve なるほどね。サマータイムについていま初めて正しく理解しました。ただの夏休み的な感じかと思ってた(笑)。それで最近社内でちょっと話題になったのが、サマータイムが廃止というか、恒久的に今後サマータイムが標準になるというニュース。

Fred 年中サマータイムということなんですね。

Steve だからサマータイムとサマータイムじゃない時との区別はなくなるということですよね。

Louis そうですね。

Fred これまでは今日からサマータイムですって言ったら、みんな時計動かしてたのかな。

Louis そうだと思いますよ、恐らくその地域の人たちは。デジタルだったら切り替わるんですけどね。サマータイムの話でいうと、アリゾナ州からのお問い合わせがすごい多いんですよ。なぜかというと、アリゾナ州はサマータイムを使っている地域と使っていない地域がすっごいいろいろ入り交じってて(笑)。なので、自分の家はギリギリサマータイムの範囲外とかそういうのがありまして、その判定が狂っちゃうんですよね。サマータイムのはずがサマータイムになってないとか、急にサマータイムになっちゃったとか、そういうお問い合わせが来るんです。そのあたりがサマータイムの辛さですね。

Fred タイムツリーだと端末の国情報とかで?

Louis 基本的にはそうですけど、端末にタイムゾーンの設定値があって、それで判断するって感じですね。内部的にももちろんタイムゾーンというのは持っていて、例えばタイムツリーだと国をまたいで使ってる方とかもいたりして、国をまたいで共有している方ですね。そういうシーンとかは、もうお互いのタイムゾーンが入り交じったデータが投稿されたりとかもしますね。

Fred いま併記してるんだっけ。日本ではこの時間、アメリカではこの時間って。たしかそうだよね。

Louis たしかそうだったはず。あとは場所を移動して、普段使っているタイムゾーンと変わっている時にもアナウンス出していますね。

Fred 「タイムゾーン切り替えますか?」みたいな感じで。

Louis そうですね。

Steve 大変な問題ですね、これは。

Louis なので、地球平面にしてほしいです。本当に(笑)。

Steve でももうカレンダーサービスをやっている以上、いつまでもつきまとう宿命ってことですよね。

Louis そうですね。これはカレンダーサービスでは絶対に避けられないと思います。

Steve なんかそのことについても、iOSエンジニアのSionが過去につぶやいていて。サマータイムなくなるんだ、やったー!って社内が沸いていたところ、彼が冷静に「仮にサマータイムが明日から全世界で一斉に廃止されたとしても、過去にサマータイムが実施されたという事実は覆らないので、過去の日付を扱う限りサマータイムには向き合い続けなければならない。変わらず、正しく実装するしかない。」という強いメッセージを(笑)。でも、その通りってことですね。

Louis その通りなんですよね。例えば日本もサマータイムを導入してたことがあって。1948年ぐらいから3〜4年ぐらいやってたと思うんですけど。例えばそのぐらいの時期の予定を作ると、サマータイム考慮しなきゃいけないんですよ。それと同じように、去年の予定とかを作っても、サマータイムを考慮し続けなきゃいけないっていう。

カレンダー開発で一番大事なこと

Steve なるほど。そんな中タイムツリーでやれている開発の工夫ってどんなところがあるんですか。

Louis かなり細かい話になってしまって難しいんですよね。もうシンプルにタイムゾーンというものは何なのかというのを、まずちゃんとみんな理解しなきゃいけない。

Steve なるほど。

Louis あとは独自で扱わないというか、ちゃんと正しくタイムゾーンを扱ってくれているシステムを使うとか。あとは世界中で一番よく使われているタイムゾーンの規格があるんですね。それをちゃんと使うとか。タイムゾーンデーターベースていうのがあるんですけれど、それにちゃんと準拠するとか、そういう感じですかね。

Steve なるほど。至極真っ当なことしかやっていないけど、一番大事なことという感じですかね。

Louis そうです。それでもバンバンそのタイムゾーンに関連する問題って出てくるので。

Steve これ同じようなスケジュール管理とかの開発をしている方だったら、頷きまくっている話ですね。

Louis そうですね。

Fred いま手元のタイムツリーでタイムゾーンを変えてみたけど。予定を登録した地点=日本の時間表記と、いまニューヨークに変えてみたんだけど、ニューヨークの現地での時間とが両方並んで表示されるような見せ方をしてるね。

Louis そうですね。

Steve なるほど、それってどういう仕組みなんだ?

Louis 投稿した予定の中にタイムゾーンが入ってるんですよ。なので、自分が今いるところと一緒だったらそのまま表示するし、違えばどこで入れたかが関連してくるので。例えば日本で8時だと思って旅行に行ったらズレちゃったとかってあると思うので。そういうことが起きないように、日本ではこの時間で設定してあるっていうのが見えるって感じですね。

Steve なるほど。これは知らなかった。なんかタイムゾーンについて、たかだか10分ぐらい考えたら頭が痛くなってきました。ほんの触りでしたけど、カレンダー開発とタイムゾーンの難しさについて簡単に紹介してもらいました。今日はこんなところでありがとうございました。

Louis, Fred ありがとうございました。

関連トーク

TimeTreeラヂオ 📻

「TimeTreeラヂオ」はTimeTreeを運営する私たちメンバーが、ふだんの仕事に関係することも、そうでないことも、だいたい15分でひとつのテーマを話しきるインターネットラジオ番組です。ご意見・ご感想・話してほしいテーマなどがあれば、Twitterハッシュタグ #TimeTreeラヂオ か 番組のお便りフォーム でお待ちしてます。

過去の配信はこちらから聴けます