SlideShare a Scribd company logo
1 of 25
Download to read offline
組織にテストコードを書く文化を
根付かせるためにやってきたこと
2017/06/29 塚原 裕也
@Next Game Engineer Summit
塚原 裕也
(つかはら ゆうや)
株式会社グレンジ
リードエンジニア / マネージャー
2008/04
SIのベンチャーでエンジニア始める
2012/02
サイバーエージェントグループのゲーム系子会社
CyberX入社
2014/11
グレンジへ合流し、現在に至る
2011/02/01 設立
グレンジって?
※絶賛新規仕込み中
提供アプリ
ポコロンダンジョンズ
リリース

- iOS:2014年6月

- Android:2014年8月
ダウンロード数

- 1000万突破
ポコダンって?
なぞって、えい!
改めて、今日話すこと。
組織にテストコードを書く文化を
根付かせるためにやってきたこと
運用中のタイトルに導入して
カバレッジを90%以上にした話
みなさん、
テストコード書いてますか?
 
まずは・・・
・リリースして10ヶ月くらい
・テストコードは”ゼロ”
・不具合が多く不安定
・テストがないのにリファクタリングと
いう名目で実装が行われる
・”祈る”開発
 - 影響範囲が未知で自信ない
導入前の状況。
・1年間でカバレッジ90%超
 (現在のカバレッジは95%)
・生産性が上がった
・テストコードがないと不安
・”祈らない”開発
 - コードに自信が持てている
導入後の状況。
・忙しくてテストを書く時間はない
・よくわかんないけど、面倒くさそう
・テスト書く時間あったら他の機能
を実装して欲しい
越えないといけない反発。
余計に反発強め
テストコード経験なし 運用中のサービス×
他セクション向け
の取り組み。
(もちろんエンジニアにもする話)
「テスト書く時間あったら他の機能
を実装して欲しい」
・工数が余計にかかることはない
 (必要な時間という認識)
・無駄な手戻りが減り円滑に進む
スケジュール面でアピール。
・品質が見える化する
※テストを書いたら品質が上がるわ
けではなく、品質はリファクタリング
などで上がる。テストはその布石。
品質面でアピール。
・生産性があがる
 - 開発スピードが上がる
 - 仕様変更に強くなる
 - エンジニアが自信を持って開発
したコードの方が安心
もっと仕事するアピール。
エンジニア向けの
取り組み。
・理解者を増やす(根気が必要)
・「時間がない」のはテストを書かな
いから
・テストコードの工数も含めて見積
もりする(時間がないを言い訳にさせない)
・時間はあげるから書いてくれ
理解してもらう。
・推進する人を立てる
・カバレッジを見える化して煽る
  (穴埋めするのを楽しむ)
・TDDに拘らない
・新規ファイルはテストを必ず書く
 (本当にどうしても時間ないときは後から書く)
・既存ファイルは空いた時間or機
能改修する時に書く
進め方。
海外版開発チームからテストコードの
ベース部分を逆輸入。
とにかく導入する。
メンバーが合流するのを機に押し進めた。
"require-dev": {

"phpunit/phpunit": "3.7.*",

"squizlabs/php_codesniffer": "~2.3",

"sebastian/phpcpd": "~2.0",

"phpmd/phpmd": "~2.2",

"phing/phing": "~2.11"

}
使用ライブラリ。
composer.json
・Jenkinsの利用
 - Gitのpushをトリガーに実行
 - カバレッジ計算
 - コード規約チェック
 - 冗長なコード検出を行う
自動化。
カバレッジ見える化。
半年
1年
現在
・他セクションの理解を得られないと導入が進ま
ない
・とにかく書いてテストコードのメリットを体験しな
いと本当には理解してもらえない
・見える化大事
・カバレッジを増やすことにモチベーションを持てる
人を味方につけると進捗が早い
・諦めない心と強い信念が必要
・テストコードは安定化させるための一つの手段
でしかない(これだけじゃ安定しないよ)
まとめ。
ご清聴ありがとうございました。

More Related Content

What's hot

