コピー&ペースト操作をサポートするために使用されるデータストレージ

クリップボードは、一部のオペレーティングシステムが短期的な保存とアプリケーション間の転送のために提供するバッファです。 [ 1 ]

クリップボードは、プログラムが切り取り、コピー、貼り付け操作を指定できるアプリケーションプログラミングインターフェースを提供します。ユーザーがこれらの操作を実行するためのメソッド(キーバインドメニュー選択など)は、プログラム側で定義する必要があります。要素がコピーまたは切り取られた場合、その要素がどこに貼り付けられても適切な結果が得られるように、クリップボードには十分な情報が保存されている必要があります。アプリケーションプログラムは、オペレーティングシステムが提供するクリップボード機能を拡張できます。クリップボードマネージャは、ユーザーにクリップボードに対する追加の制御機能を提供する場合があります。クリップボードの具体的なセマンティクスはオペレーティングシステムによって異なり、同じシステムのバージョン間でも異なる場合があり、プログラムやユーザーの設定によって変更されることもあります。

WindowsmacOSは単一のクリップボードトランザクションをサポートしています。[ 2 ] [ 3 ]ただし、Linuxデスクトップでは一般的に、クリップボードトランザクションの完全な履歴(キルリングと呼ばれることもあります)がユーザーに提供され、複数の情報を一度に保存して、必要に応じて取得することができます。

歴史

[編集]

小さなテキストスニペット用のバッファとしてのクリップボードは、ペンティ・カネルヴァが削除されたテキストを保存し、復元するために初めて使用しました。[ 4 ]ある場所でテキストを削除し、別の場所で復元できるため、「削除」という用語はこの場合には想定されていませんでした。ラリー・テスラーは1973年にこれをカット、コピー、ペーストと改名し、このバッファを「クリップボード」と名付けました。これらの技術では、コピーまたは切り取ったデータを一時的に保存するためのクリップボードが必要であるためです。[ 5 ]

データ形式

[編集]

アプリケーションは、オブジェクトのシリアル化された表現、または promise (大きなオブジェクトの場合)を提供することで、クリップボードを介して通信します。 [ 6 ]状況によっては、特定の共通データ形式の転送が抽象ファクトリの使用によって不透明に実現される場合があります。たとえば、Mac OS X はNSImageというクラスを使用して、クリップボードに格納されている画像データへのアクセスを提供しますが、オブジェクトの裏付けとなる画像データの実際の形式は隠されています。送信側と受信側のアプリケーションは、多くの場合、許容される型変換を提供するアクティブなGUI ウィジェットと連携して、転送可能な形式をネゴシエートします。ペーストボードは、URL、色、画像、文字列、属性付き文字列 (リッチ テキスト)、サウンドなどの一般的な項目の転送を可能にします。オペレーティング システムと GUI ツールキットは、リッチテキストからプレーン テキストへの変換やその逆の変換など、いくつかの一般的な変換を提供する場合があります。データ転送用のさまざまな型識別子が最新のオペレーティング システムでサポートされており、 MIMEUniform Type Identifierの間など、型システム間の許容されるマッピングを自動的に提供します[ 7 ] [ 8 ]

コンピュータセキュリティ

[編集]

クリップボードハイジャックまたはクリップボードインジェクションは、ユーザーのクリップボードの内容を悪意のあるウェブサイトへのリンクなどの悪意のあるデータに置き換えるエクスプロイトです。 [ 9 ]例えば、ユーザーが暗号通貨の受信アドレスをクリップボードにコピーすると、ハイジャックプログラムはそれをハイジャッカーが管理するアドレスで上書きできるため、ユーザーがそのアドレスを貼り付けると、暗号通貨は意図した受信者ではなくハイジャッカーに送信されます。[ 10 ]一部のセキュリティホールは修正されましたが、JavaScript は「ペーストジャッキング」と呼ばれる攻撃によってクリップボードの内容を変更するために依然として使用できます。[ 11 ] [ 12 ]この攻撃を開発した Dylan Ayrey は、このエクスプロイトを使用してユーザーを騙して実行したくないコマンドを実行させる方法を示す Web サイトを立ち上げました。[ 13 ]

ウェブページがクリップボードのデータを取得する脆弱性が存在しています。2013年初頭、研究者らはAndroidベースのパスワードマネージャーに起因するリスクを明らかにし、これらのアプリの中でも最も人気のある21種類のパスワードが、Androidデバイス上の他のアプリ、特に非常に低い権限を持つアプリからアクセスできる可能性があることを文書化しました。[ 14 ]ジョー・シーグリスト氏は、これは「 Android上で動作するすべてのものに影響を与えるOSレベルの問題」であると指摘しています。[ 15 ] [ 1 ]

