AppleWatch持ってないけどMeetupに参加してみた@Hills Garage

Gunosyさん主催のAppleWatch Meetupに参加してきた.

諸々の制約から「やらないことをきめる」というのが非常に重要なのだと感じた.AppleWatch持ってないけど,いろいろ参考になりそうなので,所感をまとめておく.

所感

通信量やアーキテクチャ的制約など,細かい仕様を把握しないと,iPhoneアプリほどカンタンにはいいものを作れないと感じだ.グラデーションなど,細かいUI表現のバリエーションが出しづらいので,画像で代替するのがベストプラクティスみたい.ただ一方で,通信量やキャッシュ容量に制限があるので,Watchでやりたいことをシンプルにする必要がある. 結局,iPhoneの方がいろいろ快適だからWatchじゃなくていいや,ということにならないようにする境界が難しそう.

これらの仕様を抑えた上で,iPhone + Watch + サーバーのサービス全体の設計が重要そうなので,この辺りの感覚は実際に実装してみて,感じでみようと思う.

メモ(随時更新)

個人的メモ,走り書きしたものをそのまま掲載しているので,随時修正などする.

**Cookpad Apple Watch App 誕生の舞台裏(****クックパッド株式会社 三浦 慶樹さん)**
  • 技術的な情報より,ビジネス的な視点のプレゼン
  • 一番最後にみたレシピの閲覧アプリ

  • なぜ

  • 買い物リスト・特売情報・キッチンタイマー etc….

  • ユーザーのことを考えて,”WatchAppはサブ”だと考えた

  • iPhone + Watch(サブ)

  • Watchは料理中のちょっとしたことを手助けする

  • ポイント

  • レシピの情報を必要最低限にする

  • スクロールはやめてページングにした(再び閲覧した際に,どこにいたのかわかりやすいように)

  • まとめ

  • デバイスの役割を明確に(Watchでやらせないことを決める・iPhone Appで見た方がわかりやすいのではないか)

  • 極力シンプルに(余計な機能が付いているとユーザーは迷う)

**株式会社Gunosy 川邉 雄介さん**
[資料](https://speakerdeck.com/jeffsuke/gunosy-for-apple-watchgadekirumade?slide=28 “資料”)
  • Watch上で快適な体験を実現するために必要なことの話
  • Gunosy Watch

  • APIから受け取った話題

  • willActivate()活用

  • init と awakeでの処理を最小限に()

  • 画面が最初に出てきて,画像は後にでるような処理がカンタンにできる

  • WKINTERFACEGROUPの利用

  • addCachedImage

  • イメージはなるべくキャッシュする

  • 5MBまでキャッシュ可能

  • Glance

  • APIから受け取った話題の情報をもとに画像を表示

  • 可能な限りキャッシュする(image, json)

  • カーブした画像+文字でカーブしたUIを実現している ライブラリとして公開している

  • リジェクト事例

  • iPhoneの起動を要求して,Watchを起動する仕様でリジェクトされた(ログイン必要なのもあるので,レビューアによるかも)

  • ポイント

  • ライフサイクルを理解し,描画可能なものから順次描画する

  • 画像に描画することで複雑な処理を簡略化する

  • Apple Watch単体で話題が成り立っている必要がある

  • まとめ

  • アプリバイナリにView要素を含めて処理速度を向上させる

  • 複雑な処理はExtension

  • 時間がかかる処理は本体アプリ

**株式会社 白ヤギコーポレーション 伊藤 祐輔さん**
  • カメリオWatch

  • 記事をスワイプandクリック

  • 通知デイリーandテーマ記事 etc..

  • ポイント

  • Watchに不要な情報を削減したWatch用APIを使用している

  • Extensionのフットプリントを小さくするため,ライブラリなどは使用しないようにした

  • iPhone側アプリと通信するAPIは使わないようにした

  • スワイプして記事がみれるが腕疲れる….(シミュレータでは腕が疲れるかわからないw)

  • 複雑なレイアウトは Group入れ子 & Group -Background Imageを使う

  • UIでは,Dynamic Typeを使う(Interface Builderで文字ptを絶対値指定しない)

**Retty株式会社 櫻井 洋一郎**
  • Rettyアプリ

  • クリップ機能(行きたいリスト)

  • Rettyの開発環境

  • 開発者ごとのサーバがある

  • xcconfigによる共通化

  • 設定を記述できるファイル

  • サンプル

  • https://github.com/saku/SchemeConfigSample

**フリーランス 堤 修一 さんAppleWatch間通信**
[記事+資料](http://d.hatena.ne.jp/shu223/20150527/1432726614 “記事+資料”)
  • Apple Watch同士で通信する方法を探る

  • Digital Touch機能(タップ,心拍,手書きスケッチ)

  • 親アプリ同士でバックグラウンド通信して,擬似的にWatch同士が通信しているかのようにする

  • ポイント

  • Core Bluetoothを用いた通信

  • openParentによる非同期通信処理

  • ローカル通知

  • 親アプリがWatchを呼び出すことができないので,これで代替する

  • Watchで計算した心拍数をリアルタイムにIiphone側でHealthKitから取得できるのか

  • ほぼタイムラグなしで取得できている(長くても10秒くらい)

  • BLEでは(基本的に)1パケット20バイト.絵文字を大量に送信できないので,独自文字コードを定義して,

  • まとめ

  • Apple Watch 間通信以外にアリ

  • Watch通信している間ある(バックグラウンドなので)

  • オフラインでも通信可能

  • メッセージ,心拍,絵文字遅れる

  • 通信速度は悪くない

  • 苦しい点

  • iPhoneの状態によってはWatch側で受け取ってくれない

  • タップが受信側が無理(TapticEngineを制御できない)

  • 手書きスケッチも受信側が無理(なめらかな線を動的に)

まとめ

参加されている方は,ほとんどの方がApple Watchを持っていた.恥ずかしながら諸事情で,Apple Watchを持っていないので恐縮した.

腕が疲れる」というのは,なるほどと思った.確かに,腕を曲げて反対の手で操作するってのは,結構なストレスな気がする.

どうでもいいけど,Android WearとApple Watch両方持ってる人って,どっちを着用するかどう切り分けているんだろう.

00000