「新年会ハッカソン ゼンリン地図を無料で使い倒せ!!」に参加しました

↓のイベントに参加しました。
新年会ハッカソン ゼンリン地図を無料で使い倒せ!! on everevo


  • やったこと
    • ゼンリンの地図でGeoHexを描画できるようにした。
    • 検索実行時に自分のサーバにダミーリクエストを飛ばし、fluentd経由でMongoDBにユーザの利用状況が蓄積されるようにした。
      • ただ、検索APIでエラーが出たのを放置したまま進んでしまい、検索自体がダミーのまま。。


  • 思い/ 狙い
    • ユーザが位置情報アプリをどのように利用しているかを簡単に見ることができれば、街の様子が見えてくるはず!!
      • 今ここでどんなワードで検索が行われているか?
      • どんなスポットが見られているか?
    • javascript APIだけで作ったサイトの利用状況を簡単に蓄積したい。
      • ログ集計スクリプトを作ったり、それ用にサーバの実装追加/修正をしたりというのは避けたい。
      • しかもリアルタイム。
    • Fluentdを使いたかった。(これがあって無理矢理つなげた感が無くもない。)
    • GeoHexベースで情報を蓄積したい。
      • メッシュベースもいいけど、見た目/大きさの融通/範囲指定等々でGeoHexに分がある。
      • ライセンス注意。



<source>
  type tail
  format /^(?<host>[^ ]*) [^ ]* (?<user>[^ ]*) \[(?<time>[^\]]*)\] "(?<method>\S+)(?: +(?<path>[^\?]*)\?word=(?<word>[^ ]*)&level8_x=(?<level8_x>[^ ]*)&level8_y=(?<level8_y>[^ ]*) +\S*)?" (?<code>[^ ]*) (?<size>[^ ]*)(?: "(?<referer>[^\"]*)" "(?<agent>[^\"]*)")?$/
time_format %d/%b/%Y:%H:%M:%S %z
  path /var/log/httpd/access_log
  tag apache.access
</source>

<match apache.access>
  type mongo
  database zenrin_0126
  collection words
  flush_interval 1s
</match>



f:id:seikoudoku2000:20130126173406p:plain

> db.words.group({key:{word:true}, cond:{level8_x:"33789", level8_y:"-12063"}, reduce:function(obj,prev) {prev.csum += 1;}, initial:{csum:0 } });
[
	{
		"word" : "%A5%AB%A5%D5%A5%A7",
		"csum" : 1
	},
	{
		"word" : "%A5%D3%A5%B8%A5%CD%A5%B9%A5%DB%A5%C6%A5%EB",
		"csum" : 1
	},
	{
		"word" : "cafe",
		"csum" : 3
	},
	{
		"word" : "lunch",
		"csum" : 1
	},
	{
		"word" : "%A5%E9%A5%F3%A5%C1",
		"csum" : 1
	}
]


> db.words.find().limit(1);
{ "_id" : ObjectId("5103814a67ba440bd2000010"), "host" : "118.21.107.15", "user" : "-", "method" : "GET", "path" : "/zenrin/dummy.html", "word" : "%A5%AB%A5%D5%A5%A7", "level8_x" : "33789", "level8_y" : "-12063", "code" : "304", "size" : "-", "referer" : "http://ec2-54-249-128-153.ap-northeast-1.compute.amazonaws.com/zenrin/index.html", "agent" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17", "time" : ISODate("2013-01-26T07:09:09Z") }





  • 今後
    • in_tailの使い方がいけてないので、out_exec_filterを使ったやり方に変更。
    • GeoHex v3のruby gem作成。
      • サーバ側でごにょごにょしたくなったら欲しい (& 自分的にRubyの練習)
    • 蓄積した情報を活かしたコンテンツの検討
      • 利用者増えないと意味ないですが、、、
      • 仕組み自体は色んな所で使えると思うので、皆でLet's データマイニング
  • 結果
    • 惨敗。。
  • 感想

優勝した人は、4sqの検索が貧弱で近くのコンビニ探すのも一苦労だから、ゼンリンのコンビニPOIと4sqのコンビニPOIを紐づけてチェックインできるようにする、みたいのを作っていました。
自分もすごいな〜と思ってこれに投票しましたが、1dayハッカソンということで、さくっと他社のAPIを絡めれる引き出しと、現状の課題を絞り込んだ上で解決に導くという所がすごいな〜と。
発表driveで頭の中だけで思っていたことをやるのにもいいし、自分に足りない部分も見えてきたり、社外の色んな人の取り組みが見えて、とても刺激になったので、今年は座学形式よりもハッカソン形式のイベントに多く参加したいな〜と。(土/日の開催が多いので難ですが。。)