こんにちは!エンタメ領域のDXを推進するブロックチェーンスタートアップ、Gaudiyで社員代表(笑)をしている西岡(@TakeshiNishioka)です。
今回はスタートアップ企業の社員代表がどのような役割を担っているかを、この場を借りて紹介させていただきたいと思っています。
…というのは冗談で、今回は主に業務で携わっているプロダクト開発のプロセスや、QAまわりのお話をさせていただこうと思います。
前回に永井(@sho0910K)から紹介させていただいたATDDの話にも関係する内容になりますので、併せてご覧いただけると嬉しいです。
プロセスやQAまわりお話といわれても「?」と思いますので、そもそもの前提からお話しします。
Gaudiyに求められる速度と品質
Gaudiyはいわゆるスタートアップといわれる企業ですが、事業ドメインがエンタメ領域ということもあり、週刊少年ジャンプの漫画『約束のネバーランド』など人気IPのコミュニティサービスを開発・運営させていただいています。
人気IPかつ、集英社やアニプレックス社など誰もが聞いたことのある企業様との協働になりますので、弊社が提供するコミュニティサービスには高いレベルのクオリティを求められていますし、プロダクトの品質も同様となります。
さらに複数のコミュニティを並行開発しており、まだ未発表のIPも多数動いている状況のため、肌感覚で普通は3ヶ月ほど掛かる規模の開発を1ヶ月でリリースするぐらいのスピード感が求められています。
ただ早ければ良い訳ではなく高い品質も求められますので、個々のスキルは当然ながら、チームとしてどれだけ効率良くプロセスを推進できるかが大切になります。
分かりやすくいうと、どれだけ手戻り作業をなくせるか、どれだけ重複や無駄な作業をなくせるか、が肝になります。
手戻りや重複など無駄な作業を発生させない為に
無駄な作業を発生させない為に、GaudiyではAgile的な取り組みを実施していますので、3つ紹介します。
スリーアミーゴス
前回のATDDでも紹介されていますが、Biz(BizDev、コミュニティマネージャー)、デザイナー、エンジニア、テスター(テスターはPOやPdMが兼任することが多い)が、ストーリーマッピングや受け入れ条件の設定、QAにも参加して、多角的な視点を取り込みながらプロダクト開発を推進しています。
早い段階から複数職種の視点を加えることで、開発視点だけでなく、クライアント要求、顧客価値の側面で問題点に気付け、手戻りの発生を防ぐことができています。
とはいえ、大人数になって逆に効率が悪くなるのではないか?と思われるかもしれませんが、Gaudiyでは最小・最適なコラボレーションを促進しているので、 個別に確認できることは日々のコラボレーションで解決したり、同じロールの人が複数参加しないなど、同じ視点が重複しないように意識しています。
バーティカルスライス
次に、ストーリーを可能な限り小さく分割することを意識しています。
具体的には、実装からQAまで最大でも3日で完了できるボリュームに抑えています。
その理由として、Gaudiyではカンバンを運用していますが、大きいチケットでは1つのレーンに数日間留まってしまい、同じチケットだけでWIP制限に達するなどしてレーン全体の動きが滞りかねません。視覚的に動きがないとメンバーのモチベーションにも影響を与え、ボディーブローのようにチームの生産性を落としていきます。
一方ストーリーを小さくすると、チケットに対する解像度が上がり、デイリースタンドアップで他のメンバーからの疑問や懸念も挙がりやすくなったり、担当者が気付けていない問題や課題が見つかりやすくなりました。
また、無駄のないハッピーパス(正常系)を通すことができるようになり、ハッピーパスのQAを早い段階で行えるので、QAで挙がった修正箇所の修正コストも抑えられています。
さらにQAが必要な範囲も狭まるので、QAに参加するスリーアミーゴスの拘束時間も減らすことができています。
リグレッションテスト
最後はリグレッションテストです。けっこう普通に思えるかも知れませんね。
ただ前述の通り、小さいストーリーで細かく結合しているので、その度に既存機能でデグレが発生していないかをテストする必要があります。
まとめてリグレッションテストをしてデグレが見つかると、手戻りの修正コストが大きくなるので、ストーリーを結合する度にテストを実施しています。
頻繁にリグレッションテストを実施するので、常にリソースが枯渇しているスタートアップでは手動テストは現実的に難しく、その問題を解決する為にUI自動テストを導入しています。
ただUI自動テストを導入するといっても、エンジニアにテストコードを書いてもらうのもリソース的に厳しいので、ノーコードでE2Eテスト作成・自動化できるツールの導入を検討しました。
いくつかのツールを検討して、GaudiyではAutifyを選定しました。
選定した理由は下記の通りです。
- シンプルで直感的に操作しやすく非エンジニアでもテストが作りやすい。
- AIによる画面の細かなズレも学習してチェックしてくれる。
- CSがとにかく丁寧に対応してくれて、かつリードタイムが早い。
またUI自動テストをどのように使っているか?ですが、まずは開発プロセスの中にUI自動テストのテストシナリオを作成するプロセスを組み込んでいます。
どれだけツールが優秀でも、それを使わないと意味がないので、カンバンにテストシナリオ作成・実行のレーンを設置しています。
また作成されたテストシナリオは、以下のケースで実行するようにしています。
<定期実行>
定期的に1日1回実行しています。
テスト結果がNGの場合は、NG箇所を確認してOKになるように修正して再実行します。
<手動実行>
Autifyのテストプランを実行するSlackアプリを作成して、任意のタイミングでSlackから簡単に実行できるようにしています。
開発中のコードが既存機能に影響を与えていないかをいつでもチェックできるようにしています。
<自動実行>
GaudiyではSlackでリリース告知を行っていますが、リリース告知を行っても上記のSlackアプリが起動して自動でリグレッションテストが実行されます。
このようにGaudiyでは、UI自動テストによるリグレッションテストを頻繁に実行することでリリース後のデグレを防止するとともに、開発プロセスでの手戻りの発生を抑えています。
Autifyを使ったテスト事例をちょっとご紹介
先ほど紹介したAutifyを、Gaudiyでは「こんな感じで使ってますよ!」というのを少し紹介したいと思います。少しでも参考になれば嬉しいです。
前述の通り、Gaudiyではリグレッションテストを何度も実行しますので、繰り返し実行が可能かつ同じ操作が行われ、同じ結果にならなければなりません。
また同じ操作が行われ、同じ結果になったとしても、初回と2回目以降で違うロジックが走ってしまうのもテストとしては不十分です。
基本的にはテストシナリオはポチポチ操作だけでほとんどの画面や機能のテストシナリオは誰でも作成できます。ただ、Gaudiyのコミュニティサービスでは、DID(分散型ID)で外部アプリとID連携して取得したデータを使うファンバサダースコアや招待機能など、データを操作しないと繰り返してテストが行えない機能もあります。
そんな機能のテストでは、AutifyのJSステップ機能を使い、JavaScriptからコミュニティサービスのテスト用APIを呼び出してデータの初期化や登録、アカウントのステータスを更新するなどしています。
上記のようにGaudiyでは、AutifyのJSスキップとテスト用APIを駆使して、複雑な機能や手動では複数人で行う必要がある機能のテストを自動化しています。
さいごに
今回は手戻り作業などで発生してほしくないコストをなくす為の取り組みについてご紹介させていただきました。
スタートアップでは、エンジニアのリソースが常時不足しているのはよく耳にする話ではありますが、エンジニア以外のリソースも常時不足しています。
そんな状況下でGaudiyでは、組織・チームとして手戻りや重複など無駄なコストをいかに発生させないかについて強い意志を持って取り組んでおり、今回紹介したこと以外にも、フレームワークやツールの導入も積極的に行い、最大効率、最小工数で最大成果を生み出す組織を目指しています。
そんなGaudiyに少しでも興味を持ってもらえましたら、ぜひ一度お話を聞きに来てください。
▼毎週水曜、オープン勉強会&オープンオフィスを開催しています
▼カジュアルにお話ししましょう
▼Gaudiyの技術選定は、こちらの記事をご参考ください