Slide 1

Slide 1 text

組織にテストコードを書く文化を 根付かせるためにやってきたこと 2017/06/29 塚原 裕也 @Next Game Engineer Summit

Slide 2

Slide 2 text

塚原 裕也 (つかはら ゆうや) 株式会社グレンジ リードエンジニア / マネージャー

Slide 3

Slide 3 text

2008/04 SIのベンチャーでエンジニア始める 2012/02 サイバーエージェントグループのゲーム系子会社 CyberX入社 2014/11 グレンジへ合流し、現在に至る

Slide 4

Slide 4 text

2011/02/01 設立 グレンジって? ※絶賛新規仕込み中 提供アプリ ポコロンダンジョンズ

Slide 5

Slide 5 text

リリース
 - iOS:2014年6月
 - Android:2014年8月 ダウンロード数
 - 1000万突破 ポコダンって?

Slide 6

Slide 6 text

なぞって、えい!

Slide 7

Slide 7 text

改めて、今日話すこと。 組織にテストコードを書く文化を 根付かせるためにやってきたこと 運用中のタイトルに導入して カバレッジを90%以上にした話

Slide 8

Slide 8 text

みなさん、 テストコード書いてますか?   まずは・・・

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

・リリースして10ヶ月くらい ・テストコードは”ゼロ” ・不具合が多く不安定 ・テストがないのにリファクタリングと いう名目で実装が行われる ・”祈る”開発  - 影響範囲が未知で自信ない 導入前の状況。

Slide 11

Slide 11 text

・1年間でカバレッジ90%超  (現在のカバレッジは95%) ・生産性が上がった ・テストコードがないと不安 ・”祈らない”開発  - コードに自信が持てている 導入後の状況。

Slide 12

Slide 12 text

・忙しくてテストを書く時間はない ・よくわかんないけど、面倒くさそう ・テスト書く時間あったら他の機能 を実装して欲しい 越えないといけない反発。 余計に反発強め テストコード経験なし 運用中のサービス ×

Slide 13

Slide 13 text

他セクション向け の取り組み。 (もちろんエンジニアにもする話)

Slide 14

Slide 14 text

「テスト書く時間あったら他の機能 を実装して欲しい」 ・工数が余計にかかることはない  (必要な時間という認識) ・無駄な手戻りが減り円滑に進む スケジュール面でアピール。

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

・推進する人を立てる ・カバレッジを見える化して煽る   (穴埋めするのを楽しむ) ・TDDに拘らない ・新規ファイルはテストを必ず書く  (本当にどうしても時間ないときは後から書く) ・既存ファイルは空いた時間or機 能改修する時に書く 進め方。

Slide 20

Slide 20 text

海外版開発チームからテストコードの ベース部分を逆輸入。 とにかく導入する。 メンバーが合流するのを機に押し進めた。

Slide 21

Slide 21 text

"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

Slide 22

Slide 22 text

・Jenkinsの利用  - Gitのpushをトリガーに実行  - カバレッジ計算  - コード規約チェック  - 冗長なコード検出を行う 自動化。

Slide 23

Slide 23 text

カバレッジ見える化。 半年 1年 現在

Slide 24

Slide 24 text

・他セクションの理解を得られないと導入が進ま ない ・とにかく書いてテストコードのメリットを体験しな いと本当には理解してもらえない ・見える化大事 ・カバレッジを増やすことにモチベーションを持てる 人を味方につけると進捗が早い ・諦めない心と強い信念が必要 ・テストコードは安定化させるための一つの手段 でしかない(これだけじゃ安定しないよ) まとめ。

Slide 25

Slide 25 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