SceneKitで遊んでみる

SceneKitで遊んでみる

iOS8にはいった、3Dの何かを簡単に作れるSceneKitで遊んでみた。

キャラクタが画面中央に表示されて、5秒に1回ジャンプのアニメを実行する。BananasAsimpleSceneKitplatforminggame と https://github.com/shu223/iOS8-Sampler のSceneKitのサンプルをコピペでつなぎあわせたようなもの。

感じ的には、three.js で3Dしている方の説明とおんなじ感じだなと思った。せっかくだから、ミクさんのアプリを作ればいいのに、3Dデータ変換方法がわからなくて、断念。

Githubのサンプルアプリ。 https://github.com/reinforce-lab/ObjC_Codes/tree/master/SceneKitDaeExample

https://developer.apple.com/library/mac/documentation/3DDrawing/Conceptual/SceneKit_PG/Introduction/Introduction.html

SceneKit Framework Reference https://developer.apple.com/library/ios/documentation/SceneKit/Reference/SceneKit_Framework/

3Dデータの変換

https://github.com/ark-project/ark-project にオープンなデータがあったので、サンプルに使わせてもらった。 cheetah3dというMacのアプリで読み込んで、dae形式に書き出して、テクスチャの設定をする感じ。

モデルが最初真っ白だったから、まず左のペインのMマークのマテリアルで、diffuseにテクスチャの画像ファイルを指定。光の放出を意味するEmissionが白だと、やっぱり白いままなので、これを黒に変更、とかすると3Dモデル+テクスチャが表示される。

lapisの3Dモデルは、上腕部がXcodeでプレビュ表示されない。またビルド時にdae形式のアイルを変換するっぽくて、その時にエラーが出てた。なので、モデルファイルはプロジェクトからは削除してある。

ツールによって、ファイルフォーマットの相性とか、データの作り方や命名方法など、実際にやっていくと、いろいろあるんかもね。

/post/2014-10-03-scenekit-trial/20141003_3.png

SceneKitの使いどころ

3Dのモデルを読み込み、それを表示させたり、アニメーションをさせたり、物理シミュレーションで動かしたりするのが簡単にできるのが、SceneKit。昨年iOS7で導入された2Dテームを手軽に作れる SpriteKit の3D版といった感じ。

3Dゲームを作る環境には、Unity等がある。それに比べて何か利点があるかというと、多分ない。開発環境を見ても、3Dのモデルはプレビューはできるけど編集能力はないし、物理シミュレーションやアニメーションができるけど、現在のところはインタラクティブに確認する機能もないから、ビルドして振る舞いを見るしかない。プラットフォームもiOSかMacOS縛りになる。

Unityを使うほどではないとか、Unityのラインセスをとって学ぶのが大変だとか、Unityを使った人がいないときに、アプリにちょっと3Dを入れたい場合には便利だと思う。3Dのシーンを見せるのに、レンダリングした動画を入れちゃうと、見るだけになるけど、例えばカメラアングルをぐりぐり動かしたいとか、アプリ側から演出したいとか、そういうときに3Dモデル+アプリ的ななにか、をちょっと入れる場面も、使えると思う。

イメージ的には、アイカツ!ミュージックビデオメーカーみたいな。http://app.famitsu.com/20140806_420069/

あるいは、月齢表示とかのアプリなら、月の3Dモデルに太陽と地球の放射光があたっているさまを、表示するとか。

SceneKitのなかみ

プロジェクトのサンプルコードを見たら、そのままだけど。

表示は、UIViewを継承する SCNView 。これのsceneプロパティに、SCNScene のオブジェクトを入れる。ゲームだと、3D画面の上に操作用画面をいれるけど、それはSCNScene のoverlayなんとかに、SpriteKitの画面を入れられるので、それを使うといいっぽい。

SCNScene は、3Dモデルやアニメーションといったデータを保持するクラス。内部のデータ構造は、SCNNode をノードにする木構造。ノードを作っては、そこにカメラとかオブジェクトとかを張り付けていく。木構造の根は、SCNScene の rootNode プロパティ。

3Dモデルのテクスチャには、リソースの画像ファイルや、文字列やら、CALayerやSpriteKitの画面が貼り付けられる。だから、カメラのプレビュ画面がCALayerから派生しているけど、そういうカメラ動画を貼り付けるとか、そんなのも簡単にできる。

