[インターネット]Rubykaigi 2day

にきてます。キーワードだけ羅列するよ。

REST信者から見たRuby on Rails 2.0

RestfulからみたRubyRailsについて

  • アドレス可能性
    • URL駆動開発
    • URIは設計目標であって、実装結果ではない
    • 現在のページ==クライアントのアプリケーション状態
    • ハイパーメディアの設計=アプリケーションの設計=リソースとリンクの設計
  • 接続可能性
    • リンクの設計
    • Railsではリンクの意味を意識できればもっといいのに
    • 人間が使うウェブアプリケーションだけでなく、クライアントのプログラムが読み取れるようなリンク
  • まとめ
    • RailsはRestful!
    • すべてリソースで考える。GET/PUT/POST/DELETE

Real-World Enterprise Ruby

SierRubyを導入するにはどうすればいいか。
Rubyって大丈夫なの?」というような根拠レスな疑問にはしっかり資料を作って上層部に提案しよう。

  • エンターププライズ=業務に使われるIT
  • rubyの位置づけ、なぜ取り組むのか
  • 楽しいとかは通じない
  • ビジネスを広げる武器がRubyなんです、と位置づけることで上層部を説得
  • java.add(ruby)
  • 教育体制、技術支援体制の確立
  • SLCP2007に基づく開発標準の策定
  • 保守/運用フェーズでのサポート
  • 営業用の資料を作ったり、Ruby,Railsの実績をつめる関連会社に武者修行にでたり
  • コードレビューを実施したり、トラブル対応も電話やメールで受けたり
  • NetBeans 6を推奨。手順書を用意する。全員の環境を同じにすることが大事
  • Ruby好きなパトロン(役員)重要!

Developing and scaling iKnow!

  • ActiveRecord
    • count, size, lengthの違い
    • lengthの使い方を間違うと危険
    • sizeを使うのが安全だよ
  • OpenID
    • 新規登録の15%がOpenID
    • OpenIDプロバイダー遅くなる場合、iknow側も遅くなる
    • ちゃんとTimeout入れようね

Inside Tabelog's Backend

  • CGMグルメサイト
    • 7000万PV
    • 600万PV
  • Mongrel
    • メモリの使用量
    • 4~5日稼働すると8GB食いつぶす
    • 対策は再起動用のシェルを入れてる。。。
    • 基本的には安定している
    • いつのまにかプロセスが消えてることがあった!!
  • APサーバのスケールアウト
    • Magic Multi Connectionは不採用
      • テーブルの数だけコネクションを貼るから
    • ActsAsReadonlyable
      • 採用。既存ロジックの変更点が少ないため
      • フェイルオーバーが課題
      • あと同時接続数。すべてのスレーブへ接続するため
  • query
    • 1:Nのincludeはなるべく避ける
    • 一覧系のページのチューニング
    • セッションはmemcachedに移行予定
  • まとめ
    • 特別なことはしていない
    • でもRailsで運用できている
    • 重いのはDB
    • 地味に広告が重い
    • 食べログクラスのサイト規模でも普通に運用できる時代じゃないかな?

ガラパゴスに線路を敷こう: 携帯電話用RailsプラグインJpmobile

  • 現状の日本の携帯電話
    • モバイル市場がガラパゴス諸島のようだ
    • 面白い機能はあるけどドキュメントが無いこともしばしば。
    • 携帯サイトの開発はバットノウハウの蓄積
    • 携帯でもRails流にサイトを作るためにJPmobileを作った
  • JPmobileの機能
    • 機種判別
    • テンプレートの動的変更機能
    • 端末位置情報
    • 端末あるいは契約者の識別子
    • IPアドレス帯域からの確認
      • request.mobile.valid_ip?
    • セッションIDの付与
      • trans_sid
    • ディスプレイの解像度取得
    • 絵文字の相互変換
      • PCにも対応予定!(すばらしい)

Using Ruby to Build a Scalable Startup

Rails症候群の研究

  • 症例
    • protectedをやたらとつかう
      • privateでいいところでも
    • やたらと既存クラスを再定義する
    • Rubyが何かわかっていない
    • やたらとブロックを使う
    • 文字列とシンボルの区別を使う
    • メソッド名の!の使い方が変
    • protectedは紛らわしい
    • openclassは強力だけど、アプリプログラマには強力すぎる
  • 処理系もMRIだけでなくなってきたので、なにがRubyかが不明確になってきた
  • 解消法
    • protectedの意味をptivateのように変える
    • openclass → selector namespace
    • jcodeの例。using jcodeみたいに名前空間を指定する
    • duckTipingのようにRuby
    • one ruby
    • RubySpec
    • OpenStandard