テクニカルサポートチームがフロントエンドの実務経験を強く求める理由

こんにちは。Test Automation Specialist の末村です。

自分は、外向きにはいわゆるエバンジェリストや技術広報のような役割を担っていますが、内向きにはテクニカルサポート、つまりお客様の技術支援を行っています。「特定の画面のテストがうまく記録できない」「特定のブラウザのみテストが失敗する」といったお問い合わせに対するトラブルシューティングが主な業務です。

テクニカルサポートチームは現在、自分を含め計2名で構成された小さなチームです。自分はどちらかというと、特定の技術スタックに精通しているというよりは、様々な技術やチームを横断的に行き来することで価値を出すタイプです(要するに器用貧乏です)。しかし、もうひとりのテクニカルサポートエンジニア(以下TSE)である 藤 遥 (Haruka Fuji) さんは、特にフロントエンド領域に豊富な知識と実務経験を持つエンジニアです。

なぜ、フロントエンドエンジニアがテクニカルサポートチームに入ったのでしょう?実はAutifyでは、テクニカルサポートエンジニア(以下TSE)の必須要件として、フロントエンドエンジニアと同等の実務経験を要求(2021年7月現在)しています。


フロントエンドの必須要件

  • React, Vue.js, Angular などフレームワークを利用した開発経験3年以上
  • 言語問わずフレームワークを利用したバックエンドの開発経験1年以上
  • アジャイルやスクラムを取り入れたモダンな開発経験
  • ビジネスレベル以上の英語力

TSEの必須要件

  • React, Vue.js, Angular などフレームワークを利用した開発経験3年以上
  • 言語問わずフレームワークを利用したバックエンドの開発経験1年以上
  • 日本語を母国語としない場合:ビジネスレベルの日本語力(会話、読み書き両方)
  • 英語を母国語としない場合:日常会話やドキュメントを読解できるレベルの英語力

(これらの要件については更新される可能性がありますので、最新の情報は https://autify.com/ja/careers よりご確認ください)


これはすなわち、Autifyが少なくとも中堅~シニアレベルの開発経験をTSEに求め、それだけ難易度が高い技術的課題を解決していることを指します。

そこで、この記事では、AutifyのTSEチームがどのような技術的課題に日々立ち向かい、どのように価値を届けているのかを説明します。

(TSEの業務内容については、 全てを知りたいと思う人のための「テクニカルサポートエンジニア」という選択肢 も併せてご覧ください)

開発経験を強く求める理由

世の中のプロダクト全てが、必ずしもモダンで、テストしやすい技術で実装されているとは限りません。世界に大きな価値を届けているプロダクトが、内部的には技術的負債の塊であることは珍しくありません。これらは継続的な開発やメンテナンスの妨げとなります。こうしたユーザーにとって、アプリケーションの内部構造を大きく変えずにテスト自動化を進められるE2Eテストは、開発プロセスの改善を安全に進める上で極めて重要な要素です。そのようなユーザーの助けとなることで、世の中のアプリケーション開発の生産性を向上することが、Autifyの使命であり、社会的意義だと考えています。

一方、様々な時代の、様々な思想に基づいて実装されたWebアプリケーションを広くサポートするのは、大きな技術的チャレンジであると言えるでしょう。エンジニアとしてこれを実現するには、長期に渡りフロントエンド開発に触れてきた経験が求められます。モダンなフレームワークを用いた開発経験だけでなく、JavaScriptの言語仕様や、ブラウザについての知識が必要になります。これが、TSEにフロントエンドエンジニアとしての幅広い知識を求める理由です。

例えば、ユーザーがAutifyを使ってテストしたいと思っているWebアプリケーションが、古いバージョンのJavaScriptライブラリをそのまま使っていたとします。こうしたライブラリは、往々にして HTMLElementPrototype を書き換えることで機能を実現しています。こうした、ある種「行儀の悪い」挙動が、Autifyの持つ要素探索アルゴリズムの動作を妨げ、エラーを引き起こすことがありました。

あるいは、Material UIやAMPといった比較的新しい技術・フレームワークを利用している場合にも、やはり互換性の対応が必要になることもあります。例えば、AMPは HTMLElement を上書きしています。これによって instanceOf HTMLElement の結果が変わってしまい、予期せぬエラーを引き起こすようなこともありました。

こうした個別の問題に対応したり、問題の発生を防ぎ安定性を高めることで、新たに利用を開始したユーザーが同じ問題に困らされることが無いようにすることが、TSEの最も大きな仕事と言えます。

スケールしないことをする

一見して、われわれTSEがやっていることは泥臭く思えると思います。本記事をご覧の皆様には、「モダンな技術スタックだけをサポートしたり、サポートしやすい顧客/プロダクトだけにフォーカスしたほうが良いのでは」という意見をお持ちの方もいらっしゃるでしょう。例えば、サポート対象のJavaScriptライブラリからjQueryを除外したり、IEやSafariなどの「落とし穴の多い」ブラウザをサポート対象から外せば、われわれの仕事はぐっと楽になります。

しかし、それではAutifyのミッション「技術の力で世界中の人々の創造性を高める」を実現することはできません。自動テストが開発プロセスにもたらす価値を、我々は文字通り世界中に広めていきたいと考えています。世界中とは、モダンな開発現場だけを指したり、テストしやすいプレーンなHTMLのことだけを指すのではありません。

世の中に無数に存在する、様々なWebサイトに一つずつ対応していくことは、一見して非効率に見えるかもしれません。しかし、非効率で、非合理的なことをやり遂げた先にこそ、まだ誰も実現していないプロダクトが実現できると考えています。このような泥臭いアプローチを通してこそ、簡単には追従できないさまざまな知見をプロダクトに蓄積させ、長期的にAutifyの競争力を高められるのです。今のTSEの取り組みそのものはスケールしない方法ですが、長期的に見ればこれこそがビジネスをスケールさせ、市場における競争力の源泉になると信じています。

現実の問題に対処し、プロダクトを成長させる

AutifyのTSEチームは、様々な現実の問題に対処し、日々顧客の問題を解決しています。その多くは泥臭く、根気のいるものばかりですが、それをやり遂げることにより、Autifyをこれまで誰も成し得なかったプロダクトへと変貌させるでしょう。名前こそ “サポート” ですが、これは明らかにモノづくりの一環であり、プロダクト開発の一部です。

プロダクト開発には様々なアプローチがあり、新しい機能を作るのが好きな人もいれば、今あるものの完成度を高めるのが好きな人もいるでしょう。TSEは、どちらかといえば後者寄りの人におすすめしたい仕事です。

もしも、「応募しようと思うけど、フロントエンドとテクニカルサポートどちらにしようか迷っている」という場合は、是非 カジュアル面談Hatty Hour にお越しください。みなさんとお会いできるのを楽しみにしています!