クリップボードの共有を実現する「Universal Clipboard」

MacとiPhone、iPadにApple Watchという異なるハードウェアを同じルーツのOSでまとめるAppleの考えかたは、「Continuity(連続性)」という言葉で説明される。ここ数年のmacOS/iOSでは、AirDropにInstant Hotspot、そしてHandoffと連続性で説明がつく機能が立て続けに投入されてきており、最新のmacOS Sierraにも「Universal Clipboard」が追加されたことは記憶に新しい。

その通信経路は、Bluetooth Low Energy(BLE)と無線LANのコンビネーションというHandoffやAirDropでもお馴染みのもので、動作対象機種もそれらと同じだ。システム環境設定「一般」パネルにある「このMacとiCloudデバイス間でのHandoffを許可」チェックボックスをオフにすると、Universal Clipboardもあわせて無効化される理由はここにある。

なお、Universal Clipboardは既存のペーストボード(クリップボードと同義)に拡張を施したものであり、クリップボードに取り込めるデータは同様と考えていい。テキスト以外のバイナリデータも、iOSデバイスやMacとの間で自由にコピー&ペーストできるのだ。もちろん、手に馴染んだショートカットキー(Commad-C/Command-V)もそのまま使える。

実際に『写真』アプリを使い、カメラロールに保存されている写真(JPEG)とスクリーンショット(PNG)をコピーしてmacOS Sierraの『プレビュー』にペーストしてみたが、まったく問題なし。写真はEXIFデータや位置情報も含めてコピー&ペーストできていたので、静止画に関しては自由に扱えると考えていいだろう。『メール』や『メモ』のテキスト、Safariで表示しているページ(URLデータ)も、ひと呼吸置くか置かないかの短い時間でペーストが完了した。

しかし、どうにも「便利」な感じが弱い。物理キーがないiOSデバイスは、共有メニューや(画面をタップすると現れる)ポップアップメニューで操作するしかなく、使い慣れた「Commad-CとCommand-Vの連続技」を繰り出せない。Universal Clipboardらしい使いかた、Universal Clipboardだからできることが必要なのではないか……そこで、従来からある2つのコマンド「pbpaste」と「pbcopy」を使い、Universal Clipboardならではの使いかたを考えてみた。

Universal Clipboardの有効/無効は、Handoffのチェックボックスで変更できる

iPhoneのテキストをシフトJISで書き出す

iOSデバイスで見つけたものの編集作業はMacで、という文章はUniversal Clipboard経由でMacに持ち込むことが断然スマート。お気に入りにテキストエディタでCommand-Vを押すだけなのだから、話は早い。だが、ファイルに書き出すことが目的だとしたら? AirDropするという手もあるが、その場合テキストエンコーディングがUTF-8になってしまう。

そんなときには、Terminalで「pbpaste」を実行しよう。このコマンドはプレインテキスト/リッチ以外のデータは扱えないものの、ペーストボード上のテキストを標準出力へ書き出すことができる。しかし、iOS上のテキストはUTF-8のため、iconvコマンドにパイプしてシフトJISなど他のエンコーディングに変換するというわけだ。

$ pbpaste | iconv -f UTF8 -t SJIS > strings.txt

iOSのテキストはUTF-8で符合化されているため、iconvコマンドでSJISに変換した

テキストの書式を取り除いてペーストする

反対にMacで見つけたテキストをiOSデバイスに持ち込む場合、「書式」が問題になる。Macの場合、書式を付けずにペーストする機能を備えたアプリは珍しくないが、iOSアプリではそうもいかない。WEBページの気になった部分を『メモ』に貼り付けたところ、見出し部分が太字になってしまった、というケースが典型例といえるだろう。

そんなときには、以下のコマンドラインをTerminalで実行しよう。ペーストボード上のデータをプレインテキストとしてコピーする(ペーストボードに取り込む)という処理により、書式部分が取り除かれるというわけだ。

このコマンドラインは、iOSデバイス単独での書式抜きコピー&ペーストにも使える。ペーストボードはiOSとmacOSで共有されるため、Mac側での処理がそのままiOSデバイスにも反映されるからだ。iPhoneで書式を取り除こうとすると、サードパーティー製アプリを使うなどなかなか手間がかかるが、実はコマンドライン1行で済んでしまう。Universal Clipboardの特長を生かしたさりげないテクだと思うが、いかがだろう?

$ pbpaste -Prefer txt | pbcopy

このコマンドラインを実行するだけで、iOSデバイス/Macどちらでコピーしたテキストも書式を取り除ける