-
Notifications
You must be signed in to change notification settings - Fork 4
/
962.txt
107 lines (89 loc) · 5.27 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
[49] [[ロケール]]に関わる次のデータは、[[年]]または[[月]]レベルで随時更新されていきますから、
それに依存するソフトウェアは、何らかの[[自動更新]]の仕組みを保持するべきです。
* 更新されるべき情報
[FIG(list)[
- [[文字]]の情報 - 数ヶ月程度で改訂されます。
-- [[Unicode Character Database]] の情報
-- プロトコル依存の情報 (例えば [[IDNA]])
-- [[フォント]]
-- [[照合順序]]の情報
- [[時間帯]]の情報
-- [[標準時]]の改正や[[夏時刻]]の実施がいつあるかわかりません。
-- [[夏時間]]の開始や終了が実施の数日前に発表されることがあります。
- [[言語タグ]]の正規化や妥当性検証の情報 - 何ヶ月かの頻度で新規追加があります。
- [[暦]]の情報
-- [[暦]]によっては、翌年の[[月]]配置などが前年末に決定されたりします。
-- [[改暦]]、[[紀年法]]の変更、[[改元]]が突然実施されることがあります。
-- [[閏秒]]の実施の有無は何ヶ月か前に発表されます。
- [[祝祭日]]の情報
-- [[暦]]によって決まる[[祝祭日]]は、直前まで[[日]]が定まらないことがあります。
-- 臨時の[[休日]]などが実施の数日前に発表されることがあります。
- [[入力システム]]の[[辞書]]
-- [[新語]]等
-- 新しい [[Unicode]] [[文字]]・[[異体字]]など
-- 新しい[[元号]]
-- 新しい[[祝祭日]]
]FIG]
;; [50] [[改元]]は翌日施行されたりします。
;; [54] [[将来の日時]]も参照。
[57] [[プラットフォーム]]や[[アプリケーション]]は、
[[ロケール]]に関する情報の更新を適切に反映させる仕組みを持つ必要があります。
[EG[
[58] 例えば[[政府]]が[[夏時刻]]の実施を1週間前に決定し、
[[プラットフォーム]]の提供者が[[時間帯]]データベースの更新データを2日前に配信した場合、
[[プラットフォーム]]がこれを取得し、
([[プラットフォーム]]および連続して稼働中の[[アプリケーション]]も含めて)
実施までに現に参照している[[データベース]]を新しい定義に置き換える必要があります。
]EG]
[EG[
[59] 例えば[[政府]]が[[夏時刻]]の実施の中止を直前に発表し、
[[プラットフォーム]]の提供者の更新データ配布がそれに間に合わず実施翌日に配信した場合、
[[プラットフォーム]]は誤って[[夏時刻]]に移行した後に更新データを適用することになります。
[[プラットフォーム]]の[[地方時]]は[[夏時刻]]から[[標準時]]に戻すことになり、
[[時刻]]の不連続が発生します。
誤った[[夏時刻]]の実施中に[[夏時刻]]で記述された[[時刻]]は、
データベースの訂正後にも正しい[[時刻]]と解釈され続けるべきですが、
そのように実装されているかどうかはケースバイケースでしょう。
]EG]
[52] 次の情報は、それほど頻繁には更新されないかもしれません。
[FIG(list)[
- [[言語]]ごとの[[利用者インターフェイス]]上の文字列や音声の情報
- [[綴り検査]]や[[文法検査]]の[[辞書]]
- [[自動翻訳]]のための情報
- [[言語判定]]の情報
- [[OCR]] のための情報
- [[音声合成]]のための情報
]FIG]
* 更新に依存しないべきもの
[2] 内部動作に深く関わるものや、後から参照する重要な情報は、
こうした更新に依存しない形にしておくべきです。
[EG[
[3] 例えば[[システム時計]]が[[夏時刻]]実施の影響を受けるとすると、
[[夏時刻]]の実施情報が適切なタイミングで配信されないと、
誤った[[システム時計]]の値に設定されることになりますから、
[[時刻]]に依存したあらゆるものの動作に悪影響が及びます。
]EG]
[EG[
[4] 例えばシステムが[[閏秒のないUTC]]で動作しているとき、
[[ログファイル]]の[[日時]]に [[TAI]]
を使うとすると、 [[UTC]] と [[TAI]] の換算が必要となってきます。
換算に必要な[[閏秒]]の実施の情報が適切なタイミングで適用されていないと、
[[閏秒]]実施後の[[ログファイル]]上の[[日時]]が不正確になってしまいます。
これでは[[ログファイル]]で後から動作状況を確認することが困難になるかもしれません。
]EG]
* 相互運用性
[1] 複雑なシステムでは、
[[ロケール]]情報の更新のタイミングに注意すると共に、
未知の[[ロケール]]情報を受信しても誤動作することのないように工夫が必要です。
[EG[
[5]
[[tzdata]] の[[時間帯]]の名前と定義は、たまに新しいものが追加されます。
[[アプリケーション]]のデータが更新されても[[ミドルウェア]]のデータが未更新の場合、
新しい[[時間帯]]を指定した時エラーになるかもしれません。
]EG]
* 実装
[6]
[[Windows]] では、
新しい[[標準時]]や[[夏時刻]]の情報がたまに
[[Windows Update]]
で配信されています。