ライブドア テクニカルセミナー個人的まとめ その1

先週,東京で開催されたライブドアテクニカルセミナーに行ってきました. 色々勉強になることがあったので,ここでダンプ.

発表されたのは,4名の方.

まず1人目はLivedoor開発部の吉川 英興さん.ロケタッチの裏側というタイトルでした. ロケタッチは位置情報サービスで,ユーザが行った場所を記録(タッチ)することで自分だけの地図を作っていくというアプリ. コンセプトは,昔NHKで放送されていた「たんけんぼくのまち」らしいです.

裏側ということで,発表内容はシステム構成などのお話でした.

まずはシステム構成などから…

開発言語はPerl

Application ServerはStarman

Web Application FrameworkはSledge+PSGI

システム構成自体はLinuxApacheMySQLによるLAMP構成.

他には,memcachedやtheSchwartz,Solr,STF,Smalllightを使用.

STFは分散ファイルサーバで,ロケタッチではユーザアイコンの保存に利用しているそうです.

また,写真のアップロードにも使うかも と言っていました.

Smalllightはプロキシ型の画像変換サーバ.

ケータイ向けアイコン等で利用しているそうです.

他にも外部APIとして,Google Maps APIv3とTwitterが利用でき,MixiFacebookも対応予定らしいです.

開発時にこだわった?点として地図をどう見せるかということだそうです.

コンセプトが「子供の頃に頭の中に思い描いた地図」から始まっていたらしく,距離感は適当,対象(施設とか人とか)の大きさも適当,行っていないところはわからない,みたいなものを地図としてみせる必要があったそうです.

既存のものとしては,Google Mapsがありますがこれでは情報量が多すぎる.また,アイコンが目立たないといった問題があったそうです. この問題の解決策としてStyled Mapsという5月下旬にリリースされたGoogle Mapsの新機能を使っているそうです.

Styled Mapsは道路、鉄道とかの色を変更できる,つまり何を見せるか選べるという機能です.

ロケタッチでは,水域、道路、鉄道、公園を表示し,道路は簡易表示にすることで上に載せるアイコンが目立つようになっています.また,駅名だけは地図上で確認できるように駅名が表示されるようになっています.

発表の中のもう一つのトピックが,現在地の近くにあるレコードの取得方法.

ロケタッチでは,空間インデックスを使用しています.

空間インデックスの中でもgeohashという方法で緯度経度を表現しているそうです.

新宿の緯度35.689を表すには,

まず最小値を-90,中間値を0,最大値を90とし,中間値からどちらに振れてるかを判定します.

0以上なら1,-1以下なら0.新宿なら1になります.

次に最小,中間,最大値をずらして再度判定を行ないます.

先程の判定は1でしたので,今度は最小値を0,中間値を45,最大値を90として判定.

今度は0になるので,次はまた…といった風に判定していきます.

この方法だと文字の長さで精度を変更できます.また,必要な精度で検索可能ですし,geohash自体をキーに出来るためキャッシュに乗せやすいという利点があります.

一方,デメリットとして,文字数の偶奇でメッシュの形状が変わる.高緯度でメッシュの幅が狭くなるなどがあるそうです.

吉川さんの発表は概ね以上のような感じでした.