くりにっき

ドリコムでRailsエンジニアをやってます。好きな言語はJavaです

RubyKaigi 1日目まとめ #RubyKaigi

鉄は熱いうちに叩けって言うので帰宅してすぐにレポ書きました(次の日のセッションを聴くと記憶がGCされて忘れる)

自分のツイートを元にした箇条書きまとめです

CRuby Committers Who's Who in 2014

  • CRubyコミッタ紹介
  • SVNのアカウント数は85
    • ボット含む
  • 去年の6月以降コミットしてるのはうち50人
  • RubyKaigi3日間で発表するのは15人
  • 発表順に紹介
  • Rails5はSymbol GCを使いたいためにRuby 2.2以降のみサポートになるらしい
  • Matzは肩書コレクターでスライド1枚に収まりきらないくらい

CRuby Committers Who's Who in 2014

  • Rubyの開発で何が簡単で何が難しいのか
  • 今年はいろいろ10周年
  • クオリティを高める
    • 信頼性
    • 速く動く
    • 消費リソースが少ない
    • 古いプログラムで動くこと
    • 拡張性
  • それぞれにトレードオフがある
    • 例)パフォーマンス ⇔ 信頼性、少リソース
  • エンジニアなのでトレードオフに打ち勝つ方法を考えるのが大事
  • rubyのテストフレームワークrubyで書いているのでrubyの問題で途中で落ちることがある
    • テストでFailが出ても最後までテストが通ってたらそれはそれでよい
  • 世代別GCアルゴリズムは簡単だが、バグ無く作るのが難しい
  • ベンチマークの実行時間測るのは簡単だが、定期的に計測したり何を計測するのかが難しい
  • ささださんがRubyのコミッタになったのは Rubyソースコード完全解説 がきっかけ
    • 10年位前の本だけど今でも通じる

Symbol GC

Ruby2.1まで

  • 内部で採番してるID(Cのint)で比較するため高速
  • 今までのSymbolはGCされなかったので、リクエストヘッダで大量に送られると脆弱性につながる

Ruby2.2から

Symbolは2種類にわかれるようになる

  • Immortal Symbol(今までのSymbol)
    • Cの世界のSymbol
    • 不死身
    • IDを持ってる
    • GC対象にならない
  • Mortal Symbol
    • Rubyの世界のSymbol
    • いつか死ぬ
    • IDをもたない
    • GC対象になる
  • Mortal SymbolからImmortal Symbolに移行するケースもある

Introduce Oracle enhanced adapter for ActiveRecord, another choice for your Rails database.

activerecord-oracle_enhanced-adapter という3rdパーティのARアダプタのお話 * rails 2.3 〜 4.1まで動いてる * oracleを業務で使ってるとこはエンタープライズの香りがするので、既存のテーブルに合わせる(レガシーな)機能がある * oracleのDATEは秒までもってるので :datetime にマッピングする必要ある * Oracleが他のDBと違って勝ってる点 * oracleはprepared statementが賢い、実行計画をメモリに格納して共有できる * 11gで1つのPSでもbind変数の中身によって1つのクエリに対して複数の実行計画の結果を持つことができる * ARのテストスイートで動かしてもOracleの仕様によるもの以外は全部テストケース通ってる * 弊社でactiverecord-turntable をメンテしているということもあり、railsの内部実装に依存してると修正に追従していくのがつらそうなのはなんとなく分かりました。。。。

Hypermedia: the Missing Element to Building Adaptable Web APIs in Rails

  • WEB APIの話だったけど、互換性のある変更(breaking change)と互換性のない変更(nobreaking change)というのはgemのAPI(pubicメソッド)に対しても言えると思う
    • gemのメンテしててアップデート時にも極力既存APIの振る舞いを変えないように気にしてる
  • 変化に適用できるAPIにするには疎結合重要

感動した流れ

30分のセッション中最初20分くらいRESTの話をしていて

この流れに感動したw

"Gem of this Week" - building culture and making gem

弊社登壇者によるまとめ

RubyKaigi2014 - Gem of this Week - Togetterまとめ

弊社で実際に行われている「今週のgem」のコーナーを通した社内文化の形成のお話

  • ビジネスロジックを共通化しようにもrubygems.orgに公開しづらいので社内gemリポジトリに公開
  • gemを作っただけでは誰にも使ってもらえないので主要エンジニアが集まる週次MTGで共有
    • その中の1コーナーが「今週のgem」
  • 社内gemリポジトリに公開しやすくするためにdrecom_gemというgemを作成
    • rake release をなくすことで、間違って社外に公開されるのを防ぐ
  • 社内ツール作成サークルでgemやツールを作ってる*1
  • gemicomというgemnasiumクローンを作って、各アプリが使ってるgemのバージョンを可視化
  • 最新gem使用率のworstランキングを公開w

どうでもいい補足

ローマ字表記じゃ分かりづらいですが Miura Takumiは漢字だと「三浦 彩」書くので、社内では彩ちゃんと呼ばれています

Ruby Committers versus the World

Rubyコミッタへの質問コーナー

  • コミットを分かりやすくするの大事
    • どうして修正したのか理由をちゃんと書く(書いてあれば後から追える)
    • 1つのコミットに複数の修正を含めない(1つの機能改修とリファクタリングは分けてコミット)
  • RubyコミッタはWindowsが多い
  • ruby2.2.0-preview1がリリースされた

PARTY

RubyKajaの表彰がありました!

f:id:sue445:20140918222755j:plain

明日からRubyKaigiに行く人へ

コンセントの穴が若干足りないのでタップと延長ケーブルを持って行くべし

#RubyKaugi くる人は電源タップと延長コード持ってくるとみんなで幸せゲットできますよ!(コンセントの穴が若干足りない)

それぞれ100円ショップで買える。200円でみんなが幸せになれるなら安いもの。

Macのアダプタが刺さらないコンセントがたまにあるので勉強会では常備してます

会場が暑すぎたり寒すぎたりするので温度調整できるようにする

初日の感想だとAホールが若干暑かったのでうちわが重宝しました(ノベリティに扇子あったけどなくなってる可能性あるのであまり当てに出来ない)

*1:僕がキャプテンですw