2016年はうるう年だ。Microsoftは「Microsoft Azure」ブログで、うるう年関連で作り込んでしまいがちなバグに関する有益なアドバイスを提供している。
MicrosoftのシニアソフトウェアエンジニアであるMatt Johnson氏による米国時間2月2日付けの投稿では、開発者が注意すべき点として以下の3つが挙げられている。
- Off-by-oneエラー。特に、日付の範囲を取得してデータを選別する際の処理。
- ユーザーインターフェースにおける、ユーザーの予期しない、あるいは好ましくない操作。
- 境界条件における例外やクラッシュ、ハングの可能性。
Johnson氏は多くの場合、単体テストのみでは不十分だと述べている。こういった問題は、開発されたコードがクラウド上で稼働するかどうかに関係なく発生する。
同氏は「うるう年関連のバグはいたるところで、そしてあらゆる言語のコード上で見かけるが、最も危険なのはCやC++で記述されたコードだ。こういった言語では、アプリケーションのクラッシュやバッファオーバーフロー(セキュリティリスクにつながる)を引き起こす可能性がある」と記している。
同氏によると、年を対象に加算や減算を行うCやC++のコードと、1年のそれぞれの日に対応した値の配列を宣言しているコードはいずれも、うるう年関連の問題を引き起こしやすいという。
また、うるう年で影響を受ける日は2月29日だけではない。Johnson氏は開発者に対して、1年の366日目となる12月31日にも気をつけるよう促している。同氏は開発者に対して、自らのコードを精査し、「システム時刻の変更」による単体テスト手法を身に付け、うるう年直前だけではなく年を通じてテストするようアドバイスしている。
Johnson氏の投稿「あなたのコードはうるう年の準備ができている?」には、ほかにもアドバイスやヒントが書かれている。
この記事は海外CBS Interactive発の記事を朝日インタラクティブが日本向けに編集したものです。