ゲーム、メディア、SaaSなど、変化の激しいWebサービス業界では、開発サイクルの高速化が不可欠だ。
とくに受託開発においては、クライアントだけではなくエンドユーザーのニーズも汲み取りながら、スピーディな開発はもちろん、高い品質保証が求められる。
メディアやゲームアプリなどさまざまな自社サービスを手掛けながら、企業からの受託開発も行なっている株式会社ITI。その中で、企画開発部を率いる原田 雄輝さん、品質保証に従事するQA/QCリーダーの米倉 眞さん。
企業にとって大きなビジネスの柱とも言える、受託開発の現場で奮闘する2人に、チームの課題や、テスト自動化までのプロセスを聞いた。
― 御社の事業について教えてください。
原田さん: ITIはもともと広告事業がメインの会社でした。現在はメディア事業部と、iOS/Androidのゲームアプリなどを手掛けているアプリ事業部、受託開発を行なっている企画開発部、そして管理部があります。
私たちが所属している企画開発部では、受託開発を行なっています。あるクライアントの案件は、手がけて8年になりますが、運用や管理、保守などを包括的に長期で請け負っています。開発スタイルは、アジャイルのスクラムに沿った形で計画を立てて、2週間のリリースを続けています。
今後は大小さまざまな案件も受注し、ITIとしても新たな売り上げの柱になるようなサービスを作っていくビジョンがあります。
企画開発部で手がけているサービスが、飲食店、美容室、整体院など店舗向けのアプリ開発です。店舗オリジナルのアプリを提供しており、3年ほどで実績数はアプリ数が5000件、iOS/Androidの合計だと1万件にものぼります。 全てオリジナルではなくベースがあって、それをカスタムしながら開発しているので、アプリ制作のプラットフォームのようなサービスですね。
米倉さん: 私はもともと所属していた会社が、8年前にITIに吸収合併されて今に至ります。4年前に企画開発部に入り、現在はQA(品質保証)を担当しています。QAチームは3人のメンバーで構成しています。
— お2人はどのような業務を担当されているんですか?メンバー構成についても教えてください。
原田さん: 私はもともとエンジニアで、6年ほど前に株式会社ITIに入社しました。主にサーバーサイドのプログラムをメインに、フロントとインフラも一部担当しています。最近では、企画開発部のリーダーとして開発だけではなくチーム全体を統括しています。
企画開発部のメンバー構成は、全体で25名。その中でクライアントの窓口となるサービスデスク、開発、PO(プロダクトオーナー)、インフラ、QA/QC(Quality Control)というように、いくつかのチームに分かれています。
— アジャイル開発を行なっているなかで、Autifyを導入する前は、どのような課題がありましたか?
原田さん: 今受託開発している新しいサービスに、QA/QCのテスター担当がいなかったんです。開発がデバッグも兼用する、テストも行うという運用をしていました。そこで米倉を含む2名でQA/QCチームを発足しました。
アプリには10年続いている会員予約やクーポン配信が可能なCRMシステムがありますが、一部レガシーなコードを使用しているところもあります。
ソースコードが古いままツギハギ状態で新機能の追加・改修をしている状況。3年前から問題を未然に防ぐため、単体テストに取り組むようになったのですが、テストの構築が課題でした。
— レガシーコードでは、ユニットテストが構築しづらかったんですね。
米倉さん: そうですね。「自動化したい」「自動化しないとやってられない」という空気は、原田さんからヒシヒシと滲み出ていたので、以前から関心はありました。
ただ、自動化する場合、Seleniumをイチから勉強しなきゃいけないと思っていたので、正直に言えば「やりたくないな」という気持ちもあったのです。
ですが、このシステムを今後も続ける場合「いずれは自動化しなければ、確実に回らなくなるだろう」と感じていました。原田さんから「Autify入れてくれたら嬉しい」と話があり、具体的な検討に入りました。
原田さん: テスト自動化は、Autifyを導入する前にも出ていました。実際にSeleniumを使ったテストも導入はしたんです。でも「導入するのがゴール」みたいな感じになってしまった。
2週間に1回リリースする開発サイクルで進めているので、その都度テストが必要になってくる。そうすると人力でやるのが大変。自動でやるにも、エンジニアは開発に専念したい。いろいろと仕様変更するたびに、テストも修正しなければならず、メンテナンスに手を取られてしまって、メインの開発がなかなか進まない。
効率化のために自動化しようとしたのに、Seleniumでは運用に乗せることが難しかった。きちんと運用するために何かいい方法はないか。そうしてAutifyにたどり着きました。
— Seleniumでは難しかったということですね。
原田さん: 本当に難しかったです。 以前は人力で全体のテストを毎回行うのはかなり大変で、細かく対応できていませんでした。なのでリグレッションテストを行う余裕がなく、改修したところだけを確認して「ほかに影響が出たらごめんなさい…」という場面もあったと思います(苦笑)。
Autifyを導入してからは、テストがきちんと回るようになりました。例えば、一部だけを改修した場合でも、全体のテストが回せています。
今でも、アプリの一部は手動でテストしているところもありますができる限り、自動化していきたい。同じことを繰り返すのに、人を使うのは避けたいですね。
— 以前はリリース後に問題が見つかることもあったのでしょうか?
原田さん: そうですね。Autify導入以前は、リリース後に問題が見つかる頻度は高めでした。
— Autifyを検討されてから、実際に導入するまでのプロセスはいかがでしたか? 何かつまづいたりしたことはありませんでしたか?
米倉さん: 特につまづくことはなく、直感的に使えるので本当に便利だなと思っています。
正直社内での体制をあまり考えず、行き当たりばったりで導入を進めていったところがありました。そのせいもあり、最初は弊社のシステムとAutifyの相性があまり良くなかった時期もありました。
そんな時は、サポートのチャットから問い合わせていましたね。すぐにAutifyのほうで確認・対応していただいたことは非常にありがたかったです。
導入して2年ほどは僕しか触っていなかったんですけど、QAチームに新メンバーが1人増えたタイミングで、ほかのメンバーにもどんどん触ってもらうようになりました。
そうすると少し僕の余裕が出てきたので、貯まった知見を共有するために資料を作って講習会ができるようになりました。今はチーム全体で使えている実感があります。
— いいですね。自動化と聞くと難しく感じて、なかなか触ってもらえないところを、チームでどう乗り越えたんですか?
米倉さん: コロナ禍でのリモートワークが、逆にチャンスになったと思っています。
ビデオ会議で画面を見せながら講習をして、「ほら、こんなに簡単」と教えられた。それをやらなかったら、今も僕ひとりでずっと触っている可能性が高いです(笑)。
— Autifyを導入してから、米倉さんは、実際どのように自動化を進めていったのでしょうか。
米倉さん: スモールスタートと、Autifyの挙動を正しく理解することを意図して、最初は、画面の遷移からテストシナリオを作ってみました。それでどのように記録されるのかを確認していきました。
— 運用で何か工夫されてることはありますか?
米倉さん: Autifyから届くテスト完了の通知をスプレッドシートに自動書き出ししています。
GAS(Google Apps Script)を利用してWebhookを実装しました。これは、チームの朝会で報告するときに役立っています。書き出したデータが数千件蓄積されているので、テスト結果の傾向を探って分析して、今後の運用に役立てて行けたらと思っています。
あとは、テストの設計図をざっくり作ってからシナリオを作成しています。そうすると後からテストの修正が入ったときラクになりました。
— 設計図というのは、スプレッドシートにテストケースを書いているようなものでしょうか?
米倉さん: みんなの勉強のために設計図を作成しました。
今は想定しているシナリオを1ステップずつスプレッドシートに書き出しています。ほかのメンバーに担当してもらうとき、シナリオ作成の参考にしてもらいたくて始めました。
まずはどのような観点でテストすればいいかを考えてもらって、レビューして、OKだったら進める。ゆくゆくはテストケースとしてまとめていけたらいいと思っています。
— なるほど。一見、回り道のようにも感じますが、長期的にメンバー間でナレッジ共有して、自律して動くことを考えると大事なステップですね。
— Autify導入後は、どのような変化がありましたか?
米倉さん: 以前は手が回らなかった部分も網羅的にテストできるようになって助かっています。
毎日、深夜から早朝のサーバーが軽い時間帯に自動でテストが回せるようになって、お客さんに迷惑を掛けることもなくなった。
寝てる間にテストが終わって、品質保証できることが何より、嬉しいです。そして、1回実行したテストは記録されるので、また同じテストを実行するときも本当にラクです。
原田さん: サービスが安定稼動しているという安心感が得られていますね。Autifyを繰り返し回すことで、致命的なバグが発見できることもありました。
すぐに対応できて助かります。もし何か問題があった場合に、お客さんよりも早く気付いて対処するところが重要です。
その点では、サービス水準合意(SLA/Service-level agreement)をきちんと示すことができる材料の1つにもなっています。
それからコスト削減です。リリース後に、全機能テストをエンジニアやサービスデスクも含めてチーム全体でやっていたところが、Autifyで自動化することで、彼らの手を借りずにできるようになった。エンジニアやサービスデスクが、やるべきことに集中できるようになった、という点が大きいです。
受託案件を増やしていくなかで、新規案件にもそのノウハウを応用していけることが、今後の大きなメリットになっていくと思います。
— 現在は、どのくらいの割合でAutify化(自動化)できているのですか?
米倉さん: 全体で見るとだいたい6割くらいだと思います。管理画面に限っては9割自動化できています。
これから徐々に広げていって、全体で見ても8割くらいまでは確実に自動化したいと思っています。
— 今後は、どのように進化させていきたいですか?
米倉さん: 蓄積されたデータで、不具合の傾向を分析すること。
それからまだ未着手のネイティブアプリのテストも自動化を進めていくこと。
ブラウザの操作画面でどうしても自動化できず、手動で行なっている部分があるのでそこをなんとかしたいと思っています。
— 自動化できなかったところ、ぜひ詳細お知らせいただければ、調査しますので、お力になれると思います。ネイティブアプリ版もご案内します。
米倉さん: よろしくお願いします。
— 最後に、これからテスト自動化に取り組む方々へのメッセージをお願いします。
米倉さん: テスト自動化はコードを書いて自力でやると難しいから、Autifyに任せるとラクになるよ。
僕は何回もくじけてきましたが、Autifyでやっと実現できたんです。自動化が簡単にするためにも、今からチャレンジする人は、Autifyを1回試すべきだと思います。
そして原田さんには、「Autifyを導入してくれてありがとう」と伝えたいです(笑)。
原田さん: 私からは逆に「運用に乗せてくれてありがとう」と伝えたいです(笑)。
何ごとも、運用に乗せるのは大変なことで、根気が要ります。導入したはいいものの、「導入して満足」になってしまうケースというのは結構あるんですよね。
毎日、Autifyをルーチンで回して朝会で報告してもらえるようになって、チーム全体で運用できている実感があります。
これから取り組みたい方に伝えたいのは、Autifyをうまく活用して運用に乗せれば、あとはラクになりますよ。
— ありがとうございます。餅は餅屋に任せていただいて、皆さんには本質的なところに時間を使っていただけたらと思います。
(聞き手: オーティファイ株式会社、CEO & Co-Founder 近澤 良)