OpenGLのレンダラを生で叩くとか、低レベルなところもありっぽい。OpenGLで別で自分で書いたのと融合とか、面白い事が出来る人には、使いこなせるんあろうと思う。

面白いのは、アニメーションの指定がCoreAnimation。ノードに貼り付けた3Dオブジェクトやライトやカメラの、位置や速度や質量や加速度やらをCoreAnimationでアニメできる。また、アニメのデータは dae 形式のファイルに入れたアニメのデータをCoreAnimationとして読みだすことができるので、別にコードで書かなくてもいい。

2次元のUIのアニメだと思っていたCoreAnimationのスキルが、3Dなところでもそのまま使えるのは、汎用的で面白い。

あとはパッと見たところで:

SCNProgram

OpenGL Shading Language (GLSL)で記述したシーエだープログラムを使ってカスタムなレンダリングを実行する。 バーテックスシェーダー、フラグメントシェーダー

https://developer.apple.com/library/ios/documentation/SceneKit/Reference/SCNProgram_Class/index.html#//apple_ref/occ/cl/SCNProgram

SCRenderer

https://developer.apple.com/library/ios/documentation/SceneKit/Reference/SCNRenderer_Class/index.html#//apple_ref/occ/cl/SCNRenderer

すでにレンダラのコンテキストが指定されているアプリに、別のコンテキストを指定できる。EAGLContext object 。

SCNView。カメラグリグリ動かせる、フレームレート(最大60、デフォルト60)、スナップショット。

https://developer.apple.com/library/ios/documentation/SceneKit/Reference/SCNView_Class/

SCNScene。Vihicleのサンプル、オーバーレイが継承している。

SKSpriteNode。2次元の画像。

SpriteKit(2次元ゲームを作るやる)のシーンをオーバレイ。速度メータとか。

	SKScene *scene = self.overlaySKScene
	//self はSCNView

SCAAnimationEvent。足音とか、アニメに同期した音

iOS8の高度計(気圧計)

iOS8の高度計(気圧計)

iPhone6 Plus および iPhone6には、気圧計が入っています。

今どき気圧計は高精度で、気圧の値の変化から、1メートル程度の高さの変化が十分にわかります。これがあると、例えば、ユーザが今ビルの何階にいるかがわかるわけです。

サンプルコードはこんな感じ。

1秒に1回の頻度で、気圧値が更新されて通知されてきます。相対高度(relativeAltitude)は、前回の通知から今回の通知までの高度の変化分を通知しています。今の実装は、おそらく、単純に気圧値の差分に定数をかけるとか、そんな感じなのかもしれません。

更新頻度を指定する方法は、今のところないみたい。

ハードウェから見ると、iPhone6の分解 http://www.techinsights.com/teardown.com/apple-iphone-6/ から、センサは Bosch Sensortec BMP280 Barometric Sensor

仕様を見ると、動作範囲(full accuracy) 300 ~ 1100 hPa、平均測定時間 5.5ミリ秒、分解能0.01 hPa (< 10cm)、温度 0.1度、絶対精度(950 ~ 1050 hPa) +- 1hPa、相対精度 +ー0.12 hPa (高さ+ー1m相当)。 (1hPa(ヘクトパスカル) は 100パスカル。)

センサの仕様から、今の振る舞いは、ほぼセンサの値をそのまま利用する単純な実装をしているのかな、と思いました。

/post/2014-10-03-ios8-barometer/20141003_1.jpg

Githubのサンプルアプリ。 https://github.com/reinforce-lab/ObjC_Codes/tree/master/barometer

ここの気圧と高度の計算式で、標高ゼロメートル、温度27度(絶対温度で300K)のときに、1mあたりの気圧の変化は、11パスカル。

http://keisan.casio.jp/has10/SpecExec.cgi?path=05000000.%95%A8%97%9D%8C%F6%8E%AE%8FW%2F02100100.%92n%8Aw%2F12000200.%95W%8D%82%82%A9%82%E7%8BC%88%B3%82%F0%8Cv%8EZ%2Fdefault.xml

/post/2014-10-03-ios8-barometer/20141003_2.jpg

アプリの値の変化を見ていると、たしかにそれっぽい感じで、とれている。

ソースコード

@interface ViewController () {
    CMAltimeter *_altimater;
    bool _isFirstSample;
    double _currentValue;
    double _averageValue;
    double _altitudValue;
}

