名前を変えて残したはずが、上書きされてしまう問題
この問題は、ファイルダイアログを使うアプリケーションであれば、何でも起こります。ここでは、メモ帳を使って試してみましょう。
メモ帳で何か文章を書いてから、メニューの「名前を付けて保存」を選ぶと、ファイルダイアログが表示されます。
今書いた文章を、「私の日記.txt」という名前で保存したいと思います。ですが、ここには、以前に書いた「私の日記.txt」が置いてあります。そこで、まずはこれを、「古い私の日記.txt」として残しておきましょう。
リストに表示されているファイル名をマウスでクリックすると、ファイル名を書き換えることができます。なお、マウスでクリックした瞬間に、ファイル名を入力する欄には、選択されたファイル名(即ち、「私の日記.txt」)が表示されます。
次は、今書いた文章を「私の日記.txt」という名前で保存します。ここで、すでにファイル名の欄には、「私の日記.txt」が入力されていますので、そのまま「保存」ボタンを押します。
すると、何故か、次のような警告メッセージが表示されます。
ここで「はい」を選んでしまうと、今書いた文章が、「古い私の日記.txt」というファイルに上書き保存されてしまいます。つまり、せっかく残しておこうと思った以前の日記が、消えてしまいます。
この問題の補足情報
ここでは、ファイル名の欄に自動的に名前が表示されていたので、そのまま「保存」ボタンを押しました。しかし、いったんファイル名の欄をマウスでクリックして、フォーカスを当ててから「保存」ボタンを押しても、やはり問題が起こります。ただ、ファイル名を1文字でも書き換えてから「保存」ボタンを押すと、この問題は起こりません。
また、古いファイルの名前を変更した後で、別のフォルダに移動してから「保存」ボタンを押しても、やはり、「古い私の日記.txt」という名前のファイルが保存されてしまいます。ただ、それは移動先のフォルダに保存されるので、古いファイルが上書きされて消えてしまうことはありません。
なお、この問題は、Vistaでは発生しません。Windows XP以前でビルドして、XP以前ではこの問題が起きるアプリケーションを、そのままVistaにコピーして使っても、Vistaでは問題は起こりません。
ソフトウェア技術者として、この問題を考えてみよう
こうした問題の原因や解決策を考えるのは、ソフトウェア技術者にとって良い頭の体操になると思います。
そこで、次のような小テストを作ってみました。
- ファイルダイアログがこのような動きをするのは、どのような作りになっていることが原因か、推定しなさい。
- このような問題を起こさないためには、ファイルダイアログをどのように作れば良いか、ソフトウェア設計の観点から提案しなさい。
皆さんで考えてみてはいかがでしょうか。