最近、外出する機会が増えたため、原稿を書く時間の捻出に苦労している。新幹線や飛行機での移動であれば、確実に着座で作業できるしラウンジを使うなどの手段もあるが、近距離移動はそうもいかない。運よく着座できたとしても、ロングシートでは隣人の目線がなんとなく気になり集中力が落ちる。Macでの作業は諦めねばならない。

いきおい、iPhoneと連携した執筆スタイルを目指すことになるが、ちょっとした書きもののたびに仰々しい作業をするのはイヤだ。ファイル転送には「AirDrop」があるし、iCloud経由でのファイル共有も可能だが、文章を綴ったり(作例として)コードを書いたりといった文字単位の作業には適さない。無意識レベルでMacからiPhoneへ、iPhoneからMacへテキストを移せないと思考の妨げになるし、仕事道具のEmacsから目線を移したくないという切なる願いもある。

そこで注目したのが「ユニバーサルクリップボード」。対応環境はiOS 10/macOS Sierra以降で同じApple IDでのサインインが必須となるが、すべて自分の持ち物であれば問題にならない。クリップボードというMac/iOSデバイスのもっとも基本的なインフラを使うので、アプリの互換性を気にする必要もない。MacとiPhoneを跨いで文字単位の作業をするには、最高の道具だ。

とはいえ、単なる"コピペ"で話が終わらないのがMacのおもしろいところ。ユニバーサルクリップボードを使いこなすあれやこれやの方法を、いくつか紹介してみよう。

  • 「ユニバーサルクリップボード」がMacとiOSデバイスを橋渡しする

Emacsでユニバーサルクリップボードを使う

一般的に、Emacsでは範囲選択の先頭で「Control-SPACE」を押し、範囲選択の最後へ移動して「Meta(Command)-W」を押すことでコピーを行う。最近のEmacs(v25.1以降)はクリップボードとキルリングのデータを共有することがデフォルトのようで、初期化ファイル(~/.emacs.d/init.el)に特別な記述をせずコピー/キルリングへの登録を行っても、ユニバーサルクリップボード経由でiPhoneにペーストできる。便利な時代だ。

ということは、C-k(kill)やC-y(yank)といったEmacsの基本操作でiPhoneと文字列をやり取りできるし、「C-x h M-w」とタイプすれば現在編集中の文書(バッファ)全体をiPhoneでペーストできる。

この方法を使えば、PythonやJavaScriptのテスト用アプリ(エディタ機能を備えたスクリプト言語のインタープリタアプリ)も快適に使える。外出する前、開いているバッファで「C-x h M-w」としたあとにiPhoneへ作業を移し、目的のアプリでペースト処理を行えばOK(ネットワークを経由するため数秒間を空けることがコツ)。帰宅後はアプリ側で全選択してコピーを実行したあと、Emacsに作業を移してC-yするだけでいいのだ。

  • バッファ全体をコピー、ひと呼吸おいてからiPhoneでペーストすればOK

Terminalからファイルをユニバーサルクリップボードへ

シェルで作業しているとき、テキストファイルをiPhoneへ転送したくなった場合には「pbcopy」を使おう。使いかたはかんたん、以下の要領でファイルをリダイレクトすればOK。シフトJISとUTF-8で試したかぎり、文字エンコード形式の違いによる文字化けも発生しないので、気軽に扱える。AirDropでファイルを転送するより断然スピーディーと思うが、いかがだろう?

$ pbcopy < codes.txt
  • 「pbcopy < ○○○」実行後にpbpasteでクリップボードの内容を確認すれば、ファイル全体が取り込まれていることがわかる

ちょっとした走り書きをクリップボードへ

pbcopyは、オプション/引数なしで起動するとプロンプトを表示し入力待ちの状態となる。入力した内容はそのままクリップボードへ、ひいてはユニバーサルクリップボードへと転送されるため、「メモ」などのアプリを起動するまでもない用事のときに便利だ。

iOS標準装備でないアプリで利用するために、数行程度の文字列をMacで用意することを想像してみよう。「メモ」を起動して文字入力を行い、それをiPhone側で開き、コピーしてアプリにペーストする、といった受け渡し方法を思い付くが、pbcopyを使えば「メモ」の起動を省略できる。こちらのほうが効率的ではないだろうか?

  • ペースト可能でさえあれば、アプリの違いに関係なく文字データの受け渡しができる

ランダムに生成したパスワードをクリップボードへ

「パスワードアシスタント」は、字面から想像できるとおりパスワードを生成するためのツール。キーチェーンアクセスなどのアプリから呼び出せるが、GUI経由でなければ起動できず、ちょっとしたパスワードの生成には大げさに感じてしまう。8文字以下のパスワード生成に使えない点も残念だ。

そんなときは、opensslコマンドのランダム文字列生成機能を利用してみよう。以下のとおりコマンドラインを実行すれば、ランダムに生成された6桁の文字列がクリップボードに取り込まれる。iPhoneでペーストすれば、そのままパスワードとして使えるはずだ。

$ openssl rand -base64 12 | fold -w 6 | head -1 | pbcopy
  • Macでランダムに生成したパスワードをiPhoneへ安全にコピーできる