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