Autifyに入社します
2021年12月31日をもってBASEならびにBASE BANK(BASE 100%子会社)を退職しました。
そして、2022年1月1日よりAutify社に入社いたします。執筆時点(2021年12月22日)では入社前ですが、ありがたいことに「次はどうされるんですか?」とお誘いを頂く機会が何度かあり、先行して公開情報にしておこうかなと思い、筆を執っています。
(The English edition is available on Medium.)
これまでやってきたこと
BASEは正式な社会人になってから2社目です。BASEとは、ネットショップ作成サービス「BASE」を軸にEC・決済・金融領域から広くショップオーナーをエンパワーメントしている会社です。ネットショップ作成サービス「BASE」は160万店舗(2021年12月22日時点公開情報)の開設数と日本で多くのショップオーナーに選ばれています。
筆者は当サービスの開発エンジニアとしてJOINし、その後、子会社 BASE BANK にエンジニアリング組織立ち上げ時期から参画、ゼロからシステムのアーキテクチャリングやエンジニアチームのビルドアップなどをしてました。
2017年10月に入社してから、外部公開されているものとしては次のプロダクト開発に関わってきました。
後払い決済のリニューアル(2018年7月)
資金調達サービス「YELL BANK」 (2018年12月リリース、以後グロース)
10営業日から最短翌営業日に売上の入金日を短縮可能に「お急ぎ振り込み」(2020年2月)
お金管理画面リニューアル(2020年7月)
売上にまつわるデータをCSVにてダウンロード「売上データダウンロード App」(2020年11月)
オンライン本人確認「eKYC」(2021年)
ネットショップの売上がすぐに使える「BASEカード」(2021年9月)
主にPHPでのシステム開発をメインとするバックエンドエンジニアとして入社しました。その後、子会社のエンジニアリング組織立ち上げのタイミングで、ジョインしGo・Docker・ECS Fargateなどのゼロベースの技術選定やシステムアーキテクチャ設計を行い資金調達サービス「YELL BANK」をリリースしました。以降当サービスのグロースを中心に関わりテックリードというラベルをつけました、BASEでは「何らかの分野で特筆・模範になる人物」くらいのゆるふわな期待をまとったラベルです(何で模範になれたかはわかりません :))。
エンジニアリングチームの拡大に伴って個人の集まりではなくチームでプロダクトを開発していくためにアジャイルのマインド・プラクティスを導入・推進していきました。
その後テックリードからエンジニアリングマネージャに鞍替えしつつ、開発エンジニアを支えながら彼らと重複しないプレイングとしてQAエンジニアも兼任してきました。
なお、子会社 BASE BANK のエンジニアリングチームの立ち上げから現在(2021年12月21日)に至る歴史は BASE BANK の松雪さんと永野さんが執筆されたブログエントリ『プロダクトのデリバリー、クオリティに責任を持つEngineering Program Managerという役割』が最もわかりやすいです。
業務の傍ら、技術カンファレンスや企業のテックブログや商業誌への寄稿も積極的に行っていました。
技術カンファレンス・イベントに登壇した資料はすべてSpeaker Deckに公開しています、過去の振り返り記録から計算すると4年強で 59 回 837 分登壇していました(2021年 8回 175分、2020年 8回 105分、2019年 25回 367分、2018年 17回 185分、2017年 1回 5分)。
BASEテックブログには 39 記事寄稿して、商業誌では技術評論社にて『ソフトウェアデザイン 2020年12月号』・『みんなのPHP』の 2 冊に寄稿いたしました。
なぜ転職するのか
BASEは在籍している期間ずっと素晴らしいチームだったので、なにか明確に新しいチャレンジがない限りは転職することは考えませんでした。正確には他の企業の話をちょくちょく伺っていても「BASEよりも自分にあっていてやりがいのありそう」とはならなかったです。しかし、自分の中で2つのチャレンジの方向性が明確になってきたタイミングで転職をする決意をしました。
プロダクトでソフトウェアの課題を解決する仕事へ
日本ローカルからグローバルチームへ
プロダクトでソフトウェアの課題を解決する仕事へ
自分の未来を想像した際に「いつかはコンサルタントになったり受託に戻るのかな」と思っていました。ソフトウェアエンジニアの頭の中は、プロダクト自体・ソフトウェア開発のどちらに比重があるかでタイプが分かれます。プロダクトマネージャーのようにプロダクトに重きをおいてる人であれば8:2とかになり、ソフトウェア開発をもっとうまくやることに重きをおいていたりすると2:8になります。自分は後者の人間であることをコンプレックスにすら思っていました。
もちろん自分本位にはならぬよう、プロダクト・事業運営・ビジネスに貢献するために、ソフトウェア開発の方法論を突き詰めていくっていう論理を明確に構築して他人にもそれを説明することでこれまで物事を推進してきました。
そんな中、たまたまご縁があってAutifyで副業を始めることになりました。
いざ Autify の目線で世の中を見るとプロダクト開発に関わる中での発見がありました。ソフトウェア開発・運営を行う人達を顧客とするプロダクトの開発であればこのコンプレックスが一気に解決する事に気が付きました。
たとえば、ソフトウェアテストの中の自動テスト分野のプロダクトを通じて顧客の課題を解決するという仕事は、自分の中で突き詰めたいソフトウェアテストの関心が、そのままプロダクト・ビジネスを伸ばすことに直接的につながります。
誤解を恐れずに言うと本音と建前が完全一致する仕事があると思いました。
日本ローカルからグローバルチームへ
BASE在籍時から、米国サンディエゴで開催された GopherCon 2019 や 日本で開催された CakeFest 2019 など国際カンファレンスに登壇したり、CakePHPのドキュメント翻訳などできる限り国外を出る取り組みをしていました。昨今の情勢で2020年以降物理的に国外に行くのは難しかったので、国際カンファレンスへの参加はできていませんでしたが、逆に普及したリモートワークによって日本の島国に住まうソフトウェアエンジニアの状況が一変していることに気が付きました。
昨今、AmazonやAppleなどビックテクノロジー企業がソフトウェアエンジニアの Job description を日本で公開していたり、リモートワークを前提とすることで時差の問題はあれど、日本にいることの制約・ハードルは大きく下がりました。
自分がそもそもITの分野で仕事をしようと決めたのは大学の短期留学でD2LというカナダのIT企業に訪問したことがきっかけです。父が「外資IT企業」で働いていることも影響を受けてますが、グローバルなエンジニアリングチームでソフトウェアエンジニアとして働くことが頭の片隅にずっとありました。
さらに、自分の中で危機感を覚えたのが決め手でした。かつてブログエントリでアウトプットのフィールドを英語圏に移行することを書きましたが、そこで当時の危機感を言葉にしていました。
日本語の翻訳が出てから初めて存在に気がついたり、欧米圏で起こっていることについて一次情報段階で追おうとしていない自分を許してしまうのが極めてまずいと危機感を持ちました。
年齢的にもライフステージも変わっていく中で、自分がチャレンジする場を変えるのは今だ、と思いたち上記2点のチャレンジを軸とした転職を考えました。
Autifyとは
Autify(オーティファイ)は、技術の力で世界中の人々の創造性を高めることをミッションに、テストがノーコードで誰でも簡単に作れることが特徴の、AIを用いたソフトウェアテスト自動化プラットフォームを提供しています。
ウェブサービス向けのAutify for Web、モバイルアプリ向けのAutify for Mobileの2サービスを展開しています。
ソフトウェア開発プロセスにおける生産性向上に向けて、長期的なロードマップを3つのフェーズに区切って機能拡充と製品ライナップを広げています。
創業は米国サンフランシスコで、アメリカ・サンフランシスコのトップアクセラレーターAlchemist Acceleratorを卒業したのち、現在のテスト自動化サービスとしてのAutifyをリリースしています。
フェーズは Series A で先日総額 11 億円の資金調達を発表されていました。当リリースにある通り、グローバル市場を獲りに行くことを大前提にVCの構成から組織設計まで一貫して行っている企業です。よって、公用語は英語が用いられていたりとグローバルなエンジニアリングチームを特徴としています。
Autifyを選択した理由
副業でAutifyに関わっていたもののゼロベースで様々な企業を調べました。情報整理していた Notion を見る限り 39 社の企業の Job description を読み、9 社が次の条件で選択肢に残りました。
ソフトウェア事業者を顧客とするサービスであること
ソフトウェアエンジニアとしてJOINできること
公用語英語でグローバルなエンジニアリングチームであること
Tokyo, Japanの時間でリモートで働けること
いくつか Casual Interview の機会をいただいたりより深く情報を見た結果、次の理由で Autify が一番次のチャレンジの場所として魅力的でした。
これまで関心を寄せていたソフトウェアテストの分野であること
ソフトウェアテスト自動化のインパクト
会社とともにチャレンジできる解像度が一番高かった
技術者としての志向性・好奇心とのマッチング
コーディング試験など「プロの外資転職マンになるべく、いくつか他の企業も面接を受けてみようか…うふふふ…」と邪な迷いが3秒くらい発生したのですが、「そんなことをしている時間の余裕は自分にはないだろ」ということで、Autifyが第一志望になった時点でAutifyのみ選考フローに入りました。
1. これまで関心を寄せていたソフトウェアテストの分野であること
BASE に入社してから、元から自動テストへは関心があったのと、2017年当時 BASE の開発チームにはユニットテストをはじめとした自動テストを作成する文化がほとんどなかったことから、
など、開発エンジニアの中でもソフトウェアテストに対して意識が強い生活を送っていました。その後、徐々に開発エンジニアとしての役割が、後方支援やピープルマネジメントへと変わっていったタイミングで、
アジャイルテストの四象限においてビジネス視点の強い第二象限のプラクティスであるATDD(Acceptance Test-Driven Development)
エンドツーエンドなテスト自動化
QAエンジニアとしてテスト計画・設計・実施
技術的な製品批評の分野である性能テスト
など、開発視点に限らないソフトウェアテスト全般をスコープにした動きを行ってきました。
「ソフトウェアテストが大好き!愛してる!」みたいなことは全くないのですが、たまたまそういう道を進んできていて、それが自分自身の現時点でのユニークなところだったので、ソフトウェアテストのフィールドが自分にはあってるんだろうな、と考えました。
くわえて、CEOの近澤さんとの1on1で「AutifyはE2Eテスト自動化をいい感じにすることだけがビジョンではない」ということを話してくださったのが大きかったです。過去のツイートを遡ると七夕の日でした。
Autify社は最初は翻訳サービスから始めて(当時社名も違ったと聞いてます)、そこでの反省やアメリカのトップアクセラレーターの一つAlchemist Acceleratorの中での教え「顧客のBurning needsを解決する」という考え方からAutifyというサービスにたどり着いています。この歴史がAutifyがテスト自動化サービスの中でもユニークに際立っている一つのポイントだと思います。
2. ソフトウェアテスト自動化のインパクト
昨今日本のエンジニアリングコミュニティの中でもテスト自動化、とくにE2Eテスト自動化サービスは盛り上がりを見せていると思います。
よく「技術は手段だから」という言説がTL上に流れます。自分も半分賛成ですが半分反対です。たかが手段されど手段です。
たとえば、プログラミングの考え方のいくつかは現代のIDE(Integrated Development Environment)の使用を前提としているものがあります。A Philosophy of Software Designという書籍にてJohn Ousterhout氏は型情報を変数名に含めないことを推奨していますが、これも現代のIDEが変数に対する型情報に容易にアクセスできるようにしていることを一つの理由としてあげています。IDEという手段は我々の考え方自体に大きな影響を与えているわけです。
また、『Clean Agile』の著者 Bob Martin 氏へのインタビューにて、20年前と比較してここまでイテレーションが速くなるとは思ってもみなかったと発言していました。git というツールが従来のSubversion等と比較してコミットサイズを小さくするコストが低いことでコミットサイズが小さくなったこと、2000年ごとのAgile全盛期では足りなかったマシンパワーがコンピュータ自体の進化で現在のイテレーションの速さに結びついてると。現在、当たり前のように使用しているツール・サービスは自分たちの開発スタイルや考え方を形成するキーパーツになっています。
あるいはCI(Continuous Integration)の考え方の実践は現在非常にスムーズに行われますが、その背景にはCircleCIやGitHubなどが高いレベルのソリューションをSaaSとして提供していることがとても大きいのではないでしょうか。
つまり、道具は手段ですが、人の思考は道具に制約されます。テスト自動化の考え方も現在のテクノロジーの限界の中で様々な最適化が行われています。
たとえば、テストピラミッドという考え方がエンジニアコミュニティには広く普及しています(DevOps BugFilterなどこれを批判した新たなモデルの考案が進んでいますがそれについての言及はここでは本筋から離れるのでしませんが、DevOpsバグフィルターでテストへの理解を深めようという記事が日本語で読めるもので一番手っ取り早くわかりやすいですのでご参照ください)。
E2Eテストは速度が遅く、さらに壊れやすくメンテナンスコストが高いと言われます。ブラウザ上で動作するシステムに対するE2Eであれば、よくユーザーインターフェースの変更頻度に対して敏感に反応しすぎることが課題としてあげられます。これは、現在の手持ちの道具の中で勝負するとこの課題を一筋縄では克服できないということを示していると思いますが、逆にいえば、道具の進化によって考え方自体への逆フィードバックが生まれるのではないでしょうか。
たとえば、「変更頻度に対して壊れやすい、しかし専任のテスト自動化エンジニアを雇う余裕などないから壊れてしまう…」というメンテナンスコストの課題に対して、テストのメンテナンス自体をAIが代替して行ってくれるのであればどうでしょうか?
あるいは、「そもそもテスト自動化してそれを実行し続けるようなテスト基盤を作る時間なんてないし、作っても結局維持できない…」というテスト作成コストの課題に対して、誰でもかんたんに自動テストが作成できて、作成されたテストが維持しやすいようなサービス設計になっていればどうでしょうか?
そのような課題を道具が先回りして解消してくれているのであれば、戦略・戦術が変わってくるのではないでしょうか?
ちなみに、この例はまるごとそのまま Autify がやっていることです。
私自身、テスト自動化を実践した方であれば共感いただけると思うのですが、メールの自動化に苦戦して「実現コストが高いものはやらずに手動テストに預ける」という判断をしました。そんな直後に a-know さんのブログエントリを見て衝撃を受けたのを今でも覚えています。
元ネスレの高岡氏は日経ビジネスで次のように言っていました。
Autifyが多くの企業に利用されているのは「解決できるはずがないと諦めている課題」に泥臭く向き合って解決しようとしているからだと思います。
また、Autify(やその他のテスト自動化サービス)について紹介すると、テスト自動化について詳しい方であれば、レコードアンドプレイバック(キャプチャリプレイ)についての懸念をまず挙げられます。これについてAutifyの末村さんが以下のエントリで解説しています。
このブログではAutifyがどのように従来のテストで指摘されてきた課題を解決しようとしているかについて言及しています。そして結びにはこのように言っています。
技術は螺旋的に進化していくとはよく言われますが、テスト自動化の分野は今まさに螺旋的かつ加速的に進化している時期であると思います。ここに第一線で飛び込んでいける環境はとても魅力的でした。
3. 会社とともにチャレンジできる解像度が一番高かった
1社目・2社目と両方70人〜300人の幅のミドルベンチャーくらいの規模の会社で働いてきました。それゆえに数千人・万人のビックテック企業と言われるような会社で働くイメージがそこまで湧きませんでした。ジョインする次の企業に「学びに行く」いくような気持ちになってしまうなと感じました。
新卒入社の頃、研修でしっかり期間をかけて学ぶというよりかは初日から実地に叩き入れられてなんとかする、といった環境で始まっています。BASEの中でも会社の中にあるナレッジを活用しようとするよりも、コミュニティや一般的に公開されている知見を外で吸収しながら、会社の中のナレッジ自体を広げられるよう模索してきました。
次のチャレンジとして、英語圏の技術者コミュニティを中心にアウトプット・インプットのフィードバックループを回していきます。具体的には、洋書で商業誌を出版することを中期のマイルストーンにしています。そこまで行き着くのにどうすればいいかは全くわかっていませんが、目標は宣言していればなんやかんだで達成できるという成功体験が幸いなことにあります。BASE入社時の面接の場では「PHPカンファレンスでメインセッションをはれるようになりたい」という目標を宣言していましたが、2年でクリアできました(クリアした結果「これは自分にとって大した目標じゃなかったな」という素晴らしい気づきも含めて)。
Autifyは最初からグローバル市場での成功を目指してチャレンジしている現在30人強のスタートアップです。まだまだこれからチャレンジしていかないといけないことがたくさんあります。Autifyがグローバルで広く認知され、使われ、多くの顧客のBurning needsを解決していくためのチャレンジの中で、一緒に次のようなチャレンジができるイメージが湧きました。
ソフトウェアテストを切り口に顧客(ソフトウェア事業者)の課題を解決するプロダクト開発にソフトウェアエンジニアとして貢献する
今後のチーム拡大の中でグローバルなエンジニアリングチームとしての良き文化を形成していく
エンジニアコミュニティのスコープをグローバルに広げて、その中で自分及び自チームのフィードバックループを回していく
4. 技術者としての志向性・好奇心とのマッチング
自分の技術者としての好奇心のありかはいささか偏っています。
クリストファー・アレグザンダーのパタン・ランゲージやXPの哲学など、抽象的でより長期タームで育んでいくような考え方に触れ、そこに更に進歩の余地を感じるとゾクゾクします。
一方で、実際の開発業務においてはたとえばGoを例に上げるとGoをいかにユーザーとしてうまく使うかはとても大事なのでしっかり学びますが、そこまでテンション上がりません。好奇心がくすぐられるのはGoの内部実装を読み解いて"APIの裏側"の仕組みを明らかにしたような瞬間に「わぁい」と喜びを感じます。AWSを活用したクラウドインフラ構築であれば、すごいいい感じにシュッと作ったときよりも、「AWSが裏側で何をやっているか」について意識した設計ができたときにテンションが上がるタイプです。
これはソフトウェア事業者向けのサービスを作ってる会社には概ね共通しそうな特徴ではありますが、Autifyというサービス開発に携わることはこれらの自分の興味関心にフィットすると確信しました。
テスト自動化サービスの開発というのは、使ってくださる顧客を理解して課題解決のソリューションを提供していく「ニーズ解決」の側面と、サービスとしてのビジョンを実現するためのプロダクト開発というビジョナリーな側面があります。サービスとしてのビジョンはロードマップとして示されていますが、サービスとしての未来を考えることが、そのまま「いかに生き生きとしたソフトウェア開発を実現できるか」を考える抽象的な己の関心と対応してきます。
一方で、Autifyの開発は普通のweb開発では抽象化されたAPIの裏側に向き合うようなイメージになります(少なくとも私が副業で関わらせていただいたものだけでも)。普通に生きてれば意識しないくらいブラウザの仕様やSelenium/WebDriverやネットワークプロトコルなどをRFCレベルで理解が求められます(少なくとも…ry)。
自分が一人のソフトウェアエンジニアとして日々楽しめるか?次のステップにすすめるか?進化できるか?という問いに対して、「できそうだ!」と思いました。
Autifyで何をするか
Autifyには「バックエンドエンジニア」としてジョインします。Autifyにおける現在の「バックエンド」の定義はRuby on Railsより下のレイヤ全部です。
これまではEM(Engineering Manager)をしていたので、巷でよく見るEMからIC(Indivisual contributor)へ、ってやつに該当するのかもしれません。
専門性に関しては、次の観点で Autify に限らず Backend を軸としたSoftware Engineer が現時点では良いだろうと判断しました。
英語力である程度コミュニケーションにハンデがあるにしてもそれなりのレベルでやれるか?
Job Description的にはいわゆる"Senior Engineer"くらいの期待に応えらられるのはどれだろうか、という視点
EMでもなくQAエンジニアでもなくもっとも経験が長い "backend" を中心とする Software engineer がよい
休日もついつい考えちゃって手を動かしちゃうのはどれか?
責任感などで自分の「好き」を押し殺してきた自覚があるので、ちゃんと"好きなことで生きていこう"とおもった
そしたら、己で手と脳を動かすSoftware engineerの仕事だった
副業として働いていた頃は最大月40時間でひどいときは月1時間のときがあったくらい柔軟に関わらせていただいてました。Slackでは多少 #random チャンネルなどで雑談させていただいてたものの、チームのミーティングに参加したことなどはありません。そのため、他の企業を選択したときと同様に、知らないチームにジョインする緊張と緊張と緊張の中、有給消化の日々を過ごしています。
これからは、BASEで幅広く経験したことを活かしながら、しかし気持ちは全Unlearnして、Autifyのビジネス・プロダクトの成功の貢献に力を尽くしていきます。
最後に
本エントリでAutifyというサービスに興味を持った方、ぜひこちらから「デモリクエスト」を送ってみてください。百聞は一見にしかずです。
また、Autify社自体に興味を持った方は、採用情報をぜひ見てみてください。ビジョンから給与グレードなどかなり多くの情報が公開されています。
気がついたら1万字を超えていました。そろそろ筆を置きます。