@property (weak, nonatomic) IBOutlet UILabel *currentValueTextLabel;
@property (weak, nonatomic) IBOutlet UILabel *averageValueTextLabel;
@property (weak, nonatomic) IBOutlet UILabel *variationValueTextLabel;
@property (weak, nonatomic) IBOutlet UILabel *warningTextLabel;
@property (weak, nonatomic) IBOutlet UILabel *altitudeValueTextLabel;

@end


@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.
    _isFirstSample = YES;
    
    self.warningTextLabel.hidden = [CMAltimeter isRelativeAltitudeAvailable];
    if([CMAltimeter isRelativeAltitudeAvailable]) {
        _altimater = [[CMAltimeter alloc] init];
        [_altimater startRelativeAltitudeUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMAltitudeData *data, NSError *error) {
            [self altitudeDataHandlr:data error:error];
        }];
    }
}

-(void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];

    [_altimater stopRelativeAltitudeUpdates];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

-(void)altitudeDataHandlr:(CMAltitudeData *)data error:(NSError *)error {
    if(error != nil) return;
    
    double altitude = [[data relativeAltitude] doubleValue];
    double pressure = [[data pressure] doubleValue];

    _currentValue = pressure;
    _altitudValue = altitude;

    if(_isFirstSample) {
        _averageValue = pressure;
    } else {
        _averageValue = 0.1 * _currentValue + (1 - 0.1) * _averageValue;
    }
    _isFirstSample = NO;
    
    self.currentValueTextLabel.text  = [NSString stringWithFormat:@"%1.5e", _currentValue];
    self.averageValueTextLabel.text  = [NSString stringWithFormat:@"%1.5e", _averageValue];
    self.altitudeValueTextLabel.text = [NSString stringWithFormat:@"%1.3e", _altitudValue];
    
}

iPhone6ぶっちゃけ雑談

iPhone 6買ったので雑感を書いてみる。

/post/2014-09-19-iphone6-put-bluntly/20140919.jpg

ハードウェア

箱をあけて手にとってまず思ったのは、カメラ周りの作りが、あまりにも雑だと思った。レンズは本体から飛び出ているし、レンズ周りの金属パーツはやたら余裕がなくて樹脂部品と近く、あまり美しいものに見えない。

iPhone6のスペースグレーを買ったのだけど、樹脂部品の色も何とも言えない灰色で、全体から見ても美しい色には見えない。確かにハードウェアの性能高いのであろう。だがこれに7万の金を出すようなものに見えなかった。

実際に手に持ってみるとどうだろう。液晶のガラスは微妙にカーブしていて、持ち心地が良い。だけどテキストを打とうとすると、キーボードが下のほうに出てきて、片手持ちでは指が届かない。

テキストタイプ

それでも無理に指を届かせてタイプするのだけれど、本体の重心が真ん中にあるのに本体の下を持つものだから、重心が手のひらから外に出てしまう。だからうっかりすると本体落としそうになる。とても不安定で使っていられない。

仕方がないから左手で本体を持って、右手でキーボードタイプするのだけれど、今まで片手でできていたことが片手できなくなって、とても不満に思う。

横方向に持って使えばいいのだろうかと思って、そのように使ってみるのだけれども、メモ帳などのアプリは回転に対応していても、ホーム画面が回転に対応していないから、なんとも使い勝手のバランスが悪い。

だからホームに戻るとアプリのアイコンが変な具合に並んでいるようにしか見えなくて、やっぱり使いづらい。

アプリの画面設計

改めて全体を考えてみると、もともと手のひらに収まる小さい画面で便利に使えるように設計された、iOSのUI、それを無理やり5インチに引き延ばしているのだからそれが不自然ないわにならないわけがない。

そうやって全店がそうやって画面を見てみると、キーボードわかめサイズが大きくなったのに比例してそのまま何も考えずに大きくなっていて、指のサイズに日間に合わなくて使いづらいし、ナビゲーションバーは画面の上に表示されるから、指を大きく伸ばさないと達することすらできない。

新規にインストールしたiOS8のメールアプリにGmailアドレスを登録したら、メールが来ないし、メールは送信できないし、設定アプリは突然終了するしと、iOS自体の完成度にも疑問を感じる。iPhone6についてきたGarageBandの楽器アプリなんて、起動したら直ちに落ちるし。何この質の悪さ、と思っちゃう。

