Upload
yoshimi-tominaga
View
468
Download
2
Embed Size (px)
DESCRIPTION
社内勉強会でのLT資料
Citation preview
2014/07/15 西新宿Tech-Circle 冨永 善視 (@tominaga443)
チケット駆動でテスト駆動な アプリケーション開発
冨永 善視 (とみなが よしみ)
Twitter @tominaga443
2013年度入社 2年目
戦略技術センター(STC) スマートインフラストラクチャチーム
デザイン指向クラウドオーケストレーションソフトウェア
「CloudConductor」の開発・技術検証
最近の活動内容
Red Hat OpenStack Administration トレーニング受講中
来週からIaaSのスペシャリストとして戻ってきます
自己紹介
今日話すこと・話さないこと
CloudConductorチームの開発方針
開発で使っているツールの紹介
良い点・悪い点
今日話すこと
チケット駆動開発・テスト駆動開発とはなんぞや
ツールの詳しい説明・使い方 → Google先生に聞きましょう
今日話さないこと
CloudConductorチームのチケット駆動開発
コードに手を入れるときは先にチケットを作る
機能実装
バグ修正
リファクタリング
粒度が大きいものは子チケットに分割
1チケット=1コミットぐらい
チケット駆動開発(TiDD)
使っているツール
Git
分散型バージョン管理システム
ローカルでグチャグチャし放題なのが好き
ツール
Github(PJ的にOKなら)
ひたすら楽してバージョン管理 多分これが一番楽だと思います
Gitlab使ってます
Gitolite、GitBucket、Gitblit、Gitoriousなどご自由に
バージョン管理
Redmine
チケット管理と言えばこれ
プラグインでバージョン管理システムと連携可能
Gitとチケットを関連付ける
[#チケット番号]をブランチ名に入れてコミットする
git checkout-b bugfix/#12
git commit bugfix/#12
git push origin master
チケット管理
TiDDの嬉しいとこ・悲しいとこ
いつ誰がどの処理を書いたか分かる
嬉しいとこ
このコードを
書いたのは
誰だあっ
!!
トレーサビリティが高い
作業の見える化
タスクがコンパクトになる
嬉しいとこ
チケットはリアルタイムで増殖する
悲しいとこ
ロードマップの進捗は信じるな
作業計画・スケジュール管理は別途必要
定期的にチケットの棚卸が必要
悲しいとこ
CloudConductorチームのテスト駆動開発
機能を実装するときは先にテストコードを書く
テストを実行しながらコードを書く
事前にテストが失敗する(Red)ことを確認
とりあえずテストが成功する(Green)コードを書く
Greenを維持したままコードをきれいに修正
リポジトリにマージする時も自動でテスト
テスト駆動開発(TDD)
使っているツール
Rspec
Rubyのテスト用フレームワーク
振舞い(仕様)を記述するので振舞い駆動開発(BDD)とも
詳細は各自お調べください
テスト用フレームワーク
Guard
ファイルの変更を監視してシェル等を実行できるRubyGem
ソースファイルを監視してテストを自動実行
裏でGuardを起動してソースファイルを監視
コードの変更を保存するたびに対応するテストを自動実行
ファイル変更監視
|/|-|\ | 0M0) ニヤニヤ |⊂ / | /
Rubocop
Rubyの静的コード解析ツール
Ruby Style Guideに従ってコードをチェック
コーディングスタイルチェック
Jenkins
継続的インテグレーション(CI)と言えばこれ
更新を検知してテストを自動実行
定期的にバージョン管理システムをポーリング
新しいコミットがあればテスト用のシェルを実行
リポジトリのクローン
パッケージの最新化
Rspecの実行
Rubocopの実行
CI
TDDの嬉しいとこ・悲しいとこ
着実に動くコードが書ける
エラーを含んだコードが拡散しにくい
「私の環境では動いたんですけど(;^ω^)」を防止
嬉しいとこ
テストコード書くの めんどくさい 難しい
テストコードの動作って誰が保証するの?
テストコードのレビューも必要
悲しいとこ
上手く使ってPJをカイゼンしよう!