【デブサミウーマン】ソウゾウで1人目機械学習エンジニアを経験して学んだこと──メルカリShops開発の舞台裏【イベントレポート】

2022年1月18日

株式会社ソウゾウ Engineer Div. Enabling Team Software Engineer (ML)

野上 和加奈

2019年に株式会社メルカリに新卒入社。MLOpsエンジニアとして、写真検索システムの運用、配送サイズ推定システムの開発を担当。2021年4月からソウゾウに移動し、機械学習チームの立ち上げを担当。また、社内のD&I Women Communityのリーダーも務め、ソフトウェアエンジニア育成プログラム「Build@Mercari」の運営などを行っている。

メルカリ内にショップを開設できる「メルカリShops」立ち上げ時に、1人目の機械学習エンジニアとしてチームの立ち上げを任されることになった株式会社ソウゾウの野上和加奈さん。彼女はどのようにチームを立ち上げていったのか。本レポートでは、「Women Developers Summit」で語られた野上さんの半年間に渡る開発の舞台裏を紹介する。

ソウゾウで1人目の機械学習エンジニアとして「メルカリShops」を開発

2019年4月にメルカリに新卒入社し、機械学習エンジニアとして働く野上和加奈さん。2021年4月に、メルカリのグループ会社である株式会社ソウゾウに移籍した。ソウゾウはメルカリにおける新規事業の企画・開発・運営を担う会社で、2021年1月に設立した。

野上さんは現在、Eコマースプラットフォームである「メルカリShops」の開発を行っている。メルカリ内の一つのタブとして表示されているBtoCのサービスだ。メルカリアプリに既存するタブとは異なり、Web Viewで開発されているのがメルカリShopsの特徴だ。

野上さんがソウゾウに移籍した際は、すでにプロダクトに関する技術選定は完了しており、最低限の機能は形になってきていた。技術スタックでいうと、バックエンドはGo、フロントエンドはTypeScriptを使っており、BFFとしてGraphQLがあるという構成。全サービスのコードは、一つのレポジトリで管理するMonorepoという形態をとっていた。

一方組織面では、当時エンジニアは10数人いたものの、機械学習エンジニアは野上さん一人だった。しかも、野上さんは機械学習モデルの開発経験はなく、社内のプロダクトマネージャーも機械学習系のプロダクト経験がある人はいなかった。

その中で、会社から期待されていたのは、機械学習によって、お客さまにとって使いやすいHomeをつくること。当時の課題は、タイムラインと手動でピックアップした注目の商品という2つの機能しかなく、欲しいものを探すのが大変で、偶発的に出会う体験は提供できていないということだったという。

1人目エンジニアに立ちはだかる困難とは?

だが、その期待に応えるには困難も多く、大きく分けると以下の3つが挙げられた。

1.タスクが多方面すぎて何も進まない
2.何からやったらいいのかわからない
3.自分の選択が正解かどうか自信が持てない

【困難1】タスクが多方面すぎて何も進まない

野上さんが1人目の機械学習エンジニアだったこともあり、採用から開発環境の整備、プロダクト開発など複数のタスクが任された。

例えば、採用であればイベントなどに登壇して認知度向上の活動や、採用プロセスそのものの策定を行う必要があった。開発環境に関しては、機械学習に使われるPythonをMonorepoの中に入れ込むリポジトリ構成を考えるところから取り組まなくてはいけなかった。

さらに、社内のサービス基盤の技術選定はほぼ終わったが、機械学習には独自の基盤が必要だった。パイプラインを動かせる基盤の整備から、技術選定を行うところまで野上さんがやることになる。

当然、プロダクト開発も進めなくてはならない。しかし会社が初期フェーズだと、現場のエンジニアリソースが少なく、社内調整にもかなりの時間が必要だったと野上さんは振り返る。

では、これらをどうやって乗り越えたのか。

1つは、「全部をやり切ることは諦め、今はこれしかできないと割り切る」こと。社内のシニアエンジニアやCTOに相談してみたところ、そうアドバイスされたのだという。そこで野上さんは、今は採用して人材を増やすことに注力しようと決め、そのために開発が進まなくても仕方ないと割り切るようにした。ここで重要なのは、そのことを周りに共有しておくことだと強調する。

「エンジニアの朝会に最初に参加したころは、開発のことしか言っちゃいけないと思っていたので、開発の話しかしていませんでした。でも、採用を頑張っている時期は開発が進まないので、話すことがない。周りから仕事をしていないと思われるのではないかと不安になったりもしました」

そこで、「今は採用でこんなことをしている」という話をするようにしたところ、気持ちも楽になり、周りからの協力も得やすくなったという。

【困難2】何からやったらいいのかわからない

2つ目の「何からやったらいいのかわからない」理由について、野上さんは「張り切って理想を掲げがち」「プロセスがクリアになっていない」ことだったと分析する。