グリーにおけるAWS移行の必然性
グリーにおけるAWS移行の必然性グリーにおけるAWS移行の必然性
グリーにおけるAWS移行の必然性gree_tech
 
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜gree_tech
 
比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)gree_tech
 
GCPでCI環境を構築する
GCPでCI環境を構築するGCPでCI環境を構築する
GCPでCI環境を構築するToshihumi Anan
 
社内でのjira運用
社内でのjira運用社内でのjira運用
社内でのjira運用Yasushi Kishi
 
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本kazuki kumagai
 
DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃Teruo Adachi
 
gumiにおける、海外支社とのAtlassian製品利用事例
gumiにおける、海外支社とのAtlassian製品利用事例gumiにおける、海外支社とのAtlassian製品利用事例
gumiにおける、海外支社とのAtlassian製品利用事例知教 本間
 
長寿なゲーム事業におけるアプリビルドの効率化
長寿なゲーム事業におけるアプリビルドの効率化長寿なゲーム事業におけるアプリビルドの効率化
長寿なゲーム事業におけるアプリビルドの効率化gree_tech
 
ソーシャルゲーム運用チームにJIRAを導入してみた話
ソーシャルゲーム運用チームにJIRAを導入してみた話ソーシャルゲーム運用チームにJIRAを導入してみた話
ソーシャルゲーム運用チームにJIRAを導入してみた話Kimura Ryota
 
[デブサミ]Microsoft Data Platform 最新アップデート
[デブサミ]Microsoft Data Platform 最新アップデート [デブサミ]Microsoft Data Platform 最新アップデート
[デブサミ]Microsoft Data Platform 最新アップデート Daisuke Inoue
 
Enterprise Redmine
Enterprise RedmineEnterprise Redmine
Enterprise RedmineDai FUJIHARA
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みTakeshi Ogawa
 
「AWSを活用して少人数で複数のサービスを運用するコツ」〜jawsug in nagoya〜
「AWSを活用して少人数で複数のサービスを運用するコツ」〜jawsug in nagoya〜「AWSを活用して少人数で複数のサービスを運用するコツ」〜jawsug in nagoya〜
「AWSを活用して少人数で複数のサービスを運用するコツ」〜jawsug in nagoya〜Teruo Adachi
 
Azure 三つ巴チームが送るIgnite 振り返り!
Azure 三つ巴チームが送るIgnite 振り返り!Azure 三つ巴チームが送るIgnite 振り返り!
Azure 三つ巴チームが送るIgnite 振り返り!Yasuaki Matsuda
 
サービスを日々運用し続けながら最新版のRailsに追従させる極意
サービスを日々運用し続けながら最新版のRailsに追従させる極意サービスを日々運用し続けながら最新版のRailsに追従させる極意
サービスを日々運用し続けながら最新版のRailsに追従させる極意Teruo Adachi
 
jaws-ug kansai-special_kinesis_20150207
jaws-ug kansai-special_kinesis_20150207jaws-ug kansai-special_kinesis_20150207
jaws-ug kansai-special_kinesis_20150207Toshiyuki Konparu
 
裏クラウドデザインパターン
裏クラウドデザインパターン裏クラウドデザインパターン
裏クラウドデザインパターンAtsushi Kojima
 

What's hot (20)

グリーにおけるAWS移行の必然性
グリーにおけるAWS移行の必然性グリーにおけるAWS移行の必然性
グリーにおけるAWS移行の必然性
 
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
 
比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)
 
GCPでCI環境を構築する
GCPでCI環境を構築するGCPでCI環境を構築する
GCPでCI環境を構築する
 
社内でのjira運用
社内でのjira運用社内でのjira運用
社内でのjira運用
 
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本
 
DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃
 
gumiにおける、海外支社とのAtlassian製品利用事例
gumiにおける、海外支社とのAtlassian製品利用事例gumiにおける、海外支社とのAtlassian製品利用事例
gumiにおける、海外支社とのAtlassian製品利用事例
 