今までのiPhone体験は、ユーザインタフェースと本体ハードが統合してデザインされていて、とても自然な使い心地で毎日使うことができた。このiPhone 6はその自然な体験を全て台無しにしてしまった、そう思った。

iPhone6plusがなければiPhone6は売れなかったのでは

iPhone6のほうが6plusより数量が売れているそうです。実際に手にとって、6か6pかと言われたら、それはそうだろうと納得です。

では、もしも6plusを発表していなかったら?

きっと、iPhone5sに比べて片手で操作できない、いままでのiOS体験を台無しにするこんな機種を誰が買うのか、と散々な評価を与えられたと思う。裏面の雑な仕事は、その着火剤と燃料に十分成り得た。でも、より大きな6plusがあって、それとの比較で、6か…となるこの流れ、Appleはユーザ体験の設計が絶妙だと思う。

でも買うならiPhone

でも、買うならiPhone6、おすすめ。

キャリア買い上げ価格を見てもわかるように、iPhoneが顧客釣り上げツールに一本化された象徴デバイスとなったことで、カバーを付けて利用して2年後外観が新品同様だったら、1/2金額で下取り。これはAndroidであり得ない、やすさの源。

2GBのパケットプラン(今はキャンペーンで1年間ほど+1GBの実質3GB)+音声定額なら、3キャリアどこを選んでも月額6500円。その月額からの割引の合計で、iPhone6 16GBの実質価格が0円になる。2年後にそれが3万円程度で下取りしてもらえるなら、2年間の端末利用代金は、キャリアの月額に含まれていて、2年間新品同様に使っていたら3万円のキャッシュバックが得られる形態と見える。

この料金プランは、とても合理的。MVNOでiij みおふぉんを利用して、(いまは4GBに増量されているけど)2300円ほどの月額プランで運用すれば、2年間の本体込の合計利用額は、3キャリアの合計金額の-3.5万円ほど。だから本体が2年後に3万円程度で下取りしてもらえるっていうことは、接続やテザリングに不安のない通信ブランドを、実質MVNO料金で使えるってこと。

お金の流れをみて、正しく土管をやってるな、そう思う。

auは、国内ではSIMロックだけど、海外SIMを挿したら使えちゃう?、これ海外SIMに対してはSIMロックフリーなの?みたいなのをみたり、ソフトバンクにいたっては、アメリカ放題とかいう、なんかもう訳の分からないサービスまで登場して、国内ではお互いSIMロックで戦うけど、それ武器にしたら、海外に行くユーザには総スカンだよね、みたいなところも手当してるっぽい感じが、面白い。土管やってるなって思う。(ただしドコモは除く)

つまり、月額6500円(2GBのパケット+音声定額+端末利用権 込)で、2年間綺麗に使ったら3万円のキャッシュバック。実質月額、ぜんぶこみこみ5250円。2014年7月の二人以上世帯の通信費(固定を含む)平均支出が年額1.5万円だから、その金額の範囲に綺麗に収まる。古い本体を保持しないといけない開発者の方々は、儲けの道具、経費で買えるのだから、そのところは養分になってください。

iPhoneは、実質、実際安い。

だけど、それはブランド力あってのこと。

売上の絶対額って、超重要だから、3.5万円で下取り前提なら7万円という他社+50%価格が納得できるって仕組み、とても大切。それを納得させる理由に、今まではブランドが使えたけど、いまでは"安物ではないけど、実際安い"やんな。この背面デザインでその仕組、来年も続けられるのかしら?

それともケースをつけて利用するから、問題がないのかしら。電車で使ってても、もはやiPhoneなのかAndroidなのか、わからないし、わかる必要もない時代なのかもしれない。

こうしてみると、ハードウェアが正しくゴミになっている

こうしてみていると、ハードウェアは、正しくゴミになっている。普通なら、型落ちで新品の機種を買ってキャリアは別途通信プラン契約で使うのが最安の利用方法になろう。だけどiPhoneの場合は、常に最新機種を持つことで、2年後の高い下取り価格と月々割による実質本体ゼロ円で、日本では最安のスマフォになっている。

iPhoneのシェアが高いのは、単に最安だから。その最安を支えているのは、キャリアのユーザ獲得合戦があって、高い下取り価格と月々割による実質ゼロ円が維持されているから。そのユーザ獲得合戦にiPhoneが使われているのは、毎年1機種を決算セールの9月に出してきて、売りやすいから。

