• テスラーの最終兵器

ほとんどのGUIシステムには、クリップボードと呼ばれる機能がある。テキストや画像などをクリップボードに「コピー」や「カット」したあと、別のアプリケーションや同一アプリ内の別の場所に「ペースト」することで、テキストや画像の移動やコピーが行えるものだ。

クリップボードの発明者は、「ラリー・テスラー」(Lawrence Gordon Tesler)であるといわれているが、同等の機能は、1965年に作られたエディタ「TV-EDIT」に搭載されていた。ただし、このプログラムでは、コピーや削除したテキストの保存先を「Buffer(バッファ)」と呼んでいた。また、コピー、カット、ペーストの操作は「Store(保存)」と「Delete(削除)」、「Recover(復元)」と呼んでいた。

この機能のデータ保存先を「クリップボード(Clipboard)」、操作を「コピー(Copy)」、「カット(Cut)」、「ペースト(Paste)」と命名したのがラリー・テスラーである。カット&ペーストは、出版物の版下作成で使われていた言葉で、これをコンピュータ上の編集作業の表現に持ち込んだ。これにより、クリップボードへのテキストの移動はテキストが消えてしまう印象のある「デリート」ではなく、一時的に取り去れる「カット」と呼ばれるようになった。

テスラーは、先行するWYSIWYGワードプロセッサBravoをベースにGipsy(1975年)と呼ばれるワードプロセッサを開発した。このGipsyには、コピー、カット、ペーストの機能があったが、その保存先は、クリップボードではなくて「wastebasket(ゴミ箱)」と呼ばれていた。

Video Ethnography of “Gypsy” on Xerox Alto with Larry Tesler: Demonstration of Cut, Copy, and Paste
https://www.youtube.com/watch?v=Dhmz68CII9Y

<動画>Video Ethnography of “Gypsy” on Xerox Alto with Larry Tesler: Demonstration of Cut, Copy, and Paste

クリップボードという名前は、テスラーがのちにApple社に移籍し、開発に従事したLisa(1983年)あたりから使われ始めたようだ。クリップボードの名前が使われたのは、Lisaでは、Windowsでいう「ゴミ箱」を「wastebasket」と呼んだため、別の名称を考える必要があったからだと考えられる。

Lisaで動作するワープロLisaWriteには、コピー/カット/ペーストの機能があった。LisaにはClipboardと呼ばれるクリップボードビューアー(クリップボードの内容やデータ形式などを表示するプログラム)が、搭載されていた。

「カット&ペースト」の概念の普及には、少し時間がかかった。CP/M時代のエディタWord Master(1978年)には、コピー、カット、ペースト同等の機能はあったが、保存先はQバッファやスクラッチパッドと呼ばれていた。後継のWordStarでも同様にバッファだった。どちらも「カット」に相当する機能は「デリート(Delete)」と呼ばれていた。

XeroxでBravo(1974年)を開発したCharles Simonyiは、Microsoftに移籍しWordを開発する。しかし、MS-DOS版Word 1.0(1983年)では、クリップボードとはいわずスクラッチパッドと呼んだ。スクラッチバッドは、電話の伝言メモなどに使う切り離しが簡単に行えるメモ帳のこと。ただし、Wordは、カット&ペーストという用語を使う。

Windowsにクリップボードという用語が登場するのは、Windows Ver.1.0(1985年)からである。Windows標準搭載アプリケーションの1つに、「Clipboard.exe」と呼ばれる、クリップボードビューアーがあった。また、Windowsは、システムとしてクリップボードをサポートするためのAPIを搭載していた。

Windowsのクリップボードのやり方は、この頃から変わっていない。アプリケーションは、APIを使って、ユーザーが指定した情報をクリップボードに保存する。このとき、Windowsが定める標準データ形式などを使い、できる限り多くのデータ形式でデータを保存する。というのは、貼り付けを行うアプリケーション側がどのような形式を望むのかは、この時点ではわからないからだ。そして、場合によっては、コピー元アプリケーションはもう終了しているかもしれないからだ。

現在のWindowsには、クリップボードビューアーが付属していない。しかし、クリップボードにどのような形式でデータが保存されているのかは、PowerShellで調べることができる。


Add-Type -AssemblyName PresentationCore ;
[System.Windows.Clipboard]::GetDataObject().GetFormats()

1行目は、必要なアセンブリをロードするもの。2行目が、.NETのクリップボードクラスのGetFormatsメソッドによる、クリップボードに格納されているデータ形式の出力である(写真01)。ここで表示されるタイプの一覧は、DataFormats クラス (System.Windows)に記述がある。

  • 写真01: Excelで範囲を選択してコピーしたあと、コマンドを実行したもの。このように多数の形式でクリップボードにデータが保存される。Excelは、「XML Spreadsheet」形式などで完全なデータを転送することができる。Excel自身であれば、これを解釈するのは簡単なので、ほぼ完全なコピー&ペーストが行える

ただし、Win32APIでは、クリップボードのデータタイプは、数値で表現され、もっと細かいデータ形式(標準クリップボード形式 (Winuser.h))が定義されている。.NETのClipboardクラスは、Win32のClipboard関数(API)の上に構築されているが、Win32APIを使うほうがより細かくクリップボードによるデータ交換を制御できる。Win32APIでは、クリップボードには、実際のデータ形式を格納せず、メッセージ通知により、コピー元アプリケーションとコピー先アプリケーションでデータを交換する手法などが利用できる。

クリップボードの基本概念が実装されてから約60年、コンピュータへのカット&ペーストの導入から約50年が経過する。現在でも「コピペ」などと呼ばれ、普通に使われている機能だが、半世紀も前のものと考えると感慨深い。

今回のタイトルネタは、ジョン・マルコムの「テスラの最終兵器」(扶桑社ミステリー文庫。原題TESLA TRINITY)である。こちらは、エジソンとの直流、交流による対立で有名なニコラ・テスラ(Nikola Tesla)に材を取る。テスラは亡くなる前に究極の防衛兵器「電磁バリア」を開発、それを3つに分けて隠した。20世紀に入り、その存在が明らかになるとソ連、アメリカ、英国が争奪戦を繰り広げる、という話。1989年の初版ながら、今では古書でしか入手できないようだ。面白かったのだが、売れなかったんだろうねぇ。似たようなタイトルにダーク・ピットシリーズで、有名なクライブ・カッスラーの「テスラの超兵器を粉砕せよ(NUMAファイルシリーズ 11)」(扶桑社。2021年)がある(これは読んでない)。

なお、クリップボードを考案したのは「テスラー(Tesler)」である。ちなみに宇宙戦艦ヤマトとは関係がない。