長寿なゲーム事業におけるアプリビルドの効率化
長寿なゲーム事業におけるアプリビルドの効率化長寿なゲーム事業におけるアプリビルドの効率化
長寿なゲーム事業におけるアプリビルドの効率化
 
decode17
decode17decode17
decode17
 
ソーシャルゲーム運用チームにJIRAを導入してみた話
ソーシャルゲーム運用チームにJIRAを導入してみた話ソーシャルゲーム運用チームにJIRAを導入してみた話
ソーシャルゲーム運用チームにJIRAを導入してみた話
 
[デブサミ]Microsoft Data Platform 最新アップデート
[デブサミ]Microsoft Data Platform 最新アップデート [デブサミ]Microsoft Data Platform 最新アップデート
[デブサミ]Microsoft Data Platform 最新アップデート
 
Enterprise Redmine
Enterprise RedmineEnterprise Redmine
Enterprise Redmine
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組み
 
「AWSを活用して少人数で複数のサービスを運用するコツ」〜jawsug in nagoya〜
「AWSを活用して少人数で複数のサービスを運用するコツ」〜jawsug in nagoya〜「AWSを活用して少人数で複数のサービスを運用するコツ」〜jawsug in nagoya〜
「AWSを活用して少人数で複数のサービスを運用するコツ」〜jawsug in nagoya〜
 
Azure 三つ巴チームが送るIgnite 振り返り!
Azure 三つ巴チームが送るIgnite 振り返り!Azure 三つ巴チームが送るIgnite 振り返り!
Azure 三つ巴チームが送るIgnite 振り返り!
 
サービスを日々運用し続けながら最新版のRailsに追従させる極意
サービスを日々運用し続けながら最新版のRailsに追従させる極意サービスを日々運用し続けながら最新版のRailsに追従させる極意
サービスを日々運用し続けながら最新版のRailsに追従させる極意
 
jaws-ug kansai-special_kinesis_20150207
jaws-ug kansai-special_kinesis_20150207jaws-ug kansai-special_kinesis_20150207
jaws-ug kansai-special_kinesis_20150207
 
Azure周りの振り返り
Azure周りの振り返りAzure周りの振り返り
Azure周りの振り返り
 
裏クラウドデザインパターン
裏クラウドデザインパターン裏クラウドデザインパターン
裏クラウドデザインパターン
 

Similar to 組織にテストコードを書く文化を 根付かせるためにやってきたこと

Google Apps Script 活用ミートアップ#4 発表資料
Google Apps Script 活用ミートアップ#4 発表資料Google Apps Script 活用ミートアップ#4 発表資料
Google Apps Script 活用ミートアップ#4 発表資料Takayoshi Sakaino
 
#7はじめてのIT勉強会LT
#7はじめてのIT勉強会LT#7はじめてのIT勉強会LT
#7はじめてのIT勉強会LTChinatsu Ozawa
 
副業が私にもたらした2つのシフト
副業が私にもたらした2つのシフト副業が私にもたらした2つのシフト
副業が私にもたらした2つのシフトKazuto Ohara
 
最高のリモート開発を実現するために取り組んでいること - Cybozu Tech Conference 2017
最高のリモート開発を実現するために取り組んでいること - Cybozu Tech Conference 2017最高のリモート開発を実現するために取り組んでいること - Cybozu Tech Conference 2017
最高のリモート開発を実現するために取り組んでいること - Cybozu Tech Conference 2017Yuki Okada
 
チームラボ スマホアプリチームの面白い仕事の作り方
チームラボ スマホアプリチームの面白い仕事の作り方チームラボ スマホアプリチームの面白い仕事の作り方
チームラボ スマホアプリチームの面白い仕事の作り方Wataru Sakashita
 
xR Tech Tokyo 登壇資料 Mixed Realityではじまるコラボレーティブ・コンピューティング
xR Tech Tokyo 登壇資料 Mixed Realityではじまるコラボレーティブ・コンピューティングxR Tech Tokyo 登壇資料 Mixed Realityではじまるコラボレーティブ・コンピューティング
xR Tech Tokyo 登壇資料 Mixed Realityではじまるコラボレーティブ・コンピューティングShinya Tachihara
 
