YAMAPのWearアプリを作ったので、いろいろ思ったことを書きます。(Android Wearの日本語の記事が少ないので、少しでも増やしたいなという思いも少し...)
YAMAPについては、 こちらを見てください。(登録してもらうと、嬉しいです^^)
Androidのイベントでこの事を話しました。
スライドです。
経緯
当初は、Android WearやApple Watchなどのアプリを作る予定はありませんでした。
理由として、画面が小さい, もう少しこの分野の流れを見極めるなどです。
しかし、ある日...
Wearのアプリ作らへん?
-> はい?
今度、カシオさんが作るスマートウォッチ、結構画面が大きかったら、良いなと思って(^^)
-> お、おう...
こんな感じでWearアプリの作成が決まりました。
ちなみに、今回作ったWearアプリはカシオさんのスマートウォッチで使えます。
主な機能
Wearアプリの主な機能は以下のものになりました。
- 地図表示
- 地図上に現在地表示
- 地図上に今まで歩いた軌跡を表示
- Wearから活動記録開始・終了させる
- 緯度, 経度, 標高などの情報の表示
簡単に言いますとミニYAMAPです(笑)
4と5は、できるなと思ったのですが、1, 2, 3は、本当にWearで出来るのか...?
地図
ここで軽くYAMAPで使用している地図について説明します。
地図は256×256pxのjpgの画像を使っています。
これが一つの山に100枚以上あり、それらをタイル上に描画しています。
一つの山で平均20MB。大きいもので40MBくらいあります。
地図描画
今回、Wearの地図描画は、TileViewというライブラリを使用しました。
これを知ったのは、Mini Maps for Wearというアプリがきっかけです。
なんと、このアプリはGitHubにコードを公開していたので、読んでみると地図描画辺りにtileViewというものがあったので、これを調べていくと今回使用したライブラリを見つけました。
TileViewは地図描画だけでなく、マーカーや線も引けるので上記の1〜3はクリアできました。
ボツ案
TileView以外に、以下のもので地図描画を実現しようと考えていました。
- スマホに表示されている地図画面のスクショをとりWearに転送
- Google Maps Android APIのTile Overlays
スクショの場合、地図の未転送部分にドラッグされると、未転送部分をスマホから取得するのですが、表示までに約1〜2秒ほどかかり、少し遅いということでボツ...
WearのGoogle Mapsは、Tile overlays are not supported on wearable devices.となっていたので、使えませんでした...
地図データの転送
描画の次は、地図データの転送です。
20MBや40MBの地図データをどうやってWearに転送するか。
Zipにして送りました...(これが正解かどうか、今でも分からない...)
地図データをZipにして、ChannelApi を使いWearに転送し、転送完了後、解凍して端末に保存しました。
ChannelApiを使用したのは、ここに
You can use the ChannelApi class to transfer large data items,
such as music and movie files, from a handheld to a wearable device.
と書いていたので、平均20MBもあるからこれを使うと良いのかな...という感じです。
Zip以外にも...
MessageApiやDataApiなどを使い、一枚ずつ送るというやり方も試しました。
一枚ずつだと、遅い、たまに転送が失敗することがある。(ここは僕の組み方が悪いのが問題かも...)
転送時間が掛かり過ぎるのが問題になりまして、これはボツになりました。
ただ、この方法は転送に失敗しても、未転送の部分から送り直すことができる点は良いと思います。
転送の部分は、今でも悩んでいるのですが、良いやり方があれば教えていただけると助かります。
今後、Wearアプリを作るときに注意する所
Wearアプリを作る際に注意する所を書きます。
本当にWearアプリを作る必要性があるのか。
Wearアプリを作ると、当たり前ですが検証端末は増えます。
今より検証する時間が増えます。そして、アプリの容量も増えます。
このスマホとこのWearだけにしか起きないバグとかも出てくると思います。
なので、スマホで済みそうならスマホにしましょう。無理して作る必要はないと思います。
WearのUIデザイン
Wearの画面は小さいです。恐ろしく小さいです。
ボタンを3つも4つも置くと押しづらいです。
フォントサイズも、普段より少し大きめにしないと読みにくいです。
さらに画面は、丸型とスクエア型があるので2つUI考える必要があります。
Wearアプリは、できるだけシンプルに。
Zip転送や地図描画など、こんなことはやらないほうが良いです。(地図描画は、もう少しAndroid Wear業界が成熟してからやったほうが楽だったのでは...)
スマホとWearの通信は100%うまくいくとは限らない。
当たり前だと思いますが、100%上手くいくと思う人もいるので、ここは事前にすり合わせしときましょう。
なので、通信失敗するという前提で設計しましょう。
日本語のドキュメントが少ない。
本も、1冊くらいしかないです。(Apple Watchは3, 4冊あるけどね...)
英語のほうが情報は多いので、英語が苦手な人は頑張りましょう(๑˃̵ᴗ˂̵)و
すでにあるスマホアプリに新しくWearを入れる際は、事前の検証をしっかり。
秘伝のタレ状態のところに新たにWearの機能をいれるのは大変です。
この辺の検証は、作る前に事前に確認しといたほうが作るときにスムーズです。
最後に
意外とWearは大変です(笑)
MessageApiやChannelApiなどのことは、別の記事で書きたいと思います。
Wearに関しては、僕もやり始めたばかりなので、良ければいろいろ教えてください。