Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
ぼくのやってる ふつうのこと @wtnabe Kanazawa.rb meetup #14 2013-10-19 (Sat) at DMM.com Labo Kanazawa
Slide 2
Slide 2 text
お品書き
Slide 3
Slide 3 text
ざっくり Web開発のプラクティス 使ってるツール 本当に⼤切なプラクティス
Slide 4
Slide 4 text
ざっくり TDDとend-to-endテストの話多め 最後の話だけ覚えて、あとは適当に
Slide 5
Slide 5 text
Web開発のプラクティス1 バージョン管理 Tickets & Milestones deployの⾃動化
Slide 6
Slide 6 text
Web開発のプラクティス2 開発環境の仮想化と⾃動構築 Test-Driven Development Continuous Integration
Slide 7
Slide 7 text
使ってるツール1 Subversion ( Mercurial, Git ) Trac Capistrano Vagrant, Chef
Slide 8
Slide 8 text
使ってるツール2 Jenkins RSpec, SimpleTest, Jasmine, PhantomJS SimpleCov(RCov), PHPCPD, JSHint
Slide 9
Slide 9 text
Web開発のプラクティス
Slide 10
Slide 10 text
バージョン管理 全部⼊れる ログがあるので安⼼して忘れられる うまく⾏くかどうか分からない場合も元 に戻せるので安⼼ いわゆる共通ライブラリは別リポジトリ
Slide 11
Slide 11 text
Tickets & Milestones 〆切をMilestoneの締め⽇にしてタスクを その中に落とし込む 基本的に⼀つのタスク : ⼀つのチケット みんなが分かるようにする 「完了」可能なタスクにする
Slide 12
Slide 12 text
deployの⾃動化 ⼿作業はミスやブレに繋がる 「fiddlingを避けよ」『Release It !』p112 変なコツをなくす 誰がやっても同じになる
Slide 13
Slide 13 text
開発環境の仮想化と ⾃動構築 VMのセットアップから⾃動化 デザイナもLinux環境使ってます Win/Macの違いはもうありません
Slide 14
Slide 14 text
Test-Driven Development
Slide 15
Slide 15 text
の前に
Slide 16
Slide 16 text
どちらが本当? コードは触り続けると汚くなる コードは触り続けるときれいになる
Slide 17
Slide 17 text
どちらも本当
Slide 18
Slide 18 text
リファクタリング してますか?
Slide 19
Slide 19 text
リファクタリング “外から⾒えるふるまいを変えずに、ソフトウェ アをわかりやすくし、安いコストで変更できる ようにするために、ソフトウェアの内部構造に 加えられる変更。” 『リファクタリング: Rubyエディション』p76
Slide 20
Slide 20 text
あなたのコードは安⼼して 変更できますか?
Slide 21
Slide 21 text
TDD ⻑く使うコード、変更し続けるアプリは リファクタリングが重要 TDDはリファクタリングを最も効率よく ⾏う⽅法の⼀つ
Slide 22
Slide 22 text
TDD 完璧な⾃動化は⽬指さない カバレッジは場所によって0〜100% 機能の⼀部だけをテストできると捗る テストデータの⾃動⽣成やダブルの活⽤
Slide 23
Slide 23 text
Continuous Integration うっかりテスト実⾏漏れ防⽌ うっかり環境依存テスト防⽌ 静的解析便利
Slide 24
Slide 24 text
オススメ導⼊⼿順(案) バージョン管理 / deployの⾃動化 CI end-to-endテスト ユニットテスト
Slide 25
Slide 25 text
使ってるツール
Slide 26
Slide 26 text
Subversion 2006年くらいから(それ以前はCVS) Mercurial, Gitも⼀部併⽤ そのうちGitへ⼀本化するつもり
Slide 27
Slide 27 text
選択基準 当時は各種ツールのサポートがよかった GitのGUIは⻑らく貧弱だった コードホスティング、クラウド側の対応 はGitがイチバン
Slide 28
Slide 28 text
Trac Python製Issue Tracking System むしろSubversionはTracを使う理由 (CVSでは使えない)
Slide 29
Slide 29 text
Capistrano Ruby製deployツール 個⼈では2008年〜、組織では2011年〜 これを理由に関係者はRuby必須に 必須に RailsもPHPも
Slide 30
Slide 30 text
Vagrant, Chef Ruby製VM管理ツール + サーバ設定⾃動 化 開発環境構築の⾃動化と開発環境の統⼀ 「適当にVM作って設定漏れ」をなくす 昔からの⾃前ツールも組み合わせて テストにも絡んできます
Slide 31
Slide 31 text
Jenkins Continuous Integrationのスタンダード Java trunkを⾃動でテスト/静的解析 deployの記録も取るようにした
Slide 32
Slide 32 text
RSpec Ruby製テスティングフレームワーク BDDスタイル Ruby 1.8でも動く Railsと合わせて使うノウハウが多い けど、Rubyのコードならなんでもよい
Slide 33
Slide 33 text
SimpleTest PHP 4/5 両対応のフレームワーク ⾃前pear packaging 最新版はPHP 5⽤ ユニットテストとカバレッジ測定 レガシーなコードにはオススメ
Slide 34
Slide 34 text
RSpec + Capybara (end-to-end) with rspec-rails for PHP
Slide 35
Slide 35 text
Vagrant / RSpec + Capybara for PHP 開発環境の統⼀、URL完全⼀致 誰の環境でend-to-endテストを動かし ても同じように動作する Railsでのノウハウを流⽤
Slide 36
Slide 36 text
Vagrant / RSpec + Capybara for PHP PHPのバージョンに依らない 「ど真ん中」なのでメンテナンスが放棄 される不安がほぼない
Slide 37
Slide 37 text
Jasmine JavaScript⽤BDDフレームワーク gemで⼊れられる spec書きやすさのためにCoffeeScriptも テストはブラウザで実⾏ 最近はPhantomJSと組み合わせて
Slide 38
Slide 38 text
PhantomJS Headless Webkit Browser 2012年からインストールが超簡単に Jasmineと組み合わせてCIに Capybara + Poltergeistでend-to-endに
Slide 39
Slide 39 text
SimpleCov(RCov) Rubyのカバレッジ測定 ⾃動化はしてません あくまで⽬安の把握にしか使ってません
Slide 40
Slide 40 text
PHPCPD PHPのコピペチェッカ CIで記録取り
Slide 41
Slide 41 text
JSHint JavaScriptの静的スタイルチェッカ 設定項⽬ありすぎてうざい ruby wrapper⾃作してrakeで呼んでる wtnabe/jshint4r Node.js不要 対応バージョンが古い><
Slide 42
Slide 42 text
静的解析や計測 特にいじりにくいコードはコピペ率が⾼ くてカバレッジが低いといった特徴が⾒ えてくる 数値で分かるので⽬標を決めやすい
Slide 43
Slide 43 text
本当に⼤切なプラクティス
Slide 44
Slide 44 text
覚えて帰ってください 不易と流⾏ 継続は⼒なり
Slide 45
Slide 45 text
不易と流⾏ もともと蕉⾵俳諧の理念の⼀つ 変化しない本質的なものの中にも新しい 変化を取り⼊れること。また変化を取り ⼊れ続けることこそが不易の本質。
Slide 46
Slide 46 text
不易と流⾏ 転じて教育の世界では「変わらないことも変わ ることもどちらも学ぶべき」と語られることが 多い。
Slide 47
Slide 47 text
例 流⾏ Node.js, Chef, PhantomJS 不易 イベントドリブン、⾮同期、⾃動化
Slide 48
Slide 48 text
継続は⼒なり
Slide 49
Slide 49 text
今⽇の話 急にできるようになった ものなどありません
Slide 50
Slide 50 text
さらに⾔えば
Slide 51
Slide 51 text
今回の話に新しいものは 特にありません
Slide 52
Slide 52 text
昔から⾔われていること
Slide 53
Slide 53 text
昔から やってる⼈はやってること
Slide 54
Slide 54 text
Travis CI登場から2年 github登場から5年 Rails / Selenium登場から来年で10年 CIのプラクティス登場から15年くらい "Refactoring"から来年で15年 SUnit登場から来年で20年
Slide 55
Slide 55 text
Ruby誕⽣から20年 WWW誕⽣から23年 DBMS登場から30年以上 オブジェクト指向誕⽣から35年以上
Slide 56
Slide 56 text
ツールは変わる
Slide 57
Slide 57 text
背景や⽂化は そう変わらない
Slide 58
Slide 58 text
より深く 継続的に学ぼう
Slide 59
Slide 59 text
ツールも知ろう ⽂化も知ろう
Slide 60
Slide 60 text
やってみよう
Slide 61
Slide 61 text
それこそを Kanazawa.rbの ⽂化にしよう
Slide 62
Slide 62 text
ありがとうございました
Slide 63
Slide 63 text
参考 Release It! 本番⽤ソフトウェア製品の設計とデプロ イのために リファクタリング: Rubyエディション