RubyKaigi2009 参加レポート[1日目]
去年に続き参加させて頂きました。
RubyKaigi2009!!!
今回のテーマは「変化」という事で、私も去年と違ってレポートをブログで書くなどしてみる
今回の場所は、学術総合センター!
そういえば、学生の頃、NII の先生と共同研究だったので、よく行ってたのですが、
社会人になって初めて行ってきたぜぃ!
Using Git and GitHub to Develop One Million Times Faster
発表者: Scott Chacon さん
git とは?みたいなお話し
- tree , parent, author commiter の4つの情報から、コミット情報は保持している
- git branch でブランチを見て
- git checkout でブランチを切りかえる
- 3つのmerge (よく使われる??)
git の良いところ
- git は早い
- ネットワークいらない
- 簡単にブランチを切って、いろいろ試せる
- ブランチはバッチキューである
- Merqurial extentions
- コマンド多すぎw
git rebase
- git diff A B > A-B.patch
- その差分をパッチとして、キープして、rebase でマスターに戻す
開発ではこんな使い方もしてるよ
- 1つのsprintチーム毎にブランチを作って、sprint が終わったらマージする
最後に
- OSSなので、無料で働いてもらえて、効率が挙がる
- Win Win だね
質疑
Pragmatic Patterns of Ruby on Rails - 現場で役立つRuby on Railsパターン
発表者: 大葉寧子さん大場寧子さん
発表資料(Blog):slideshare
背景
- 中学生からプログラミングをしていた
- 見積り、マネージメント、アウトソージングをやれといわれたが、実装がしたい
- そこで、Rubyに出会った。
Ruby on Railsでの実装パタン
- 複雑で大きなアプリ
- チームでの開発
- 書きかたばらばら、品質が揃ってない。メンテナンス出来ない
- コードを良い状態に保つのが大事
- 良い設計、読みやすい・分かりやすい、間違いもすぐ気付く
- そこで、実装パタンですよ
- 共通パタンを作る
- DSLを作る(控えめに)
- 効率も挙がる
- 今回その1部をご紹介
O/Rマッパー(ActiveRecord)が好き
4つの実装パタン
- ARオブジェクトから検索をはじめる
- ARオブジェクトを得るfilter
- パラメータによる分岐ロジックの移動
- 付随する他モデルへの処理の移動
紹介するよ
ARオブジェクトから検索をはじめる
× @note = Note.find_by_id_and_user_id(params[:id], current_user.id) × @note = Note,wrriten_by(current_user.id).find(params[:id]) ○ @note = current_user.notes.find(params[:id])
ARオブジェクトを得るfilter
- 重複した内容.filter で書く
- アクセス権もFilter内を変えれば良いので楽
- 良いコントローラ名、読みやすいFilter
パラメータによる分岐ロジックの移動
付随する他モデルへの移動
- モデルのコールバックへ持って行く
- コールバックは、save, destroy が実行される時に呼ばれる
- brfore_save とかに入れてやる。
- 自律的なモデルになる
その他気になっていること
- 多レベルの検証
- STIの原則
- 関連オブジェクトに属性情報を伝える
- routes.rb の整理
『エンタープライズRails』に学ぶ企業ユーザのためのRails活用の極意
発表者: 高井直人さん
発表資料(Blog): slideshare
エンタープライズRails
7/23 発売!会場で先行発売!!
DOA - Rails = エンタープライズRails
今回の内容は、
エンタープライズRails からちょっと使えるテクニックを紹介
- データベースの制約を活用する
- データモデルに複合主キーを導入する
- データベースビューでシンプルにする
データベースの制約を活用する
- NOT NULL 制約
- Check制約
- データベースのユニットテストをしよう
- 参照の整合性
- 外部キー制約
Railsのバリデーションだけで不正なデータを防止することはできません
データベースの制約を利用しましょう
データモデルに複合主キーを導入する
- 親-子-子の関係で個数を取得するとき
- has_many :though を使うと、無駄にjoin しやがってとなる
- 複合主キーによるアプローチ
複合主キーを導入することで、よりスマートなデータモデルが可能になる
データベースビューでシンプルにする
- ARは複数のテーブルを結合させたり、複雑な問い合わせが苦手
- 複雑なSQLなげやがって!
- そこで、データベースビューの定義
- 複雑なクエリならビューを作成しましょう
- 作成したビューを普通にモデルを作ってやると使える
まとめ
質疑
- Q: データベース制約はmigrateの中でどうやって書くのか?
- A: excute を使ってかく。てか、migration は使わない
From Rails to Rack: Making Rails 3 a Better Ruby Citizen
発表者: Yehuda Katz さん