ペペロン頭脳

ソフトウェアエンジニアのメモ的なアレ。

「Windows 9」が欠番である本当の理由?

先日発表された次期Windowsは、9ではなく10とのこと。
上の公式のアナウンスでは9をスキップした理由がふわっとしていてよくわからないが・・
プログラマーの間でまことしやかに囁かれている説があるので、非エンジニア向けの説明をしてみよう。

Windows 9x系を考慮?

本日はてブで上がってきたのがこれ。

プログラマー以外には何のことやらわからないと思うので、例を挙げて説明してみるです。

時は00年代半ば。Windows XP全盛時代です。
あなたはWindowsで動く何かしらのプログラムの開発を依頼されました。
このプログラムは古いWindowsはサポート対象外とする、とのことです。
そこで、起動した時にOSのバージョンを調べて、

上記いずれかの場合は警告メッセージを出してプログラムを終了することにします。あなたはその部分の処理を、下記のように組んでみました。

  1. 起動したら、自身が動作しているOSの名称文字列を取得する
  2. その文字列が"Windows 9"から始まっているか調べる。
    1. "Windows 9~"であればWindows 95/98のいずれかである。警告メッセージを出してプログラムを終了する。
  3. Windows 9x系でなければ処理を続行する

よしよし。"Windows 9なんとか"なのは95と98だけだ。これでバッチリ必要十分なプログラムが書けたぞ。

・・・さて、時は過ぎて2014年になりました。
新OSの名称が"Windows 9"とか"Windows 9.1"であった場合、
新OS上でこのプログラムを実行するとどうなるでしょう??

そうですね。大惨事ですね。

クレームの電話が鳴り止みませんね。
なぜなら"Windows 9"で動かした場合、自身がWindows 95や98上で実行されていると誤判定して終了してしまうからです。
上の例ではとりあえず終了しちゃうという動作をしますが、もしOSのバージョンによって続きの処理を分岐する、という作りになっていたら?
誤判定してそのまま動き続けた場合、予期しない動作が起こるのでは・・・?

こういった判定をしているプログラムが世の中にびっくりするほどたくさんあるよ、というのが上のリンク先なのです。
正直雑な判定方法ではあるのですが、よりシンプルに書こうとして上記の形に落ち着いたということなのでしょう。
XPやVistaの時代を思えば、今のようなナンバリング体系になると想像できなかったとしても仕方ないか・・という気もします(甘い?)。

さて。
サポートを継続しているソフトウェアであれば「ごめんねー★テヘペロ」でちょろっと修正すればいいかもしれません。
が、とっくの昔に開発終了しているプロダクトだったら?
しかもそれが現在も幅広く使われ、業務システムの根幹に深く関わっていたら?
誤動作によって発生する損失は?
調査・改修するための費用は?

Microsoftは影響が広範囲に及ぶことを懸念し、新OSを「Windows 10」と名づけたのではないでしょうか?

っつー憶測ながらもかなりこわい話でした。

2014/10/03 追記

出典付きの詳しいエントリを書いている方がいらっしゃるので紹介。