【PHPカンファレンス2020 フォローアップ】長期運用を目指す『Shadowverse』におけるリファクタ事例の紹介 〜テストの導入とメンバーへの普及法〜


こんにちは、「Shadowverse」エンジニアリーダーの髙野です。
先日開催されたPHPカンファレンス2020にて、「長期運用を目指す『Shadowverse』におけるリファクタ事例の紹介 〜テストの導入とメンバーへの普及法〜」と題して講演をさせていただきました。

初のオンライン開催ではありましたが、運営の皆様、また講演をご聴講頂いたみなさま、ありがとうございました。

本公演では、「Shadowverse」プロジェクトにテストを導入した経緯の説明と、その成果について紹介しました。以下が講演資料です。

テストを用いたリファクタについて

講演では、「リファクタの成否を担保するためのツール」としてのテスト導入法について紹介しました。

プログラムが動作する際には入力と出力が存在します。これらを観測できるテストを書き、テストが成功するリファクタを繰り返すことで、バグを殆ど出さずに、素早くリファクタを終えることができました。

ただし、テストを書いてリファクタを終えたからといって油断は禁物です。テストでのカバーが漏れているケースについてはバグが起こり得る、ということを忘れてはいけません。あくまで、テストはエンジニア側の実装効率を高めるためのものであると考えるのが重要です。

テスト文化を根付かせていくためには

テストという強力な武器が使えることがわかったあととは、それを誰でも使えるようにすることがチームとしてのレベルアップの鍵となります。

講演では、「環境構築/テスト作成/自動テスト実行」のそれぞれのハードルをさげるということについて紹介しました。

テスト駆動開発について

テストを用いたリファクタから派生して、テスト駆動開発を行った事例についても紹介しました。テスト駆動開発により、可読性の高いコードを、高速に実装できました。

ただ、テスト駆動開発をするためには単一責任原則に則ったコードを書くスキルが必要、すなわち「テストを書きやすいコードを書く技術」が必要だと感じました。よって、プロジェクトに新たにテストを導入する場合、まずはリファクタにテストを導入してこのスキルを培ってからテスト駆動開発をしてみる、という選択肢も視野にいれてみてください。

最後に

今までテストを書く文化がなかったプロジェクトにテストを導入するのはとてもハードルが高く感じるかもしれません。私もそう思っていました。

ですが、実際にテスト導入にチャレンジしてみて得られた成果、及び知見はプロジェクトにとって非常に有意義なものとなりました。

今回の講演のテスト導入事例および成果例が、テスト導入を検討されている方の後押しになれば幸いです。

私たちはこれからも「最高のコンテンツ」を作るため、様々なチャレンジを続けていきます。
ゲームに真剣になれる方と共に、チャレンジをしていきたいです。
少しでも興味を持っていただけましたら、こちらをご覧ください。