- ニュース

皆さんももうご存知かと思いますが、Apple が iOS 6 で導入した「おやすみモード」機能は、世界が 2013 年に変わった火曜日に正常に動作しなくなりました。この機能は、指示されたときに問題なく自動的に起動しますが、いつオフにすべきかを理解していないため、ユーザーは手動でオフにしなければ、通知を見逃してしまいます。
Appleはこの機能が1月7日に自動的に修正されると約束していますが、そもそもなぜ動作しなくなったのでしょうか?そしてなぜ月曜日に突然正常に動作するようになるのでしょうか?どうやらAppleは日付と時刻の処理に問題を抱えているようです。
TUAWのRichard Gaywood氏は、少しテストした結果、iOS 6の「おやすみモード」機能は、その年の最初の月曜日まで新年に引き継がれないことを発見しました。例えば、2013年の最初の日が月曜日であれば問題ありません。しかし、火曜日に当たったため、DND機能が正確に機能するには、翌週の月曜日まで待たなければなりません。
この原因は、Appleの単純なコーディングミスのようです。つまり、年を「yyyy」で指定する代わりに、コード内では「YYYY」と指定しているのです。違いは、片方が小文字で、もう片方がそうでないというだけのことで、人によっては些細なことに思えるかもしれません。私にとっては確かにそう思えますが、どうやらこの違いはISO週番号システムを使用しているため、大きな違いを生んでいるようです。
ISO週番号システムでは、私たちが慣れ親しんでいるグレゴリオ暦(yyyy)ではなく、YYYY形式を採用しています。ISOシステムでは、その年の何週目かを確認し、月曜日を1として始まる日付の数字を使用します。例えば、2012年の第50週の火曜日は、ISO週番号システムでは2012-W50-2となります。
ゲイウッド氏は、なぜその方法を使うのが問題なのかを次のように説明しています。
ISO規格では、年の最初の週は「1月の最初の木曜日を含む月曜日」から始まると定義されています。この定義では、「2013」と表記される年の最初の数日は、実際には2012年の一部としてカウントされ、2013年は1月7日の月曜日から始まることになります。これは会計士が物事を整理するためによく使う方法です。興味深いことに、Apple社がこの問題が解消されると言っているのはまさに1月7日です。なるほど!
Ars Technica の友人が指摘しているように、DND バグに関して不可解なのは、Apple 自身のドキュメントで、開発者に対してこの一般的なエラーを回避する方法が警告されていることです。
つまり、1月1日から1月6日までの間、DNDはまだ2012年だと認識しているのです。まあ、一部は認識しているのですが、不思議なことに、機能の有効化を処理する部分は正常に動作するのに対し、無効化を管理する部分は動作しません。しかし、年の最初の月曜日には2013年に切り替わります。そのため、1月7日からはDNDが正常に動作するようになります。
興味深いのは、AppleがiOSの日付に関する問題を抱えるのは今回が初めてではないということです。2010年、2011年、そして2012年にも夏時間に関する問題が発生しており、最近ではカレンダーアプリで、2013年4月1日に終日の予定を入力するとクラッシュする問題が発生しました。
「Apple の日付と時刻の処理に関する評判を『かなり悪い』と表現するのは不公平ではないだろう」とゲイウッド氏は結論づけている。
したがって、1 月 7 日のソフトウェア アップデートのパッチで DND が修正されるとは期待しないでください。正常に動作することを期待するだけです。
出典: TUAW