プログラミング
ユーザーデータのケアについて:NeoVimがVimのundoファイルを削除した
On caring for user data: NeoVim caused Vim undo files to be deleted (unsung.aresluna.org)
要約
この記事は、コンピューターサイエンティストのDavid Chisnall氏の体験談を基に、NeoVimがVimの永続undoファイルを削除した問題について論じています。NeoVimはVimのフォークですが、undoファイルのフォーマットを変更した際に、既存のVimのundoファイルを削除し、互換性のないフォーマットで上書きしてしまったため、ユーザーは長年蓄積してきたundo履歴を失いました。著者は、この行為がJef Raskin氏の「コンピュータはユーザーのデータを害してはならない」という第一法則に反しており、開発者のユーザーデータに対するケアの欠如を示していると批判しています。
全文翻訳
コンピューターサイエンティストのDavid Chisnall氏によるMastodonの投稿は、非常にUnsungな始まりをしています。
私は2000年頃からvimを使っています。vimで5冊の本、博士論文、数十本の論文、そして150本以上の記事を書いてきました。この時点で、一般的なvimコマンドを使うとき、私の高次の脳機能は全く関与していません。ただ実行されるだけです。それ以外のものを使って書いたドキュメントには、真ん中にランダムな:wがあります。
Chisnall氏は、vimの特定の機能について語っています。
永続undoはvimの私のお気に入りの機能の一つです。
[...] 私は永続undoを頻繁に必要としません。しかし、必要とした数少ない機会には、それは非常に貴重でした:おおっと、ファイルを削除してしまった、おそらく先週、そして再起動後にも、それは何だっただろう?それを見つけるまでundoし、現在のバージョンにコピーして貼り付けます。あるいは、より一般的には:これはうまくいっていた、コミットのために整理した、今はうまくいかない、何をしたのだろう?
Vimは、約20年間にわたるメジャーバージョンアップグレードの間、この動作を維持してきました。私はそれを全く考えません。それは単にRaskinの第一法則の一部です:コンピュータはユーザーのデータを害してはならない、あるいは不作為によってユーザーのデータが害されることを許してはならない。
vimやコンピュータがクラッシュした場合、あるいはファイルを閉じて6ヶ月後に戻ってきた場合でも、undo履歴はそこにあります。
NeoVimはvimのフォークです(他の理由でもニュースになっています):
そこで、私はNeoVimがまだ新しかった頃に試しました。あなたが慣れ親しんだvimですが、より良い?素晴らしい!NeoVimで最初に気づいたのは、undoが機能しないことでした。vimでファイルを開いても、そこでもundoは機能しませんでした。
NeoVimはundoファイルのフォーマットを変更していました。古いものをアップグレードしていませんでした。undoファイルに別の名前を使っていませんでした。ただ、vimのundoファイルの存在に気づき、それを削除し(その中のすべてのデータを失い)、vimが読み込めないものに置き換えました。
私はこれについてissueを提起しましたが、永続undoフォーマットは不安定であり、明示的に永続undoと呼ばれる機能でデータの保存に依存すべきではないと言われました。それは一度変更され、おそらく再び変更されるだろうとのことでした。そして、それが私のNeoVimでの経験の終わりでした。
著者たちは、私のいかなるデータに対しても信頼できないことをすぐに示しました。
永続undoを壊すことは、バグとして許せるかもしれませんが、ファイルシステム上の永続ファイルにあなたが欲する可能性のあるデータが含まれているからといって、プログラムがそれを削除しない理由にはならないという態度は、彼らがユーザーに対するケアの義務を全く理解していないことを意味していました。
私はこの投稿(ほぼ全文を引用しました)を気に入りました。なぜなら、それはいくつかの重要なことをカバーしているからです。
私は永続undoについてそのような話を聞いたことがありませんでした。それは素晴らしいことのように思えます。
人々は、ソフトウェアが彼らのハードワークを失ったり、彼らを軽視したりしたことを覚えています。「一度変更され、おそらく再び変更されるだろう」という言葉が、これほど強力な感情を抱かせるとは。
また、Raskinの第一法則の登場も気に入りました。
Jef Raskin、MacintoshとCanon Catで有名ですが、2000年の著書『The Humane Interface』で3つの法則をまとめました。それらは以下の通りです。
コンピュータはあなたの作業を害してはならない、あるいは不作為によってあなたの作業が害されることを許してはならない。
コンピュータはあなたの時間を無駄にしてはならず、あなたが不必要に多くの作業を要求されてはならない。
インターフェースは、人間のニーズに応え、人間の弱さを考慮するものであれば、人間的である。
若いデザイナーだった私にとって、この本に出会ったことは非常に重要で形成的なものでした。これらの法則が今日までUnsungに取り上げられていない理由がわかりません。
2026年8月28日
変更管理 19
原則 19
テキスト編集 20
undo 11