team

DeNAの多様な部門をカルチャーや開発体制、事例などを含めて紹介します

品質管理 / テスト

SWET

SWET(SoftWare Engineer in Test の略)グループは、ソフトウェアテストを起点とした、「DeNA サービス全般の品質向上」と「DeNA エンジニアの開発生産性向上」の両方により、価値あるものを素早く提供できるようにすることをミッションとした組織です。

SWET グループの属するシステム本部は DeNA の組織の中でも、「インフラ」「セキュリティ」「品質管理」といった専門領域により、横断的に事業貢献をする組織であり、ゲーム、ソーシャルライブ、ヘルスケア、スポーツなど、様々な事業を展開し続ける DeNA を根幹から支えているセクションです。今後のモノづくりにおいては、これらのセクションがより一層ビジネスに踏み込んだ動きを取ることが重要になってくると考えています。

近年、アプリケーションには高機能さが求められるようになり、かつ開発サイクルは徐々に短くなってきています。それに伴い、ソフトウェアの品質を担保するための「テスト自動化」の重要性が高まっています。テスト自動化をすることで、バグを早期に発見して取り除き高い開発生産性を実現できます。

そのため、開発現場の中に入り込んでいき、開発者と共に早期にバグを検出できる自動テストを整備していくことや、それらの開発サイクルを素早く回すための、横断的な CI 基盤やプロジェクトの健康状態の可視化手段を提供していくことが必要になります。

SWETのしごとのやり方

チームカルチャー

SWETのミッション・ビジョン・バリュー Mission ソフトウェアテストを起点とした DeNAサービス全般の品質向上 DeNAエンジニアの開発生産性向上 により、価値あるものを素早く提供できるようにする Vision Make Testing Fun, Smart, and Delighting End-Users Value 高度・先進的なソフトウェアテスト技術のスペシャリティ ソフトウェアテストのスケーラビリティ 継続的アウトプット

SWET は、高度・先進的なソフトウェアテスト技術を強みとする専門家集団です。テスト技術のアーリーアダプターとして、世界の最先端のテスト技術を素早くキャッチアップし、DeNA の最先端の事業のドメインに適用させていくことで、テストに対する知見を蓄積していきます。そして、DeNA のエンジニアに対して開発やテストを効率化していくためのツールや、テスト技術に対する教育プログラムを提供することで、DeNA のエンジニアが品質の高いプロダクトを素早く届けられるような仕組みを作っていきます。

このような技術蓄積サイクルを実現するために、SWET では良質なインプットとそれと対になるアウトプットを重視しています。それを実現するため、20%ルール制度・外部発表の奨励・テスト勉強会の主催といった制度や活動を整えています。

20%ルール制度とは、業務時間の最大 20%まで、現在の業務の優先順位では手がつけられないがこのアイディアを実現することにより将来的に大きな効果が得られるかもしれないようなプロダクト・サービス・技術の研究開発にあてることができる制度です。このように、良質なインプットとそこからの技術の活用に向き合う時間を重視することで、他社に先行した取り組みができています。例えば、SWET の現在の重点テーマの 1 つである、「仕様チェック技術の高度化と仕様を活用した開発の効率化」も、もともとは 20%ルールから出発したものです。

また、継続的なアウトプットを SWET メンバーは常に意識しています。これは、SWET のバリューでもある「ソフトウェアテストのスケーラビリティ」、すなわち、誰もが SWET のもつ知見を活用できる状態を目指すという行動指針が浸透しているため、インプットを自らの学びだけに留めることなくみんなが活用できる状態を目指しているからです。常日頃から、質の高いアウトプットを心がけており、 DeNA Testing Blog の運営や、DeNA TechCon を始めとした大規模カンファレンスへの SWET メンバーの登壇が継続できています。

さらに、SWET は iOS・Android・CI/CD Test Night という主にテストに関係することについて語り合うことを目的とした勉強会を主催しています。最近ではオンラインでのイベント運営をしており、 Test Online と題し、これまでの iOS や Android だけでなく QA といったオンライン勉強会の運営にも今後力をいれていきます。勉強会は自らのアウトプットとフィードバックの機会を得るだけでなく、テストに興味のある他社のエンジニアの良質な話題を聞くことができ、勉強会を運営することで、良質なインプットと継続的なアウトプットが同時に実現できています。

SWET は様々な分野でのスペシャリストが集まった技術者集団です。高いレベルの中で切磋琢磨することで、ソフトウェアテストを中心とした幅広い技術領域で高い専門性を確立したいと考えている方におすすめです。

事例紹介

「DeNA サービス全般の品質向上」と「DeNA エンジニアの開発生産性向上」のために、これまで SWET で事業部と取り組んできた事例を紹介します。

開発者テストのボトルネックの解決