だから、型落ちを買う必要はない。何も考えず、常に最新機種が出れば脊髄反射で購入して、2年後に下取りにだせばいい。それが、最もお得。いままでのiPhoneと同じよに運用されているなら、ひどいOSのバグで悲惨な目にあうことは、少ないだろうし、例えばバグに遭遇しても世の中の大部分の人が、同じバグに遭遇しているのだから、“いやぁiPhoneのバグで困っちゃいまして"って、逆に話題にできる。これがAndroidだったら、馬鹿か?バグのない別機種買ってこいよ、の一言で切り捨てられる。

いろんな要素が、うまく噛み合っている。うまい。

新しいアプリの体験

iOS8のヘルスアプリという新しいアプリの見せ方も不自然だ。Bluetoothのエナジーの心拍センサーを身に付けているがヘルスアプリ自体がデータを吸い上げることがない。だから一般ユーザーにはこれがどう使うものか伝わることはないだろう。新しい体験を伝えずにアプリだけ置いて不自然なやり方だと思った。

なぜこんなiPhone 6を発売しただろう、今までのiPhone体験が全て台無しになったような気がして理解すら覚えた。

音声入力からみると?

簡単に体験できるから、一度試してほしい。

設定アプリから、一般 - Siri とたどり"Hey Siri"を許可を、ONにする。そしてiPhoneを電源に接続して、ホーム画面も何も表示されていないところで、へい、しり、と話しかけてみる。そうするとSiriが起動して、音声コマンドを受け付けてくれる。

仕事に便利よ

25分仕事して5分休むを繰り返すポモドーロっていうテクニックがあるけど、“へい、しり。25分後に知らせて"で25分タイマーが起動するから、そういう使い方に、むちゃくちゃ便利ですよ。

音声テキスト入力?

Twitterのアプリを起動して、音声入力でツイートしてみるとその考えが、違うものになった。

iPhoneを左手に持って音声でテキスト入力する。iPhoneは力は音声がリアルタイムに認識されて入力されていく、その精度が非常に高い。だから指でいちいちテキスト入力しなくても普通に使える。もうテキストタイプするその使い方自体が時代遅れなのかもしれない。

だからアップルが時計を発売したらそれには必ず音声入力と出力を機能として追加しているだろうから、メールメール11位は声だけで終わってしまうじゃないかな。

今までのiPhone 5sそれとiOS 7だと入力がリアルタイムではなかっただからいちど話してそれが認識される結果をまとめて食べていけない。だから正しく入力されたのかとても不安になるしつまり使えない。

iOS 8ではHomeKitと言う家電操作のAPIが搭載された。あれはまさに音声入力で操作するものだから、常時Siriが起動していて、声だけで操作するという世界それが次のiOSの目指して世界なのかもしれない。

でもこのSiriの音声認識の精度が非常に高い強い。特にリアルタイム性がヤミツキなるほど高い。本体自体音声認識をやっているんだろう、辞書自体も本体中に持っていてサーバーへのアクセス自体をあまりつかわなくなって、できるのかもしれない。

だから音声入力端末だと思ってしまえば左手で端末を固定してニュークス分だけだからものすごく快適になる。

だから結論として、いままでのiPhone体験をiPhone6で得ようと思うと、ものすごいフラストレーションを感じる。これじゃない。

でも、音声入力を体験すると、全く違う新しいものがそこにある気がする。

もちろん街中で音声入力を使うのは、今は心理的な抵抗感があるだろう。花粉症のマスクが街中で見られるようになった程度に、変化しうるのかもしれない。

不特定多数がいたらダメじゃないかと思うかもしれないが、声質から個人を特定するのは、難しい技術じゃない。

Recent trend of iBeacon in Japan

iBeacon is one and the only one powerful tool for sending a event trigger to an iPhone be meters away from a beacon. I introduce recent trend of iBeacon in Japan, because I have not read an article like this in English, yet.

I talk about beacon manufacturing companies, services that uses iBeacon, and application delopers (iOS and server applications) communities in Japan.

iBeacon manufactureres

Aplix Corporation http://www.aplix.co.jp, translated by Google transate, has been proving beacons since October 2013. Their beacons, product page, translated page, are resonable prices and very unique.

