TIPS:Windowsでクリップボードの巨大データを消して、少ないメモリを無駄なく使うクリップボードは便利な仕組みだが、場合によっては予想外に大量のデータがクリップボード(メモリ)に格納され、メインメモリを圧迫する場合もある。そんなときには、ごく小さなデータをわざとクリップボードに転送して、以前のデータをクリアできる。異なるアプリケーション間でのデータ交換を可能にするカット&ペースト機能は、クリップボードと呼ばれるメカニズムによってWindows環境に実装されている(クリップボードの詳細については、TIPS「クリップボードの中身をのぞき見る方法」を参照)。アプリケーションによっては、次のようなメッセージを表示するものがある。Excelによって表示された警告ダイアログExcelを終了しようとしたときに表示されたダイアログ。メッセージの内容から、クリップボードに巨大なデータが格納されたままになっているという警告であることが分かる。このようにExcelでは、クリップボードに格納したデータをアプリケーションの終了時に消去できるようにしている。(1)クリップボードに格納されたデータはそのままにして、アプリケーションを終了する。(2)クリップボードのデータを消去し、アプリケーションを終了する。(3)アプリケーションの終了をキャンセルする。このようにExcelでは、巨大なデータがクリップボードに残されたままになっているときには上のような警告ダイアログを表示し、必要ならこのダイアログからクリップボードのデータを消去できるようにしている。数百MBのメモリを搭載することも珍しくなくなった昨今、クリップボードにコピーしたデータのことなど気にする必要があるのだろうか?クリップボードには、さまざまな種類のデータが転送されているOSの内部的にみれば、クリップボードは、複数のアプリケーションからアクセス可能な、一種の共有メモリだと考えることができる。あるアプリケーションでデータをカット(コピー)すると、そのデータがこの共有メモリに転送され、別のアプリケーションでこのデータをペーストすると、共有メモリからアプリケーションにデータが転送されるというわけだ。大量のデータをクリップボードに転送しないかぎり、これによってメモリが圧迫されることはないとたかをくくってはいけない。クリップボードには、できるだけ多くのアプリケーションがデータを取り出せるようにするために、さまざまな形式のデータが転送されるようになっているからだ。ここでその実例として、Excelでシートデータをクリップボードに転送して、クリップボードの状態を確認してみよう。Excelでシートを開いたところここでは、Excelで適当なシートを開き、シートデータをクリップボードに転送してみる。(1)クリップボードに転送するデータ。このように、別段何の変哲もないシートデータである。これをクリップボードに転送してみると......。Excelを起動して適当なシートを開き、シートを選択してこれをクリップボードに転送する([編集]−[コピー]コマンドなどを実行する)。画面から分かるとおり、別段何の変哲もないただのシートデータである。シートデータをクリップボードに転送したら、クリップボードにどのようなデータが転送されたかをクリップブックを使って確認する。2000/XPの標準ツールの1つで、これを使えば、現在のクリップボードの内容を確認することができる(クリップブックの詳細については、TIPS「クリップボードの中身をのぞき見る方法」を参照)。2000のクリップブックでクリップボードの内容を表示したところクリップブックを使えば、現在のクリップボードの内容を確認できる。[表示]メニューをドロップダウンすれば、クリップボードに転送されたデータの種類を一覧表示することも可能。(1)先ほどの操作でExcelからクリップボードに転送されたデータの種類の一覧。単純なシートデータのコピーだと思いきや、実にさまざまな形式でクリップボードへデータが転送されていることが分かる。クリップブックの[表示]メニューをドロップダウンすれば、現在クリップボードに格納されているデータのタイプを一覧表示することができる。画面から分かるとおり、単純なシートデータのコピーだと思いきや、実にさまざまな種類のデータが転送されていることが分かるだろう。見ただけでも、メタファイル(Windowsのグラフィックス描画命令を列挙した形式のグラフィックスデータ形式)、ピクチャやDIBビットマップ(ビットマップ形式)、テキストなどさまざまな形式がある。クリップブックの[表示]メニューで選択不能表示(淡色表示)となっている項目は、クリップブックで表示できないという意味で、これらの形式のデータ自体もクリップボードに転送されている。ここで[テキスト]を選択してみると、シートのデータがタブ区切りテキスト形式で格納されている様子を確認できる。クリップブックで[表示]−[テキスト]を選択したところテキスト形式(タブ区切りテキスト形式)で格納されたデータを表示したところ。次はビットマップ形式の[ピクチャ]を選択してみる。シートのイメージがビットマップデータとしてもクリップボードに格納されていることが分かる。クリップブックで[表示]−[ピクチャ]を選択したところビットマップであるピクチャ形式のデータもクリップボードに格納されていることが分かる。このように、自分ではちょっとしたデータをクリップボードに転送しているつもりでも、アプリケーションによっては、数多くの形式でデータが転送される場合がある。ケースによるが、場合によっては大量のデータがクリップボードに転送され、メモリを占有してしまう可能性もある。●クリップボードをクリアするにはクリップボードに転送されたデータは、次のデータが転送されるまでは残されたままになる。特別なツールでも用意しないかぎり、これをきれいにクリアする方法はない。逆に言えば、次のデータを転送すれば、前のデータはメモリから削除されるので、原始的な方法でよければ、ほぼクリアするのと同等の措置を施すことができる。小さなデータをわざとクリップボードに転送するのだ。これは、1文字のデータでもよいし、エクスプローラで選択した適当なファイル名でもよい(どれか1つのファイルを選んで[コピー](Ctrl+C)を実行する)。クリップボードに何MBのデータが格納されていても、これでクリップボードは数bytesのデータに置き換えられ、元のデータは削除される。XPに関する情報追加に加え、最新情報を反映して加筆・修正しました。【2000/12/19】初版公開。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。