RubyKaigi2010 に行ってきた(1日目)

今年もRubykaigi に行ってきました。とても勉強になることが多かったので興味があった内容をまとめます。
まずは1日目から。2,3日目も後に書きます!

もし間違い等ありましたら指摘いただけると助かります。


Conflicts and Resolutions in Ruby and Rails

Rails のコミッタ達を迎えたトークセッション形式。

  • Rails2 と3 の違い
    • Rails2 の上位互換でありながら様々な機能を盛り込んだ
    • Rails のそれぞれのパーツをRails の外で使えるようモジュール化した
  • Rails チームがRails3 構想時に描いたゴールは達成できたか
    • Yes. 我々コアチームはよくやったと思う
    • 最も良かったのは共通のAPI を作ったこと
  • ruby1.9 対応をする上で難しかったこと
    • encoding。常にencoding について考えなければならなくなった
      • 逆に正しくencoding を扱うプログラムを書けるようになった
  • Rails アプリは早急に1.9 に対応する必要はあるか
    • アプリについては直ぐに対応する必要はないかもしれない
    • 一方ライブラリは早急に対応する必要がある
      • 全てのライブラリがencoding 対応していないとユーザが混乱してしまう
  • Rails3 の良いところ
    • モジュール化は素晴らしい
    • Arel によってRack のように抽象層が入ったことで、ORM 層を切り替えられる仕組みができた
  • Rails3 がまだ改善すべきところ
  • Ruby2.0 について
    • より正しくなるとしても、今までのコードの大半が動かなくなるような変更はあまりして欲しくはない

jpmobile on Rails 3 の作り方

  • 開発の仕方
    • Heroku でテストしている
    • 基本的にRails のコードを読むだけ
    1. ビューのレンダリングを行っている部分を探す
    2. hook を挟める場所を探す
    3. 挟む

リアルタイムウェブができるまで

一部の内容は、個別に質問させていただいたものです。ミントいただきました( ´艸`)

  • セッション保存のフロントとしてredis を使っている
    • 個人的にはTC を使いたかったが、redis 好きがいるのでredis を使っている
    • 現在の規模ならMySQL だけでも十分いけると思う
  • redis
    • ソート処理等色々できる
    • 一方、redis はシングルスレッドでイベントループがまわっているので、重いソートを実行してしまうと、他の処理をブロックしてしまう

Head First ふつうのシステム開発

お客さんから要望を受けて、その機能をリリースするまでをライブ形式で行う。会社でプログラムを書いている身としては、他の会社の開発環境はかなり興味深く、最高の企画のひとつでした。こういうのどんどん増えるといいなぁ。

  • フェーズ
    1. 計画
    2. 朝会
    3. 開発
    4. レビュー
    5. リリース
  • 環境
    • Scrum
    • nginx + Passennger
  • 計画
    • 日頃から要件、バグをBTS に溜めてある
    • その一覧からスプリントでやることを決めておく
    • 見積りはある程度の精度で
    • チームがコミットできることを宣言する
    • 要件、仕様、受け入れ条件を明確にする
  • 要件
    • 要件(ストーリ)を最小単位に分割する
  • 開発
    • テスト書く
  • Q&A
  1. 新人がursm さんとペアプロやるのって大変じゃない?
    • 最初は速いと感じたがなれる。あと、丁寧に教えてくれるので理解できる
  2. コントローラのテストを厳密に書くか
    • 不安に思わないなら書かない。ursm さんは書かない
    • ヘルパのテストは書いた方がいいと思う(kakutani さん)
  3. 見積りはどうやってやるのか
    • 自分の質問。当初予定していなかった点が開発中に見えてきて遅れることが多いので質問
    • 見積りは絶対にひとりではしない。皆でやる
    • 見積りはクイズなので当たらない
    • 遅れたらできるだけ速く謝る
    • 恒常的に遅れているプロジェクトならチームで何が問題なのか話しあう
  4. 皆どのくらいの時間に帰るのか
    • ursm さんが大体最後。21時くらい
    • お客さんの仕事は集中力が切れる19時くらいに終える。その後社内環境改善とかしている

コミュニティナイト

ほぼ懇親会。懇親会のチケットを持っていなかった自分にとってはとても助かりました。

未踏のid:kazuk_i さんを発見。アーキテクチャの話、スケーラビリティについて伺う
  • 最近読み込みを非同期に行うためにcramp を使っている
    • 処理を完全に非同期に扱うためにはライブラリから何からネイティブスレッドに対応していないといけないので、Rails は通せない
      • 非同期処理が必要になる部分はロードバランサでリクエストをcramp に向けるようにしている
  • ライブラリの作り方について
    • 他のライブラリを読んだり、ライブラリの対象のドキュメントを詳細に読んだりとかはあまりしていない。結構適当に作っている
  • 学習の仕方
    • 基本大切。ものがどういう仕組みで動いているかを把握しておく必要はあると思う
  • 無駄な時間を使わないために
    • Cassandra が速いらしい!とか手当たり次第試すのは無駄
    • 事前に手計算したりして方向性をある程度つけておく
      • 例えばキャッシュ戦略を考えるなら、ログを分析してリクエストパターンを抽出
      • 今度扱うデータのサイズはこのくらいで、リクエスト数は、非同期化すると...
永和のid:bekkou68 さんを発見。セッション中に質問しきれなかったことについて伺う
  • プログラミングは入社前からやっていた
    • ruby を始めたのは入社3ヶ月前くらいから
  • 帰るのは6時半くらい
    • 自分の時間をもたないと何をやっているのか分からなくなる
  • 毎日昼休みに何か作っている
  • 皆プログラミング好き
  • 皆で色々な仕組みを作って社内環境を良くしている
  • プロジェクト間の情報共有はML
@ さん発見!!Rubykaigi は漢のイベントだった!
  • Blog を通じて質問させていただいたり、Blog にとても助けられているのでお礼を言う
  • とても柔和な方だった
  • Amazon CAPTCHAはとっても良い本なので、自分がMySQL を管理している立場の人は是非
    • クラッシュしたらどうするか、バックアップは、アップグレードのベストプラクティスは、無停止メンテナンスを行う方等、来るべき時に備えて予め学習しておくべき内容だと思った
    • Explain の見方の章はチューニングのポイントも紹介されていて勉強になる。JOIN のアルゴリズムを説明する図とか、何度もにらめっこしました
    • クライアントの--show-warnings オプション知らなかった。「お前は今までタイポしたshow warnings の数を覚えているか?」な自分にとってはシルバーブレッド


普段疑問に思っていることについて色々質問することができてよかった。やっぱり直接話せるのと空気を感じることができるのが現地に行く最大のメリット!
質問にお答えくださった皆様ありがとうございましたー丶(´▽`)ノ