SlideShare a Scribd company logo
ロケタッチの裏側

                  株式会社ライブドア
                  開発部 吉川英興


http://tou.ch/                © 2010 livedoor Co.,Ltd.
自己紹介
     開発部 新規開発グループ
     吉川英興 @hideoki




http://tou.ch/       © 2010 livedoor Co.,Ltd.
目次

             •ロケタッチとは
             •システム構成
             •位置情報関連



http://tou.ch/          © 2010 livedoor Co.,Ltd.
ロケタッチとは


http://tou.ch/         © 2010 livedoor Co.,Ltd.
ロケタッチとは
     •ライブドアの提供する位置情報サービス
     •スマートフォン向けWeb版 2010年7月15日
     •iPhoneアプリ、携帯向けサービスは開発中
     •http://tou.ch/
     •Twitter @loctouch




http://tou.ch/          © 2010 livedoor Co.,Ltd.
どんなサービスか
  •いった場所やものを記録(タッ
  チ)
  •自分や友達がタッチした記
  録が地図になる
  •タッチした時間や場所によっ
  てシールがもらえる
  •今週GMS名古屋で発表


http://tou.ch/      © 2010 livedoor Co.,Ltd.
ロケタッチのシステム


http://tou.ch/   © 2010 livedoor Co.,Ltd.
開発言語
           •Perl
             App Server : Starman
             WAF : Sledge + PSGI

           •JavaScript
             jQuery



http://tou.ch/                      © 2010 livedoor Co.,Ltd.
システム構成
典型的なLAMP構成
     Linux
     Apache
     MySQL
     Starman




http://tou.ch/   © 2010 livedoor Co.,Ltd.
位置情報関連


http://tou.ch/        © 2010 livedoor Co.,Ltd.
Google Maps API V3




  Default        Stlyed Map
http://tou.ch/           © 2010 livedoor Co.,Ltd.
Geolocation API
        ブラウザから現在位置を取得するためのAPI
        いまどきのスマートフォンで利用可能
        Firefox や chrome などからもつかえる
        Android1.6以前では Gears を利用する




http://tou.ch/             © 2010 livedoor Co.,Ltd.
Geolocation API
        navigator.geolocation.getCurrentPosition(
            function (curPos) {
                var lat = curPos.coords.latitude;
                var lng = curPos.coords.longitude;
                // ここに処理
            },
            function (error) {
                // 失敗したときの処理
            },
            {
                enableHighAccuracy: true,
                maximumAge: 5 * 60 * 1000,
                timeout: 30 * 1000,
            }
        );

http://tou.ch/                                 © 2010 livedoor Co.,Ltd.
空間インデックス
       問題
        現在地の近くのレコードを検索
             SELECT * FROM spot
               WHERE
                 lat >= ? AND lat < ? AND
                 lng >= ? AND lng < ?

            lng にはインデックスがが効かない

http://tou.ch/                              © 2010 livedoor Co.,Ltd.
空間インデックス
        特殊なデータ構造を用いる
          R-Tree
          4分木

        簡易なデータ構造
          グリッド