iOS8でのiBeacon活用

WWDC2014のプレゼンテーションから、iOS8での/iOS8からのiBeaconの活用方法をまとめてみます。

すでに iOS8で正体を現したAppleの屋内位置測位。iBeaconは第一形態だった。Maps Connectとは? #WWDC14 で詳細に記述されていますが、重複しつつも改めてまとめてみます。

資料

開発者向け情報:

iBeaconの開発者および敷設と管理者向けの一般情報:

iBeaconの設置および建物の所有者向け:

  • https://mapsconnect.apple.com 屋内地図の登録申請が始まっています。Apple IDでログインできます。所有する建物や図面フォーマットなど屋内マップに必要な情報が項目にあります。

建物の所有者向けの情報、iOS8に向けた準備

建物所有者がiOS8に向けてできることは:

  1. WiFiやiBeaconを含めた屋内地図の登録申し込みを始める,
  2. iBeaconの設置計画をたてる,
  3. 屋内ナビゲーションアプリをリリースするならばアプリケーション開発を始める,

です。

WWDC2014では、iOS8の屋内測位についての明確な技術情報は提供されてはいません。プレゼンテーションでは、位置情報を提供するフレームワークが、CLFloorクラスという建物の階をアプリケーションに伝える機能が追加された、屋内ナビゲーションアプリを作成するときに緯度経度と地図画像の座標変換を楽にするヘルパー関数が提供される、発表があった程度です。

Appleの地図アプリへのデータ提供

https://mapsconnect.apple.com では屋内地図の登録申請が始まっています。このサイトには、開発者でなくとも一般的なApple IDでログインできます。所有する建物の住所および提出できる図面フォーマットや屋内測位に使えるWiFiやiBeaconを設置しているかなどの、屋内マップ作成に必要な情報が項目にあります。

これはAppleの地図アプリケーションに屋内マップ表示を取り込むためのものだと思われます。特に駅や空港などの公共機関は、地図データの登録のやりとりを早く開始すべきでしょう。

屋内地図を使う場面には、ユーザの現在位置表示が必要です。GPSが届かない屋内での位置推定は、カーナビゲーションと同じように加速度センサなどを活用した慣性航法を提供するかもしれません。ですがこの方法は誤差が積分されていきます。その補正にWiFiやiBeaconの屋内の電波状態を使うと思われます。

WiFiは通信環境を構築するために設置しますから、特に屋内ナビゲーションのために何かをすることはないでしょう。ただし、iBeaconはWiFiよりも電波が届く範囲を小さく設定するなど自由度が高いですから、ユーザが必ず通過しかつ移動範囲が限定される入り口などにより集中して設置することで、初期位置の補正に有効に使えます。

建物へのiBeaconのビーコン設置は、電池ではメンテナンスが手間でしょうから、電源配線が必要になるでしょう。またビーコンの設置そして動作していることをモニタリングする仕組みも必要になります。

屋内案内のアプリケーション開発

例えば百貨店などでは、屋内位置がわかるだけでは不十分で目的のお店の位置表示およびナビゲーションが必要になります。配置が頻繁に変更されるテナントの詳細情報までは、Appleへの屋内地図データ提供では対応しきれないでしょう。このような場合は、専用のナビゲーションアプリケーションの開発があります。

iOS8は、アプリ屋内案内のアプリケーション開発を手助けする屋内案内地図表示のヘルパ関数を提供しています。しかし、アプリケーションが開発できても、問題はユーザがそのアプリケーションをどうやってインストールしてくれるかです。

iOS8は位置に紐付いたアプリケーションのインストールに:

  • AppStoreのnear-me,
  • ロック画面のアプリまたはAppStoreアイコンの表示,

を提供します。

AppStoreのnear-meは、AppStoreアプリのタブ"近くで人気"のことです。その場所で人気のアプリケーションを表示するので、例えば先ほどの百貨店のアプリケーションは店舗の近くでアプリケーションが表示されます。アプリケーションと位置の対応付けを、アプリケーション提供者が設定できるかなどの仕組みは、不明です。

iOS8からは、ロック画面にその位置に関連するアプリケーションのアイコンまたはAppStoreのアイコンが表示されるそうです。これも、どのように関連付けされるのか、また設定ができるのかはわかりませんが、わざわざユーザがAppStoreを開く手間を省くことを提供すると思われます。