Submit Search
YAPC::Asia
•
Download as PPTX, PDF
•
3 likes
•
1,395 views
Seiji Harada
Follow
1 of 36
Download now
Downloaded 13 times
More Related Content
YAPC::Asia
1.
mixiチェックインの裏側 YAPC::Asia Tokyo 2010 株式会社ミクシィ 原田
星児
2.
●自己紹介 ●mixiチェックインについて ●スポットの絞込み方法 ●高速化 ●まとめ アジェンダ
3.
●原田 星児 ●株式会社ミクシィ サービス本部 コアサービス部
開発グループ コミュニケーション開発チーム 所属 ●最近のお仕事 フォトリニューアル(モバイル) フォトボイス連携(モバイル) mixiチェックイン(モバイル) 自己紹介 8年前 こんなのも作ってました
4.
mixiチェックインについて 「mixiチェックイン」は、携帯電話のGPS機能を利用して、 今いる場所やお店(スポット)を簡単に友人・知人に共有できる 『mixi』の新しいコミュニケーション機能です。(弊社プレスリリースより)
5.
geohashの前方一致 スポットの絞込み方法
6.
緯度経度の範囲を文字列で表す仕組み 例)緯度:+ 35.7298508752137 経度:+ 139.716479647905 →
xn77726mmy ココ geohashとは
7.
geohashから座標を求めよう
8.
xn77726mmy 29|20|7|7|7|2|6|19|19|30 BASE32 11101|10100|00111|00111|00111|00010|00110|10011|10011|11110 2進化 1110001101011010100110111 → 経度 1011001011010000110101110
→ 緯度 11101|10100|00111|00111|00111|00010|00110|10011|10011|11110 座標を求めてみよう
9.
座標を求めてみよう 11101|10100|00111|00111|00111|00010|00110|10011|10011|11110 x n 7
7 7 2 6 m m y
10.
座標を求めてみよう 11101|10100|00111|00111|00111|00010|00110|10011|10011|11110 x n 7
7 7 2 6 m m y
11.
座標を求めてみよう 11101|10100|00111|00111|00111|00010|00110|10011|10011|11110 x n 7
7 7 2 6 m m y
12.
座標を求めてみよう 11101|10100|00111|00111|00111|00010|00110|10011|10011|11110 x n 7
7 7 2 6 m m y
13.
11101|10100|00111|00111|00111|00010|00110|10011|10011|11110 x n 7
7 7 2 6 m m y 座標を求めてみよう
14.
座標を求めてみよう 11101|10100|00111|00111|00111|00010|00110|10011|10011|11110 x n 7
7 7 2 6 m m y
15.
座標を求めてみよう 11101|10100|00111|00111|00111|00010|00110|10011|10011|11110 x n 7
7 7 2 6 m m y
16.
座標を求めてみよう 11101|10100|00111|00111|00111|00010|00110|10011|10011|11110 x n 7
7 7 2 6 m m y
17.
座標を求めてみよう 11101|10100|00111|00111|00111|00010|00110|10011|10011|11110 x n 7
7 7 2 6 m m y
18.
座標を求めてみよう 11101|10100|00111|00111|00111|00010|00110|10011|10011|11110 x n 7
7 7 2 6 m m y
19.
座標を求めてみよう 11101|10100|00111|00111|00111|00010|00110|10011|10011|11110 x n 7
7 7 2 6 m m y 特定しました!
20.
● geohashが短いと範囲が広がる 青枠の中の座標は 全て XN7772
から始まる XN7772 の前方一致で 範囲内の検索ができる スポットの絞込み方法
21.
落とし穴がある
22.
この辺りも含めたい!! GPSの計測結果 ●矩形の隅っこの場合 スポットの絞込み方法
23.
範囲を広げるには? geohashの文字数を削る なぜ? スポットの絞込み方法
24.
xn7772 → xn777 落とし穴 含めたいのはココ
25.
含むまで削ると・・・ 広がりすぎ 落とし穴
26.
どうすればいい?
27.
とりあえず周囲のマス取ってみた 考えてみた
28.
いい感じ
29.
でも・・・ ・・・明らかに遠いので削る 考えてみた
30.
とてもいい感じ
31.
●geohash ●mysql ●計算処理を早くできないか? ●無駄なクエリを減らす事はできないか? 高速化について
32.
●Geo::Hash (http://search.cpan.org/dist/Geo-Hash/) ●ベンチマーク ●隣接するgeohashを求めるadjacentメソッドがある geohash Encode Benchmark: timing
500000 iterations of Geo::Hash encode, Geo::Hash::XS encode... Geo::Hash encode: 137 wallclock secs (136.95 usr + 0.00 sys = 136.95 CPU) @ 3650.97/s (n=500000) Geo::Hash::XS encode: -1 wallclock secs ( 0.66 usr + 0.00 sys = 0.66 CPU) @ 757575.76/s (n=500000) Rate Geo::Hash encode Geo::Hash::XS encode Geo::Hash encode 3651/s -- -100% Geo::Hash::XS encode 757576/s 20650% -- Decode Benchmark: timing 1000000 iterations of Geo::Hash decode, Geo::Hash::XS decode... Geo::Hash decode: 112 wallclock secs (111.68 usr + 0.03 sys = 111.71 CPU) @ 8951.75/s (n=1000000) Geo::Hash::XS decode: 2 wallclock secs ( 0.79 usr + 0.00 sys = 0.79 CPU) @ 1265822.78/s (n=1000000) Rate Geo::Hash decode Geo::Hash::XS decode Geo::Hash decode 8952/s -- -99% Geo::Hash::XS decode 1265823/s 14041% -- ●Geo::Hash::XS (http://search.cpan.org/dist/Geo-Hash-XS/)
33.
●キャッシュ化 ●スポット情報が頻繁に変わらない ●検索は6文字のgeohash 結果 関東と関西をキャッシュ キー総数は65536 カバー率は38% 6文字のgeohashをキーにして Memcachedに積んじゃえ!! mysql
34.
●6文字のgeohashによる前方一致で絞込み ●最小で1つ、最大で4つのキーで検索 ●geohash周りの計算はGeo::Hash::XSで高速化 ●検索半径250mでキーの平均値は2.66個 (250mの根拠は検証時のGPSのズレの最大値) まとめ ●GPSの精度が上がれば7文字もアリ ●無駄なクエリを減らすためにキャッシュ化
35.
浅草 雷門 位置情報を楽しもう!
36.
ご清聴ありがとうございました
Download