Social Change 〜 ソフトウェア開発者が経営者になるまでと、これからの戦略
Social Change 〜 ソフトウェア開発者が経営者になるまでと、これからの戦略Social Change 〜 ソフトウェア開発者が経営者になるまでと、これからの戦略
Social Change 〜 ソフトウェア開発者が経営者になるまでと、これからの戦略Yoshihito Kuranuki
 
LEANSTARTUPアンチパターン #devlove #leanstartup
LEANSTARTUPアンチパターン #devlove #leanstartupLEANSTARTUPアンチパターン #devlove #leanstartup
LEANSTARTUPアンチパターン #devlove #leanstartupItsuki Kuroda
 
Global engineerlab kawani
Global engineerlab kawaniGlobal engineerlab kawani
Global engineerlab kawaniShin Kawani
 
エンプラでDevRelコミュニティをゼロから作ってみた
エンプラでDevRelコミュニティをゼロから作ってみたエンプラでDevRelコミュニティをゼロから作ってみた
エンプラでDevRelコミュニティをゼロから作ってみたMamoru Ohashi
 
事業会社で働くエンジニアのマインドセット - DevLOVE関西
事業会社で働くエンジニアのマインドセット - DevLOVE関西事業会社で働くエンジニアのマインドセット - DevLOVE関西
事業会社で働くエンジニアのマインドセット - DevLOVE関西Tomoyuki Sugita
 
開発サイクルを爆速にする!~ Azure DevOpsでアプリのビルド・デプロイを自動化 ~
開発サイクルを爆速にする!~ Azure DevOpsでアプリのビルド・デプロイを自動化 ~開発サイクルを爆速にする!~ Azure DevOpsでアプリのビルド・デプロイを自動化 ~
開発サイクルを爆速にする!~ Azure DevOpsでアプリのビルド・デプロイを自動化 ~KojiKono1
 
とらのあなエンジニア採用イベント 2017年2月9日
とらのあなエンジニア採用イベント 2017年2月9日とらのあなエンジニア採用イベント 2017年2月9日
とらのあなエンジニア採用イベント 2017年2月9日Junichi Noda
 
我が家のフロントエンド開発事情
我が家のフロントエンド開発事情我が家のフロントエンド開発事情
我が家のフロントエンド開発事情Naoki Yamada
 
Apple sapの提携のその後
Apple sapの提携のその後Apple sapの提携のその後
Apple sapの提携のその後智洋 大野
 
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」Serverworks Co.,Ltd.
 
ソフトウェアエンジニアのキャリア・デザイン
ソフトウェアエンジニアのキャリア・デザインソフトウェアエンジニアのキャリア・デザイン
ソフトウェアエンジニアのキャリア・デザインHaruto Watanabe
 
Elastic Team Building
Elastic Team BuildingElastic Team Building
Elastic Team BuildingYuki Nanri
 
ソニーでElectronアプリをリリースしてみた
ソニーでElectronアプリをリリースしてみたソニーでElectronアプリをリリースしてみた
ソニーでElectronアプリをリリースしてみたYasuharu Seki
 
Delphi開発者のためのSencha入門
Delphi開発者のためのSencha入門Delphi開発者のためのSencha入門
Delphi開発者のためのSencha入門Shinobu Kawano
 

Similar to 組織にテストコードを書く文化を 根付かせるためにやってきたこと (20)

Google Apps Script 活用ミートアップ#4 発表資料
Google Apps Script 活用ミートアップ#4 発表資料Google Apps Script 活用ミートアップ#4 発表資料
Google Apps Script 活用ミートアップ#4 発表資料
 
#7はじめてのIT勉強会LT
#7はじめてのIT勉強会LT#7はじめてのIT勉強会LT
#7はじめてのIT勉強会LT
 
副業が私にもたらした2つのシフト
副業が私にもたらした2つのシフト副業が私にもたらした2つのシフト
副業が私にもたらした2つのシフト
 