クリップボードの管理と拡張機能

[編集]
Glipper、クリップボード管理プログラムの例

クリップボードマネージャ拡張機能は、オペレーティングシステムに統合されたクリップボード機能に機能を追加します。ユーザーがクリップボードを操作できるようにするアプリケーションです。Linuxなどの互換性のない複数のGUIツールキットを使用するプラットフォームでは、異なるフレームワークを使用するアプリケーション間でデータを転送するために、クリップボードマネージャがよく使用されます。

クリップボードマネージャが複数のカット&ペーストトランザクションを提供する場合、クリップボードはスタックまたはスクラップブックのように扱われ、新しいカット&コピーは最近のトランザクションのリストに追加されます。標準的な貼り付け操作では最新のトランザクションがコピーされますが、特殊な貼り付け操作では他の保存されたトランザクションにアクセスできます。これらのマネージャは通常、トランザクション履歴を表示するウィンドウも提供しており、ユーザーは以前のコピーを選択、編集、フォーマットの変更、さらには検索も行うことができます。

ほとんどのオペレーティングシステム(Windows、macOS、Linux、X11、Android、iOSなど)は、クリップボードの内容を永続ストレージに保存しません。ユーザーがログアウトしたりシステムを再起動すると、クリップボードの内容は削除されます。そのため、クリップボードを永続的に保存する機能が追加されました。別の例としては、コピーまたは切り取りイベント時にクリップボードのデータをオンラインの場所に保存することで、ローカルクリップボードをオンラインアプリケーションで使用できるようにし、このデータをオンラインアプリケーションで貼り付けられるようにします。クリップボードマネージャーは、コピーと貼り付けをサポートしていないソフトウェアの制限を克服するツールとしても機能します(たとえば、リモートWindowsサーバーにログインしているときに、ユーザー名とパスワードをコピーして貼り付けることはできません)。

オペレーティングシステム固有のクリップボード

[編集]

アミーガOS

[編集]

Amigaオペレーティングシステムは256ユニットを使用するため、複数のクリップボード同時に使用できます。[ 16 ]

アンドロイド

[編集]

Androidは、最大1つのクリップオブジェクトを保持でき、システム全体からアクセスできるクリップボードを提供しています。単純なテキストはクリップボードに直接保存され、複雑なデータは参照によって保存されます。クリップオブジェクトの形式は、テキスト文字列、URIオブジェクト、またはインテントの3つのいずれかです。[ 17 ]

クリップボードとやりとりするために、アプリはClipboardManagerクラス[ 18 ]とシステムコールを使用してオブジェクトの切り取り、コピー、貼り付けを行います。

Android 8.0では、クリップボードが初めてユーザーインターフェースに表示されます。ユーザーがクリップボードから貼り付けようとしているときに、「クリップボード」オプションが表示され、過去にクリップボードにコピーまたは切り取った多くのオブジェクトにアクセスできます。これとは別に、以前のバージョンでは、クリップボードを利用できるアプリ以外では、ユーザーはクリップボードにアクセスできませんでした。

iOS

[編集]

iOSでは、OS Xと同様にクリップボードは「ペーストボード」と呼ばれます。このオペレーティングシステム上のアプリは、UIPasteboardクラスのインスタンスと呼ばれる追加のペーストボードを作成できます。これらのインスタンスはパブリックまたはプライベートに設定できます。1つのインスタンスには、1つのアイテム、または異なる形式の複数のアイテムを保持できます。[ 19 ]

フォーマットはUniform Type Identifiers(UTI)によって識別されます。[ 20 ]

ペーストボードに含まれるデータはGUI経由ではアクセスできず、システムとアプリケーションからのみアクセス可能です。

macOS

[編集]

macOSのクリップボードには、1 つの項目が複数の形式で保持されます。

クリップボードの内容は、Finderの編集メニューから「クリップボードを表示」を選択することで確認できます。クリップボードビューアを使用すると、生データと保存された形式を確認できます。[ 21 ]

次のコマンドを使用して、コマンドラインからクリップボードにアクセスできます。[ 22 ] [ 23 ]

$ # データをクリップボードにコピーするには: 
$ echo 'hello world' | pbcopy
 $ # クリップボードから貼り付けるには: $ pbpaste
 hello world   

Microsoft Windows と ReactOS

