Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Apple Watch 間通信

8,941 views

Published on

Published in: Technology
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Apple Watch 間通信

  1. 1. Apple Watch 間通信 堤 修一 @shu223 2015.5.27 Apple Watch meetup
  2. 2. • 堤 修一(つつみ しゅういち) • iOS専業フリーランス • ブログ『Over&Out その後』 • 著書
 『iOS×BLE Core Bluetoothプログラミング』
 『iOSアプリ開発 達人のレシピ100』 自己紹介
  3. 3. お手伝いしたプロダクト(BLE関連) Music for the Deaf
  4. 4. お手伝いしたプロダクト(WatchKit関連)
  5. 5. お手伝いしたプロダクト(WatchKit関連) WatchMe(Pocket Supernova)  Watch に最適化されたビデオメッセージングア プリ。ウォッチで動画メッセージのプレビュー、 素早い返信ができる ※お手伝いしたのは開発の初期、ウォッチ側
  6. 6. お手伝いしたプロダクト(WatchKit関連) よしだっち(DLE) 鷹の爪団の吉田君を育成するアプリ WatchMe(Pocket Supernova)  Watch に最適化されたビデオメッセージングア プリ。ウォッチで動画メッセージのプレビュー、 素早い返信ができる ※お手伝いしたのは開発の初期、ウォッチ側
  7. 7. お手伝いしたプロダクト(WatchKit関連) よしだっち(DLE) 鷹の爪団の吉田君を育成するアプリ WatchMe(Pocket Supernova)  Watch に最適化されたビデオメッセージングア プリ。ウォッチで動画メッセージのプレビュー、 素早い返信ができる ※お手伝いしたのは開発の初期、ウォッチ側 メール、Facebookメッセージ、TwitterのDM等を一 元管理するアプリ Swingmail(BHI) ※ウォッチ機能は現在開発中
  8. 8. 今日話すこと
  9. 9. Apple Watch 同士で通信する方法を探る
  10. 10. 標準で入ってる“Digital Touch”機能 Apple Watch 同士で通信する方法を探る
  11. 11. 標準で入ってる“Digital Touch”機能 - タップ、心拍、手書きスケッチを相手に送れる Apple Watch 同士で通信する方法を探る
  12. 12. 標準で入ってる“Digital Touch”機能 - タップ、心拍、手書きスケッチを相手に送れる Apple Watch 同士で通信する方法を探る
  13. 13. 標準で入ってる“Digital Touch”機能 - タップ、心拍、手書きスケッチを相手に送れる Apple Watch 同士で通信する方法を探る
  14. 14. 標準で入ってる“Digital Touch”機能 - タップ、心拍、手書きスケッチを相手に送れる WatchKitにそういうAPIはない Apple Watch 同士で通信する方法を探る
  15. 15. 標準で入ってる“Digital Touch”機能 - タップ、心拍、手書きスケッチを相手に送れる WatchKitにそういうAPIはない → サードパーティ製アプリで同様のことをやるには? Apple Watch 同士で通信する方法を探る
  16. 16.
  17. 17. この構成で同様のことはできそう
  18. 18. この構成で同様のことはできそう 自分 parent
  19. 19. この構成で同様のことはできそう 自分 parent 相手 parent
  20. 20. この構成で同様のことはできそう 自分 parent 相手 parent バックグラウンド通信
  21. 21. この構成で同様のことはできそう 通信してる感 自分 parent 相手 parent バックグラウンド通信
  22. 22. この構成で同様のことはできそう → つくってみたらうまくいった 通信してる感 自分 parent 相手 parent バックグラウンド通信
  23. 23. 通信処理の流れ
  24. 24. 自分 相手 メッセージを送りたい
  25. 25. 自分 相手 メッセージを送りたい openParentApplication:reply: でメッセージを渡す
  26. 26. バックグラウンドで送信 (Core Bluetooth) 自分 相手 メッセージを送りたい openParentApplication:reply: でメッセージを渡す
  27. 27. バックグラウンドで送信 (Core Bluetooth) 自分 相手 メッセージを送りたい ローカル通知 openParentApplication:reply: でメッセージを渡す
  28. 28. ポイント
  29. 29. Point 1: Core Bluetooth を用いた通信
  30. 30. Point 1: Core Bluetooth を用いた通信
  31. 31. Point 1: Core Bluetooth を用いた通信 • BLE(Bluetooth Low Energy) を利用
  32. 32. Point 1: Core Bluetooth を用いた通信 • BLE(Bluetooth Low Energy) を利用 - WiFi等のインフラなしで通信可能
  33. 33. Point 1: Core Bluetooth を用いた通信 • BLE(Bluetooth Low Energy) を利用 - WiFi等のインフラなしで通信可能 • ステータス確認・スキャン・アドバタイズ・ 接続確立・データのやり取り等、ほぼすべて の機能がバックグラウンドで利用可能
  34. 34. Point 1: Core Bluetooth を用いた通信 • BLE(Bluetooth Low Energy) を利用 - WiFi等のインフラなしで通信可能 • ステータス確認・スキャン・アドバタイズ・ 接続確立・データのやり取り等、ほぼすべて の機能がバックグラウンドで利用可能 - UX的にはparent appでの処理と悟られない
  35. 35. Point 1: Core Bluetooth を用いた通信 • BLE(Bluetooth Low Energy) を利用 - WiFi等のインフラなしで通信可能 • ステータス確認・スキャン・アドバタイズ・ 接続確立・データのやり取り等、ほぼすべて の機能がバックグラウンドで利用可能 - UX的にはparent appでの処理と悟られない - 1度接続すれば、あとは接続が切れても バックグラウンドで勝手に再接続される
  36. 36. Point 1: Core Bluetooth を用いた通信 • BLE(Bluetooth Low Energy) を利用 - WiFi等のインフラなしで通信可能 • ステータス確認・スキャン・アドバタイズ・ 接続確立・データのやり取り等、ほぼすべて の機能がバックグラウンドで利用可能 - UX的にはparent appでの処理と悟られない - 1度接続すれば、あとは接続が切れても バックグラウンドで勝手に再接続される - プロセスが死んでてもゾンビのように復活 して繋がってくれる
  37. 37. Point 1: Core Bluetooth を用いた通信 • BLE(Bluetooth Low Energy) を利用 - WiFi等のインフラなしで通信可能 • ステータス確認・スキャン・アドバタイズ・ 接続確立・データのやり取り等、ほぼすべて の機能がバックグラウンドで利用可能 - UX的にはparent appでの処理と悟られない - 1度接続すれば、あとは接続が切れても バックグラウンドで勝手に再接続される - プロセスが死んでてもゾンビのように復活 して繋がってくれる • 詳細はこちら: 『殺しても死なないアプリ』(potatotips #17 での発表)
  38. 38. Point 2: openParent∼による非同期処理実行
  39. 39. Point 2: openParent∼による非同期処理実行
  40. 40. Point 2: openParent∼による非同期処理実行 • Core Bluetooth は非同期でレス ポンスが返ってくる処理ばかり
  41. 41. Point 2: openParent∼による非同期処理実行 • Core Bluetooth は非同期でレス ポンスが返ってくる処理ばかり • openParent∼は親アプリからの レスポンスを受け取れるが、同 期処理なので非同期処理の結果 は受け取れない
  42. 42. Point 2: openParent∼による非同期処理実行 • Core Bluetooth は非同期でレス ポンスが返ってくる処理ばかり • openParent∼は親アプリからの レスポンスを受け取れるが、同 期処理なので非同期処理の結果 は受け取れない → WatchKit Extension側から結果を受け取れるまでポーリングする - 詳細:『WatchKit もろもろ実機検証』(実装コードあり)
  43. 43. Point 3: ローカル通知
  44. 44. Point 3: ローカル通知
  45. 45. Point 3: ローカル通知 • openParent∼はあるけど openChild 的なAPIはない
  46. 46. Point 3: ローカル通知 • openParent∼はあるけど openChild 的なAPIはない → parent app からローカル通知を 発行してウォッチ側で受け取って もらう
  47. 47. Point 3: ローカル通知 • openParent∼はあるけど openChild 的なAPIはない → parent app からローカル通知を 発行してウォッチ側で受け取って もらう Watchのローカル通知に対する挙動:
 『WatchKit もろもろ実機検証』(実装コードあり)
  48. 48. 心拍を送るには?
  49. 49. 心拍を送るには? WatchKit では直接心拍センサの値に アクセスするAPIはない
  50. 50. HealthKit を利用 心拍を送りたい 自分 相手
  51. 51. HealthKit を利用 心拍を送りたい 自分 相手 ①心拍数計測 (HealthKitに自動保存)
  52. 52. HealthKit を利用 心拍を送りたい 自分 相手 ①心拍数計測 (HealthKitに自動保存) ②openParent∼ で心拍を送りたい旨だけ伝える
  53. 53. HealthKit を利用 心拍を送りたい 自分 相手 ①心拍数計測 (HealthKitに自動保存) ②openParent∼ で心拍を送りたい旨だけ伝える ③HealthKit より心拍数取得
  54. 54. HealthKit を利用 心拍を送りたい 自分 相手 ①心拍数計測 (HealthKitに自動保存) ②openParent∼ で心拍を送りたい旨だけ伝える ③HealthKit より心拍数取得 ④バックグラウンドで送信
  55. 55. HealthKit を利用 心拍を送りたい 自分 相手 ①心拍数計測 (HealthKitに自動保存) ②openParent∼ で心拍を送りたい旨だけ伝える ③HealthKit より心拍数取得 ⑤ローカル通知 ④バックグラウンドで送信
  56. 56. HealthKit を利用 心拍を送りたい 自分 相手 ①心拍数計測 (HealthKitに自動保存) ②openParent∼ で心拍を送りたい旨だけ伝える ③HealthKit より心拍数取得 ⑤ローカル通知 心拍数に応じた速さで アニメーションを実行 ④バックグラウンドで送信
  57. 57. ウォッチで計測した心拍数をリアルタイムに iPhone 側で HealthKit から取得できるのか?
  58. 58. ウォッチで計測した心拍数をリアルタイムに iPhone 側で HealthKit から取得できるのか? • 心拍数の単位は“BPM”(Beats Per Minute) なので60秒ぐらい までのタイムラグは許容範囲 かと
  59. 59. ウォッチで計測した心拍数をリアルタイムに iPhone 側で HealthKit から取得できるのか? • 心拍数の単位は“BPM”(Beats Per Minute) なので60秒ぐらい までのタイムラグは許容範囲 かと •  Watch で心拍数を計測しつ つ、iPhone の Health アプリで 最新データがいつ取得できる か確認してみた
  60. 60. ウォッチで計測した心拍数をリアルタイムに iPhone 側で HealthKit から取得できるのか? • 心拍数の単位は“BPM”(Beats Per Minute) なので60秒ぐらい までのタイムラグは許容範囲 かと •  Watch で心拍数を計測しつ つ、iPhone の Health アプリで 最新データがいつ取得できる か確認してみた [Health Data] > [Vitals] > [Heart Rate] > [Show All Data]
  61. 61. ウォッチで計測した心拍数をリアルタイムに iPhone 側で HealthKit から取得できるのか? • 心拍数の単位は“BPM”(Beats Per Minute) なので60秒ぐらい までのタイムラグは許容範囲 かと •  Watch で心拍数を計測しつ つ、iPhone の Health アプリで 最新データがいつ取得できる か確認してみた → ほぼタイムラグなし
  (多く見ても10秒以内) [Health Data] > [Vitals] > [Heart Rate] > [Show All Data]
  62. 62. デモ
  63. 63. (デモの流れ:Watch間メッセージ送信) 自分 相手
  64. 64. (デモの流れ:Watch間メッセージ送信) ①Watch アプリ起動 自分 相手
  65. 65. (デモの流れ:Watch間メッセージ送信) ①Watch アプリ起動 ②ボタンタップ 自分 相手
  66. 66. (デモの流れ:Watch間メッセージ送信) ①Watch アプリ起動 ②ボタンタップ ③メッセージ選択、 または音声入力 自分 相手
  67. 67. (デモの流れ:Watch間メッセージ送信) ①Watch アプリ起動 ②ボタンタップ ③メッセージ選択、 または音声入力 自分 相手 (バックグラウンド通信)
  68. 68. (デモの流れ:Watch間メッセージ送信) ①Watch アプリ起動 ②ボタンタップ ③メッセージ選択、 または音声入力 自分 相手 (バックグラウンド通信) メッセージ受信!
  69. 69. (デモの流れ:Watch間で心拍数共有) 自分 相手
  70. 70. (デモの流れ:Watch間で心拍数共有) ①Watch アプリ起動 自分 相手
  71. 71. (デモの流れ:Watch間で心拍数共有) ①Watch アプリ起動 ②ボタンタップ 自分 相手
  72. 72. (デモの流れ:Watch間で心拍数共有) ①Watch アプリ起動 ②ボタンタップ 自分 相手 (バックグラウンド通信)
  73. 73. (デモの流れ:Watch間で心拍数共有) ①Watch アプリ起動 ②ボタンタップ 自分 相手 (バックグラウンド通信) 心拍数表示& アニメーション
  74. 74. 絵文字を送るには? (※試していないのであくまで仮説です)
  75. 75. • presentTextInputControllerWith∼で、
 AllowEmoji / AllowAnimatedEmoji を指定 • 選択すると絵文字の画像データを表す大量のバイナ リデータが返ってくる • BLEでは(基本的に)1パケット20バイト → 種類は限られているので、オレオレ文字コードを 定義して送り合えばOKかと
  76. 76. まとめ・所感
  77. 77. サードパーティ製アプリで Apple Watch 同士で通信する方法を探ってみた
  78. 78. サードパーティ製アプリで Apple Watch 同士で通信する方法を探ってみた → 意外とアリなのでは?
  79. 79. サードパーティ製アプリで Apple Watch 同士で通信する方法を探ってみた → 意外とアリなのでは? • 接続も送信もバックグラウンドで自動で行われるため、ユーザー体験としては ウォッチ同士通信している感がある(親アプリによる処理を感じさせない)
  80. 80. サードパーティ製アプリで Apple Watch 同士で通信する方法を探ってみた → 意外とアリなのでは? • 接続も送信もバックグラウンドで自動で行われるため、ユーザー体験としては ウォッチ同士通信している感がある(親アプリによる処理を感じさせない) • WiFiなどのインフラ不要、オフラインでも通信可能
  81. 81. サードパーティ製アプリで Apple Watch 同士で通信する方法を探ってみた → 意外とアリなのでは? • 接続も送信もバックグラウンドで自動で行われるため、ユーザー体験としては ウォッチ同士通信している感がある(親アプリによる処理を感じさせない) • WiFiなどのインフラ不要、オフラインでも通信可能 • メッセージ、心拍、絵文字は送れる
  82. 82. サードパーティ製アプリで Apple Watch 同士で通信する方法を探ってみた → 意外とアリなのでは? • 接続も送信もバックグラウンドで自動で行われるため、ユーザー体験としては ウォッチ同士通信している感がある(親アプリによる処理を感じさせない) • WiFiなどのインフラ不要、オフラインでも通信可能 • メッセージ、心拍、絵文字は送れる • 通信速度も悪くない
  83. 83. サードパーティ製アプリで Apple Watch 同士で通信する方法を探ってみた → 意外とアリなのでは? • 接続も送信もバックグラウンドで自動で行われるため、ユーザー体験としては ウォッチ同士通信している感がある(親アプリによる処理を感じさせない) • WiFiなどのインフラ不要、オフラインでも通信可能 • メッセージ、心拍、絵文字は送れる • 通信速度も悪くない • 苦しい点
  84. 84. サードパーティ製アプリで Apple Watch 同士で通信する方法を探ってみた → 意外とアリなのでは? • 接続も送信もバックグラウンドで自動で行われるため、ユーザー体験としては ウォッチ同士通信している感がある(親アプリによる処理を感じさせない) • WiFiなどのインフラ不要、オフラインでも通信可能 • メッセージ、心拍、絵文字は送れる • 通信速度も悪くない • 苦しい点 • ローカル通知の制約(iPhoneの状態によってはウォッチ側で受け取ってくれない)
  85. 85. サードパーティ製アプリで Apple Watch 同士で通信する方法を探ってみた → 意外とアリなのでは? • 接続も送信もバックグラウンドで自動で行われるため、ユーザー体験としては ウォッチ同士通信している感がある(親アプリによる処理を感じさせない) • WiFiなどのインフラ不要、オフラインでも通信可能 • メッセージ、心拍、絵文字は送れる • 通信速度も悪くない • 苦しい点 • ローカル通知の制約(iPhoneの状態によってはウォッチ側で受け取ってくれない) • タップは受信側が無理(Taptic Engine を制御できない)
  86. 86. サードパーティ製アプリで Apple Watch 同士で通信する方法を探ってみた → 意外とアリなのでは? • 接続も送信もバックグラウンドで自動で行われるため、ユーザー体験としては ウォッチ同士通信している感がある(親アプリによる処理を感じさせない) • WiFiなどのインフラ不要、オフラインでも通信可能 • メッセージ、心拍、絵文字は送れる • 通信速度も悪くない • 苦しい点 • ローカル通知の制約(iPhoneの状態によってはウォッチ側で受け取ってくれない) • タップは受信側が無理(Taptic Engine を制御できない) • 手描きスケッチも受信側が無理(あんなに滑らかに線を「動的に」描画できない)
  87. 87. サードパーティ製アプリで Apple Watch 同士で通信する方法を探ってみた → 意外とアリなのでは? • 接続も送信もバックグラウンドで自動で行われるため、ユーザー体験としては ウォッチ同士通信している感がある(親アプリによる処理を感じさせない) • WiFiなどのインフラ不要、オフラインでも通信可能 • メッセージ、心拍、絵文字は送れる • 通信速度も悪くない • 苦しい点 • ローカル通知の制約(iPhoneの状態によってはウォッチ側で受け取ってくれない) • タップは受信側が無理(Taptic Engine を制御できない) • 手描きスケッチも受信側が無理(あんなに滑らかに線を「動的に」描画できない) • 使いどころ(何に役立つのか?どんなアプリで嬉しいのか?)
  88. 88. Core Bluetooth / BLE の参考書籍 • konashi開発者 松村礼央さんとの共著 • BLEについては知識ゼロからでOKです

×