-
Notifications
You must be signed in to change notification settings - Fork 4
/
962.txt
180 lines (149 loc) · 8.2 KB
/
962.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
[49] [[ロケール]]に関わるデータの一部は、
[[年]]または[[月]]レベルで随時更新されていきます。
それに依存する[[ソフトウェア]]は、
何らかの[[自動更新]]の仕組みを保持するべきです。
* 更新されるべき情報
[FIG(list)[
- [[文字]]の情報 - 数ヶ月程度で改訂されます。
-- [[Unicode Character Database]] の情報
-- プロトコル依存の情報 (例えば [[IDNA]])
-- [[フォント]]
-- [[照合順序]]の情報
-- [[用字系符号]]の追加、変更
- [[時間帯]]の情報
-- [[標準時]]の改正や[[夏時刻]]の実施がいつあるかわかりません。
-- [[夏時間]]の開始や終了が実施の数日前に発表されることがあります。
- [[言語タグ]]の正規化や妥当性検証の情報 - 何ヶ月かの頻度で新規追加があります。
- [[暦]]の情報
-- [[暦]]によっては、翌年の[[月]]配置などが前年末に決定されたりします。
-- [[改暦]]、[[紀年法]]の変更、[[改元]]が突然実施されることがあります。
-- [[閏秒]]の実施の有無は何ヶ月か前に発表されます。
-- 日付順の[[整列]]の実装方法によっては[[照合順序]]情報の更新も必要となります。
- [[祝祭日]]の情報
-- [[暦]]によって決まる[[祝祭日]]は、直前まで[[日]]が定まらないことがあります。
-- 実施の数日前に発表されることがあります。
-- 1、2年程度の余裕を置いて発表されればいい方です。
--
[SEE[ [[祝日の更新]] ]]
- [10] [[言語処理システム]]の[[辞書]]
-- 利用場面の例:
--- [[入力システム]]、[[OCR]]、[[音声認識]]
---- [[仮名漢字変換]]用[[辞書]]
---- [[手書き入力]]用[[字形]]認識データ
--- [[自動翻訳]]
--- [[校正]]
---- [[スペルチェック]]用[[辞書]]
--- [[音声合成]]、[[手話]]出力
--- 検索
---- [[表記揺れ]]、[[類義語]]による曖昧検索
---- [[ローマ字]]や[[かな]]による[[漢字]]との一致 (c.f. [[migemo]])
--- 現在日時入力
-- 更新が必要な事情の例:
--- [[新語]]等
--- 新しい [[Unicode]] [[文字]]・[[異体字]]など
--- 新しい[[元号]]
--- 新しい[[祝祭日]]
--- [[正書法]]改革
--- 新[[地名]]、[[住所]]変更等
--- 新しい会社名、組織名、製品名等
--- [[言語符号]]の追加、変更等
- [16] [[地理]]的情報
-- [[住所]]、[[行政区画]]、[[郵便番号]]等の[[番地]]や[[識別子]]の情報
--- [[位置情報]]や境界情報
--- 包含、隣接関係
--- [[国符号]]、[[地域符号]]等
-- [[地図]]、[[衛星写真]]など
-- [[地物]]データベース
--- 店舗情報等
--- [[鉄道]]、[[道路]]等の情報
---- [[交通機関]]の運行時刻情報
---- 運行情報、交通規制情報など
- [17] [[通貨]]情報
-- [18] [[貨幣符号]]の追加、変更
]FIG]
;; [50] [[改元]]は[[即日施行][即日改元]]されたりします。
;; [54] [[将来の日時]]も参照。
[57] [[プラットフォーム]]や[[アプリケーション]]は、
[[ロケール]]に関する情報の更新を適切に反映させる仕組みを持つ必要があります。
[EG[
[58] 例えば[[政府]]が[[夏時刻]]の実施を1週間前に決定し、
[[プラットフォーム]]の提供者が[[時間帯]]データベースの更新データを2日前に配信した場合、
[[プラットフォーム]]がこれを取得し、
([[プラットフォーム]]および連続して稼働中の[[アプリケーション]]も含めて)
実施までに現に参照している[[データベース]]を新しい定義に置き換える必要があります。
]EG]
[EG[
[59] 例えば[[政府]]が[[夏時刻]]の実施の中止を直前に発表し、
[[プラットフォーム]]の提供者の更新データ配布がそれに間に合わず実施翌日に配信した場合、
[[プラットフォーム]]は誤って[[夏時刻]]に移行した後に更新データを適用することになります。
[[プラットフォーム]]の[[地方時]]は[[夏時刻]]から[[標準時]]に戻すことになり、
[[時刻]]の不連続が発生します。
誤った[[夏時刻]]の実施中に[[夏時刻]]で記述された[[時刻]]は、
データベースの訂正後にも正しい[[時刻]]と解釈され続けるべきですが、
そのように実装されているかどうかはケースバイケースでしょう。
]EG]
[52] 次の情報は、それほど頻繁には更新されないかもしれません。
[FIG(list)[
- [[言語]]ごとの[[利用者インターフェイス]]上の文字列や音声の情報
- [[言語判定]]の情報
]FIG]
[11]
[[夏時刻]]の実施予定変更に伴う[[交通ダイヤ]]データベースの更新など、
[[日時]]に関する変更に付随して発生する変更のためのデータ更新が適切なタイミングで行われる必要があります。
;; [12] 場合によってはそうした別の変更が[[日時]]の変更より先に適用されておかしな挙動を示すかもしれません。
* 更新に依存しないべきもの
[2] 内部動作に深く関わるものや、後から参照する重要な情報は、
こうした更新に依存しない形にしておくべきです。
[EG[
[3] 例えば[[システム時計]]が[[夏時刻]]実施の影響を受けるとすると、
[[夏時刻]]の実施情報が適切なタイミングで配信されないと、
誤った[[システム時計]]の値に設定されることになりますから、
[[時刻]]に依存したあらゆるものの動作に悪影響が及びます。
]EG]
[EG[
[4] 例えばシステムが[[閏秒のないUTC]]で動作しているとき、
[[ログファイル]]の[[日時]]に [[TAI]]
を使うとすると、 [[UTC]] と [[TAI]] の換算が必要となってきます。
換算に必要な[[閏秒]]の実施の情報が適切なタイミングで適用されていないと、
[[閏秒]]実施後の[[ログファイル]]上の[[日時]]が不正確になってしまいます。
これでは[[ログファイル]]で後から動作状況を確認することが困難になるかもしれません。
]EG]
* 相互運用性
[13]
相互接続された複数のシステムがそれぞれ別のタイミングで別の更新情報を受け取る可能性があります。
[1] 複雑なシステムでは、
[[ロケール]]情報の更新のタイミングに注意すると共に、
未知の[[ロケール]]情報を受信しても誤動作することのないように工夫が必要です。
[EG[
[5]
[[tzdata]] の[[時間帯]]の名前と定義は、たまに新しいものが追加されます。
[[アプリケーション]]のデータが更新されても[[ミドルウェア]]のデータが未更新の場合、
新しい[[時間帯]]を指定した時エラーになるかもしれません。
]EG]
[EG[
[14]
新元号への対応が各システムに行き渡る前に新元号を使ったデータを送信すると、
古いままのシステムが処理できないおそれがあります。
]EG]
* 実装
[6]
[[Windows]] では、
新しい[[標準時]]や[[夏時刻]]の情報がたまに
[[Windows Update]]
で配信されています。
* メモ
[7] [CITE@en[Time Zone Rules | Android Open Source Project]]
([TIME[2018-11-02 11:02:09 +09:00]])
<https://source.android.com/devices/tech/config/timezone-rules>
[410] [CITE['''['''tz''']''' Time zone confusion in Morocco]]
([TIME[2018-11-02 03:51:49 +09:00]])
<https://mm.icann.org/pipermail/tz/2018-November/027151.html>
[8] [CITE@en[How to get updated time zone information for your Apple device - Apple Support]]
([TIME[2018-11-02 11:08:21 +09:00]])
<https://support.apple.com/en-us/HT206986>
[9] [CITE@en[Red Hat Enterprise Linux Timezone Data (tzdata) - Development Status Page]]
([TIME[2018-11-02 11:11:57 +09:00]])
<https://access.redhat.com/articles/1187353>
[15] [CITE@ja[Windows でクロアチアの通貨が正しく表示されない問題 | スラド IT]]
([TIME[2023-02-25T10:40:21.000Z]])
<https://it.srad.jp/story/23/02/25/0624254/>