LoginSignup
13
14

More than 5 years have passed since last update.

WatchKit AppとAndroid Wear Appのアーキテクチャの違い

Last updated at Posted at 2014-11-22

Bloggerに書いた内容をこちらにも転載。

2015-09-01追記: この記事の内容はwatchOS2には当てはまりません

watchOS2では、この記事で「iPhoneで動く」としているロジック部分もApple Watchで動作します。
ただしWatch AppとWatchKit Extensionが分かれている状況は維持されます。
以下の内容は、まー昔はこうだったんだなということでご理解ください。

TL; DR

 結論からいきますと、
* Apple Watchではビューのみが動き、ロジックはiPhoneで動く。
* 対するAndroid Wearでは、Androidアプリとほぼ同じコードがガッツリ動く。
ということです。

 つまり、スマホ本体を置き忘れたことを時計が感知して知らせる、というようなアプリは、Android Wearならたくさん転がってますがWatchKit Appでは不可能っぽい。

WatchKit AppはiPhone上で動く

 な・・・何を言ってるかわからねーと思うが(略)という感じですが事実なんです。

 Apple Watchでアプリを動かすためには、まずはiPhoneアプリが必要です。WatchKit Appは、ExtensionとしてiPhoneアプリにくっつけて配布する形になります。
 そしてiPhoneにApple Watchがつながっていると、Extensionの内容の一部がApple Watchにロードされるという仕組みのようです。

watchkut_extension.png
出典:WatchKit - Apple Developer

 このときApple Watchにロードされるのはビューの部分のみ。Controllerやその他のロジックはiPhoneに残って、Apple Watchからの連絡を待ちます。
 Apple Watchに表示されたビューに対してユーザがなにか操作すると、その情報が無線でiPhoneに伝えられ、Controllerが反応するというわけです。

app_communication_2x.png
出典:WatchKit Programming Guide

 いうなれば、Apple WatchはiPhoneの外部ディスプレイというか、シンクライアントのような動きをするわけですね。

Android Wear AppはAndroid Wear上で動く

 これはあたりまえといえばあたりまえなのですが。
 Android Wearは、Androidと連携はするのですが、アプリのアーキテクチャ的には独立というか、対等な立場なんですよね。

 そもそもAndroid Wearは、小さいナリをしてますがあれもAndroidの一亜種としてできていて、Android WearアプリはほぼAndroidアプリと同じコードで動きます。
 AndroidアプリとAndroid Wearアプリはそれぞれが独立で動く。で、必要があるときにだけOSのAPIを使ってお互いにメッセージをやりとりする。という世界観になっているわけです。

 とはいえこちらのほうも時計であまりムチャをやることは考えていなくて、ビューとしての機能+アルファは時計でやりつつ、メインの処理はAndroidの方に投げるという実装方法が推奨されています。

開発者がうれしいのはどちらか?

WatchKit App vs. Android Wear App

 できることが多いほうがうれしいに決まってんだろ!訴訟!という人はアンドロイダー向きかもしれません。
 少し書きましたが、しっかりした機能を求めるとなるとAndroid Wearの方も結局、重い処理を本体に移譲して結果を受け取るというパターンをとらざるを得なくなります。特にネットワークアクセスが必要な場合はかならずこのパターンになるので。

 そのあたりを隠蔽してしまってロジックの本筋だけ考えればいいようにしてくれるというのは、AppleっぽいというかiOSっぽい考え方だと思います。
 ただここまでスパッと割り切られると、ちょっとぐらい時計側で独立の処理が動く余地を残してくれてもよかったんじゃねえの・・・と思わないでもありません。

 あとは、このアーキテクチャの違いが電池の具合にどれだけ影響するかが見ものですね。

 また、Apple Watchには話題となった心拍センサをはじめいくらかのセンサがついているはずなのですが、そのデータをどうやって取得するのかは謎です。このアーキテクチャを見るに、iPhoneがApple Watchからデータを取ってくるような仕組みになるんですかねぇ・・・?

WatchKitの通知 vs. Android Wearの通知カード

 Android Wearのいいところの一つに、普通のAndroidの通知を出すと、それがいい感じにAndroid Wear向けの通知カードに変換されて表示されるという点があります。

notification_phone@2x.png
出典:Android Developers

 WatchKitの仕組みで発表された通知機能のひとつ「Actionable Notification」は、動きかたは通知なのですがWatchKitで実装しないといけないのでひと手間増える感があります。iOSの普通の通知も、おそらくApple Watchにいい感じに表示されるんだろうとは思うのですが、もしそれがない場合は開発者にとってはちょっとめんどくさいですね。

雑感:超こまけぇApple Watchとユーザの器用さをなめているAndroid Wear

 アプリのアーキテクチャに関係ない話。

aw_vs_aw.png
(出典:WatchKit - Apple DeveloperAndroid Developers

 Apple WatchとAndroid Wearの画面を見比べると、Apple Watchには「どんだけユーザに細かい操作を求めんだ」Android Wearには「ユーザをゴリラかなんかと勘違いしとんのか」という正反対の感想が個人的にはでてきますが、みなさまはいかがでしょうか。

で、どっちが勝つの?

アップルじゃないすかねえ〜?(鼻ほじ)

13
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
14