http://tou.ch/         © 2010 livedoor Co.,Ltd.
主なグリッドの例
         地域メッシュ(総務省
         iエリアメッシュ
         MGRS
         geohex
         geohash



http://tou.ch/        © 2010 livedoor Co.,Ltd.
Geohash
     経緯度の範囲を文字列で表現
     文字列の長さで精度を変えられる
     長いgeohashを使えば実質地点を表現できる




http://tou.ch/      © 2010 livedoor Co.,Ltd.
例

           xn774c


                    xn774ck




http://tou.ch/                © 2010 livedoor Co.,Ltd.
Geohashの利用
      DB に保存してインデックスとして利用

         spot 12桁 -> LIKE で先頭マッチ
         touch 6桁 -> IN を使った検索



http://tou.ch/           © 2010 livedoor Co.,Ltd.
利点
        先頭マッチで必要な精度で検索できる
        キャッシュに乗せやすい
        変換表を持たなくてよい

      欠点
          文字数の偶奇でメッシュの形状が違う
          高緯度でメッシュが狭くなる

http://tou.ch/        © 2010 livedoor Co.,Ltd.
ご清聴ありがとうございました

     ライブドアではエンジニアを募集しています


   • 明日 18:00~GMS名古屋で発表あります
   • ハッシュタグ #gms_nagoya
   • Ust あり
http://tou.ch/      © 2010 livedoor Co.,Ltd.

More Related Content

ロケタッチの裏側

  • 1. ロケタッチの裏側 株式会社ライブドア 開発部 吉川英興 http://tou.ch/ © 2010 livedoor Co.,Ltd.
  • 2. 自己紹介 開発部 新規開発グループ 吉川英興 @hideoki http://tou.ch/ © 2010 livedoor Co.,Ltd.
  • 3. 目次 •ロケタッチとは •システム構成 •位置情報関連 http://tou.ch/ © 2010 livedoor Co.,Ltd.
  • 4. ロケタッチとは http://tou.ch/ © 2010 livedoor Co.,Ltd.
  • 5. ロケタッチとは •ライブドアの提供する位置情報サービス •スマートフォン向けWeb版 2010年7月15日 •iPhoneアプリ、携帯向けサービスは開発中 •http://tou.ch/ •Twitter @loctouch http://tou.ch/ © 2010 livedoor Co.,Ltd.
  • 6. どんなサービスか •いった場所やものを記録(タッ チ) •自分や友達がタッチした記 録が地図になる •タッチした時間や場所によっ てシールがもらえる •今週GMS名古屋で発表 http://tou.ch/ © 2010 livedoor Co.,Ltd.
  • 8. 開発言語 •Perl App Server : Starman WAF : Sledge + PSGI •JavaScript jQuery http://tou.ch/ © 2010 livedoor Co.,Ltd.
  • 9. システム構成 典型的なLAMP構成 Linux Apache MySQL Starman http://tou.ch/ © 2010 livedoor Co.,Ltd.
  • 10. 位置情報関連 http://tou.ch/ © 2010 livedoor Co.,Ltd.
  • 11. Google Maps API V3 Default Stlyed Map http://tou.ch/ © 2010 livedoor Co.,Ltd.
  • 12. Geolocation API ブラウザから現在位置を取得するためのAPI いまどきのスマートフォンで利用可能 Firefox や chrome などからもつかえる Android1.6以前では Gears を利用する http://tou.ch/ © 2010 livedoor Co.,Ltd.
  • 13. Geolocation API navigator.geolocation.getCurrentPosition( function (curPos) { var lat = curPos.coords.latitude; var lng = curPos.coords.longitude; // ここに処理 }, function (error) { // 失敗したときの処理 }, { enableHighAccuracy: true, maximumAge: 5 * 60 * 1000, timeout: 30 * 1000, } ); http://tou.ch/ © 2010 livedoor Co.,Ltd.
  • 14. 空間インデックス 問題 現在地の近くのレコードを検索 SELECT * FROM spot WHERE lat >= ? AND lat < ? AND lng >= ? AND lng < ? lng にはインデックスがが効かない http://tou.ch/ © 2010 livedoor Co.,Ltd.
  • 15. 空間インデックス 特殊なデータ構造を用いる R-Tree 4分木 簡易なデータ構造 グリッド http://tou.ch/ © 2010 livedoor Co.,Ltd.
  • 16. 主なグリッドの例 地域メッシュ(総務省 iエリアメッシュ MGRS geohex geohash http://tou.ch/ © 2010 livedoor Co.,Ltd.
  • 17. Geohash 経緯度の範囲を文字列で表現 文字列の長さで精度を変えられる 長いgeohashを使えば実質地点を表現できる http://tou.ch/ © 2010 livedoor Co.,Ltd.
  • 18. xn774c xn774ck http://tou.ch/ © 2010 livedoor Co.,Ltd.
  • 19. Geohashの利用 DB に保存してインデックスとして利用 spot 12桁 -> LIKE で先頭マッチ touch 6桁 -> IN を使った検索 http://tou.ch/ © 2010 livedoor Co.,Ltd.
  • 20. 利点 先頭マッチで必要な精度で検索できる キャッシュに乗せやすい 変換表を持たなくてよい 欠点 文字数の偶奇でメッシュの形状が違う 高緯度でメッシュが狭くなる http://tou.ch/ © 2010 livedoor Co.,Ltd.
  • 21. ご清聴ありがとうございました ライブドアではエンジニアを募集しています • 明日 18:00~GMS名古屋で発表あります • ハッシュタグ #gms_nagoya • Ust あり http://tou.ch/ © 2010 livedoor Co.,Ltd.