2015年8月25日火曜日

[コラム]watchOS 2 - Core Motion -

▲[外部] Apple Developer WWDC 2015 -What's new in Core Motion- より引用

watchOS 2ではApple Watchのみでアプリを動かすことができるようになり、利用できるAPIも大幅に増える予定です。 その中から、今回はCore Motionについてまとめたいと思います。
本稿はWWDC 2015の以下セッションの発表内容を参考にしております。
WWDC 2015 -What's new in Core Motion-


watchOS 2でのCore Motion

Apple Watchにはコプロセッサーがあり、また加速度センサーが搭載されています。これによって、iOSと同様にいつでもモーションアクティビティや歩数計にアクセスすることができ、さらにセンサーデータにリアルタイムにアクセスすることもできます。
そして、watchOS 2では、iOSで利用可能なCore MotionのAPIのほとんどを使うことができます。また、Core MotionのほとんどのAPIはiOSとwatchOSで同様の動作をします。

検知できる動作
iOS watchOS
Raw Sensors ◯(加速度)
Device Motion
Pedometer
Motion Activity

モーションアクティビティはユーザーがどのような動作をしているかを提供する機能で、ウォーキング、ランニング、サイクリング、ドライビングなどの状態を取得できます。Apple Watchではモーションアクティビティは、自動車を除き取得することができます。

モーションアクティビティで取得できる状態
iPhone 5S iPhone 6/6+ Apple Watch
Walking
Running
Cycling
Automotive
Stationary


センサーデータの利用

センサーデータにはiOSと同様にAPIを通してアクセスすることができます。ただし、iPhoneとApple Watchではプラットフォームが異なるため、アプリ開発の際に考慮しておくべきことがあります。

watchOSには実質的なバックグラウンドプロセスは存在しないため、アプリは基本的にオンスクリーンのときに動作することになります。
一方で、スクリーンはさまざまな要因でオフになります。例えば、スクリーンは時間が経つとオフになりますし、ユーザーのモーションによってもオフになります。また、Apple Watchはユーザーが注目しているときだけスクリーンをオンにするように設計されているため、スクリーンを遠ざければオフになる可能性が十分にあります。
従って、アプリ開発する際には、アプリがオンスクリーンのときにのみセンサーデータを取得するように設計する必要があります。また、タスクが中断された場合の対応をする必要があります。このときは、NSProcessInfoクラスのperformExpiringActivityReasonを用いて、中断時の処理をすることになります。

CMSensorRecorder

前述したとおり、センサーデータは基本的にアプリが起動しているとき(オンスクリーン時)に取得することになりますが、アプリが起動していない間も含めた長期間のデータを使用するアプリも考えられます。
そのような場合のために、新しいAPI "CMSensorRecorder"が追加されています(iOS 9.0から利用可能)。

CMSensorRecorderは、加速度データの収集と検索をコントロールし、アプリが起動していなくても長期間のデータを扱うことができます。
CMSensorRecorderを用いて、データの記録の開始と、記録したデータの取得をすることになります。そして、取得したデータを用いて、モーションを分析したり、アプリと連携させたりすることができます。
CMSensorRecorderを用いた加速度データの取得の流れは以下の通りです。

1.記録の開始時
   recordAccelerometerFor(_ duration:)
   durationに記録する期間を指定し、記録を開始する。

2.デバイスのスリープやアプリの一時停止時、終了時
   継続して記録される。

3.アプリ起動後
   accelerometerDataFrom(_ : , to: ) -> CMSensorDataList
   引数に指定した期間の加速度データを取得する。CMSensorDataListから個々のデータ
  (CMRecordedAccelerometerData型)が取得できる。

記録の終了は明確に行うする必要はありません。指定した時間が経過し、いずれかのアプリが記録時間を延長していない場合にシステムが自動的に終了します。 また、記録したデータには最大3日間アクセスすることができます。

CMSensorRecorderによって長期間のデータにアクセスすることができますが、大量のデータ取得および処理には時間がかかります。パフォーマンスや電池の消耗考慮してアプリの設計をする必要があります。センサーデータを記録および取得する期間は必要最小限とすること、センサーレートも最小限とすることで、処理すを減らすことが望ましいとされています。


今回はCore Motionについて紹介させていただきました。Core Motionに限らずwatchOS 2 ではできることが増えるため、アプリがより多彩になると期待できます。一方で、アプリ開発では機能とパフォーマンスのバランスをより意識することが必要となりそうですね。

140 180 Apple Watch , watchOS

記載されている会社名、および商品名等は、各社の商標または登録商標です。

0 コメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...