QAエンジニアのフリーランスについて
初めまして、岩本(gremito)と申します。現在フリーランスとして、Web/Mobileのアプリ開発やQAエンジニア、エンジニアのインストラクターやハッカソン/勉強会の主宰などもやっています。
この記事では、フリーランス × QAエンジニアをテーマに、これまでの案件やQAエンジニアの注意点をご紹介していきます。
QAに興味を持ったきっかけ
QA業務に興味を持ったのは、たまたまCygameさんのブログや講演資料を見て『UIテスト自動化ツールを作ってみたい』という思いから始まりました。
本格的に作る前にそもそもツールができたらすぐに使ってもらえるのか分からず、テスター/デバッガーさんたちの状況を知る必要があると感じました。そこでQA業務を知るために、とあるプロダクトのQAに留学のような形でQA業務の体験および課題調査をやったことが始まりでした。
最終的には、ワークフローの整備や業務最適化のためのツール開発などのQAエンジニアみたいなことを約1年ほどやってました。
フリーランスになってからのQA業務
フリーランスデビューと同時に本格的にQAエンジニアを名乗っていると、思いのほかQAエンジニアに関するお話しをいただけました。案件数としては、Web/Mobileのアプリ開発案件ほどではありませんが、とても需要があることが知れました。
実際にこれまでお話しいただいたQA業務に関する案件は、次の依頼内容がありました。
- A:テストの品質や時間などのコスト課題を解決していきたい
- B:サービス全体の品質課題を解決していきたい
- C:Web/Mobile/Tabletの各アプリで提供されている複数サービスのQAに関する課題を解決していきたい
- D:ゲームエンジンチーム及び実用研究チームとともにゲームプロジェクトを支えられるテクニカルQAテスター
- E:IoTハードウェアを含むWeb/Mobileの各アプリでQAに関する課題を解決していきたい
このうち案件ABCに参加し、案件Aは3ヶ月、案件Bは半年、案件Cは現在もQAエンジニアとスクラムマスターとして参画しています。
案件Aは、フリーランスになって初めて業務委託契約いただいたクライアントでしたが、先方の要件に100%応えることができなくなって契約満了となってしまった。
これらの詳細は、後半の方でご紹介しようと思います。
QAエンジニアの要件はポジションによって異なる
▲JaSST'20 Tokyo RejectCon でやったLT資料の一部です
QAエンジニアについて調べると、テストだけにフォーカスした業務内容もあれば各ツールの自動化を作ってワークフローに導入する業務内容などもあります。何を求められて実際何をやるのか、QAエンジニアはWeb/Mobileのアプリ開発エンジニアなどよりも曖昧で分からないことが多いです。
これまで複数の現場でQAエンジニアの業務を経験したことで、そもそもQAエンジニアの業務とは、どこのポジションに参加するかによって要件が異なると知りました。
案件に参加してからの流れ
参加してすぐ情報収集をメインに取り掛かります。各クライアントの状況はバラバラですが、サービスの品質をしっかり管理できるようになりたいなどQAの目的は一緒なので、プロダクト全体のワークフローを把握しながら自分なりに感じた課題を洗い出してマネージャーの方などに答え合わせをしていきます。
答え合わせをしていくとさらに隠れている情報を聞き出すことが出てくることがあります。質問攻めにならないように気をつけながら、先方が抱えている悩みに共感できるところまで課題を掘り下げていけば、知りたい情報をだいたい把握できることができます。
ですが、このようなやりとりができるには次のような条件が揃っていないとできないことが分かりました。
- QAの部署や組織などあるいはQAの近くに設置されている別チーム(開発やSREなど)に参加していること
- 1を管轄しているマネージャーの方が傍に居ていつでも相談できる状況であること
案件Cでは、この条件を満たしており、すごく活動しやすい環境だからこそ続けられているんだと思います。
案件Aでは、QAとは別チームの参加することになり、またQAチームの方とは遠隔でやりとりすることになっていました。さらに、参加した別チームのマネージャーの方は傍にいらっしゃって相談はできていましたが、QAに関するやりとりは間接的で常に試行錯誤が必要でした。
QAの課題解決で意識すること
▲Unity Fukuoka 14 の主催
実際の開発現場では、QAだけでなく、プロダクト全体で課題が見つかることがあります。
これをきっかけに、開発サイドやユーザーからの問い合わせの一次対応されているオペレーティングサイドなどの方々とコミュニケーションをとり始めます。課題に取り掛かる際、各ポジションの社員さんと一緒に課題解決していくこともあれば、提案するだけで社員さんにお任せすることもあります。
ですが、上記の条件が揃っていない場合、他のフリーランス案件と同様にクライアントから指示された要件に対応することがあります。QAエンジニアの場合だと、このとき注意しなければ大事故になり兼ねないため、どんな要件でも気を引き締めて取り組んでいます。
QAのエンジニアリング
QAエンジニアは「QA業務または作業効率を変えるツール開発運用などをする人」と認識されがちで正確には、QAエンジニアは「エンジニアスキルを活かしてQAに関する課題を解決する人」です。そのため、ときにはQAサイドではないところで活動することもあります。
次の項目は、参加した案件で私がこれまで携わった課題とそこで取り組んだ内容の一部となります。
『QAテストのコスト肥大化』
- QAサイドの手動テストを自動化/E2Eツール対応
『ページ表示速度遅れやサーバ停止などで不安定なサービス状況』
- LazyLoadなどでページ表示とコンテンツ生成のレイヤー分け
- ボトルネックの調査と解消
『QAワンオペ』
- Mobile/TabletアプリのCI/CD対応および簡単なE2E自動テスト導入
- QA業務改善および属人化対策
QAスクラムチームの立ち上げ
案件Cは、初めにやってすぐに効果ある取り組みから始め、QA業務をマニュアル化したり誰でもテストできる環境を整備するなど春から夏にかけて約5ヶ月取り組んでいました。
このQAワンオペ改善を目的としたQAスクラムチームを発足し、私がスクラムマスターで取り組んでいた内容が、近々クライアントのブログでアップされる予定ですので、私のTwitterをフォローしていただくか「#qae_meetup」を付けてツイートするので是非ご覧いただけると幸いです。
コミュニケーションの大切さ
案件Bは、別案件によって契約満了で終わるギリギリにサービス悪化によるボトルネックの原因を解消でき、サービスが安定した状態で終わることができました。
これは、エンジニアリングマネージャーの方がもともとボトルネック付近のある予測があった上で課題がクリアできたため、どんな取り組みもいろんな方とのコミュニケーションは大切だと感じます。
手段が目的になりがち
案件Aでは、よくある”自動化してコスト削減”を目的に指定された要件でとても危険な内容でした。結果的に、E2Eツールで自動テストの環境はできたものの管理できるリソースが取れないことから取り組みが中断されました。
理由として、導入コスト(学習や組み込み作業などのコスト)と管理コスト(監視やメンテナンスなどのコスト)を把握されないままやる前提で話が先に進んでいたからでした。
これは、企業とフリーランスの双方ともに問題になります。特にQAエンジニアの場合、サービス品質に関わる取り組みであるため事故が起きてしまっては手遅れなケースになり兼ねません。
QAエンジニアの次のキャリアとは
以上のようにQAエンジニアでは、サービス全体の品質に関するビジョンのもと様々な取り組みを実施していくことがあります。私が挙げた業務以外にも下記のような取り組みがあります。
- SREに似た取り組み
- AIを活用した手動作業の自動化対応
- 業務改善で使用しているツールのOSS活動への参加
そのためQAエンジニアのキャリアプランを考えてみると、ディープラーニング/機械学習/AIのエンジニアスキルを学習していくことが時代に合っていると感じます。その他にもQAをきっかけに幅広いエンジニアスキルを学習していけるので、逆にこれまで開発ばかりしていたエンジニアの方にはQAエンジニアを勧めると、開発チームのレベルは上がるのではないでしょうか。
ベリサーブナビゲーションというソフトウェア品質をテーマにいろんな方がそのときのトピックを解説されている、無料雑誌のようなサービスがあることをご存知でしょうか。
この2019年12月号に参加されている松尾さん(KazuCocoa)は、現在米Headspinでエンジニアとして働かれており、案件Cの作業中にAppiumのGitHub上でお世話になってTest Nightのイベントでご挨拶することができました。
もし、QAエンジニアとして突き進むのであれば松尾さんのように海外のエンジニアとしてプレイするキャリアプランもあると知りました。
需要はとても大きく、将来性もある
あれ、いつの間にかグループ内のメンバーが100人超えてる!?∑(゚Д゚)
QAエンジニア勉強会 https://t.co/sGdQm1iG1d #qae_meetup
— gremito #ものラジ QAスクラムでCSM® フリーランス (@grem_ito) February 6, 2020
先日、テスター/デバッガーやQAエンジニアのための勉強会として、QAエンジニア勉強会(ハッシュタグ: #qae_meetup)を発足しました。ですが、コロナが急激に増えたころに第一回目を開催しようと予定していたため中止となりました。当初30人ぐらい参加あれば良いなと考えていたところ、参加者&補欠者&キャンセル者を含めると結果100人を超える参加応募がありました。
去年、フリーランスになってQAエンジニアとして案件があるのか不安だったのですが、案件の数は少ないものの全くないわけでなく、逆に増えている印象があります。
QAエンジニア勉強会の参加応募から予測できるようにQAに関する需要は高いことから、現在QAエンジニアとしてお仕事されている方は、転職など考えられた際にフリーランスもご検討されてみてはいかがでしょうか。