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
組織にテストコードを書く文化を 根付かせるためにやってきたこと
Search
CyberAgent SGE Engineer
June 29, 2017
Programming
1
4.4k
組織にテストコードを書く文化を 根付かせるためにやってきたこと
組織にテストコードを書く文化を 根付かせるためにやってきたこと
@Next game engineer_summit
CyberAgent SGE Engineer
June 29, 2017
Tweet
Share
More Decks by CyberAgent SGE Engineer
See All by CyberAgent SGE Engineer
SREチームの立ち上げから5年間とこれから
sgeengineer
0
1.8k
サムザップにおけるNotionの 活用事例とPHPでのNotionAPIを利用した仕組み構築の紹介
sgeengineer
0
2k
Laravel OctaneをどうしてもPharで運用したい話
sgeengineer
2
2.6k
大規模Unityゲーム開発の設計事例 〜ドメイン駆動設計とDIコンテナを導入した一年を振り返る〜 / cedec2021-ddd
sgeengineer
2
15k
ロボットを動かすビジュアルプログラミングでできることはPHPでもできる!
sgeengineer
0
1.7k
PHP8版!Swooleのフレームワークを比べてみた
sgeengineer
1
2.8k
「戦国炎舞 -KIZNA-」で行ったAWSのコスト最適化の話
sgeengineer
0
1.9k
AirtestとPocoとOpenSTFによるUnity製スマートフォン向けゲームの実機自動テスト環境構築とその利用方法
sgeengineer
0
5.1k
PHPでgRPCって どこまでいけるの?
sgeengineer
0
4.9k
Other Decks in Programming
See All in Programming
202507_ADKで始めるエージェント開発の基本 〜デモを通じて紹介〜(奥田りさ)The Basics of Agent Development with ADK — A Demo-Focused Introduction
risatube
PRO
6
1.4k
なぜ今、Terraformの本を書いたのか? - 著者陣に聞く!『Terraformではじめる実践IaC』登壇資料
fufuhu
3
350
新しいモバイルアプリ勉強会(仮)について
uetyo
1
240
リッチエディターを安全に開発・運用するために
unachang113
1
340
フロントエンドのパフォーマンスチューニング
koukimiura
7
2.4k
PHPカンファレンス関西2025 基調講演
sugimotokei
6
1.1k
コーディングエージェント概観(2025/07)
itsuki_t88
1
480
SwiftでMCPサーバーを作ろう!
giginet
PRO
2
220
11年かかって やっとVibe Codingに 時代が追いつきましたね
yimajo
1
230
リバースエンジニアリング新時代へ! GhidraとClaude DesktopをMCPで繋ぐ/findy202507
tkmru
7
1.7k
LLMは麻雀を知らなすぎるから俺が教育してやる
po3rin
3
1.8k
テスターからテストエンジニアへ ~新米テストエンジニアが歩んだ9ヶ月振り返り~
non0113
2
250
Featured
See All Featured
Facilitating Awesome Meetings
lara
54
6.5k
Side Projects
sachag
455
43k
GraphQLとの向き合い方2022年版
quramy
49
14k
Git: the NoSQL Database
bkeepers
PRO
431
65k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.5k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Designing Experiences People Love
moore
142
24k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
Automating Front-end Workflow
addyosmani
1370
200k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
Become a Pro
speakerdeck
PRO
29
5.5k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
21k
Transcript
組織にテストコードを書く文化を 根付かせるためにやってきたこと 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%以上にした話
みなさん、 テストコード書いてますか? まずは・・・
None
・リリースして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年 現在
・他セクションの理解を得られないと導入が進ま ない ・とにかく書いてテストコードのメリットを体験しな いと本当には理解してもらえない ・見える化大事 ・カバレッジを増やすことにモチベーションを持てる 人を味方につけると進捗が早い ・諦めない心と強い信念が必要 ・テストコードは安定化させるための一つの手段 でしかない(これだけじゃ安定しないよ)
まとめ。
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