細く長く愛され続ける「メモ帳」
その一方でWindows XP時代のメモ帳には、有名なバグが潜んでいます。それが「4+3+3+5バイトの文字列」。例えば「this app can break」と入力し、そのままテキストファイルに保存。そして保存したテキストファイルをメモ帳で開くと文字化けが発生してしまうというもの。当初はメモ帳を担当したプログラマーが"特定の文字列に反応するコードを仕込んでいる"という噂が広がり、「Java mac osx linux」や記述できないような卑猥な単語など、さまざまな組み合わせが試されたものです。
フタを開けると結果は単純なバグ。Windows 2000およびWindows XPのメモ帳には、UnicodeのBOM(Byte Order Mark:バイトオーダーマーク)が欠けている場合でもUnicodeファイルとして検出する機能が備わっていました。そのため同機能がANSIコードで記述されテキストファイルを誤認識し、文字化けが発生してしまうというもの。つまり、悪意やイタズラ心でプログラマーが埋め込んだものではなく、前述したパターン以外でも文字化けが発生するという致命的なものでした。
この一件に関しては、同社の国際化(i18n)担当のプログラムマネージャであるMichael S. Kaplan(マイケル・S・キャプラン)氏が自身のブログで報告しています。Windows Vista以降のメモ帳では改善されましたが、メモ帳のようにシンプルなアプリケーションにもバグが潜んでしまう、という一例でした(図11~12)。
前述のバグが潜んでしまった遠因に、複数の文字コードへ対応しなければならなかったという、当時の事情がありました。1996年にリリースされたWindows NT 4.0のメモ帳は、アスキーやシフトJIS(Microsoftコードページ932)以外にも、Unicode(正しくはBOM付きリトエンディアンUTF-16)をサポート。しかし、時を追うごとに求められるUnicodeのエンコーディングが増えたため、Windows 2000のメモ帳では、ビッグエンディアンUTF-16やUTF-8を個別にサポートするようになりました(図13~14)。
話は前後しますが、メモ帳内でフォント変更機能を備えるようになったのは、Windows 98およびWindows NT 4.0から。ようやく好みのフォントが使用可能になりましたが、当時はまだ大量の漢字を要する日本語フォントが充実していたとは言いがたく、OS自身のパフォーマンス能力も相まって、初期状態のまま使うのが一般的。その一方で文字数の少ない英語圏では、風変わりなフォントを使用するユーザーも少なくありませんでした(図15)。
Windows 7やWindows 8のメモ帳も備える置換機能が備わったのは、Windows 2000以降です。テキストエディターであれば当たり前のように備える同機能は、1985年から数えて15年の月日を経て、ようやく搭載されました。内部的な改善点は把握できませんが、バグ修正などを除き、これ以降のメモ帳に大きな変化は加わっていません。この時点でアプリケーションの基礎は完全に固まり、メンテナンスフリーの存在になったと述べても過言ではないでしょう(図16)。
さて、駆け足でメモ帳の歴史を追いかけてみましたが、そもそもメモ帳を使用している方はどれだけいたのでしょうか。筆者がPC雑誌の編集者だった頃、以前はMacintoshユーザーだった上司が"新たにアプリケーションをインストールするのが面倒"という理由でメモ帳を使っていた程度。そういえば同じく同僚の元Macintoshユーザーもメモ帳を使っていました。
かく言う筆者は、MS-DOS時代のテキストエディター戦争(Vz Editor vs MIFESなど)を経てきましたので、どうしても高機能のテキストエディターを選択する傾向があります。当時はVz EditorをWindows OS向けに再構成したWZ Editorを使用する編集者が筆者を含めて多く、中には秀丸を使っていた編集者も。当時は若かったこともありますが、前述のメモ帳を使用する同僚や上司を理解できなかったことを思い出しました。
多くのショートカットキーでさまざまな機能を呼び出せる高機能なテキストエディターを求めるユーザーに、メモ帳が魅力的なアプリケーションとして映りません。だが、"名は体を表す"ということわざどおり、メモ帳はメモを取るためのテキストエディターであり、長文を書くためのアプリケーションではないのです。しかし、いつの時代にも軽快な動作を維持するメモ帳は、今後も一部のユーザーに愛用され続けられるでしょう。
ナビゲーターは阿久津良和でした。次回もお楽しみに。
阿久津良和(Cactus)
参考文献
・Wikipedia
・Windowsプログラミングの極意/Raymond Chen(アスキー)