Windows Latestは、「Ex-Microsoft engineer rebuilds Notepad in 2.5KB using nothing but stuff Windows already had」において、Microsoftの元技術者がわずか2.5KBのメモ帳「TinyRetroPad」を開発したと伝えた。
メモ帳の基本機能をすべて搭載し、ファイルのオープン、保存、検索と置換、印刷、フォント選択、ワードラップ、未保存の確認をサポートするという。
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」にて配布中。高機能化を続けるメモ帳に抵抗感のあるユーザーは、コードをビルドし直すことで理想のメモ帳を手にできる。
