プロフィール:
北海道札幌市のイメージナビ株式会社のエンジニアによるブログです。
実績紹介、技術情報などを不定期ですがポストしていきます。
よろしくお願いいたします!

作成者別アーカイブ: ABE

弊社ではスマホアプリとして「RingRingTone」を販売しております。今回はそのRingRingToneをご紹介したいと思います。

 

■RingRingToneとは
iPhone用の着信音アプリです。5つのカテゴリ(おもしろ、ベル・アラーム、ネイチャー、ワンフレーズ、ミュージック)からなる760種類以上もの着信音が収録されています。iPhoneに入っている音楽(非DRMのみ)からオリジナルの着信音を作成する機能もあります。AppStoreでの最高ランキングは2014年3月に記録した、エンターテインメント:3位/有料総合:55位でした。

 

201412171 App_Store_Badge_EN

 

■主な特徴
・着信音作成機能
iPhone内の音楽ファイル(※非DRM)を読み込み、開始時間、長さ、フェードイン・フェードアウトを好みに調整して、着信音を作ることができます。

 

201412172

 

・音ファイル
素材を得意とする弊社が保有している大量の音ライブラリから着信音に使えるスタンダードなものから、ちょっと異色なものまで、バラエティーに富んだサウンドを760点以上収録しました。

rrt_sc_1_1   rrt_sc_1_2   rrt_sc_1_3

 

・操作性
メイン画面からカテゴリを選択して戻る、スワイプすると一つ前に選択していたカテゴリが表示される、などの操作感について開発中にミーティングで何度も話し合い、不満や要望についてはできるだけカバーしてUIを作りこみました。

 

・言語切替
RingRingToneは日本語・英語で使用できます。言語設定を日本語以外にすると英語の表記に変更されます。
201412172          201412172

 

・手作りの操作説明動画
データクラフトスタッフによる操作説明の動画は英語版もあり、海外の方にもご利用いただけるようになっています。

rrt_movie01  rrt_movie03  rrt_movie02

 

・モスキート音
モスキート音(高周波数の音)を年代別に収録しました。メインメニュー画面をよく見ると蚊のアイコンが…。
※モスキート音は聞こえる方には「とても不快な音」として聴こえますので、長時間や大音量、公衆でのご使用には特にご注意ください。
201412172       rrt_mosquite_2

 

■開発秘話
RingRingTone以前にiOSのアプリケーションは既に作成していたのですが、それらはwebベースのアプリケーションであったため、Objective-Cでの実装はほとんどありませんでした。RingRingToneは音の再生や着信音の編集など、Objective-Cネイティブでなければ実現できないため、実装の経験を積むための貴重な機会になりました。実装方法については未経験に等しいものでしたので、打ち合わせで機能や要望が出てくる度にどのように実装できるか調査してリリースを繰り返す…そんな試行錯誤の連続でした。特に着信音作成機能は最後の最後まで苦労して調整した機能でした。Appleのドキュメントはもちろん確認していましたが、日本語の情報が少なく、海外の情報やドキュメント類まで探しまわりようやく実装できた機能です。

アプリとしては小規模なものですが、iOSの機能としてはTabViewをメインにTableViewやWebViewなど、UIとして基本的なものを押さえており、開発者としては次のアプリケーションを作成するためのステップになりました。作りとしては甘いところがあったにせよ、バージョンアップをはかり隙の少ないアプリになったかと思います。

また、英訳の他、収録する着信音を調整、変換する作業は音にこだわりのある専任のスタッフが担当しましたが、760種以上という量だけにかなり大変な作業でした。

 

■まとめ
AppStoreのエンターテイメントカテゴリ内で20~100位前後を上下しているものの、リリースから2年程経過しており息の長い商品となっています。動作環境はiOS5以降で対応機種はiPhone4以降、もちろん最新のiPhone6でも動作しますので是非ご利用ください。

現在は要望の多いAndroid版も検討中です。iOS版にどれだけ近づけられるのか、またAndroidならではの要素を取り入れたアプリケーションを作成したいと考えています。ご期待ください。

 

RingRingToneに関するお問い合わせ、その他ご用命などございましたら、こちらよりお願いいたします。

前回の「iBeaconについて(基本編)」では、iBeaconとはどういうものかという説明をしましたので、今回は実際に使用してみたいと思います。

 

