クリップボードは、一部のオペレーティングシステムが短期的な保存とアプリケーション間の転送のために提供するバッファです。 [ 1 ]
クリップボードは、プログラムが切り取り、コピー、貼り付け操作を指定できるアプリケーションプログラミングインターフェースを提供します。ユーザーがこれらの操作を実行するためのメソッド(キーバインドやメニュー選択など)は、プログラム側で定義する必要があります。要素がコピーまたは切り取られた場合、その要素がどこに貼り付けられても適切な結果が得られるように、クリップボードには十分な情報が保存されている必要があります。アプリケーションプログラムは、オペレーティングシステムが提供するクリップボード機能を拡張できます。クリップボードマネージャは、ユーザーにクリップボードに対する追加の制御機能を提供する場合があります。クリップボードの具体的なセマンティクスはオペレーティングシステムによって異なり、同じシステムのバージョン間でも異なる場合があり、プログラムやユーザーの設定によって変更されることもあります。
WindowsとmacOSは単一のクリップボードトランザクションをサポートしています。[ 2 ] [ 3 ]ただし、Linuxデスクトップでは一般的に、クリップボードトランザクションの完全な履歴(キルリングと呼ばれることもあります)がユーザーに提供され、複数の情報を一度に保存して、必要に応じて取得することができます。
小さなテキストスニペット用のバッファとしてのクリップボードは、ペンティ・カネルヴァが削除されたテキストを保存し、復元するために初めて使用しました。[ 4 ]ある場所でテキストを削除し、別の場所で復元できるため、「削除」という用語はこの場合には想定されていませんでした。ラリー・テスラーは1973年にこれをカット、コピー、ペーストと改名し、このバッファを「クリップボード」と名付けました。これらの技術では、コピーまたは切り取ったデータを一時的に保存するためのクリップボードが必要であるためです。[ 5 ]
アプリケーションは、オブジェクトのシリアル化された表現、または promise (大きなオブジェクトの場合)を提供することで、クリップボードを介して通信します。 [ 6 ]状況によっては、特定の共通データ形式の転送が抽象ファクトリの使用によって不透明に実現される場合があります。たとえば、Mac OS X はNSImageというクラスを使用して、クリップボードに格納されている画像データへのアクセスを提供しますが、オブジェクトの裏付けとなる画像データの実際の形式は隠されています。送信側と受信側のアプリケーションは、多くの場合、許容される型変換を提供するアクティブなGUI ウィジェットと連携して、転送可能な形式をネゴシエートします。ペーストボードは、URL、色、画像、文字列、属性付き文字列 (リッチ テキスト)、サウンドなどの一般的な項目の転送を可能にします。オペレーティング システムと GUI ツールキットは、リッチテキストからプレーン テキストへの変換やその逆の変換など、いくつかの一般的な変換を提供する場合があります。データ転送用のさまざまな型識別子が最新のオペレーティング システムでサポートされており、 MIMEとUniform Type Identifierの間など、型システム間の許容されるマッピングを自動的に提供します。[ 7 ] [ 8 ]
クリップボードハイジャックまたはクリップボードインジェクションは、ユーザーのクリップボードの内容を悪意のあるウェブサイトへのリンクなどの悪意のあるデータに置き換えるエクスプロイトです。 [ 9 ]例えば、ユーザーが暗号通貨の受信アドレスをクリップボードにコピーすると、ハイジャックプログラムはそれをハイジャッカーが管理するアドレスで上書きできるため、ユーザーがそのアドレスを貼り付けると、暗号通貨は意図した受信者ではなくハイジャッカーに送信されます。[ 10 ]一部のセキュリティホールは修正されましたが、JavaScript は「ペーストジャッキング」と呼ばれる攻撃によってクリップボードの内容を変更するために依然として使用できます。[ 11 ] [ 12 ]この攻撃を開発した Dylan Ayrey は、このエクスプロイトを使用してユーザーを騙して実行したくないコマンドを実行させる方法を示す Web サイトを立ち上げました。[ 13 ]
ウェブページがクリップボードのデータを取得する脆弱性が存在しています。2013年初頭、研究者らはAndroidベースのパスワードマネージャーに起因するリスクを明らかにし、これらのアプリの中でも最も人気のある21種類のパスワードが、Androidデバイス上の他のアプリ、特に非常に低い権限を持つアプリからアクセスできる可能性があることを文書化しました。[ 14 ]ジョー・シーグリスト氏は、これは「 Android上で動作するすべてのものに影響を与えるOSレベルの問題」であると指摘しています。[ 15 ] [ 1 ]

