日本Ruby会議2008 2nd day メインセッションPM2

16:00から別の予定が入っているので、私のRubyKaigi2008参加メモはここで終了です。

Developing and scaling iKnow! (Zev Blutさん)
Inside Tabelog's Backend (京和崇行さん)
  • 食べログ
    • CGM型グルメサイト ユーザが口コミを投稿 → ランキング
    • Windows + ASPRailsにリニューアル
  • Mongrel
    • 問題: メモリ使用量 4-5日稼動すると8GB食いつぶす
    • 対策: 再起動用シェルスクリプトをcronで回す、アプリケーション改良
    • 基本的には安定/過負荷状態、メモリ不足のときに落ちることがある (プロセス消滅)
  • スケールアウト
    • セッション情報の共有 → Railsが標準でサポート
    • DBの分散アクセス対応
  • DB分散アクセス
    • Magic Multi-Connections: テーブルの数だけコネクションを張る→不採用
    • ActAsReadonlyable → 採用
  • Act〜 問題点
    • フェイルオーバー非対応

Q&Aから

  • 食べログの評価値はどのタイミングで計算しているのか?
    • 1日に1回バッチで計算。かなり複雑なクエリが走るので、その場で計算するのは負荷が高い。
  • 1日に1回Mongrelを再起動という話があったが、サービスの継続はどうやっているのか?
    • mongrelサーバを複数置いて、順次再起動をかけている。
ガラパゴスに線路を敷こう: 携帯電話用RailsプラグインJpmobile (しだらようじさん)
  • 携帯電話キャリアごとの非互換性
    • 携帯電話サービスの開発はバッドノウハウの宝庫
    • とは言え、捨てるには惜しい
    • Rails風にスッキリと開発できないか?→Jpmobile
  • スープカレー
  • Jpmobileの機能
    • 携帯電話のキャリア/機種の判別: そんなに単純には済まない
    • テンプレート切り替え: PC/モバイル、キャリアごと
      • 例: mytemplate_mobile_docomo.html.erb
    • GPSからの位置情報の取得 緯度、経度
    • 端末製造番号/契約者識別番号の取得 → 単独では信頼できないので、IPアドレス帯域との組み合わせで多少改善
    • IP帯域情報の取得
    • cookie取得: 対応していない機種の場合、セッションIDをURLなどに埋め込む必要あり
    • 画面情報 (画面サイズ、色数) 取得: HTTPレスポンスヘッダ or 機種名からテーブルlookup
    • 絵文字の相互変換: 文字集合エンコーディング 超複雑 近いうちに、PC上で絵文字を表示できるように拡張予定
  • お願い
    • 検証機の調達は不十分 → もし不具合を発見した場合は連絡plz