- セッション資料:『Developers Summit 2014 in Kansai で使用したスライド』(PDFへのリンクあり)
アプリケーションの寿命を決める要因とは?
「みなさん、過去に作ったアプリケーション、今作っているアプリケーションについてどのくらいの時間を使うことができると考えているだろうか」
こう参加者に呼びかけ、田中氏のセッションは始まった。
アプリの寿命を決める要因としていくつか要素がある。第一の要因は2000年問題に代表されるように、プログラムコードに原因があるもの。
第二の要因はOSのサポート期限によるもの。2014年4月8日(日本時間は4月9日)にWindows XPのサポートが終了した。もちろんサポートが切れたOSでもアプリケーションは動くが、「サポート切れのOSを使い続けるのでお勧めしない」と田中氏。もちろん、サポート期限があるのはWindows XPだけではない。この後、Windows 7、Windows 8と次々とくる。Windows 7のサポート期限は2020年の1月14日(日本時間は15日)。「Windows 7を対象としたアプリケーションは東京オリンピック開催まではもたないということ。マイクロソフトとしては今、作っているアプリケーション、これから動かすアプリケーションはなるべく最新のOSで動かしていただきたい」と強調する。最新のOSで動くことは、それだけアプリケーションの寿命が延びることになるからだ。
第三は2038年1月19日問題。これはCのランタイムの日付の問題で、この日を過ぎるとコンピュータが誤動作する可能性があると指摘されている。Cのランタイムの日付は、1970年1月1日0時からの経過秒数で保持している。経過秒数を表す時刻データには32ビットの符号付き整数を使っているが、2038年1月19日にその経過秒数が一回りしオーバーフローを起こしてしまうのである。
「この2038年問題は2000年問題より大きな問題になると言われている」と田中氏は危惧する。2000年問題は一般の人でも理解しやすかったが、Cのランタイムの問題は2038年1月19日という分かりにくい日付ということもあり、一般の人にはなかなか理解してもらえないからだ。そのために対応が後手になると言われている、というのである。もちろんこれは今から24年後の話。今のアプリケーションが24年後まで使われている可能性は低いかもしれないが、「まだまだ先だと思っていても対応しておくのに越したことはない」と田中氏は言う。
第四は10000年問題。「これはさすがに対応しなくてもよいが、10000年問題というのがあることは頭に入れておいてほしい」と田中氏。10000万年問題とは今から約8000年後、年号が4桁では表すことができず5桁になるという問題だ。大事なのは10000年問題に対応することではなく、これと似たようなことがいろいろ起こっていることだ。例えばアメリカの代表的な株価指数にNYダウがある。現在のNYダウは17000ドルで5桁だが、実は10年前ぐらい前までダウを扱うアプリケーションは4桁までしか表示できなかったものが結構あった。このようなシステムの場合、ダウが1万円を超えてしまうと、当然、1万の位が表示されなくなる。「NYダウのような例は身近にある。ぜひ、今一度見直すのがお勧めだ」と田中氏はアドバイスを送る。
第五はユニコードの問題。ユニコードは2バイトだと思い込んでいる人も意外に多いが、今は4バイトの文字もたくさんある。1文字を2バイトで処理するアプリケーションだと、4バイトの文字がくると対応できなくなるというわけだ。そこで田中氏が示したのは「216BF」という文字。この文字をWordに書き「ALT+X」を押すと、「女偏に心」という文字に変換される。「ユニコードには4バイトのものがあることを、女心は分からないという例えで覚えてほしい。ちなみに216BFでこの文字を出すと結構受けるので、何かの機会で使ってみて欲しい」と田中氏。
そして第六の要因は高解像度ディスプレイの普及である。近年のPCは高解像度化が進んでおり、まだまだ高価だが4Kディスプレイも登場している。4Kディスプレイの解像度は3840×2160ピクセル。解像度をそのままに、ディスプレイサイズに応じた表示をするため、Windowsではスクリーンに表示される要素を自動的に拡大するDPIスケールという機能を用意している。DPIスケールはOSのバージョンによって機能が異なる。例えば最新のOS、Windows 8.1 Updateからは標準で250%まで対応する。それ以前のバージョンについては、Windows 8.1では200%、Windows 7/8では150%まで対応している。現在の最高値250%(超特大)は、例え15.6インチの4Kディスプレイが出たときにも対応可能であるという。
このようにディスプレイは進化する一方で、アプリケーションの高DPI対応について、それほど考えられていないという。アプリケーションの寿命に関係するのに、である。というのも、高DPI非対応アプリは高解像度ディスプレイだとぼやけてしまうからである。