blog

DeNAのエンジニアが考えていることや、担当しているサービスについて情報発信しています

2020.05.11 インタビュー

DeNA のエンジニアが信頼を寄せる SWET って一体何者!?

by Daisuke-Tamada

#swet #bitrise #circleci #headspin

▲SWETの平田さんと、リリップの春山さん(左から)

▲SWETの平田さんと、リリップの春山さん(左から)

DeNA内に、「ソフトウェアの品質を担保するためのテストの自動化」や「エンジニアの開発生産性を向上するためのツール管理」を専任とする部署があるのはご存知ですか? その名は SWET(Software Engineer in Test)グループ。ゲーム開発や新規事業に携わるエンジニアを筆頭に、一度お世話になると常連になってしまう程、頼れる存在なのだそうです。

2月にリリースされた「 Rerep(以下、リリップ) 」もSWETに支えられているサービスの1つ。こちらリリップのリードエンジニアとSWET担当者へお話を聞いてきました。

リリップのエンジニアが開発にフルコミットできる理由

ーー今日はよろしくお願いいたします。リリップとSWETにおける役割を、それぞれ教えてください!

春山: リリップへは、エンジニアが必要になったタイミングにジョインしました。その頃から、アプリのビルド環境の整備、iOSやAndroidのビルド設計、アーキテクチャの選定、インフラ構築など、エンジニアリング全般的に関わっています。もともとエンジニアは私1人でしたが今は3人体制になり、私はリードエンジニアを務めています。

平田: SWETは、「DeNAプロダクトの品質担保」と「開発者の生産性向上」をミッションに掲げ、全社横断でソフトウェア面のエンジニアリングをサポートしています。体制は技術領域別に分けていて、iOSチーム・Androidチーム・Goチーム・CI/CDチーム・アーキテクチャチーム(主にゲーム領域に注力)が、それぞれ対応しています。私は、iOSチームのリードとCI/CDチームを兼任しています。

ーーリリップとSWETの関わり方とは?

春山: 新規事業立上げにおいて、DeNAのアセットを最大限活用することを念頭に置いていたので、初期の時点で、SWET・QA(QCグループ)1・セキュリティー・インフラの担当者を巻き込みました。

SWETが全社横断でCircleCIやBitriseの環境を整えてくださっているので、リリップのソースコードを書き始める前に「次世代型与信サービスを開発しようと思っているんだよね」と伝えるところから、関係が始まりました。

CircleCIやBitriseといったツールは、アプリケーションのビルド・テスト・デプロイなどの処理を自動化する手助けをするもので、どちらもリリップでのソフトウェア開発にも不可欠なんです。他にも、ソフトウェア面でちょっとでも気になることあれば、SWETとのslackチャンネルで気軽に聞いてます。壁打ちの回数でいうと、延べ回数は計り知れないですね。

平田: デプロイの自動化だったり、最新バージョンを本番アプリに安全かつ頻繁に反映していけるかの検証方法だったり、春山さんからいただく課題に知見がある人がその都度対応にあたっていますね。

ーーSWETへ相談するときは、専用のslackチャンネルがあるのですか?

平田: リリップと同じようにプロダクト別にチャンネルを設けている場合もありますし、技術に関する雑多なお問合せに答える用のオープンチャンネル「#swet相談窓口」があるので、そこへご相談いただくケースもあります。

春山: ちなみに、リリップは使っている技術が社内のデファクトとは少し違うんですよね……。なので、OSSライセンス関連のツールも完全にオリジナルで開発してもらいました。

平田: 春山さんからいただく課題は社内での前例がないものが多いですが、その分我々としても新たな知見が得られているのでwin-winといえますね。

ーー前例のない新しい技術領域のサービスであっても、相談していいってことですね!

平田: もちろんです。ソフトウェアテストのバックグラウンドはSWETチーム全員持っているので、何かしらの壁打ち相手にはなれると思います。

春山: 新規事業の立ち上げ時は特に、最小限のリソースでサービス開発に注力せねばならないので、品質担保や開発効率をあげることを全社横断でサポートしてくださる存在は有難いです。

平田: 春山さんの場合は大概のことは1人で解決されているので、相談いただく内容は毎回ヘビーですけどね(笑)。

春山: 最近の話でいうと、実機での自動テストも大変でしたね。システム全体の動作を実機でテストしたいと相談したら、平田さんがこんなのあるよ!ってHeadSpinを紹介してくださりました。

平田: 実機で自動テストを走らせるためには、まずその端末をどう揃えるかから始まります。今回は手元に無かったので、クラウド業者が保有している端末をネットワーク越しで操作していくことになります。いまでこそクラウド業者は何社かありますが、制約やコストがそれぞれ異なるので業者選定も肝になってきます。

HeadSpinは、アプリ・デバイス・ネットワーク全体のテスト・監視・分析を統合するウェブ・モバイル・IoT・5Gの各ソリューションを提供するプラットフォームで、SWETでは以前から導入していました。

春山さんとのMTGでSWETチーム内のiOS/Android担当者に同席してもらって、実現したいことやサービスのイメージを相談した結果、HeadSpinが春山さんの要望を担えるだろうと判断しました。

HeadSpin社とは、社内サービスでも利用できるように調整したり、要件が発生したら随時相談しています。

▲実際のイメージ画面。実際の端末でやってもらっているのを、モニタリングしていく

▲実際のイメージ画面。実際の端末でやってもらっているのを、モニタリングしていく

