Windows Latestは、「Ex-Microsoft engineer rebuilds Notepad in 2.5KB using nothing but stuff Windows already had」において、Microsoftの元技術者がわずか2.5KBのメモ帳「TinyRetroPad」を開発したと伝えた。

メモ帳の基本機能をすべて搭載し、ファイルのオープン、保存、検索と置換、印刷、フォント選択、ワードラップ、未保存の確認をサポートするという。

  • TinyRetroPadの外観 - 引用:TinyRetroPadの公式GitHub

    TinyRetroPadの外観 引用:TinyRetroPadの公式GitHub

2.5KBでどこまでメモ帳を実現できるのか

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

実行可能ファイルの正確なサイズは2794バイト。その開発の歴史は次のとおり。

  • 初期のビルドバージョン(機能はフォーク元と同じ)は890バイト
  • Courierフォントへの対応およびファイルサイズ上限を拡張(981バイト)
  • ファイルメニューを実装(1375バイト)
  • 未保存の確認機能を実装(1622バイト)
  • 検索と置換を実装(2143バイト)
  • 印刷処理を実装(2476バイト)
  • キーボードアクセラレーターを実装(2794バイト)

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

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

そのまま使うには注意点も

早速メモ帳代わりに使用したいところだが、いくつか注意点がある。同プロジェクトで使用しているCrinklerには互換性の問題があり、次の不具合を引き起こす可能性がある。

  • セキュリティソリューションの誤検知によって駆除される
  • 常に500MB以上のメモリを消費する
  • 一部のWindows環境では動作しない(CPU命令の不足)

これら不具合はすべてCrinklerに起因する。標準のリンカーに切り替えてビルドすると、すべて解決することが報告されている。

ソースコードおよびバイナリは「GitHub - PlummersSoftwareLLC/TinyRetroPad · GitHub」にて配布中。高機能化を続けるメモ帳に抵抗感のあるユーザーは、コードをビルドし直すことで理想のメモ帳を手にできる。