事例紹介「なうまぴおん」
Upcoming SlideShare
Loading in...5
×
 

事例紹介「なうまぴおん」

on

  • 2,519 views

 

Statistics

Views

Total Views
2,519
Views on SlideShare
2,433
Embed Views
86

Actions

Likes
0
Downloads
3
Comments
0

3 Embeds 86

http://d.hatena.ne.jp 81
http://www.slideshare.net 4
http://webcache.googleusercontent.com 1

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

事例紹介「なうまぴおん」 事例紹介「なうまぴおん」 Presentation Transcript

    • 事例紹介「なうまぴおん」
      株式会社マピオン 岩澤英治
    • なぜGAE/j&Slim3を使ったか
    • GAE/j を使ってみたかった
    • Slim3 を使えば素早く実装できそうだし View slide
    • メンバーに優れた JS 使いがいるので、 Rails のようなヘルパーも必要ないし View slide
    • Datastore も使える( DB いらない)し
    • ラボプロジェクトはお金かけたくないし
    • ラボプロジェクトは会社に縛られたくないので、家でも作業したかったし
    • なうまぴおんとは
    • now.mapion.co.jp
    • 今いる場所になうするサービス
    • 場所はマピオンの施設情報全部から選べる
      • 900 万件以上!
    • そいでもって Twitter につぶやける
    • iPhone 専用 WEB アプリ(今のところ)
    • Google App Engine for Java で動いている
    • 今いる場所になう
    • でっかい「なう」ボタンをクリック
    • iPhone Safari の位置情報 API から現在地の緯度経度を取得
    • 今いる場所になう(2)
    • 現在地の近くの駅と施設が近い順に表示されます。
    • 今いる施設が表示されていなければ、下にある「続き」で施設をさらに表示して探すか、キーワード検索で探します。
    • 今いる場所になう(3)
    • キーワードには「カフェ」や「病院」などジャンルも使えます。
    • 見つかったらリンクをタップします。
    • 今いる場所になう(4)
    • 「ここで なう!」ボタンをタップするとなうされます。
    • まだログインしてなければ、 Twitter の Oauth 認証のためのログイン画面になります。
    • 今いる場所になう(5)
    • 続いて、この場所で Twitter につぶやきます。
    • テキストエリアにつぶやきを入力して「ポスト」ボタンをタップします。
    • 今いる場所になう(6)
    • 「なう」と「つぶやき」が入りました。
    • 「つぶやき」は Twitter にも投稿されています。
    • 近くの施設の検索
    • 緯度経度から周辺の施設を検索できるマピオンの検索 API を使っています
    • 検索 API のエンジンには Apache Solr を使っています
    • 施設検索時には Slim3 のコントローラから Solr へリクエストします
    • なうすると
    • Datastore に NowPost というモデルを保存します
    • NowPost は施設情報とメンバー情報と投稿時間を持つ情報です。
    • Slim3 にはタイプセーフなラッパーがあって、簡単に格納、検索できます
    • つぶやくと
    • Datastore に Tweet というモデルを保存して、 Twitter に投稿します
    • Twitter 関連の処理には twitter4j というライブラリを利用していて、 Slim3 のコントローラで実行します
    • Tweet は、先程の NowPost とつぶやきの内容と、 Twitter のレスポンス内容( status )に格納されている時間を管理します
    • ハマったこと
    • Datastore はフィールドをキーとした検索はインデックスを特別に作らなくてもできます
    • それに対して、 JOY’s BAR で iwazer が直近にしたなうしたを検索するには
      • JOY's BAR の施設コード
      • iwazer のユーザ ID
      • なう日時の逆順ソート
      • が必要です
    • ハマったこと(2)
    • このクエリを実行するには明示的にインデックスを作らないといけません
      NowPost nowPost = Datastore . query (NowPost. class ) .filter( "poiCode" , FilterOperator. EQUAL , "G0447991491-001" )
    .filter( "userId" , FilterOperator. EQUAL , "5631932" )
      .sort( "createdAt" , SortDirection. DESCENDING ) .asSingle();
    • ハマったこと(3)
    • インデックス指定を既にデータが存在する状態でアップすると Datastore の処理キューに入ってからしばらくして出来上がります
    • ということは、タイムラグがある
    • このインデックスを使う機能はインデックス作成が完了するまで使えません (´ ・ ω ・ `)
    • 機能をデプロイする前にインデックス指定だけ先行してデプロイしとくと良さそうです
    • Quota
    • GAEは結構なアクセスまで無料でさばけます
    • ただしCPU利用時間に注意
    • 純粋なCPU時間ではなく、リクエストの処理に要した時間です
    • Quota(2)
    • つまり…
      • Solr のレスポンス
      • Twitter のレスポンス
      • bit.ly のレスポンス
      • を待っている時間も、 GAE のリソースは特に使ってないのに処理時間に含まれています
    • Quota(3)
    • 公開当日のアクセスで無料 Quota 分を超えそうになりました(汗)
    • 外部サービスのレスポンスを待っている時間は侮れません。キャッシュできるところはキャッシュし、外部サービス呼び出しを減らさねばなと考えています。
    • なうまぴの Quota が無料分をオーバーしたら…
    • Quota(4)
    • うらなんとかディレクター( @hachimitu )の個人クレジットカードで決済されます ( `・ ω ・ ´)
    • マピオンの正式サービスにしたい…(希望)
    • ま、公開当日以外は超えそうにならないのが、いささかサミシイところです
    • 今後の展開
    • くぽんちゃん
    • ガラケー版
    • iPhone アプリ版
    • なうぞうくん
    • くぽんちゃん
    • クーポン情報をつぶやいてくれる可愛い Twitter ボット
    • 画面はイメージです(笑)
  • くぽんちゃん(2) 今日、プロトタイプ完成 (` ・ ω ・ ´)
  • くぽんちゃん(3)
    • 「○○なう。 @cuponchan 」というつぶやきに
    • 対して、○○周辺のクーポン情報をリプライ
    • 仕事をさぼって 実装期間2日
    • GAE+twitter4j
      • cronでMentionsを収集
      • 収集したMentionsから位置&キーワード抽出
      • 外部WebAPI呼び出し
      • 結果をリプライ
    • GAE で Twitter ボット->簡単にできました(・∀・)
    • ガラケー版
    • 普通の携帯電話(ガラケー)でもなうまぴ
    • 結構、要望が多いんです
    • iPhone とは母数が違うのでマピオン検索 API の試練か!
    • iPhone アプリ版
    • やっぱ WEB アプリはのっそりしている
    • 頑張ってアプリ版開発ちう
    • とても要望が多いんです
    • 外部サービス処理を iPhone 側でできれば、 GAE の Quota 使用率も下がって幸せかも
    • なうぞうくん
    • なうまぴにもゲーム要素を?!
    • なうした施設の数や種類によって、なうぞうくんが変わる
    • つぶやきに連動して何かしゃべる?!
    • メンバー
    • 園野( @hachimitu )ディレクター
    • 岩澤( @iwazer )サーバサイド&アプリ
    • 中村( @kozy4324 ) JavaScript
    • 高橋( @tatsuyuki611 )携帯版
    • 川上 レイアウト
    • 坂田 サーバサイド
    • さくらいま( @saclaima ) イラスト