Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Upcoming SlideShare
第27回WebSig会議(大崎さんスライド)
Next
Download to read offline and view in fullscreen.

3

Share

Download to read offline

YAPC::Asia

Download to read offline

YAPC::Asia

  1. 1. mixiチェックインの裏側 YAPC::Asia Tokyo 2010 株式会社ミクシィ 原田 星児
  2. 2. ●自己紹介 ●mixiチェックインについて ●スポットの絞込み方法 ●高速化 ●まとめ アジェンダ
  3. 3. ●原田 星児 ●株式会社ミクシィ サービス本部 コアサービス部 開発グループ コミュニケーション開発チーム 所属 ●最近のお仕事 フォトリニューアル(モバイル) フォトボイス連携(モバイル) mixiチェックイン(モバイル) 自己紹介 8年前 こんなのも作ってました
  4. 4. mixiチェックインについて 「mixiチェックイン」は、携帯電話のGPS機能を利用して、 今いる場所やお店(スポット)を簡単に友人・知人に共有できる 『mixi』の新しいコミュニケーション機能です。(弊社プレスリリースより)
  5. 5. geohashの前方一致 スポットの絞込み方法
  6. 6. 緯度経度の範囲を文字列で表す仕組み 例)緯度:+ 35.7298508752137 経度:+ 139.716479647905 → xn77726mmy ココ geohashとは
  7. 7. geohashから座標を求めよう
  8. 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. 9. 座標を求めてみよう 11101|10100|00111|00111|00111|00010|00110|10011|10011|11110 x n 7 7 7 2 6 m m y
  10. 10. 座標を求めてみよう 11101|10100|00111|00111|00111|00010|00110|10011|10011|11110 x n 7 7 7 2 6 m m y
  11. 11. 座標を求めてみよう 11101|10100|00111|00111|00111|00010|00110|10011|10011|11110 x n 7 7 7 2 6 m m y
  12. 12. 座標を求めてみよう 11101|10100|00111|00111|00111|00010|00110|10011|10011|11110 x n 7 7 7 2 6 m m y
  13. 13. 11101|10100|00111|00111|00111|00010|00110|10011|10011|11110 x n 7 7 7 2 6 m m y 座標を求めてみよう
  14. 14. 座標を求めてみよう 11101|10100|00111|00111|00111|00010|00110|10011|10011|11110 x n 7 7 7 2 6 m m y
  15. 15. 座標を求めてみよう 11101|10100|00111|00111|00111|00010|00110|10011|10011|11110 x n 7 7 7 2 6 m m y
  16. 16. 座標を求めてみよう 11101|10100|00111|00111|00111|00010|00110|10011|10011|11110 x n 7 7 7 2 6 m m y
  17. 17. 座標を求めてみよう 11101|10100|00111|00111|00111|00010|00110|10011|10011|11110 x n 7 7 7 2 6 m m y
  18. 18. 座標を求めてみよう 11101|10100|00111|00111|00111|00010|00110|10011|10011|11110 x n 7 7 7 2 6 m m y
  19. 19. 座標を求めてみよう 11101|10100|00111|00111|00111|00010|00110|10011|10011|11110 x n 7 7 7 2 6 m m y 特定しました!
  20. 20. ● geohashが短いと範囲が広がる 青枠の中の座標は 全て XN7772 から始まる XN7772 の前方一致で 範囲内の検索ができる スポットの絞込み方法
  21. 21. 落とし穴がある
  22. 22. この辺りも含めたい!! GPSの計測結果 ●矩形の隅っこの場合 スポットの絞込み方法
  23. 23. 範囲を広げるには? geohashの文字数を削る なぜ? スポットの絞込み方法
  24. 24. xn7772 → xn777 落とし穴 含めたいのはココ
  25. 25. 含むまで削ると・・・ 広がりすぎ 落とし穴
  26. 26. どうすればいい?
  27. 27. とりあえず周囲のマス取ってみた 考えてみた
  28. 28. いい感じ
  29. 29. でも・・・ ・・・明らかに遠いので削る 考えてみた
  30. 30. とてもいい感じ
  31. 31. ●geohash ●mysql ●計算処理を早くできないか? ●無駄なクエリを減らす事はできないか? 高速化について
  32. 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. 33. ●キャッシュ化 ●スポット情報が頻繁に変わらない ●検索は6文字のgeohash 結果 関東と関西をキャッシュ キー総数は65536 カバー率は38% 6文字のgeohashをキーにして Memcachedに積んじゃえ!! mysql
  34. 34. ●6文字のgeohashによる前方一致で絞込み ●最小で1つ、最大で4つのキーで検索 ●geohash周りの計算はGeo::Hash::XSで高速化 ●検索半径250mでキーの平均値は2.66個 (250mの根拠は検証時のGPSのズレの最大値) まとめ ●GPSの精度が上がれば7文字もアリ ●無駄なクエリを減らすためにキャッシュ化
  35. 35. 浅草 雷門 位置情報を楽しもう!
  36. 36. ご清聴ありがとうございました
  • keiichiochiai

    Mar. 25, 2015
  • AyuneTanisugi

    May. 12, 2014
  • ktsujichan

    Dec. 9, 2010

Views

Total views

3,752

On Slideshare

0

From embeds

0

Number of embeds

10

Actions

Downloads

12

Shares

0

Comments

0

Likes

3

×