2011年は、Rails3を使おう!〜masuidriveに学ぶ 参加レポート

コンテンツワンさん主催の2011年は、Rails3を使おう!〜masuidriveに学ぶの参加レポートです。


開催概要

時間と場所

2011年1月12日(水) 19:30〜
株式会社オプト1F大会議室@神保町

参加料金

1000円
第3部終了後、ビールとピザの懇親会有り

セッション
  1. 第1部: 19:30-20:15 Rails3情報源の歩き方 西村賢(@knsmr)さん 映像(RailsDevConfのもの)
  2. 第2部: 20:15-21:05 Rails3を使おう! 〜Railsの設計思想の変化とRails2からの移行 増井雄一郎(@masuidrive)さん 資料
  3. 第3部: 21:05-21:20 Rails技術者認定試験の紹介 吉政忠志さん(運営委員会は@railscp)
  4. 第4部: 21:20- 懇親会

まとめ

  • Rails3について
    • 新規アプリはRails3で作って良い。
    • 旧バージョンからのupgradeは、テストが書いてありプラグインが対応していれば、各種参考サイト(資料のp.35-37など)を利用することで、いけるはず。
  • Railsの情報源は英語が多い。特にお薦めとして挙がったのは、Rails公式、スクリーンキャストのRailsCast、カンファレンスや勉強会に行ってどんどん話しかけること。rubyrailsではてダを検索した結果をRSSリーダに入れるのも良い。
  • Rails技術者認定試験、今月から開始。まずはブロンズのみ。

感想

  • 新規アプリはRails3で作ってOK!ということなので、今丁度抱えている小さな開発をRails3デビュー戦にしたいと思います。
  • Rails情報源・Rails設計思想ともに、綺麗なまとめで非常にありがたいです。
  • 英語は…氏にたくなければ勉強するしか!(RailsCastを聞いてみたけど、これが聞き取れるようになりたいな!)


以下、プレゼンのメモ

資料はWebにあるので、資料にないコメントを中心に…したかったけどあまりできていない、、、

第1部のメモ
  • Rails for Zombies、会場で知っている人は半分弱ぐらい?
    • Ruby文化の良いところは、こういう変なので盛り上がれるところ
  • Railsの情報は英語だと豊富
  • 英語のRails情報源
    • Rails公式 が一番良い
      • Screencastsが良く出来ている(15分でブログを作るとか)
        • 貴重なrails0.5の動画もある
      • 公式のRailsGuidesも良い、この内容が本になっていたらそれ以外の本が要らないぐらい良い
      • 公式のAPI rdoc、show sourceでソースがすぐ見れるのがrubyの良いところ
      • 公式のブログ、セキュリティやリリース情報
    • EdgeRailsは準公式的だが最近更新頻度が低い
    • 公式BTSもあるがスパムが多い
  • ソースを読みたい人はやっぱりGitHub
    • Railsのソース、コミットログを見ると勉強になる
    • GitHubの可視化グラフが(他の言語の島宇宙と違って)宇宙になる話
    • Rubyはテスト文化が成熟していて、テストのないライブラリは基本的に公開しない話
    • watchとforkが人気指数になる、でも昔人気だった物の可能性があるから注意という話
  • カンファレンス系の情報源
    • RubyConfアメリカ、Ruby系最大のカンファレンス
    • RailsConf(2011,2010)、アメリカ、さらに最大のカンファレンス
      • RubyConfの方が熱量は上で、RailsConfはネクタイをしたビジネスマンが多いという指摘も
    • RubyKaigi(2011,2010)、国内最大、次回最終回?
    • その他地域系会議たくさん
    • RubyWorld ConferenceRubyコミュニティが外に向けて何か言うような性格のカンファレンス
    • カンファレンス等に参加して、話しかけるのが重要!
  • その他海外系の情報源
    • RubyInside、この中でどれか1つならこれが良い
    • RailsInside
    • RailsMagazine
    • rubyflow
    • これら、西村さんは良いと思うけど、増井さんに聞いたら「最近は微妙っす」とのこと
