iOS 6 の気の利いた新機能である「Do Not Disturb (DND)」は、元旦に、予定された時間外にはオフにならず、電話やテキスト メッセージなどの通知を見逃してしまうことに気づいた人々が、かなりの望ましくない注目を集めています。
問題が解決せず、どうやら時間に関係した別のiOSの不具合のニュースが大見出しになる中、Appleはテニス界の有名人セリーナとビーナス・ウィリアムズを起用し、欠陥のある機能を中心に据えたiPhone 5の広告をタイミングの悪いタイミングで放映し、不注意にも論争に拍車をかけてしまった。
Apple はサポート ドキュメントでこのバグを認め、1 月 7 日に修正されると述べました。しかし、そもそもなぜ DND が失敗したのでしょうか。また、来週にはどのようにしてこのバグが奇跡的に修正されるのでしょうか。
ArsTechnicaによると、これは実は新年早々に陥りやすいよくある落とし穴だそうです。これはISO暦とグレゴリオ暦の関連性に関する既知の問題に起因しています。
ISO週番号システムでは年をYYYY形式、グレゴリオ暦ではyyyy形式を使用します。ISO週番号システムでは、年内の週番号に応じて、月曜日を1とする日付の数字を使用します。例えば、2012年の第50週の火曜日は、ISO週番号システムでは2012-W50-2となります。
問題は、新年の1月1日がISOの週の形式と合わない日付になってしまうことです。2013年の最初の日は火曜日でしたが、(TUAWの記述によると)ISO規格では、年の最初の週は「1月の最初の木曜日を含む月曜日」から始まると想定されています。この場合、それは2013年1月7日になります。
これはよくある問題で、このコード サンプルではオンラインで問題を再現しています。
本当に興味深いのは、Apple が自社の開発者向けドキュメントでこの間違いについて警告し、代わりにグレゴリオ暦システムを使用して問題を回避するようプログラマーにアドバイスしていることです。
「ほとんどの場合、yyyyとYYYYは同じ数値になりますが、異なる場合があります。通常は暦年を使用してください」とサポートドキュメントには記載されています。
Ars と話したある開発者は、Apple は日付をまったく考慮せずに、DND をオンまたはオフにする時間だけを考慮する必要があるだろうと指摘しています。
そして、なぜ Apple がユーザーに対して、バグが自然に修正されるまで待つようにアドバイスし、iOS ソフトウェアのマイナーアップデートという形での迅速な解決策を提供しなかったのかというと、何億台もの iOS デバイスに新しいコードをリリースすることが決して簡単なことではないということを理解する必要がある。
さらに、iOSソフトウェアアップデートは毎回徹底的にテストする必要があり、数週間かかります。そのため、AppleはiOSソフトウェアアップデートを急いでリリースすることで新たなバグが発生するリスクを冒すよりも、リリースを待つことを選択しました。
しかし、Apple 自身が日付形式に関するこのよくある間違いに陥っているというのは、本当に不可解だと思いませんか?
iOS チームは、独自のドキュメントをもっと注意深く読むべきでしょうか?