サービス立ち上げを担当する1人目の機械学習エンジニアということで、自分で何でも決めるし、「あれもやりたい」「これもやりたい」と、何からやったらいいのかわからなくなってしまうというのだ。また、プロセスがクリアになっていないと、誰に話をしていいかわからず、何から始めていいかもわからない状態になってしまう。

「これに関しては、ミニマムの徹底が大事だと再認識したんです理想を掲げることも大事ですが、一人で全てやることはできないので、余裕をもってできるレベルから始めることにしました。例えば、『最先端のモデルを使って開発したい』ではなく、足元の改善から『昨日一番売れた商品を今日のおすすめに出す』。簡単なレベルからスタートすることで、実装もシンプルになります」

正解かどうかわからないと前置きしながらも、自分でやってみることも一つの手段だという野上さん。プロセスの理解も深まり、思い止まっているよりは前に進めると語った。

【困難3】自分の選択が正解かどうか自信が持てない

1人目のエンジニアであることで、実質責任者的な立場になってしまっており、あらゆることを決めていかなくてはいけない。そして、自分の意見に周りから反対されることはなく、全て採用されることに不安を感じていたという野上さん。

「そのときに大事だなと思ったのが、とにかく人と話すことですね。ソウゾウでは機械学習エンジニアでしたが、メルカリグループ全体で見れば、経験豊富なエンジニアはたくさんいたので、相談に行くようにしました」

だが最初の頃は、何を相談したらいいのか自分の中でクリアになっていないため、結局質問に行けない状態に陥ってしまったという。

そこで、相談事が決まってから話すのではなく、ウィークリーで別チームのリーダーや有識者と話す時間を設けるようにした。定例で相談できる時間ができたことで、些細なことでも気軽に話せるようになった。さらに、相談することで行いたい施策が自分だけの意見ではなくなり、自信を持つことができるようになったのである。

困難を乗り越えた学びをプロダクトに活かす

こうして困難を乗り越えてきたことが、実際のプロダクトの成果にも繋がっている。「Homeをいい感じにしたい」という期待値に対して、野上さんは「個人にパーソナライズされたおすすめ」を出したいと考えていた。

最初のロジックとしては、「類似商品検索APIをつくって、メルカリで最近見た商品に類似するShopsの商品を出す」というもの。ソウゾウに移籍する前に、写真から商品を検索できる機能を開発していた経験を活かし、類似商品を検索するAPIをつくろうとしたのである。

また、Shopsの購入履歴データを使う場合、Shopsで購買歴があるお客さまにしかおすすめできない。そこで、メルカリのデータを活用し、メルカリで最近見た商品に類似するShops商品をおすすめに出すというわけだ。

「このロジックはかなり理想型に近く、決してミニマムではありませんでした。実装量も多く、時間もかかるため、このまま進めていいのか悩んでいました。自分で考えて決めたものなので、人にも相談していませんでした」

このまま開発を進めるのはまずいと考えた野上さんは、メルカリのレコメンデーションのチームに相談してみることにした。すると、「最初はルールベースのミニマムから始めた方がいい」というアドバイスが返ってきた。そこからは一緒に考えてもらい、もともとつくっていたものを捨て、簡単なところからやり直すことを決めた。

最初のロジックはメルカリのデータを使って、Shopsのおすすめを出そうというものだったが、最終的に採用したのは、最近見たShops商品と、同じカテゴリの商品を出すというもの。簡単になった点としては、Shops内のデータのみを使って出しているので、影響範囲が狭くグループ会社を横断せずに完結できる。また、商品をカテゴリごとに絞るAPIは既にあったため、新しくつくる必要はなくなった。

「ロジックがかなりシンプルになったため、もし一人で決めていたら不安になっていたと思います。メルカリのレコメンデーションチームに相談し、メルカリでの実績をも踏まえた上で、これでも問題なく進められると言ってもらって決めたので、自信を持って進めることができるようになりました」

ミニマムから着手したおかげで、バックエンドもフロントエンドも1人で全部やりきることができた。2ヶ月足らずでリリースすることができ、現在はABテストを進めている。「最初のロジック案を止めてでも、後者の方が速くリリースできた」と野上さんは満足そうに話す。

最後に、チームの立ち上げを任されたり、また自分で意思決定しなければならない立場になったりした際のポイントについて、野上さんは以下のようにまとめた。

・集中するタスクを決め、周りにも共有しておく
・ミニマムスタートを徹底する
・できるだけ人の意見を聞きに行く

「人の意見を聞きに行く」に関しては、社内に相談できる人がいない場合は、カジュアル面談などで聞く方法もおすすめだという。野上さんもオープンにカジュアル面談を行っているそうなので、話を聞きたいと思った人は以下からアクセスしてほしいと語り、セッションを締めた。

文:馬場美由紀

関連記事

人気記事

  • コピーしました

RSS
RSS