第2部のメモ
  • 会場挙手アンケート
    • Railsを仕事で使っている人、ほぼ100%
    • Rails3を仕事で使っている人も結構(半分ぐらい)いる
  • Railsの設計思想等のおさらい
    • Rails1の特徴
      • CoC, DRY, MVC, FullStack, Generator/Scaffold
      • その目的は、Write less code
    • Rails1の問題点
      • 不安定、遅い、メモリ喰い過ぎ
    • Rails2の特徴
      • RESTful, json, セキュリティ強化, 他言語対応, クエリキャッシュ
    • Rails2の問題点
      • 本体が複雑過ぎる、遅い、プラグイン非互換(バージョン0.0.1が違うとプラグインが動かない、みんながんばってプラグインを更新したりするけどやがて力尽きる)、パッケージ管理方式(RubyGems
  • Rails以外の動き
    • Sinatra、シンプルなフレームワーク
    • Merb+DataMapper、Another Rails、モジュール構成のフレームワーク
      • 問題点は完成度だった。モジュールのバージョンを合わせるのが大変、鳴り物入りで生まれたのになかなか実用にならなかった
      • で、Merb gets merged into Rails3、正直ライバルがくっつくとは思わなかった
      • Merb => Rails、モジュール構造、plugin API、CRuby(MatzRuby)以外での動作
  • Rails2での大きな動き
    • passenger使っている人、会場、半分強?
    • heroku
      • New Relicでのアプリ監視
      • 他にはEngine Yard App Cloud
  • で、Rails3
    • 一言で言うと、sexyになった(出るとこは出て、引っ込むところは引っ込んだという比喩)、綺麗に書けるようになった
      • 例えば、hashでのパラメタ指定がmethod chainベースになり、可読性が上がった
    • 特徴
      • フルスタックなのにモジューラブル(ORMだけを変えたりとか。基本セット=ActiveRecord+Erbもある)
      • Arel=ActiveRecordの新クエリエンジン=簡単にDBをRDBMS以外にも切り替えられるようになった
      • 新しいRouting Engine
      • Plugin API
      • Bundler
  • Rails2を3にupgradeするのか?
    • そもそもなぜupgradeするのか?
      • 最新のRailsが一番良いRailsだから(エッジを使えとか言うつもりはないけど、とのこと)
      • プラグインなどは最新版向けにリリースされることが多い
      • バージョンを飛ばしてupgradeをするのはたいへんだから(2.3 => 3.0 => 3.1はなんとかなるが、2.3 => 3.1は非常に大変になる、3.0は2.3.xとの互換レイヤを持っているのでやれる)
    • 新しいバージョンは安定しているのか?
      • クラッシュしない
      • APIの変更が無い
        • railsは変化があることはいいことだ的なので、変更がないってことないんだけど、と。
      • productionいけるのか
        • 増井さん的には、まだRails3である程度のアクセスをさばいたことがない、とのこと
        • nokogiri作者のAaronさん曰く、3.0.2まではproductionは辛かったが、3.0.3ならいけるとのこと
      • issueも3.0.3はあまりない
      • google先生でも"3.0.3 crush"でhitする件数が少ない
    • パフォーマンスは大丈夫か?
      • モジュール構造のため、メソッド呼び出し回数が多く、どうしても遅くなる
      • Rails3.0.0が出た頃はARが遅かった
        • Rails3 beta 4 ar 5x slower than Rails 2.3.5なんてことも
        • 実際、Rails Coreの人たち、綺麗に書くことは気にしていたがパフォーマンスはそんなに気にしていなかったらしい
        • 3.0.2で大きく改善し、2.3.xより早くなった
        • 改善の際、ActiveRecord、ActiveModel、SQL Adapterには手を入れず、SQLを生成するArelの修正で済んだ。これはRails3のモジュール化の成果
    • コードの書き直しはどれぐらいか?
      1. テストが書かれていないならあきらめる
      2. まずはRails2.3.8に上げる、ここでダメならまたあきらめる
      3. 使っているプラグインがRails3に対応しているか確認する
        • Rails3はユーザが触る部分はあんまりかわっていなかったり互換性があるが、プラグインで触っている部分は大きく変わっているので自力で直せないとつらい、バグレポートを作者に送ろう!
    • コードを書き換える部分
      1. config/*
      2. config/route.rb
        • rake:routesを使って書き換えて行けばなんとかなる、自動で書き換えてくれるツールもある(後述)
      3. app/models/* 追いきれないので資料を参照
        • Rails3で一番大きな変化はAR
    • 参考になるサイト
      • Rails 2->3 Case Study、step by stepでやってくれてるので英語が読めなくてもコードだけ見ればなんとなくわかる
      • rails-upgrade plugin、routeを自動で書き換えてくれる
      • Rails3 Cheat Sheets
      • Rails3 Upgrade Handbook、本来$12が今$6で買える。これを見ながら書き換えるのが一番楽!
      • 日本語の本、はじめる!Rails3のβ版が今月中に出るらしい(高橋さん)
    • upgradeの結論
      • 新規アプリはRails3でおk
      • テストを書いていないなら、テストを書くことからはじめましょう
      • あとは使っているpluginの対応状況次第
      • ARは後方互換性を考えて(後方互換性のある3.0系のうちに移行しよう?)
      • routeを書き直すのはそんなにたいへんじゃない
  • コードも交えつつ、Rails3の特徴の話に戻る
    • ActiveRecord3
      • 2時代: User.find(:all, :conditions => {:status => 'active'})
      • 3時代: User.where(:status => 'active')
    • new routing
      • 自明なmapを書かかなくてもいいとか、すっきり書けるようになった
    • bundler
      • 増井さんが最初にRails3しようとしたきっかけ。他人にメンテナンスの依頼をする際に良い。RailsLinuxに標準で入っていないので、ただでさえ使えるまでたいへんなので。
    • その他
      • scriptがscript/railsになったとか
      • respond_toの書き方が変わったとか
        • lazy loadingによるパフォーマンスの向上とか
  • (個人的な)rails3への期待
    • plubin APIによるpluginの互換問題の減少
    • モジュール化によってパフォーマンスの最適化が行いやすくなる
      • 上記のARのパフォーマンス向上の話を参照
  • まとめ
    • 3.0.3 は、これから3.1と続いて行く上で、Rails3を使い始めるにはいいバージョンじゃないのかな!
  • CM
    • Titaniumの勉強会を1月〜2月にやるのでよろしく!(クロージャもない言語でiPhoneアプリを作らなくても良くなるよ!)
    • @appcelerator_ja follow me!!
    • 今日の資料IEじゃ見れないかも(そんなブラウザは捨てて!)
  • Q&A
    • Q1.Rubyの方のバージョンはどうすれば?
    • A1.増井さんは1.8.7だけど、質問者から1.9.2でも動くとの声
    • Q2.増井さんがRails1のコードをメンテしている(という話がプレゼン中あった)のはなんで?
    • A2.社内ツールで、プロジェクトが止まっていて工数をかけられないから
第3部のメモ
  • Rails技術者認定試験
    • 事務局長、吉政さん
    • RubyPHPの試験もやっている
  • Data&Topics
    • 日本のエンジニア、100万人、ruby2.8%利用、利用意向24%
    • 習得希望者数と実際の利用者数の差が一番あるのがRails
    • 技術マップ的には、rubyはこれからメインストリームへ
    • アメリカの仕事の量、Javaの方がRubyよりかなり多いが、Rubyは成長中
  • 試験
    • 模擬問題をITトレメに公開予定
    • まずはRails3のブロンズだけ。(Railsのバージョンアップが早いので)
    • シルバーやゴールドを出す時は、書籍を出したりしたい。
  • 試験概要
    • 目的: 技術の物差し
    • 受験料金: 10000円
    • 設問数40、時間1時間、7割正解で合格、選択式
    • 情報はRailsHubに掲載予定
  • スクールプログラムもやるよ