「ファイルに保存する」必要はあるのか

WindowsのようなOSのアプリケーションのメニューには、多くの場合「ファイル」メニューが存在し、その中に「ファイルに保存する」コマンドが存在する。このコマンドは、アプリケーションが保持している作業の内容をメモリ空間からファイルシステム上に書き出す行為を指す。

このファイルに保存するコマンドにまつわるトラブルは多い。例えば、ファイルを保存し忘れてアプリケーションを終了してしまったり、アプリケーションが不正終了してしまった場合もそうだ。間違って別のファイルに上書き保存をしてしまうこともある。このようにアプリケーションのライフサイクルとして、ファイルを”新規作成”して”ファイルを保存する”一連の作業は正しいのかどうか、疑問を呈したい。

「ファイルを保存する」一連の作業について考える前に、どうしてこのような形式になったのか考える必要がある。その理由は半永久的に保存できるとされるディスクが低容量でまた高価であり、低速のアクセスしかできなかったことに大きく起因するのではないかと考えている。

ファイルを保存することは利用者の自発的な保存行為を促すものであるが、この行為はいわば、作業を保存するということである。作業を保存するということは、例えば本を書けばそれが残っていくことと同じように自然に行われていくべきだ。よって本来的には利用者の作業の1つ1つが行われるたびにその作業の履歴を含めて保存するべきであり、作業の記録とは利用者が明示的に行うものではない。

このようなことが出来なかった理由は、前述の通り保存するためのディスクにアクセスすると我慢ならない時間を必要とし、円滑な作業の進行を妨げる可能性が大きいからだ。またディスク容量も少なく、なるべくファイルを作らないように保存していくべきという指針の中、利用者が取捨選択して残すという形は理にかなっていた。

これまでの過去の話に比べて、現在のディスク環境は非常に恵まれており、通常のアプリケーションの動作の一連の履歴を全て保存したとしても、アクセスによる作業の妨げを感じたり、それによって容量が少なくなってしまうと感じたりすることは多くない。よって、全てのアプリケーションが今後、取るべき指針としては、利用者が明示的に保存ポイントを示さないような作りであることが求められるとしたい。

同様な考えはファイルシステム自体にも発生しており、通称スナップショットという機能によって提供される。この機能は、ファイルシステムのある瞬間の状態を保存することであり、その後の書き込みはスナップショットからの差分として考えられる。これによって大事なファイルを削除してしまったとしても、あるスナップショットまで簡単に戻ることが可能になる。ただし、アプリケーションのメモリ空間までを復元できるものではないので、前述の”ファイルを保存する前に終了してしまった”問題に対しては効果がない。

そこで、全てのアプリケーションに対して、そのアプリケーションが用いているメモリ空間をファイルに落とすことができるような仕組みを作ることで、多くの状況の再現が簡単に出来るようになるのではないか、と考えている。

この仕組みは、Windowsにおける「スリープ」機能と同じだ。「スリープ」では、PCの起動速度を向上するために、メモリ空間のコピーをファイルシステムにバックアップし、PCの電源を落とすことを行っている。もし、PCを起動したときにスリープされたメモリ空間がファイルシステムに存在する場合、それをメモリ空間にリストアすることによって、再度Windowsの起動シーケンスを経ることなく利用可能な状態に戻すことが可能であるため、起動時間の短縮になる。

アプリケーションの状態をファイルに書き出すという仕組みは標準的であるように見えて、実は面倒だ。もうアプリケーションが保持しているメモリを全部吐き出すようにしてくれれば、そんな面倒はないのに、と思ったりする。

また、これに似たものとしてGoogle DocsなどのWebアプリケーションが挙げられる。Webアプリケーションを製作する場合、まず初めに通信断を考慮する。無線LANや無線WANを利用しているケースを想定すると、一時的に通信が出来なくなるケースが考えられるからだ。そのときに備えて、アプリケーションを提供するサーバ群にて常に作業データを保管している。このため、ファイルを明示的に保存する行為が明示的に示されることは多くなく、常に自動で保存されているという流れが多い。

こうしたアプリケーションは、初心者やうっかりさんが、いつどのようにファイルを保存するべきかを学ぶ必要がないので、がっかりするような操作をしてしまう可能性が低いように見える。このような形が望ましい。

ふと、ローカルのアプリケーションを見直すと、そのような配慮をしているプログラムが少なかったので、気になった。プログラムの設定ファイルに関してはそのような仕組みを構築しているのに利用者が作成したデータに関しては間違えて消失するケースが多い。

ということで、「ファイルに保存する」必要のないアプリケーションが増えてくれると嬉しいな、と。

カテゴリー: チラシの裏 パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください