本文へ
ハクソク

世界を動かす技術を、日本語で。

NeoVimのインストールにより、元のVimのアンドゥファイルが削除されました

元記事: 原文(unsung.aresluna.org)

概要

  • David Chisnall によるMastodon投稿の内容紹介
  • vimのpersistent undo機能 の重要性と体験談
  • NeoVim による互換性問題とデータ消失の懸念
  • Raskin’s First Law の引用と意義
  • ソフトウェア設計における ユーザーデータ保護 の重要性強調

David ChisnallのVim体験とPersistent Undo

  • David Chisnall は2000年頃からvimを使用
  • 書籍5冊、PhD論文、数十本の論文、150本以上の記事を vim で執筆
  • よく使うvimコマンドは 無意識レベルで操作 可能
  • 他のエディタで作成した文書には ランダムな:w が混入
  • persistent undo はvimの中で特にお気に入りの機能
    • 過去に削除した内容を 数週間・再起動後でも復元 可能
    • 作業の整理後に不具合が発生した際、 undo履歴から原因特定 が容易
  • 20年以上 のバージョンアップを経ても persistent undo は安定動作
  • クラッシュや長期間未編集でもundo履歴が保持 される安心感

NeoVimでのPersistent Undo問題

  • NeoVim はvimのフォークとして登場
  • 初期バージョンを試用したが、 undoが機能しない 問題に直面
  • NeoVimは undoファイルのフォーマットを変更
    • 旧ファイルを 自動削除し、互換性のない新ファイルに置換
    • これにより vim側でもundo履歴が消失
  • 問題提起したが、 開発側は「persistent undoは不安定」と説明
    • 将来的にも フォーマット変更の可能性を示唆
  • ユーザーデータ保護への配慮欠如 という姿勢に失望
  • persistent undo破壊はバグとして許容できても、態度が問題
    • ユーザーの大切なデータを守る責任感の不在

Raskin’s First Lawとソフトウェア設計

  • 投稿内で Raskin’s First Law が引用
    • 「プログラムはユーザーのデータを損なってはならない。 また、何もしないことでユーザーのデータが損なわれることも許されない。」
  • Jef Raskin 著『The Humane Interface』(2000年)にて提唱
    • 第一法則: 作業を損なわないこと
    • 第二法則: ユーザーの時間や労力を無駄にしないこと
    • 第三法則: 人間のニーズや弱さに配慮すること
  • ソフトウェアがユーザーの信頼を失う瞬間 は、
    • データ消失や ユーザーを軽視する態度 に起因
  • Raskin’s Laws は設計者・開発者にとって今なお重要な指針

まとめと教訓

  • persistent undo のような地味だが重要な機能の価値再認識
  • ユーザーデータの保護 はソフトウェア設計の根幹
  • 開発側の責任感や倫理観 がユーザー体験に直結
  • Raskin’s Laws を再評価し、
    • 人間中心設計 への意識を高める必要性

提供: ハクソク · 要約更新:

AIによる日本語要約です。内容は原文とあわせてご確認ください。

Hacker Newsの議論を読む

Hackerたちの意見

私もNeovimの初期ユーザーだったよ。個人的には「Vimだけど、壊れた変更がある」って感じで位置づけられてたのを覚えてる。

└

うん、これはずっと問題じゃなかった(少なくとも俺は気づかなかった)。バイトレベルのバッファ変更イベントに正しく対応するために、かなり前に元に戻すファイルのフォーマットを壊さなきゃいけなかったんだ(これはtree sitterや他のプラグインにとってすごく重要)。元に戻すファイルのフォーマットはバージョン管理されてるから、ただ適当にやってるわけじゃないし、Neovimはずっとバージョンの不整合があるってエラーを返してる。ここでの怒りはあまり理解できないな。この投稿の元の著者(Mastodonで)は、Neovimが「白人至上主義者をプラットフォーム化してる」ってことで文句があるみたいだけど、これが何を意味するのか分からなかった。なんかインターネットのドラマみたいだね。

Neovimユーザーとして、これには痛い現実に直面させられた。自分も同じことを経験してたかもしれないけど、気づかなかったんだ。ある時、何かを元に戻せなくなったことがあって、それはNeovimのアップグレードの後だった。Dr. Chisnallとは違って、俺はNeovimからエディタの旅を始めたから、移行で困ったわけじゃない。でも、永続的な元に戻すファイルのフォーマットが不安定で、Neovimが前のフォーマットを認識できないときにそれを削除するなら、フォーマット変更後のアップグレードでファイルが消える可能性もあるよね。痛いな。これを考えると、Neovimから離れようかなって思っちゃう。確かにFOSSはそのままだけど、代替があればね…

└

なんでこんな変なデザインの決定をしたんだろう。古いアンドゥデータを無視したり、捨てる前に警告するのは分かるけど、黙って消すなんてユーザーに対して敵対的すぎて理解しがたいよ。

└

無知をお詫びしますが、IDEを再起動した後の元に戻す持続性って何の役に立つんですか?普通は、変更を保存して作業を終えてからDEを終了しませんか? 編集: ここでの返信に素晴らしい例があって、ありがとう!サポートしているエディタで使い始めるべきかも、今まで考えたことなかった。

ソフトウェア開発者は時々ユーザーに対して約束をするけど、そういう約束は暗黙の了解じゃなくて明確にすべきだと思う。単に「ケアの義務」を仮定して、他の人も自分と同じように理解するだろうと期待するのは無理があるよ。(というか、期待できるけど、たぶんがっかりすることになる。)

「ファイルシステム上にデータが含まれている永続ファイルだから削除しない理由にはならない」という態度は、ユーザーへのケアの義務を理解していないってことだよね。これは間違った見方だと思う。NeoVIMはユーザーへのケアの概念が違う。彼らは現代の期待に沿った別の種類のケアを最適化していて、VIMはそれを気にしてなかった(だからフォークが生まれた)。良いとか悪いとかじゃなくて、ただ違うだけ。この記事は、VIMがネイティブのLSP統合やオートコンプリートを持っていないことについても書けたはずで、ユーザーへのケアがないってことになる。

└

警告なしに重要なデータを削除するのは、ユーザーが欲しいかもしれない機能を提供しないのとは違うよ。

└

明らかにひどい行動を、ソフトウェアが好きだからって擁護するなんて狂ってるよ。そもそもその主張は本当なの?もし本当なら、そのソフトウェアを書いてる人についての意見を見直すべきじゃない?

└

ただ別のファイル名を選べばよかっただけなのに。

Debianのリポジトリにvimが初めて登場した時から使ってる。NeoVimの方が良い、もっとモダンで、たくさんの(便利に引用されない)問題を解決してるって千回も言われたけど、無視して続けてた。今はその機能を普段使ってるから、NeoVimで問題になるなんて全く知らなかったから、すごく納得してる。

└

Neovimはデフォルトでめっちゃ速く感じたから使ってた。treesitterはクラシックなvimが使ってるシンタックスハイライトよりも圧倒的に速いと思う。ただ、基本的な使い方以上は使ったことがないから、恐ろしい話はないんだよね。

Hacker Newsで議論の続きを見る

同じ出典の記事