Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
これから始める"Ruby on Rails"2013年秋版
Search
longicorn
October 11, 2013
Programming
590
3
Share
これから始める"Ruby on Rails"2013年秋版
http://atnd.org/events/44191
のスライドです
longicorn
October 11, 2013
Other Decks in Programming
See All in Programming
AI時代のシステム設計:ドメインモデルで変更しやすさを守る設計戦略
masuda220
PRO
6
1.1k
ロボットのための工場に灯りは要らない
watany
12
3.3k
Understanding Apache Lucene - More than just full-text search
spinscale
0
150
Symfony + NelmioApiDocBundle を使った スキーマ駆動開発 / Schema Driven Development with NelmioApiDocBundle
okashoi
0
250
ポーリング処理廃止によるイベント駆動アーキテクチャへの移行
seitarof
3
1.3k
Xdebug と IDE による デバッグ実行の仕組みを見る / Exploring-How-Debugging-Works-with-Xdebug-and-an-IDE
shin1x1
0
300
今こそ押さえておきたい アマゾンウェブサービス(AWS)の データベースの基礎 おもクラ #6版
satoshi256kbyte
1
220
おれのAgentic Coding 2026/03
tsukasagr
1
120
AI Assistants for YourAngular Solutions @Angular Graz, March 2026
manfredsteyer
PRO
0
140
最初からAWS CDKで技術検証してもいいんじゃない?
akihisaikeda
4
180
年間50登壇、単著出版、雑誌寄稿、Podcast出演、YouTube、CM、カンファレンス主催……全部やってみたので面白さ等を比較してみよう / I’ve tried them all, so let’s compare how interesting they are.
nrslib
4
630
見せてもらおうか、 OpenSearchの性能とやらを!
shunta27
1
170
Featured
See All Featured
RailsConf 2023
tenderlove
30
1.4k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
140
Building AI with AI
inesmontani
PRO
1
840
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.8k
First, design no harm
axbom
PRO
2
1.2k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
280
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
370
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
81
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
260
My Coaching Mixtape
mlcsv
0
91
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.3k
Transcript
+ これから始める"Ruby on Rails”2013年秋版 株式会社じげん 津村 泰史
+ 自己紹介 n 始めは組み込み屋。 7、8年ほど色々やっていました n 下位層はbootloader、linux driverからファーム等 n 組み込みに飽きたので、ソーシャルゲーム業界に
n アプリ開発から解析システム開発等 n 現在は株式会社じげんで主にサイト作成を担当。 n 最近は、テストにも力を入れています。 n Twitter @prioniae
+ アジェンダ n 最近の開発環境 n テスト周り n 便利な機能/gem
+ テーマ n Rails4のリリースから時間も経過しました n 勉強会、Blogを始めとして色々情報は出ています n しかし、実際の開発環境、現場はどうなのか? n ということで、普通のエンジニア向けの、普通の現場の状況で
す n テストが多め
+ 最近の開発環境
+ Ruby + Rails n rbenv n Ruby : 1.8、1.9、2.0
n Rails : 2,3,4 n サービス毎によって、Ruby + Railsのバージョンが色々 n アップデートが課題 n ビジネスロジックが多く、場合によっては作り直しの方が早 かったり
+ RailsとDjangoの比較 n 前職ではDjangoを触っていましたので比較 Rails Django 環境(人、物…) ◎ △ 開発速度
◎ ◯ バージョン問題 △ ◯
+ MySQL n サービスによって複数のバージョンを使用 n 5.1、5.5、5.6 n 複数バージョンのインストールをどうするか? n MySQL::Sandboxで複数インストール
n ただし、gemのmysql、mysql2のインストールは少し難しい n コンパイルが必要なのでパスを通す必要が有り
+ テスト周り n ユニットテストを始めとするテストコードの必要性は一般的に なっています n 実際の所はどうか? n テストコードを書いているエンジニア、組織はまだまだ少ない 印象
n 社内ではDevOpsの影響もあり、テストコードを書くことが進 み始めている。が、まだまだこれからです
+ テストを書き始めるおすすめの手順 n 時間の合間に書けるもの徐々にテストを始め、テストに慣れる n import周辺、helperなどのmodel/DBが関わらない部分 n Requestテスト(後述) n model周辺(validationなど)
n 統合テスト n ユーザー登録 n Post
+ Rspec n Railsのテストフレームワークのデファクトスタンダード n Controller, Model/DB, Helperを中心に「本来あるべき挙動」 を記述していく この「あるべき挙動」のことを「Spec(ス
ペック)」と呼び、rubyで書いていく n expect( <調べたいもの> ).to eq(期待する値)
+ Rspec再入門
+ Rspec再入門
+ Rspec再入門
+ Request spec n RoutingをトレースしたControllerのテスト n つまり、特定のURLにアクセスして、エラーチェックを行う n テストが行き届いておらず、リリース後にバグでアクセスエ ラーという自体を防ぐ
n これがあるだけで安心感が全然違います
+ Request spec
+ View側のテスト n Rspecだけでは出来る事が限られている n ボタンの動作 n ページ遷移 n Javascript、…
n 結局、人間が手動でテストをせざるを得ず、時間の無駄が多い → 自動化をしたい n 回答 : Rspec + Capybara + Poltergeist
+ Capybara n 受け入れテスト、統合テスト用のフレーム n イメージとしては、Webアクセスの自動化 + テスト n Rspecと組み合わせることで、spec内でDOM(フォーム要素な
ど)のテストが行える。
+ 例えばこんなフォームの場合 ↓
+ Capybaraのテスト
+ Poltergeist (phantomjs)とは n Phantomjsはseleniumの軽量版 n Poltergeistはphantomjsのruby用ドライバです。 Capybaraの pluginとして動作します。 n
機能 n ブラウザテスト n スクリーンキャプチャ n Bot n Networkモニタリング
+ インストール n phantomjs n Macはbrew、portsでインストール n 最近のLinuxだと本家からダウンロード n 少し古いLinuxだとソースからコンパイルが必要
n Poltergeist n gemでインストール n Ruby 1.9移行
+ こんな動きをテスト出来る
+ Rspec+Capybara+Poltergeist
+ そしてCIへ n テストコードができれば、CIの準備完了 n Jenkinsで自動テスト n gitでpush時に自動的にテストを実行 結果はメールで送信 n
DevOps、テストコード作成の影響もあり徐々に導入を進めて います n まだ、始めたばかりなので、利用しているプロジェクトは2,3 程度
+ 便利な機能/gem
+ Railsの高速化 n Spring n Railsは各種コマンドの起動が遅い n Railsの実行ファイルを予めキャッシュし、デーモンとして別 プロセスで生かしておく n
spork、zeus、commands n 注意 n Ruby 1.9.3,Rails3.2以降が対象 n gitでのブランチ移動の場合は再起動が必要
+ Rubocop n Rubocop : 静的コードチェッカ n Ruby 1.9以上 n
インストールはgemで n コーディングルールのチェックツール n 設定ファイルでルールを変更することが可能! n 言語を問わず昔からあるツールの類 n Jenkinsを利用することにより、コーディングルールの形骸化 を防ぐ
+ このようなコードをチェック
+ 結果は…
+ TDD n CIは通常git + Jenkinsで行われるが、 TDDはコーディングとセットで行うもの n gem :
guard、watchrが便利 Ruby製ですが、他言語でも使用できます n ファイルの変更をトリガーにテストを実行 n Growlを使用することにより、テスト結果を分かりやすく表示
+ TDD + Growl
+ Growlの問題点 n 現在は有料なのが難点かも n ただし、古いバージョンのソースコードが公開されている n ダウンロードしてコンパイルすれば使える n ただし、コンパイルエラーが出て修正が必要かも
n Webで情報が少しはあるのでなんとかなる! n Linuxだとgrowl4linuxで代替できるようです
+ TDDの感想 n TDDは今までのプログラミングのリズムから大きな変化がある ため最初は大変 n TDDを始めた場合、始めは開発時間が1.5〜2倍は覚悟が必要 n しかし、テストと同時に開発を行うので信頼性はUP n
慣れるまでは、すごく疲れます 残業する元気はなくなります
+ 今回紹介したツール n gem n Spring n Guard / Watchr
n Rubocop n Rspec、Capybara、Poltergeist n phantomjs n Growl n 購入 / コンパイル n Linux growl4linux / Notify-OSD
+ 今後の課題 n テスト導入による効果を数値化 n 別プロジェクトへの展開 n テストコードの量を増やす
+ 有り難うございました!