[編集]
クリップ
開発者Microsoft、ReactOS 貢献者
オペレーティング·システムWindowsReactOS
タイプ指示
ライセンスWindows:独自の 商用ソフトウェア
ReactOS: GNU General Public License
Webサイトdocs .microsoft .com /en-us /windows-server /administration /windows-commands /clip

Microsoft WindowsおよびReactOSのクリップボードには、1 つの項目が複数の形式で保持されます。

各アイテムには少なくとも1つのクリップボード形式がありますが、同じデータでも異なる形式を持つ場合があります。3つの異なる形式は次のとおりです。[ 24 ]

  • 標準フォーマット[ 25 ](例:CF_BITMAP、CF_UNICODETEXT)、
  • 登録されたフォーマット[ 26 ](例:CF_HTML)
  • 社内使用のためのプライベートフォーマット

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

—  NokiaNokia N82ユーザーガイド、メッセージング: テキストとリストの編集

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 ]

Xウィンドウシステム

[編集]

UnixおよびLinuxシステムで一般的に使用されているX Window Systemは、3つのクリップボードを提供しており、それぞれ「CLIPBOARD」、「PRIMARY」、「SECONDARY」と呼ばれます。[ 42 ]それぞれの選択項目の使用方法と処理は標準化されていません。GNOMEKDEを含むほとんどの最新のツールキットとデスクトップ環境は、 freedesktop.orgの仕様で概説されている、広く受け入れられている慣例に従っています[ 43 ] 1つの選択項目であるCLIPBOARDは、Windowsと同じショートカットを持つ従来のクリップボードのセマンティクスに使用されます。もう1つの選択項目であるPRIMARYは、X11固有のメカニズムです。データはハイライトされるとすぐに「コピー」され、マウスの3番目のボタン(中ボタン)で貼り付けられます。[ 44 ]このコピーされたデータは通常、CLIPBOARDの選択項目とは分離されており、その内容は変更されません。[ 45 ] SECONDARYはPRIMARYの代替として計画されましたが、使用方法は一貫していません。[ 42 ]

3つのクリップボードへのコマンドラインアクセスは、xclipxselツールで利用できます。[ 46 ]

$ # xclip を使用して標準出力をクリップボードに貼り付ける
$ echo text | xclip -in -selection clipboard        
$ # xsel を使用して標準出力をクリップボードに貼り付ける
$ echo text | xsel --clipboard
      

OS XとWindowsの主な違いは、クリップボード(CLIPBOARD)には実際にはデータは保存されず、コピーまたは切り取られたデータへの参照のみが保存される点です。アプリケーションはクリップボード選択の所有権を主張し、その所有権をXサーバーに伝えます。[ 44 ]このデータを貼り付ける際、データとその利用可能な形式は、クリップボード選択を所有するアプリケーションに要求されます。[ 47 ]

API

[編集]

アプリケーションはAPIを介してクリップボードまたはそのデータにアクセスできます

JavaScript

[編集]

JavaScriptには、ユーザーのクリップボードデータの変更を検出するクラス(ClipboardEvent) [ 48 ]と、クリップボードの内容を変更したり読み取ったりする関数(clipboardData.getData()、clipboardData.setData()) [ 49 ]が存在しますが、ユーザーのクリップボードを変更するとセキュリティ上の問題が発生する可能性があるため、すべてのブラウザでサポートされているわけではありません。

クォート

[編集]

Qtには、サポートされているすべてのプラットフォーム用のラッパー[ 50 ]が存在します。これは、QClipboardクラスを用いてウィンドウシステムのクリップボードへのアクセスを提供します。このクラスは、関数による一般的なデータ型へのアクセスを容易にします。[ 51 ]クリップボードに格納されている要素のデータ型はMIMEで示され、このクラスの関数を用いてMIMEデータをクリップボードに格納することもできます。

参照

[編集]

参考文献

