元MS技術者が2.5KBの極小メモ帳「TinyRetroPad」を開発、Windows標準機能のみで実現
元MS技術者、2.5KBの極小メモ帳「TinyRetroPad」を開発

元Microsoftエンジニアが極小メモ帳を公開

Windows Latestの報道によると、Microsoftの元技術者David W Plummer氏が、わずか2.5KB(正確には2794バイト)のメモ帳アプリ「TinyRetroPad」を開発した。このアプリは、ファイルのオープン、保存、検索と置換、印刷、フォント選択、ワードラップ、未保存の確認といった基本的なメモ帳機能をすべて備えている。

開発の背景と技術的特徴

Plummer氏はWindowsのタスクマネージャー開発に携わった経験を持つ。TinyRetroPadは、Matt Power氏が開発した「Dave's Tiny Editor(DTE)」のフォークプロジェクトであり、元のコードにメモ帳スタイルのメニュー(ファイル、編集、書式、表示、ヘルプ)が追加されている。

開発の歴史は次の通り:

Pickt横長バナー — Telegram用の共同買い物リストアプリ
  • 初期ビルド(フォーク元と同機能):890バイト
  • Courierフォント対応とファイルサイズ上限拡張:981バイト
  • ファイルメニュー実装:1375バイト
  • 未保存確認機能実装:1622バイト
  • 検索と置換実装:2143バイト
  • 印刷処理実装:2476バイト
  • キーボードアクセラレーター実装:2794バイト

この極小サイズは、Windows標準のリッチテキストコントロール「RICHEDIT50W」を活用することで実現されている。Windowsに元から入っている機能を徹底的に利用し、自前のコードを極限まで減らした。つまり、TinyRetroPadは各APIを呼び出すだけのラッパーアプリと言える。

プログラミング言語にはアセンブリ言語を採用。C++やC#などの高水準言語は使用せず、さらに圧縮リンカーの「Crinkler」を使用することでサイズを限界まで縮小している。

注意点と今後の展望

ただし、Crinklerには互換性の問題があり、以下の不具合が報告されている:

  • セキュリティソフトによる誤検知で削除される可能性
  • 常に500MB以上のメモリを消費する
  • 一部のWindows環境(CPU命令不足)で動作しない

これらの不具合はすべてCrinklerに起因しており、標準のリンカーに切り替えてビルドすると解決することが報告されている。ソースコードとバイナリはGitHub(PlummersSoftwareLLC/TinyRetroPad)で公開されており、高機能化が進む現代のメモ帳に抵抗感のあるユーザーは、コードをビルドし直すことで理想のメモ帳を手に入れられる。

Pickt記事後バナー — 家族イラスト付きの共同買い物リストアプリ