最高のリモート開発を実現するために取り組んでいること - Cybozu Tech Conference 2017
最高のリモート開発を実現するために取り組んでいること - Cybozu Tech Conference 2017最高のリモート開発を実現するために取り組んでいること - Cybozu Tech Conference 2017
最高のリモート開発を実現するために取り組んでいること - Cybozu Tech Conference 2017
 
チームラボ スマホアプリチームの面白い仕事の作り方
チームラボ スマホアプリチームの面白い仕事の作り方チームラボ スマホアプリチームの面白い仕事の作り方
チームラボ スマホアプリチームの面白い仕事の作り方
 
xR Tech Tokyo 登壇資料 Mixed Realityではじまるコラボレーティブ・コンピューティング
xR Tech Tokyo 登壇資料 Mixed Realityではじまるコラボレーティブ・コンピューティングxR Tech Tokyo 登壇資料 Mixed Realityではじまるコラボレーティブ・コンピューティング
xR Tech Tokyo 登壇資料 Mixed Realityではじまるコラボレーティブ・コンピューティング
 
Social Change 〜 ソフトウェア開発者が経営者になるまでと、これからの戦略
Social Change 〜 ソフトウェア開発者が経営者になるまでと、これからの戦略Social Change 〜 ソフトウェア開発者が経営者になるまでと、これからの戦略
Social Change 〜 ソフトウェア開発者が経営者になるまでと、これからの戦略
 
LEANSTARTUPアンチパターン #devlove #leanstartup
LEANSTARTUPアンチパターン #devlove #leanstartupLEANSTARTUPアンチパターン #devlove #leanstartup
LEANSTARTUPアンチパターン #devlove #leanstartup
 
Global engineerlab kawani
Global engineerlab kawaniGlobal engineerlab kawani
Global engineerlab kawani
 
エンプラでDevRelコミュニティをゼロから作ってみた
エンプラでDevRelコミュニティをゼロから作ってみたエンプラでDevRelコミュニティをゼロから作ってみた
エンプラでDevRelコミュニティをゼロから作ってみた
 
事業会社で働くエンジニアのマインドセット - DevLOVE関西
事業会社で働くエンジニアのマインドセット - DevLOVE関西事業会社で働くエンジニアのマインドセット - DevLOVE関西
事業会社で働くエンジニアのマインドセット - DevLOVE関西
 
開発サイクルを爆速にする!~ Azure DevOpsでアプリのビルド・デプロイを自動化 ~
開発サイクルを爆速にする!~ Azure DevOpsでアプリのビルド・デプロイを自動化 ~開発サイクルを爆速にする!~ Azure DevOpsでアプリのビルド・デプロイを自動化 ~
開発サイクルを爆速にする!~ Azure DevOpsでアプリのビルド・デプロイを自動化 ~
 
とらのあなエンジニア採用イベント 2017年2月9日
とらのあなエンジニア採用イベント 2017年2月9日とらのあなエンジニア採用イベント 2017年2月9日
とらのあなエンジニア採用イベント 2017年2月9日
 
我が家のフロントエンド開発事情
我が家のフロントエンド開発事情我が家のフロントエンド開発事情
我が家のフロントエンド開発事情
 
Apple sapの提携のその後
Apple sapの提携のその後Apple sapの提携のその後
Apple sapの提携のその後
 
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
 
ソフトウェアエンジニアのキャリア・デザイン
ソフトウェアエンジニアのキャリア・デザインソフトウェアエンジニアのキャリア・デザイン
ソフトウェアエンジニアのキャリア・デザイン
 
Elastic Team Building
Elastic Team BuildingElastic Team Building
Elastic Team Building
 
ソニーでElectronアプリをリリースしてみた
ソニーでElectronアプリをリリースしてみたソニーでElectronアプリをリリースしてみた
ソニーでElectronアプリをリリースしてみた
 
Delphi開発者のためのSencha入門
Delphi開発者のためのSencha入門Delphi開発者のためのSencha入門
Delphi開発者のためのSencha入門
 

組織にテストコードを書く文化を 根付かせるためにやってきたこと