「新年会ハッカソン ゼンリン地図を無料で使い倒せ!!」に参加しました
↓のイベントに参加しました。
新年会ハッカソン ゼンリン地図を無料で使い倒せ!! on everevo
- やったこと
- 思い/ 狙い
- ユーザが位置情報アプリをどのように利用しているかを簡単に見ることができれば、街の様子が見えてくるはず!!
- 今ここでどんなワードで検索が行われているか?
- どんなスポットが見られているか?
- javascript APIだけで作ったサイトの利用状況を簡単に蓄積したい。
- ログ集計スクリプトを作ったり、それ用にサーバの実装追加/修正をしたりというのは避けたい。
- しかもリアルタイム。
- Fluentdを使いたかった。(これがあって無理矢理つなげた感が無くもない。)
- GeoHexベースで情報を蓄積したい。
- メッシュベースもいいけど、見た目/大きさの融通/範囲指定等々でGeoHexに分がある。
- ライセンス注意。
- ユーザが位置情報アプリをどのように利用しているかを簡単に見ることができれば、街の様子が見えてくるはず!!
- 作業メモ
- ゼンリン地図上にGeoHexを描画できるようにする。
- EC2インスタンスを作成〜httpdインストール
- td-agentをインストール
- MongoDBをインストール
- fluent-plugin-mongoをインストール
- sudo /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-mongo
- in_tailの設定変更
- パラメータの値(word, level8_x, levl8_y)をMongoのフィールドとして登録できるように
- 超いけてない。。
- fluent-plugin-mongoの設定
- デモ用に1秒でflush
- mongoのクエリを書く
- こんな感じ。csum でorder by したかったが時間切れ。。単純なクエリでは無理??
- db.words.group({key:{word:true}, cond:{level8_x:"33789", level8_y:"-12063"}, reduce:function(obj,prev) {prev.csum += 1;}, initial:{csum:0 } });
<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>
> 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") }
- 今後
- 結果
- 惨敗。。
- 感想
優勝した人は、4sqの検索が貧弱で近くのコンビニ探すのも一苦労だから、ゼンリンのコンビニPOIと4sqのコンビニPOIを紐づけてチェックインできるようにする、みたいのを作っていました。
自分もすごいな〜と思ってこれに投票しましたが、1dayハッカソンということで、さくっと他社のAPIを絡めれる引き出しと、現状の課題を絞り込んだ上で解決に導くという所がすごいな〜と。
発表driveで頭の中だけで思っていたことをやるのにもいいし、自分に足りない部分も見えてきたり、社外の色んな人の取り組みが見えて、とても刺激になったので、今年は座学形式よりもハッカソン形式のイベントに多く参加したいな〜と。(土/日の開催が多いので難ですが。。)