ファイルを保存しない人生

私は学生の頃はEmacsを使っていて、何かのときに知ったのがauto-save-buffersだった。

これは、キー入力が一定時間発生しないと自動でファイルを保存するというelispで、とても気に入ってずっと使っていた。こういう拡張ができるEmacsというエディタはなんてすばらしいのかと感動していたものだ(誇張)。

実際にはいくつか欠点があって、誰もが指摘するであろう「でかいファイルや遅いストレージでは、自動保存はあまり嬉しくない」という問題以外に「Emacsの中からビルドしようとすると、保存より先にビルドを始めてしまうことがある」というのがあった。EmacsではCtrl-C Ctrl-Cのキー入力でビルドを行う用に設定していたのだけど、プログラムをわーっと書いて、そのままCtrl-Cを二回叩くと、ファイルの保存よりも先にコンパイルされて、結局保存を忘れたのと同じ効果が得られることになってしまい、悲しい思いを何度もしたことを覚えている。私はかなりアグレッシブな設定にしていて、確か0.1秒キー入力がないと保存するようにしていたのだけど、それでは遅かったのだった。*1

さて、今日ではファイルの保存をしないシステムというのは意外と多い。私が常用しているものでも、

では、保存なんてしたことがない。

Xcodeは、ビルドとかアプリ実行のタイミングで保存するようになっている*2。ビルドの操作は必要だけど、保存はする必要がない。プログラミングしていて、ビルドはともかく、「アプリを実行する」というのは、なかなか無くすのが難しい操作のように思えるので、これ以上操作を少なくすることは難しいんじゃないかなーと思う。Playgroundとかの新機能で、もしかしたらもう一歩先に進めるかもしれない。

RubyMineは、よくわからない謎のタイミングでファイルを保存する。プログラミングした後で、

  • ブラウザに切り替えてページをリロードする
  • ターミナルからrakeなどを実行する
  • RubyMine内でテストを実行する

などの操作をすると、なんかよくわからないけどいつのまにかファイルが保存されている。実際には、ページリロードの前に一呼吸おいた方が、より確実に保存されたファイルにアクセスできるようになるが、まあ誤差の範囲である。(先述の通り、これはauto-save-buffersのころからの儀式だ。)

Sublime Textは、かなり保守的で、ここに挙げた3つの中で唯一、明示的に設定をしないと自動でファイルを保存してくれない。save_on_focus_lostという項目をtrueに設定すると、アプリケーション切り替えのタイミングで自動で保存してくれる。これはまあまあ良いタイミングだと思うし、大体思った通りのタイミングで保存してくれる感じである。*3

エディタなんかとはちょっと印象が違うけど、iPhotoやApertureなんかも「保存」という操作は存在しない気がする。操作が非破壊的で、操作の積み重ねがどこかで途切れることがないというのが*4、自動での保存を可能にしているんだろうか。写真というのはけっこうでかいデータだと思うんだけど、保存なしでいけるのはすごいなぁ。

そういうわけで、なんだかんだ言ってファイルを保存する機会というのはだんだんと減っているように思えるので、人類が進歩を続けているのは確かだと思う。

*1:コンパイルを始める前にファイルを保存すれば良いというのは気付いていたのだけど、Elisp力が足りなかったし、0.1秒待てば良いので諦めていた。

*2:より正確に言えば、ビルドのタイミングを含む謎のタイミングでファイルをいつのまにか保存している

*3:ちなみに、Sublime Textのすばらしいところをもう一つ挙げると、いろいろな設定項目がかなり設定した瞬間に反映されるところで、これはとても納得感のある動作だと思う。(常に便利であるとは言っていない。)

*4:いつでも任意の時点、、、かどうかは自信がないけど、少なくとも一番最初の状態に巻き戻すことができる。