クリップボードマネージャ拡張機能は、オペレーティングシステムに統合されたクリップボード機能に機能を追加します。ユーザーがクリップボードを操作できるようにするアプリケーションです。Linuxなどの互換性のない複数のGUIツールキットを使用するプラットフォームでは、異なるフレームワークを使用するアプリケーション間でデータを転送するために、クリップボードマネージャがよく使用されます。
クリップボードマネージャが複数のカット&ペーストトランザクションを提供する場合、クリップボードはスタックまたはスクラップブックのように扱われ、新しいカット&コピーは最近のトランザクションのリストに追加されます。標準的な貼り付け操作では最新のトランザクションがコピーされますが、特殊な貼り付け操作では他の保存されたトランザクションにアクセスできます。これらのマネージャは通常、トランザクション履歴を表示するウィンドウも提供しており、ユーザーは以前のコピーを選択、編集、フォーマットの変更、さらには検索も行うことができます。
ほとんどのオペレーティングシステム(Windows、macOS、Linux、X11、Android、iOSなど)は、クリップボードの内容を永続ストレージに保存しません。ユーザーがログアウトしたりシステムを再起動すると、クリップボードの内容は削除されます。そのため、クリップボードを永続的に保存する機能が追加されました。別の例としては、コピーまたは切り取りイベント時にクリップボードのデータをオンラインの場所に保存することで、ローカルクリップボードをオンラインアプリケーションで使用できるようにし、このデータをオンラインアプリケーションで貼り付けられるようにします。クリップボードマネージャーは、コピーと貼り付けをサポートしていないソフトウェアの制限を克服するツールとしても機能します(たとえば、リモートWindowsサーバーにログインしているときに、ユーザー名とパスワードをコピーして貼り付けることはできません)。
Amigaオペレーティングシステムは256ユニットを使用するため、複数のクリップボードを同時に使用できます。[ 16 ]
Androidは、最大1つのクリップオブジェクトを保持でき、システム全体からアクセスできるクリップボードを提供しています。単純なテキストはクリップボードに直接保存され、複雑なデータは参照によって保存されます。クリップオブジェクトの形式は、テキスト文字列、URIオブジェクト、またはインテントの3つのいずれかです。[ 17 ]
クリップボードとやりとりするために、アプリはClipboardManagerクラス[ 18 ]とシステムコールを使用してオブジェクトの切り取り、コピー、貼り付けを行います。
Android 8.0では、クリップボードが初めてユーザーインターフェースに表示されます。ユーザーがクリップボードから貼り付けようとしているときに、「クリップボード」オプションが表示され、過去にクリップボードにコピーまたは切り取った多くのオブジェクトにアクセスできます。これとは別に、以前のバージョンでは、クリップボードを利用できるアプリ以外では、ユーザーはクリップボードにアクセスできませんでした。
iOSでは、OS Xと同様にクリップボードは「ペーストボード」と呼ばれます。このオペレーティングシステム上のアプリは、UIPasteboardクラスのインスタンスと呼ばれる追加のペーストボードを作成できます。これらのインスタンスはパブリックまたはプライベートに設定できます。1つのインスタンスには、1つのアイテム、または異なる形式の複数のアイテムを保持できます。[ 19 ]
フォーマットはUniform Type Identifiers(UTI)によって識別されます。[ 20 ]
ペーストボードに含まれるデータはGUI経由ではアクセスできず、システムとアプリケーションからのみアクセス可能です。
macOSのクリップボードには、1 つの項目が複数の形式で保持されます。
クリップボードの内容は、Finderの編集メニューから「クリップボードを表示」を選択することで確認できます。クリップボードビューアを使用すると、生データと保存された形式を確認できます。[ 21 ]
次のコマンドを使用して、コマンドラインからクリップボードにアクセスできます。[ 22 ] [ 23 ]
$ # データをクリップボードにコピーするには:
$ echo 'hello world' | pbcopy
$ # クリップボードから貼り付けるには: $ pbpaste
hello world
| クリップ | |
|---|---|
ReactOS コマンド clip | |
| 開発者 | Microsoft、ReactOS 貢献者 |
| オペレーティング·システム | Windows、ReactOS |
| タイプ | 指示 |
| ライセンス | Windows:独自の 商用ソフトウェア ReactOS: GNU General Public License |
| Webサイト | docs |
Microsoft WindowsおよびReactOSのクリップボードには、1 つの項目が複数の形式で保持されます。
各アイテムには少なくとも1つのクリップボード形式がありますが、同じデータでも異なる形式を持つ場合があります。3つの異なる形式は次のとおりです。[ 24 ]
Windows XPまでは、クリップボードはクリップブックビューアアプリケーションを介してアクセスできました。[ 27 ] Windowsの新しいバージョンでは、クリップボードマネージャーを介してコンテンツにアクセスできます。
データは、clipコマンドを使用してコマンドライン経由でWindows [ 28 ]およびReactOS [ 29 ]のクリップボードに保存できます。[ 30 ]
$ # フォルダの内容をクリップボードに貼り付ける:
$ dir | clip
クリップボードにはPowerShell経由でもアクセスできます: [ 31 ] [ 32 ]
# ディレクトリの内容をクリップボードに貼り付けるには
Set-Clipboard -Path "C:\directory\"
# クリップボードの内容を取得するには
Get-Clipboard
Windows 10およびWindows 11にはクリップボード アプリケーションが搭載されており、複数のテキストベースのクリップボード項目を保存できます。Windows キー + V キーを押すとアクセスできます。
Symbian S60(シリーズ60 )には、エディションに応じて、画像とリッチテキストの保存をサポートするクリップボードが組み込まれています。 [ 33 ] [ 34 ] [ 35 ]
テキストをコピーして貼り付けるには、 を押したまま#、左または右にスクロールしてテキストをハイライト表示します。テキストをクリップボードにコピーするには、 を押したままを選択します。テキストを文書に挿入するには、 を押したままを選択します。#
Copy#Paste
S60v3 (S60 3rd Edition, Symbian 9.1-9.2) では、SDK で提供されるクリップボードの例:..\Examples\SysLibs\Clipboard\Basicsクリップボードの読み書きにはCPlainText次のクラスを使用します:
CPlainText非常に良い解決策になるかもしれません。しかし、Symbianの現実では、マニュアルを読んでみてください。CPlainTextあなたのケースでは受け入れられない解決策として考えられる、小さいながらも重要なフレーズが1つあります。「…すべての改行は段落区切り文字に変換されます…」
— Nokia、クリップボードのコピー/切り取り/貼り付け、http://wiki.forum.nokia.com/index.php/Clipboard_Copy/Cut/Paste
— Yury Schkatula、Symbian クリップボードとの統合、https://symbianic-life.blogspot.com/2010/03/integrate-with-symbian-clipboard.html
Symbian Belleでは、クリップボードのサポートはCClipboardBasic Application Framework Library (BAFL)のクラスで定義されています。[ 36 ] [ 37 ]
Symbianの各エディション向けに、複数アイテムのクリップボードをサポートする無料および商用のサードパーティ製クリップボード管理アプリケーションが多数作成されました。[ 38 ] [ 39 ] [ 40 ] [ 41 ]
UnixおよびLinuxシステムで一般的に使用されているX Window Systemは、3つのクリップボードを提供しており、それぞれ「CLIPBOARD」、「PRIMARY」、「SECONDARY」と呼ばれます。[ 42 ]それぞれの選択項目の使用方法と処理は標準化されていません。GNOMEやKDEを含むほとんどの最新のツールキットとデスクトップ環境は、 freedesktop.orgの仕様で概説されている、広く受け入れられている慣例に従っています。[ 43 ] 1つの選択項目であるCLIPBOARDは、Windowsと同じショートカットを持つ従来のクリップボードのセマンティクスに使用されます。もう1つの選択項目であるPRIMARYは、X11固有のメカニズムです。データはハイライトされるとすぐに「コピー」され、マウスの3番目のボタン(中ボタン)で貼り付けられます。[ 44 ]このコピーされたデータは通常、CLIPBOARDの選択項目とは分離されており、その内容は変更されません。[ 45 ] SECONDARYはPRIMARYの代替として計画されましたが、使用方法は一貫していません。[ 42 ]
3つのクリップボードへのコマンドラインアクセスは、xclipとxselツールで利用できます。[ 46 ]
$ # xclip を使用して標準出力をクリップボードに貼り付ける
$ echo text | xclip -in -selection clipboard
$ # xsel を使用して標準出力をクリップボードに貼り付ける
$ echo text | xsel --clipboard
OS XとWindowsの主な違いは、クリップボード(CLIPBOARD)には実際にはデータは保存されず、コピーまたは切り取られたデータへの参照のみが保存される点です。アプリケーションはクリップボード選択の所有権を主張し、その所有権をXサーバーに伝えます。[ 44 ]このデータを貼り付ける際、データとその利用可能な形式は、クリップボード選択を所有するアプリケーションに要求されます。[ 47 ]
アプリケーションはAPIを介してクリップボードまたはそのデータにアクセスできます。
JavaScriptには、ユーザーのクリップボードデータの変更を検出するクラス(ClipboardEvent) [ 48 ]と、クリップボードの内容を変更したり読み取ったりする関数(clipboardData.getData()、clipboardData.setData()) [ 49 ]が存在しますが、ユーザーのクリップボードを変更するとセキュリティ上の問題が発生する可能性があるため、すべてのブラウザでサポートされているわけではありません。
Qtには、サポートされているすべてのプラットフォーム用のラッパー[ 50 ]が存在します。これは、QClipboardクラスを用いてウィンドウシステムのクリップボードへのアクセスを提供します。このクラスは、関数による一般的なデータ型へのアクセスを容易にします。[ 51 ]クリップボードに格納されている要素のデータ型はMIMEで示され、このクラスの関数を用いてMIMEデータをクリップボードに格納することもできます。
ClipBook: ClipBoard Manager (無料)