プロダクトの開発において、責務分割が不十分なアーキテクチャで開発を進めてしまった・時間や経験がなくテストが書けなかったというように、プロダクトを安定してリリースしていくのに必要なものが不足しているという状態になることがあります。

自動テストがない・自動テストを効率的にかけないアーキテクチャになっているサービスに対して、テストを導入していくことには熟練の経験が必要です。SWET チームは、様々なプロジェクトで、プロダクトのコードのアーキテクチャを改善し、安心して素早く機能追加のできるような自動テストがかけるようにしていきます。

一例ですが、新しい内製ゲームフレームワークを初めて採用したゲームタイトルおよびそのゲームフレームワークにおいて、まずはじめに外部から見える挙動が変わらないことを保証するテストを書き、リファクタリングできる状態にしました。その後、内部のアーキテクチャを改善していくことで、テスタビリティを向上し、テストを量産できるようにしてきました。

さらに、ゲーム特有の様々なデータが複雑に絡み合って動作するというゲーム特有の事情に対して、テストデータ生成ツールやシナリオテストの作成自動化ツールを開発し、エンジニアが開発のスピードを最大化するような環境を整備しています。

自動テストの適用範囲の拡大

開発者によるユニットテストが充実してきても、大規模サービスではそれだけでは安定したリリースをし続けることは困難です。SWET はあらゆる自動テストに精通しており、プロダクトの問題点を市場障害や開発・検証時のバグチケット等から見つけ出し、プロダクトごとに最適な自動テストを提案できます。

例えば、見た目に関する開発中の問題が多いようなプロダクトに対して、見た目に対するテストを導入していきました。見た目に対するテストを効率的に実施するためのアーキテクチャ改善やテストライブラリの整備し、安定して見た目のテストを量産できるようにしました。さらには、開発者が見た目に関するテストを作成できるよう、モブプログラミング等の様々な普及施策を続けて、テストに関する文化を醸成しました。

その他にも、ライブコミュニケーションアプリ pococha のスマートフォンアプリの負荷の問題に対して、継続的にパフォーマンステストを行う仕組みを構築しました。そして、QA 時に必ずパフォーマンスに関する KPI を測定し、リグレッションが発生しないようにしていく開発体制を事業部と構築しています。

最先端のテスト技術への挑戦

プロジェクトの運用を続けていくと不具合のうち仕様起因の欠陥の占める割合が大きくなります。たとえばアプリゲームでは、新キャラクターの追加や新技の追加等、短期的継続的に仕様が追加されていきます。そのため運用を続けていくと、過去の仕様との不整合といった仕様の不備が起きやすくなります。また、混入された不備は後の工程で見つかるほど、それを解決するための労力が大きいということが知られています。SWET では形式仕様記述を応用して仕様の不備をなるべく早く見つけるための取り組みをしています。

具体的には、形式化された仕様を書くことで仕様の曖昧な点や矛盾等を見つけたり、自動的な探索することで仕様が意図しない状態になっていないか検査したりして、仕様作成フェーズの段階で仕様の問題点を発見します。さらには形式化された仕様をもとに、プログラムを生成したり、仕様と実装の間のリファインメント検証をしたりと、技術の開発にも取り組み問題解決の可能性を探るチャレンジをしています。

技術スタック

SWET では事業部のプロダクトに対してテストを導入していくので、SWET で重視している技術は DeNA で利用している技術になります。 現在、Go・iOS・Android・Unity およびそれらの CI/CD に関する高い専門性を有したメンバーが多く在籍しております。

また、技術領域もテストだけではなく、静的解析やスキーマからのコード生成機といったプロダクトの周辺ツールの開発も行っています。

チーム構成

SWET チームは、事業部に深く入り込んでサービスの品質や生産性の改善するような働き方をしているメンバーと、全社横断的な施策としてテスト文化の醸成や品質改善のための仕組みを作るような働き方をしているメンバーがいます。 事業部とプロジェクトを進める場合には、必要に応じて事業部の兼務をつけ、SWET としての成果に加え、サービスの成長への貢献に関してもしっかり評価できるような体制を構築しています。

また、メンバーが関わるプロジェクトは全社の様々な領域に分かれていますが、できる限り縦割りやサイロ化されないようにグループとして様々な工夫をしています。 例えば、グループの定例では、他のメンバーが関わっているプロダクトのテスト戦略や方針に関し、それぞれの立場からいろいろなインプットをし合えるような関係が築けています。

このように、SWET には幅広い専門領域それぞれに、品質や生産性を向上させるための技術を深く極めたい・それによりプロダクトやサービスを良くしていきたいスペシャリストが多く在籍しており、グループ一丸となって全社の品質に関する課題に立ち向かっています。

職務定義

現在募集している募集要項はこちらになります。

recruit

DeNAでは、失敗を恐れず常に挑戦し続けるエンジニアを募集しています。