春山: この一連の流れをリリップ内で独自に精査して、単独で契約まで持っていくのは難しいです。正解が分からないし、じゃあ開発のコードはいつ書くの?って話になるので……。自分たちの選定が正しいかを業者を使って調べることもできますがコストがかかりますし、社内でヒアリングできるなら活かさない手はないです。

ーーそもそも春山さんは、どうしてSWETへ相談しようと思ったのですか?

春山: 私が Sakasho の開発をしていたときの成功体験があったからですね。多分2014年頃。

平田: 当時の上長から急遽「Sakashoのサポートをお願いしたい」と言われて、私と数人で携わるようになって、Sakashoの仕様把握や検証用のアプリ開発など1から用意しました。

Sakashoでは、SDK(Software Development Kit)ごとの検証用アプリを用意したり、Jenkins環境を綺麗にしたりと、開発の為の土台を整えたんです。また、QAのメンバーが検証しやすいようにQAとも常に連携をとっていました。

春山: SWETに助けてもらってプロダクトを維持できた経験が大きかったので、新規事業を立ち上げる上で、誰に頼るべきかっていうのはある程度見えていました。知見のある方からインプットをもらえるだけで、自分たちでは見落としがちな落とし穴や、当たり前と思って疑ってなかった無駄に気付くことができます。

開発効率の向上ってなかなか体感しにくいものなので、意識しないと後手に回しがちなんですけどね。

平田: 確かに、問題が見えていれば誰かに聞けますが、気付いてない問題を問題として認識するのは難しいものですよね。SWETはその専門家として横断的にみているので、視点を増やすという点でお役に立てると思います。

春山: リリース後、ある日突然穴にハマるってことは大いにあります。お客さんが沢山入ってきて、それぞれがいろんな使い方をし始めると、開発者が想定していないことが次々に起こるものなので。

落とし穴にハマる前に、自動テストなどによって事前にシューティングしておくことは、どんなプロダクトにおいても有益だと思います。

手遅れなことはない!でも、早い段階からのSWET連携が肝

ーーある程度サービスが進んでしまった段階でも、相談は可能ですか?

春山: 後からでも、手遅れではないですね。遅くなるほど、コードの修正範囲やコストはかさみますが。リリースしてバグがでてから相談する!でも、自分たちで抱え込むよりかは圧倒的に得策だと思います。

平田: バグの段階まで待たれちゃうと……ではありますけど(笑)。SWETが目指しているのが「プロダクトの品質担保」と「開発生産性をあげること」なので。バグは前者の話ですね。後者だと、手動でやってて捗らないな~ってことがあったらお声かけいただくで良いと思います。

春山: 後者の話でいうと、SWETからの何気ないインプットが、後々効いてきます。開発効率が10%上がる仕組みを入れました!ってだけで、半年後に大きな効果になってきますよね。

リリップでは開発スタートからにQAチームやSWETに協力してもらって、テストをしてきたので今の所大きなバグはないです。でもむしろ、SWETにはリリース後の方がお世話になっています。問題の多くはリリース後の方が起こるものですし、開発効率を上げていく点でも引き続き沢山お世話になると思います。

ーーちなみに、リリップ以外からはどんな問合せが多いですか?

**平田:**一例でいうと、自動テスト全般に対する質問とか、ゲーム領域では「これをJenkinsに乗せたい 」「Jenkinsの構成はどうすればいい?」とか「Unity開発でどんなテストが有効ですか?」といった質問をよくいただきます。

▲よくある悩み一覧

▲よくある悩み一覧

相談への対応など、何かしらの接点があった方からのリピーターがほとんどですね。そういう点で、我々にとっての課題は、社内へのSWETの役割の周知かもしれません。

春山: Pococha でも、最近になってSWETが関わり始めましたよね。

平田: そうですね、Pocochaの場合は年末の宣伝期に、負荷対策で私が個人的に関わったところからのご縁で、今はSWETとして携わってます。ある程度負荷がかかっても配信パフォーマンスに問題ないことを検証する基盤を作ったり、その他開発生産性・プロダクト品質面で必要なことについていろいろと一緒に進めているところです。

Pocochaもサービスがある程度大きくなってからの連携ですが、それでもSWETがやれることはいろいろあります。

SWETなど横断部署によるサポートでサービス開発にフルコミットできるのがDeNAの強み!

ーーそれぞれのフェーズに置いて、SWETがサポートしてくれるのですね!それでは最後に一言ずつお願いいたします!

平田: 現場エンジニアのみなさんがサービス開発に専念できるように、問題が起こる前でも後でも、とにかく早い段階でご連絡いただきたいと思っています。

春山: 私も、サービスを0から作り始めるからSWETとパイプ持っておこう!くらいの軽い気持ちで声をかけました。リリップのエンジニアがサービス開発にフルコミットできているのは、SWETをはじめとする横断部署によるサポートのおかげですし、DeNAの強みだと思います。

あと、CircleCIやBitriseなどのツールをSWETが全社横断で使いやすくしてくださっていて、これからも色んな方がお世話になっていくものなので、この場をお借りしてSWETの皆さんに御礼を伝えたいです。いつもありがとうございます!

協力:平田 敏之、沖田 邦夫、加瀬 健太、片山 大樹、関 義隆(SWETグループ)
春山 誠(リリップ)
文:難波 静香(社内報編集部)、玉田 大輔(CTO室)

  1. SWETと同様、DeNAプロダクトの品質担保をミッションに掲げ、外部仕様を対象としたテストを担当(主に手動テスト) ↩︎

最後まで読んでいただき、ありがとうございます!
この記事をシェアしていただける方はこちらからお願いします。

recruit

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