■実際に使用してみました
まず始めにiPhone側でビーコン信号を検出するための簡単なアプリをObjective-Cで作成しました。始めて使うので調べるのに2~3日かかりましたが、手順が解れば1日かからずに作れると思います。iBeacon専用のSDKというものは無く、CoreLocationFrameworkをXCodeで設定します。
今回はデバイスにiPhone5c(iOS7.1)、ビーコン発信器にAplix社製のMB001 AcというUSBスティック型の製品を使用しました。

 

では、早速検証してみます。図2のように弊社入口前(13階)の共用フロアにビーコン発信器を設置しました。

beaconmap_2_500

[図2] iBeacon受信状況

赤:ビーコン発信器の設置場所
橙:Immidiate(ごく近い)
緑:Near(近い)
青:Far(遠い)
ピンク:ビーコンを認識せず

 

iPhoneを持って発信器から半径約10mのエリアに入るとビーコン信号を認識し、取得した情報を作成したアプリで全て表示できました。

SS250

[図3]取得した情報をアプリで表示

 

情報が取得できたので、次に電波の強弱を調べるため先ほどのエリアから離れてみたところ、ビーコン信号を受信しなくなりました。また、非常階段内(金属製ドアを閉めた状態)でも受信しませんでした。

ibeacon_notfound
[図4]ビーコン信号を認識しない状態

 

逆にImmidiate(ごく近い)となる場所まで発信器に近づき、発信器に背を向けると電波強度が下がりNear(近い)に変わりました。
今度は発信器を設置した13階の真下の12階に移動しましたが、こちらでも信号は受信でき、その下の11階までは受信できることが確認できました。さらにその下の10階ではほぼ受信できない状態となりました。
ibeacon_far
[図5]信号がかろうじて届いている状態

 

このことから、障害物に左右されるものの発信器から上下左右10m程度が問題なく受信出来るエリアになり、発信器から離れるほど信号は弱くなるようです。

SS2_250

[図6]iOS7.1以降であればアプリを起動していなくとも、ビーコンを認識すると通知を受けられるようになっています。

 

■使用して解ったこと
受信できる情報と範囲については先ほどの検証で解りましたが、もう一つ解ったのはiBeaconの状態更新に時間がかかるということです(1秒に1回程度)。これは、1秒間に電波強度の平均を取り、なるべく正確な情報を提供するためのようです。そのため自動車、自転車など移動スピードが速いものには向かないようです。
同様に、iBeaconのエリアから出た時の認識も遅いようです。これもエリアを出てから20秒後に通知される仕様になっているためで、iBeaconのエリア境界にいる場合で頻繁にエリアを出入りしてしまうという誤判定を防ぐためです。
そして、特徴のところでも書きましたが、距離の測定については、とても近い/近い/遠いの3段階でしか判定できない仕様のため、アバウトな判定しか出来ませんでした。

※参考:距離を割り切って3段階に分類(日経テクノロジーオンライン)

 

また、電波なので発信器とデバイスの間に障害物などがあると一気に電波強度が落ちることがありました。先ほどの検証でもあったように金属製ドアを挟んだり、発信器に背を向けるだけでも距離精度に変化がありました。
このことから、発信器の設置場所を考慮しないと障害物や電波状況などにより認識しにくくなるため、なるべく見通しの良い場所、壁/柱など遮蔽物が無いところを選ぶことがポイントになります。
また、周囲の電波状況にもよりますが、設置後は電波強度の調整も合わせて考慮した方がよさそうです。(1mあたりの閾値となる電波強度を調整できます)

 

■大量のビーコン発信器を管理する場合
今回は発信器を1つだけ使用しましたが、実サービスでは複数の発信器を使用することもあると思います。今回使用したAplix社製品の場合は、webの管理ツールと連動する一括設定を簡単に行えるiPhoneアプリがあり、発信器に近寄ってデータを書き替えることになります。その際には他の発信器の情報と間違えて書き替えないような運用も必要になります。

 