[編集]
  1. ^ a b 「What is a Clipboard in Computing? - Definition from Techopedia」Techopedia.com . 2018年2月2日時点のオリジナルよりアーカイブ2018年2月1日閲覧
  2. ^ Kimmatkar, Sarang B. (2014). 「デフォルトクリップボードの機能拡張」(IJCSIT) International Journal of Computer Science and Information Technologies 5 . 6 .
  3. ^ Stephens, Rod (2010). Visual Basic 2010: プログラマーズ・リファレンス. Library Genesis. インディアナポリス, IN: Wiley Pub., Inc. ISBN 978-0-470-49983-2
  4. ^ モグリッジ、ビル (2007).インタラクションのデザイン. マサチューセッツ州ケンブリッジ: MIT プレス. p.  65ff . ISBN 9780262134743
  5. ^ Larry Tesler. 「ユーザーエクスペリエンスの回顧」 . 2018年2月2日時点のオリジナルよりアーカイブ2018年1月23日閲覧。
  6. ^ 「ファイルのドラッグ」 . developer.apple.com . 2018年12月9日閲覧。
  7. ^ “NSPasteboard - AppKit | Apple Developer Documentation” . developer.apple.com . 2018年5月26日時点のオリジナルよりアーカイブ。 2018年12月9日閲覧
  8. ^ 「Uniform Type Identifiersの採用」 developer.apple.com . 2018年7月21日時点のオリジナルよりアーカイブ2018年12月9日閲覧。
  9. ^ 「クリップボードハイジャック攻撃とは? - WhatIs.comによる定義」WhatIs.com . 2017年1月5日時点のオリジナルよりアーカイブ2017年1月4日閲覧
  10. ^ 「Torブラウザを装ったクリップボードインジェクターが配布される」 securelist.com 2023年3月28日2024年5月15日閲覧
  11. ^ リチャード・チャーグウィン「ペーストジャック攻撃でクリップボードが脅威に」 The Register. 2017年1月4日時点のオリジナルよりアーカイブ。 2017年1月4日閲覧
  12. ^ 「研究者がユーザーのクリップボードを狙った『ペーストジャッキング』ハッキング攻撃について警告」グラハム・クルーリー、2016年5月26日。2017年1月5日時点のオリジナルよりアーカイブ。 2017年1月4日閲覧
  13. ^ “dxa4481/Pastejacking” . GitHub . 2017年1月4日時点のオリジナルよりアーカイブ2017年1月4日閲覧。
  14. ^ ファール, サシャ; ハーバッハ, マリアン; オルトロッジ, マーテン; ムダース, トーマス; スミス, マシュー (2013). 「おい、お前、私のクリップボードから降りろ」(PDF) .金融暗号とデータセキュリティ. コンピュータサイエンス講義ノート. 第7859巻. pp.  144– 161. doi : 10.1007/978-3-642-39884-1_12 . ISBN  978-3-642-39883-4. 2017年9月19日時点のオリジナルよりアーカイブ (PDF) . 2017年1月4日閲覧
  15. ^ 「Androidでパスワードマネージャーを使う?スニッフィング攻撃の危険にさらされる可能性」 Ars Technica、2014年11月21日。2017年1月4日時点のオリジナルよりアーカイブ。 2017年1月4日閲覧
  16. ^ 「クリップボードデバイス - AmigaOSドキュメントWiki」 . wiki.amigaos.net . 2018年2月5日時点のオリジナルよりアーカイブ。 2018年2月3日閲覧
  17. ^ 「コピー&ペースト | Android Developers」 . developer.android.com . 2018年2月7日時点のオリジナルよりアーカイブ2018年2月6日閲覧。
  18. ^ “ClipboardManager | Android Developers” . developer.android.com . 2018年2月7日時点のオリジナルよりアーカイブ。 2018年2月2日閲覧
  19. ^ “Pasteboard” . developer.apple.com . 2018年2月7日時点のオリジナルよりアーカイブ2018年2月1日閲覧。
  20. ^ 「Uniform Type Identifier」 . developer.apple.com . 2018年2月7日時点のオリジナルよりアーカイブ2018年2月6日閲覧。
  21. ^ “ClipboardViewer” . developer.apple.com . 2018年2月7日時点のオリジナルよりアーカイブ2018年2月6日閲覧。
  22. ^ 「OS Xのターミナルからクリップボードにコピーする」rogeriopvl.com . 2013年8月15日時点のオリジナルよりアーカイブ2013年7月2日閲覧。
  23. ^ "pbcopy(1) Mac OS X マニュアルページ" . apple.com . 2014年3月28日時点のオリジナルよりアーカイブ2013年7月2日閲覧。
  24. ^ 「クリップボード形式(Windows)」 msdn.microsoft.com。20182月7日時点のオリジナルよりアーカイブ2018年2月3日閲覧。
  25. ^ 「標準クリップボード形式(Windows)」 msdn.microsoft.com。20182月7日時点のオリジナルよりアーカイブ2018年2月3日閲覧。
  26. ^ 「HTML クリップボード形式 (Internet Explorer)」msdn.microsoft.com . 2017年8月15日. 2018年2月7日時点のオリジナルよりアーカイブ2018年2月3日閲覧。
  27. ^ 「Windows 10/8/7でクリップボードを表示・管理する」The Windows Club . 2013年4月12日. 2018年2月12日時点のオリジナルよりアーカイブ2018年2月6日閲覧。
  28. ^ "clip | Microsoft Docs" . Docs.microsoft.com. 2017年10月16日. 2019年9月26日閲覧
  29. ^ "reactos/base/applications/cmdutils/clip at master · reactos/reactos · GitHub" . Github.com . 2019年9月26日閲覧
  30. ^ 「コマンドライン出力をWindowsクリップボードにコピーする方法」 www.labnol.org 2013年8月8日. 2018年2月7日時点のオリジナルよりアーカイブ。 2018年2月6日閲覧
  31. ^ sdwheeler. 「Get-Clipboard (Microsoft.PowerShell.Management)」 . docs.microsoft.com . 2018年1月26日時点のオリジナルよりアーカイブ。 2018年2月6日閲覧
  32. ^ sdwheeler. 「Set-Clipboard (Microsoft.PowerShell.Management)」 . docs.microsoft.com . 2018年2月7日時点のオリジナルよりアーカイブ。 2018年2月6日閲覧
  33. ^ 「テキストコンテンツ内のファイルとクリップボード」 . docs.huihoo.com . 2024年10月23日閲覧。
  34. ^ Schkatula, Yury (2010年3月28日). 「Symbianic life: Symbianクリップボードとの統合」 . Symbianic life . 2024年10月23日閲覧
  35. ^ Fiodar (2019-03-06), fedor4ever/symbianClipboard2024年10月23日閲覧
  36. ^ 「基本アプリケーションフレームワークライブラリ」 . devlib.symbian.slions.net . 2024年10月23日閲覧
  37. ^ 「基本:クリップボードを使用してオブジェクトを保存および復元する」 . devlib.symbian.slions.net . 2024年10月23日閲覧
  38. ^ 「ClipBook、マルチアイテム対応Symbianクリップボードマネージャー」 All About Symbian 2014年4月8日2024年10月23日閲覧
  39. ^ Litchfield, Steve. 「Curated Symbian application store」 . stevelitchfield.com . ClipBook: ClipBoard Manager (無料)
  40. ^ 「Mclip V1.4 Symbianアプリ - PHONEKYで無料でダウンロード」 . phoneky.com . 2024年10月23日閲覧
  41. ^ 「Symbian用MagicKeys 2.12をダウンロード」 magickeys.soft32.com . 2024年10月23日閲覧
  42. ^ a b “Clipboard - ArchWiki” . wiki.archlinux.org . 2018年2月17日時点のオリジナルよりアーカイブ2018年2月16日閲覧。
  43. ^ "clipboards-spec" . freedesktop.org. 2014年12月24日時点のオリジナルよりアーカイブ2014年8月16日閲覧。
  44. ^ a b 「コピー&ペースト、ドラッグ&ドロップ [MI Wiki]」wiki.mi.ur.de(ドイツ語)。2018年2月16日時点のオリジナルよりアーカイブ。 2018年2月16日閲覧
  45. ^ "gnu.org" . www.gnu.org . 2017年12月24日時点のオリジナルよりアーカイブ。 2018年2月16日閲覧
  46. ^ 「コマンドラインでシステムクリップボードにコピー&ペーストする — Fernando Basso」fernandobasso.github.io . 2018年2月7日時点のオリジナルよりアーカイブ。 2018年2月6日閲覧
  47. ^ 「X選択、Xカットバッファ、Emacsキルリング」www.jwz.org2018年3月4日時点のオリジナルよりアーカイブ2018年2月2日閲覧
  48. ^ 「クリップボードAPIとイベント – ClipboardEvent」 . www.w3.org . 2018年1月28日時点のオリジナルよりアーカイブ2018年2月8日閲覧。
  49. ^ 「クリップボードAPIとイベント - 同期クリップボードAPI」www.w3.org。 2018年1月28時点のオリジナルよりアーカイブ。 2018年2月8日閲覧
  50. ^ "platforms\plugins\src - qt/qtbase.git - Qt Base (Core, Gui, Widgets, Network, ...)" . code.qt.io . 2018年2月9日時点のオリジナルよりアーカイブ2018年2月2日閲覧。
  51. ^ "QClipboard クラス | Qt GUI 5.10" . doc.qt.io. 2018年2月2日時点のオリジナルよりアーカイブ2018年2月2日閲覧

さらに読む

[編集]
[編集]