iOS 8とYosemiteは、連係させることで従来なかった使い方が可能になる。今回は、iOSとOS Xとでアプリの状態を同期させる「Handoff」を軸に、iPhone/iPadとMacの連係操作について考えたい。

Handoffのしくみ

iOS 8とYosemiteで登場した「Handoff」は、アプリケーション間における"状態"を連係させる技術。iOSとYosemiteにおける同じ(同名の)アプリが動作状態を一方から他方へ伝えることで、異種デバイス間におけるスムーズな作業の引き継ぎを可能にする。

典型的な活用事例を挙げてみよう。たとえば、iPhoneでメールを書き始めたものの長くなりそうなのでMacで書けばよかった……そう思ったときには、作業対象をMacに移してHandoffを実行し、書きかけのメールをMacで引き継ぎ送信までの操作を行えばいい。

使用条件が整っているときHandoffをサポートするiOSアプリを利用すると、MacのDock領域左側にアイコンが現れる。これをクリックすると、iOSアプリの作業内容を引き継いだ状態で同じMacアプリが起動する。Macアプリの状態をiOSアプリに引き継ぎたい場合は、iOSデバイスでAppスイッチャーを表示すると左端に現れる(Macアプリと同名の)アイコンをタップするか、ロック画面の左下に現れたアイコンをタップすればいい。Handoffをサポートした同じアプリがあればいいので、iPhoneからiPad、iPadからMac、MacからiPhone……と相互に引き継げることがポイントだ。

カレンダーやメールなど、iPhone/iPadで操作中のアプリの状態を「Handoff」の機能でMacに引き継ぐことができる

Macで操作中のアプリ、あるいは他のiOSアプリは、Appスイッチャーに表示されたアイコンをタップするかロック画面に表示されたアイコンをドラッグするとHandoffできる

Handoffを利用するにあたっては、かんたんな準備が必要となる。ひとつは「同一のApple IDでiCloudへサインイン」すること。Apple IDを参照することで、iPhone/iPadそしてMacという異なるデバイスの所有者が同一人物であることを証明するというわけだ。

もうひとつは、「MacとiPhone/iPadの双方でBluetoothと無線LANを有効」にすること。Handoffは近距離にあるデバイス間でピア・ツー・ピアの通信を行うが、デバイスの検出はBluetooth LEで行うため、つねにBluetoothをオンにしておかなければならない。アプリ間でのデータの引き継ぎはBluetoothでも行われるが低速なため、無線LANもオンにしておく必要がある。無線LANがオフの状態でもHandoff可能なアプリはあるが(「電話」など)、むしろ例外と言っていいだろう。

Handoffの機能自体を無効にすることも可能だ。システムの初期値では有効になっているが、iOSでは「設定」→「一般」→「Handoffと候補のApp」にあるスイッチを、OS Xでは「システム環境設定」の「一般」パネルにある「このMacとiCloudデバイス間でのHandoffを許可」チェックボックスを無効にすればいい。

なお、HandoffはBluetooth LEの利用を前提とするため、すべてのiOSデバイス/Macで動作するわけではない。サポートされるiOSデバイスは、iOS 8がインストールされたiPhone 5以降とiPhone 4s(通話共有のみ)、iPad(第4世代)、iPad Air、iPad Air 2、iPad mini、iPad mini Retina、iPad mini 3、そしてiPod touch(第5世代)。MacはOS X YosemiteがインストールされたMacBook Air(Mid 2012以降)とMacBook Pro(Mid 2012以降)、iMac(Late 2012以降)、Mac mini(Late 2012以降)、そしてMac Pro(Late 2013)だ。

Yosemiteのシステム環境設定「一般」パネル。「このMacとiCloudデバイス間でのHandoffを許可」チェックボックスを外せば、Handoffをオフにできる

iPhone/iPadでHandoffを無効化するには、『設定』→「一般」→「Handoffと候補のApp」の順に画面を開き、「Handoff」スイッチをオフにする

利用しているMacがHandoffに対応しているかどうかは、「システム情報」の「Bluetooth」項目で確認できる

Handoffに対応するアプリとおもな機能
アプリ名 おもな機能
Safari 現在のWEBページ(タブ)を表示する
カレンダー 現在選択中のイベントを表示する
マップ 現在表示している地図を引き継ぐ
メッセージ 現在表示している人物宛に新規メッセージを作成する
メール 入力作業中/現在表示中のメールを表示する
メモ 入力作業中のメモを表示する
リマインダー 入力作業中のリマインダーを表示する
連絡先 現在表示している人物のページを引き継ぐ

Handoffのこれから

Handoffは"引き継ぐこと"に慣れてしまうと、iOS 8/Yosemite以前はどのように作業していたか思い出せないほどスムーズな作業環境を実現してくれるが、まだ多くの可能性を残している。可能性とはすなわち「サードパーティー製アプリの登場」だ。

Handoff対応アプリを開発するためのフレームワークは公開されており、iOSとOS Xでのアプリ開発経験があるデベロッパーであれば、定義されたクラス(NSUserActivity)を利用するとわずかな行数で実装できるほど、機能実現のハードルは低い。実際にはインスタンスの扱いや署名などの処理で手間取ることもあるようだが、サンプルコードを読むかぎりそう難しいものではなさそうだ。

実際、App Storeを見回すと、ちらほらとではあるがHandoff対応アプリが登場している。たとえば、PC/スマートフォンでWEBページを共有できる"あとで読む"系サービス「Pocket」は、10月上旬のアップデートで早々にHandoffをサポートしている。事実上無償化されておりiOS/OS Xに標準装備のアプリと言ってもいいiWork(Numbers/Pages/Keynote)についても、最新バージョンではHandoffに対応している。Handoffに対応する動きは、ほかのアプリでも進むことだろう。

今後どのようなアプリが登場するかだが、WEBページ(URL)など単なる"データのありかの引き継ぎ"ではなく、容量の大きいファイル/データそのものを引き継ぐアプリも現れるのではないだろうか。というのも、HandoffではURLや数値などごく短いデータのハンドリングに適したメソッド(userInfo)以外にも、大容量データを扱えるストリームもサポートされているからだ。そう聞くと音声や動画が思い浮かぶところだが、他用途への応用もありうる。開発者諸氏の創意工夫に期待したいところだ。

HandoffのAPIは公開されているため、システム非純正/サードパーティー製アプリでも対応可能だ