■セキュリティの問題
iBeaconはビーコンのIDを取得できれば成りすましが行えてしまえます。これにより不正にアプリを反応させることができてしまうため、その場でしか受けられないサービス(クーポン発行)など、成りすまされても実害が無いサービスを企画(ネットだけで完結してしまうのではなく、リアルに店舗や場所と関わるもの)したり、成りすまされると問題のある企画の場合はGPS等との併用や、ビーコンモジュールに備えられたセキュリティの仕組み(Aplixのサービス:http://www.aplix.co.jp/?page_id=9656)を使うなど、対策が必要になります。

 

このように多少制約や問題があるものの、最近のiPhoneであればほぼ内蔵されている機能でデバイスの普及率も高く手軽に使えるので、使い方次第では用途も広がるのではないでしょうか。弊社でもiBeaconを利用したサービスを企画できればと思います。

 

iBeaconに関するお問い合わせ、その他ご用命などございましたら、こちらよりお願いいたします。

iBeaconというのを最近よく耳にするようになりました。これは一体どのようなものか調べて実際に使ってみました。

ibeacon-logo-small

■iBeaconとは
iBeaconとは2013年にApple が発表したもので、ビーコン(Beacon)と呼ばれる信号を発信する発信器と、それを受信するデバイスで信号をやりとりする機能のことです。ビーコン発信器を中心とする半径数m内にあるデバイスの入出の検知と距離(おおまかな)計測、特定などを行うことができます。
iBeaconは近距離無線通信技術のBluetooth Low Energy(以下、BLE)と呼ばれるBluetooth仕様の一種で、消費電力が非常に小さいことが特徴です。この規格はApple固有の技術ではないためAndroidでも使用可能です。
対応OSはiOS7以降で、端末はiPhone4S/iPad(3rd generation)/iPad mini/iPod touch(5th generation)以降となっており、iOS7.1以降ではアプリを非起動状態から通知を受けることができるようになっています。Androidの場合はOSがAndroid4.3以降、BLE搭載端末となっています。

※AndroidからiBeaconを受信するためには、BLEの仕様がわかれば自作できますが、アビダルマ株式会社様よりSDKがリリースされています。このSDKについては未検証のため今回は割愛します。

 

■iBeaconの用途
iBeaconの主な用途としてはO2O(Online to Offline)を想定していますが、多様な用途に使用できます。実際に運用されているサービス・アプリとしては、店舗内で使用できる割引クーポンの発行、博物館・美術館の展示物の情報の提供、スタンプラリーなどがあります。

※主な導入例
・米大リーグ(MLB.com At the Ballpark)
・スマポ(http://www.smapo.jp/)
・館ナビ(http://www.kan-navi.com/)
・AppleStore(米国のみ)
・スマート座布団(http://www.keyvalue.jp/?stage=press_smartchair)

 

■iBeaconの仕組み
iBeaconは発信器が発するビーコン信号を受け取ったデバイスがエリアに入ったかどうかを判断するだけのモジュールなので、決済を行う仕組みやコンテンツ(画像やポイントなど)を送信する仕組みはありません。また、アプリケーションから発信器に対してデータを送ることや、アプリ(iOS端末)間と相互の通信もできません。
決済やコンテンツを送信する仕組みが必要な場合は、アプリとの連携が必要になるため別途実装する必要があります。例えば、アプリ側が受信したiBeaconの識別IDを元に、コンテンツや情報をサーバーから(もしくはアプリケーション内のリソースから)取得・処理するといった方法です。

 

■iBeaconで取得できる情報
iBeaconは発信器から直接コンテンツや情報を送信するものではありません。送信される情報はiBeaconの識別IDや、距離(方角は取得できません)、電波強度などの情報となります。

・UUID(ビーコン領域を示す識別ID)
・majorID(ビーコンを特定するID)
・minorID(majorIDに紐づくビーコンID)
・距離(Immediate:ごく近い(十数cm), Near:近い(約1m前後), Far:1m以上)
・測定精度(距離の誤差がどれくらいか[m])
・電波強度(電波の強さ[dBm])

 

■設置例
下の図は設置例です。
beaconSetting
[図1]衣料品店でのビーコン設置例

 

※同一店舗内に設置するビーコンのUUIDは統一しておき、支店がある場合は支店毎にUUIDを決めておきます。
※ビーコン発信器にMajorID、MinorIDを設定します。発信器は一意に特定できるようにするため、店舗内で同一のMajorID,MinorIDを持つ発信器が存在しないようにします。
(図1の例では男性向け衣料のビーコンA,BにMajorID=1を設定しており、MinorIDはAに1,Bに2を割り当てることで、どのビーコンのエリアに入ったかが特定できるようにします)
※今回の実験で使用したAplix社製の場合ビーコンの場合、UUID、majorID、minorIDは自由に設定可能です。(メーカーによっては自由に設定できないものがあるため、導入の際は調査が必要です。発信器を複数調達する場合はメーカーを揃えた方がよいでしょう)

 

次回の「iBeaconについて(実践編)」では、実際にiBeaconを使用して検証してみたいと思います。

 

iBeaconに関するお問い合わせ、その他ご用命などございましたら、こちらよりお願いいたします。