Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

サマータイムとうるう秒と2038年問題

1,093 views

Published on

LOCAL Developer Day 2018講演資料
2019.9.29

Published in: Technology
  • Be the first to comment

サマータイムとうるう秒と2038年問題

  1. 1. サマータイムとうるう秒と 2038年問題 ~時間が情報システムに与える影響~ 立命館大学情報理工学部 上原哲太郎 2018.9.29 LOCAL Developer Day@札幌
  2. 2. サマータイム(夏時間)とは • 夏の長い日照時間を活用するため 夏に「時計を早める」制度(普通は1時間) • 主な目的は「節電」「省エネ」 •元々第一次大戦中の燃料節約がきっかけで広がる • 国連加盟国の1/3で実施(60カ国) • G7で現在実施していないのは我が国だけ
  3. 3. 主に北米と欧州で実施 By Paul Eggert CC-BY-SA-3.0, via Wikimedia Commons 実施中 過去に 実施 実施経験 なし
  4. 4. 日本におけるサマータイム • 戦後1948年にGHQの指導で実施 しかし1952年には廃止 •当時の新聞を見ると・・・ 読売新聞 1950.4.27 夕刊より 読売新聞DB
  5. 5. 繰り返す導入論 • 高度成長期:エネルギー不足で導入論が高まる • 1990年代から繰り返す…日経見ると • 1995年3月4日 「サマータイム、立法化の動き強まる」 • 1999年2月23日 「参院の超党派議連、サマータイム2001年度導入、議員立法提出へ。」 • 2001年4月18日 「サマータイム、2003年導入へ、環境省、法案を来年提出」 • 2004年9月25日 「サマータイム法案提出へ。」 • 2005年4月27日 「サマータイム法案、今国会に提出へ――自公が合意、2007年導入めざす。」 • 2008年5月30日 サマータイム「10年導入を」、超党派で法案提出へ、省エネ・経済効果見込む。 • 2008年は本当に提出されそうだった
  6. 6. 転機:2008年6月10日 • 元衆議院議員 早川忠孝氏の回顧 http://blogos.com/article/318442/ •自民党緊急政調全体会議が開催され サマータイム法案が審議、提出寸前に •しかし民主党篠原孝議員の手紙が情勢を変える • 『サマータイムは「時刻の切り替え」ではなく「頭の切り替え」で』 • 『我々政治家は、国民が望んでおらず、大して役に立つわけでもない 「おせっかい政治」は慎むべきです。』 •これで拙速な導入論が見送られることに
  7. 7. しかし蘇る導入論: 東日本大震災直後の経団連緊急提言
  8. 8. 当時の私のつぶやき…
  9. 9. 2011年に論点全部出てる… 特需論にクギ NTP万能という誤解 NTPこそ問題 組み込みヤバいよ 海外では出来てるのに?論 それ「経済効果」ちゃう!
  10. 10. 余談:2014年軽減税率論の際も…
  11. 11. オリパラで蘇るサマータイム導入論 • 7月28日組織委 「20年に限ってでも良いので サマータイムを導入する法改正を 検討して欲しい」 • 8月7日組織委 「19年20年に限って2時間の サマータイムを検討して欲しい」 →首相が党に検討指示
  12. 12. 伝えられてたサマータイム案 • 6月最初の週末から8月最後の週末まで • 2時間繰り上げ • 例えば2019年実施なら… •2019年6月2日(日)午前2時になると 午前4時に2時間飛ばす •2019年9月1日(日)午前4時になると 午前2時までもう一度戻る • よって9月1日2時~4時は2回繰り返す 9月1日3時、さてどっち?
  13. 13. 導入効果:メリット・デメリット • メリット • オリンピック競技の暑さ対策?? • 節電&省エネ効果?CO2削減? • 経済効果?? • 第一生命経済研究所の永浜利広首席エコノミストの試算 「個人消費が押し上げられ、年7000億円の経済効果」 • システム改修も経済効果? • デメリット • 社会的混乱?健康被害? • システム改修による負担?影響?? あまり議論 されてない
  14. 14. 前回の試算 • 地球環境と夏時間を考える国民会議 報告書(1999)の試算 •ハードウェア・ソフトウェアあわせて 1000億円程度(各省庁・業界ヒアリング積算) •必要な周知期間・準備期間は2年程度 • 2年の根拠?! •航空業界「IATAでの調整に2年程度」 •ソフトウェア業界「今は2000年問題対応で 手が回らないので2000年以降にして」 何年かかると 言ってない サマータイム 推進論の主な根拠
  15. 15. いや、今は2年でも無理では? • 「時計の自動設定」を行う機器が格段に増えた • 1999年長波JJY開始 2006年NICT NTPサービス開始 • さらに、今はまさにIoT時代ではないか! • 「時計の自動設定」技術的に意味するところが 理解されていないのでは? • 時計は協定世界時を自動設定し機器側が時差を足す =機器側のソフト修正なしにサマータイム対応は不可能 • ソフトがネット修正可能な機器ばかりではない • サマータイムに対応したアプリ開発を 理解できないプログラマは多そう… • 教育からやらなくちゃいけないんじゃないの?? こらあかん
  16. 16. 2018年8月10日 アレを出す …そしてバズる。
  17. 17. 主な主張 • インフラ更新は4~5年欲しい • ソフト更新も大規模なら3年欲しい • 家電などで対応不能で修正か交換する 必要がありそうなので国民負担発生 • それを避けるなら10年待つべき • 経済被害はインフラ3000億 全体では兆単位 • イノベーションに充てるべき人材を サマータイム対応で使い潰すな!
  18. 18. マスコミ出演がんばりました • ラジオ、テレビ、新聞、週刊誌… • テレ朝 羽鳥慎一モーニングショー • NHKニュース9、東京ローカル、朝のニュース • BS11「報道ライブ インサイドOUT」 • よみうりテレビ「正義のミカタ」 • 日経読売毎日朝日/週刊ポスト・プレイボーイ • 9月2日 情報法制研究所で企画 「サマータイム導入における ITインフラへの影響に関するシンポジウム」 • 多数のWeb媒体で報告される
  19. 19. 朗報! • 2018年9月28日 朝日新聞朝刊1面 自民党は 議員連盟を 研究会に格下げ 27日第1回会合で 異論が出て… 公明党も 反対を表明
  20. 20. 最大の収穫 • 朝日、共同通信、NHKの報道によると 遠藤運営委員長: 「気持ちは(導入)したいが、 物理的にシステムの問題や、 世論の反応を見ると、 なかなかそこは難しい」 そう!それ! システムの問題!
  21. 21. 大勝利! ご清聴ありがとう ございました
  22. 22. ……あのサマータイム騒動が 最後の一匹だとは思えない… もし 推進運動が続けて 行われるとしたら、 あの サマータイムの 同類が、 また国会の どこかへ 現れてくるかも しれない… 2018.9.28毎日新聞
  23. 23. ちょっとまて。 • 日本でのサマータイム導入は コストを上回るメリットはないだろう • しかし我々は今後世界で戦うべき • 日本でサマータイムが導入されないと しても開発者としては… ちゃんと世界でソフトウェアを作っている 企業なら、とっくに対応していて当たり前 のこと。本来ならば、夏時間導入でこれだ け大騒ぎになるのは恥ずべき状況だと思う 国際大学GLOCOM 楠正憲氏情報法制研究所サマータイムシンポジウムにて
  24. 24. 欧米人でもミスるのです Githubで DST issueや “Daylight Saving Time” “Summer Time” で探すと いっぱい 見つかる… DST issue 約5万件 “Summer Time” 約5千件
  25. 25. サマータイム対応のために • 時刻合わせ • システムに入ってくる時刻供給源を全部洗い、 正しく設定されるか確かめる必要 • タイムゾーン更新と設定(OS時刻) • アプリケーションでの対応 • 夏時間でも現地時間を取得できるか • 年2回の夏時間移行日に正しく動くか • データの健全性(特に通信電文) • DB内に書かれている時刻は日本時想定? • 電文内の時刻が日本時である場合どうする?
  26. 26. コンピュータ内の時刻の仕組み ハードウェア 時計(RTC) OS 時差設定 アプリ データ ファイル 時刻 供給源 通信
  27. 27. 主な時刻供給源 NTP GPS 長波 JJY 世界時 (UTC) 携帯TV 放送 日本時 (JST) UTC +時差 テレホン JJY UTC JST 時差 全対応
  28. 28. サマータイムになると? • 日本時か、サマータイム(夏時間)か NTP GPS 長波 JJY UTCのまま 携帯TV 放送 JST +時差 UTC +時差 夏時間 JDST? 米国はUTC供給 英国は夏時間 テレホン JJY UTC JST 時差
  29. 29. 長波JJYのフォーマット サマータイムへの 備えなのだが…
  30. 30. 長波JJYの予備ビットの使い方は 決まってないが例示されている SU1 SU2 意味 0 0 6日以内に夏時間への変更なし 1 0 6日以内に夏時間への変更あり 0 1 夏時間実施中(6日以内に夏時間 から通常時間への変更なし) 1 1 6日以内に夏時間終了 では、時刻はどちらが供給される? 戦略① JSTを供給しSU2が1なら時計が1時間足す 戦略② JDSTを供給し時計はそれを素直に表示 予備ビットは同期のための参考情報とする
  31. 31. 調べてくださった方がいます! 結論: どうやら戦略② 市販の多くの 電波時計は 夏時間時は 夏時間=JDSTが 供給されると 仮定している ようだ https://shogo82148.github.io/blog/2018/08/20/summer-time-homework/
  32. 32. テレホンJJYはよく出来てる コマンド抜粋 http://jjy.nict.go.jp/time/teljjy/teljjy_p4.htmlより コマンド 意味 応答形式 TIME 日本標準時を3秒間送出 hhmmss JST 日本標準時を連続送出 hh:mm:ss を連続 送出 UTC 協定世界時を連続送出 hh:mm:ss を連続 送出 LEAPSEC 標準時の調整(うるう秒挿入削除)が次の1 日9時直前に有るか無いか 標準時の調整なし 標準時の調整あり(うるう秒挿入) 標準時の調整あり(うるう秒削除) △0 +1 -1 LOCAL 協定世界時との時差 通常時 サマータイム実施中 +09 +10 SUMMER サマータイムの期間 サマータイム設定なし サマータイム設定あり 0000,0000 MMDD,MMDD
  33. 33. 光テレホンJJY(実験中) • フレッツ光内のIPUDPトンネルを 用いた閉域NTP • ただし、時差情報を送る拡張がある 夏時間開始日時 夏時間終了日時 JSTとUTCの時差 JDSTとUTCの時差
  34. 34. OS時刻の戦略 日本標準時(JST):日本時 (主に組み込みや家電) 世界協定時(UTC):世界時+ タイムゾーン情報(TZ情報) (Windows&Unix 含むiOS, Android)
  35. 35. 心配なのが組み込み系や家電 • 時刻供給源がGPSやNTPの場合 UTCからら現地時間(JST/JDST)を 作り出す必要 • これが+9時間決め打ちだとハマる •せめて時差を設定可能にしよう •できればタイムゾーン情報を持てるように •ワンタッチで時差を±1時間できる機能でも 夏時間 オンで時差を+1時間 オフで元の時間に
  36. 36. 決め打ちなんてあるのか? • 家庭用ルータはNTPからの時差決め打ち… • ネット家電もNTPを参照しており 単純に9時間足しているものが… •特にHEMSに多い • あるメーカの地震計は GPSで世界時取得 これを単純に9時間足している!
  37. 37. Windows等はOSに任せよう • 基本はNTPのはずなので NTPサーバが正しければOK • ただし!そのNTPサーバはどこ? 長波JJYタイプとFMタイプは 夏時間対応orアップデート必要 セイコーソリューションズさんのNTPサーバの例
  38. 38. タイムゾーン情報とは? • tzinfo, zoneinfoなどとも呼ぶ • ある地域の時間が… • 世界協定時から何時間ずれているか? • 夏時間があるかないか? • あるとすれば、毎年いつ始まり、いつ終わるか? • 夏時間の幅は何時間か? • …を蓄積したデータベース • 有名なtz databaseはボランティア管理だったが 著作権問題発生後、現在ICANNが管理 http://www.iana.org/time-zones • WindowsやUNIX系は持っているので 素直に設定に任せて現地時間を取ればいい
  39. 39. タイムゾーン情報の維持は重要 アップデートをしくじると… • 2007年 米国でサマータイムの期間変更 • これに対応するため WindowsUpdate等が行われたが 従わなかったパソコン等で 時間がずれるトラブルが頻発 http://www.edgeblog.net/2007/daylight-saving-time-the-year-2007-problem/ 多くのベンダがパッチを提供してる。 他にfirewalls, routers, switches, NTP appliances, time clocks, PBX systems, IVR/ACD systems, cell phones, PDAs, photo copiers, fax machinesほか の、ネットからの時刻を必要とする/理解す る機器への対応を忘れるな。
  40. 40. OSが正しく現地時を知っていれば • 何も考えずに現地時を入手するべき •Cで言えばUNIXTIMEを自分で何とかするな localtime()をちゃんと使え • しかし世の中にはいろんな人がいる… •Cでtime値に60*60*9を足す人 •JavaScriptでDate.now()を得て 1000*60*60*9を足す人 • Dateオブジェクトは現地時間を知ってるのに! • どうしても時差が欲しいならgetTimezoneOffset()
  41. 41. Qiitaで60*60*9などを検索 こういうのが バッドノウハウ として 蔓延すると 厄介…
  42. 42. UNIX/POSIXでの「時刻」 struct tm { int tm_sec; // 秒 [0-61] 最大2秒までのうるう秒を考慮 int tm_min; // 分 [0-59] int tm_hour; // 時 [0-23] int tm_mday; // 日 [1-31] int tm_mon; // 月 [0-11] 0から始まることに注意 int tm_year; // 年 [1900からの経過年数] int tm_wday; // 曜日 [0:日 1:月 ... 6:土] int tm_yday; // 年内の通し日数 [0-365] 0から始まることに注意 int tm_isdst; // 夏時間が無効であれば 0 }; time_t time(time_t *tsec); // UTCで1970年1月1日0時0分0秒からの秒数 struct tm *localtime(const time_t *tsec); //現地時間で char *ctime(const time_t *tsec); // struct timeval { long tv_sec; // UNIX Time long tv_usec; // 1秒未満部分(マイクロ秒単位) };
  43. 43. Windows typedef struct _SYSTEMTIME { WORD wYear; WORD wMonth; WORD wDayOfWeek; WORD wDay; WORD wHour; WORD wMinute; WORD wSecond; WORD wMilliseconds; } SYSTEMTIME; SYSTEMTIME systime; GetLocalTime(&systime); // ローカル時間 GetSystemTime (&systime); //FILETIME構造体は //1601 年 1 月 1 日から //100 ナノ秒間隔の数を表す //64 ビット値。 typedef struct _FILETIME { DWORD dwLowDateTime; DWORD dwHighDateTime; } FILETIME; FileTimeToSystemTime(); SystemTimeToFileTime();
  44. 44. データ問題 • 書き込まれるファイルやデータが どの時間なのか •OSは基本的に世界時で動いている •ではその時間は「日本時」か「現地時」か • 通信の中の時刻問題 •基本的に日本時間という定義が多数 •夏時間導入後はどうするのか • その時間は「日本時」か「現地時」か • 「現地時」にすると夏時間からの復帰時に時間が重複
  45. 45. 特にEDI(電子データ交換) • 全銀EDI(ZEDI) • 日付情報は基本的にISO8601 • 例:2017-03-06T09:05:01.045Z • 時差は必須ではない(現地時と判断) • ビジネスIDなるものがあり 依頼を一意に特定できる受付番号を設定する。 • 日付時刻番号で生成“YYYYMMDDhhmmssnnnnnnn” • これ…夏時間からの復帰時にダブリの可能性が • NewsML • 日本新聞協会規格では配信日時はJST決め打ち…
  46. 46. 切り替え日にかかわる問題 • 1日が24時間でない日が年に2回 • つまり1日=60*60*24秒ではない! • 毎日の処理を「60*60*24秒ごと」に やろうとするとハマる • 消える時間、増える時間が存在する • 例えば切り替え時間が夜中2時の時は 夏時間になる日は2時~3時が消え 夏時間から戻る日は2時~3時が2回ある • …cronは大丈夫? • Vixieのcronはちゃんと「ごまかす」が、 それでもジョブ実行に必要な時間が確保できるか不明
  47. 47. 繰り返す時間問題=うるう秒 • 日経XTECH 2012/07/26 『深刻なトラブルの元となり得る 「うるう秒」、廃止議論も3年延期』 https://tech.nikkeibp.co.jp/it/article/COLUMN/20120723/410766/ 秒以下の 時間を 繰り返す 問題
  48. 48. 同様の問題:2038年問題 • 世の中実は割とUNIXTIMEに依存 • そのUNIXTIMEを32bit Integerで 保管するシステムが多数… •time_tがint32だったりすると… • 2038年1月19日3時14分7秒で終わり
  49. 49. どうすればいいのか? • time_tをuint32にすればいい? •延命はできるがバグが怖い • 符号なし整数の減算 time_a – time_b の値が Cだと負にならない! • time_tをint64にすればいい? •すでにデータ構造や通信文に 埋め込まれている場合がある • MySQLのTIMESTAMP型 • Linuxのファイルシステムext2/ext3のタイムスタンプ
  50. 50. おわりに • サマータイム問題は終わったけど これは時間の問題が システムに負荷をかけることの 啓蒙の機会と考えるべき! • サマータイムはもちろん 2038年問題への認知を 広げる機会に!

×
Save this presentationTap To Close