SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Women Developers Summit セッションレポート(AD)

「メルカリShops」機械学習エンジニア組織立ち上げの混迷から脱却する3つのポイント【デブサミウーマン】

【B-2】ソウゾウ1人目機械学習エンジニアの現在地 - メルカリShopsのおすすめ機能開発の舞台裏

  • このエントリーをはてなブックマークに追加

 2019年4月に株式会社メルカリへ新卒入社した野上和加奈さん。メルカリ在籍時には機械学習を用いた写真検索システムの開発・運用を担当し、2021年4月からメルカリグループの株式会社ソウゾウへ1人目の機械学習エンジニアとして移籍。Eコマースプラットフォームである「メルカリShops」の「(商品の)おすすめ機能」を開発する過程で直面した葛藤や工夫を語る。

  • このエントリーをはてなブックマークに追加
株式会社ソウゾウ Engineer Div. Enabling Team Software Engineer(機械学習) 野上 和加奈氏
株式会社ソウゾウ Engineer Div. Enabling Team Software Engineer(機械学習) 野上 和加奈氏

お客さまが欲しいものをすぐ見つけられる、いい感じのホーム画面を作りたい

 2021年10月、「メルカリShops」の本格提供が始まった。基本的にメルカリは個人同士が売買するフリマアプリだが、メルカリShopsは小規模店舗が出店するイメージだ。まさにショップ。メルカリと比べ、値下げ交渉なく販売可能、まとめて出品や在庫管理ができるところに違いがある。

 メルカリShopsはフリマアプリの「ショップ」タブからアクセスできるため、メルカリの1機能のように見える。しかし開いた先はWebページで、メルカリアプリとは別に開発されている。手がけているのはメルカリグループのなかでも新規事業の企画・開発・運営を担うソウゾウだ。

メルカリShops
メルカリShops

 このソウゾウに1人目の機械学習エンジニアとしてジョインしたのが野上和加奈さん。2019年4月にメルカリへ新卒入社し、機械学習を用いた写真検索システムの開発や運用を担当していた。機械学習チームではあるものの、モデルを作るよりもKubernetesを使いこなすほうが強かった。

 2021年4月にソウゾウへ移籍。設立から3カ月が過ぎ、技術選定が済み(バックエンドがGo、フロントエンドがTypeScriptなど)、プロダクトもおおよそ形になったタイミングだった。一方、野上さんは先述の通り、1人目の機械学習エンジニアとしてジョインした。機械学習モデルを作った経験はなく、上司も機械学習の経験者はいない状態だった。

 野上さんに任されたミッションをおおまかに表すと「(機械学習を用いて)いい感じのホームを作る」。つまり、自分でも気づかなかった欲しい物に巡り会えるような「お客さまにとって使いやすい」ホーム画面を目指すということだ。当時はタイムラインと手動でピックアップされた商品一覧のみで、お客さまにとって欲しいものを探しやすく、偶発的にいい商品に出会いやすいようなホーム画面になっていなかった。それを機械学習を用いて改善するのが課題となっていた。

 とはいえ機械学習担当は野上さんだけ。当時の困難を集約すると「タスクが多方面すぎて何も進まない」「何をやったらいいのかわからない」「自分の選択が正解か自信が持てない」になるという。それぞれどう直面したか。

フォーカスすることを決める、最小限のことから始める、人に相談する

 一つ目の「タスクが多方面すぎて何も進まない」の部分は、あまりに多すぎて途方に暮れてしまったほどだ。プロダクトにレコメンデーションをいい具合に組み込むことだけでは足りない。その前に開発環境や機械学習基盤の整備をしなくてはならないし、採用に関わるイベント登壇や採用プロセス準備も全て野上さんの肩にのしかかっていた。ものすごい量となる。

 どうやって乗り越えたのかというと「諦める!!」に尽きる。これは半分冗談で、全部やろうとしないということだろう。野上さんが社内のシニアエンジニアやCTOなどに相談したところ、「自分はこれをやると決める。割り切ってやったほうがいいよ」とアドバイスをくれた。

 それで肩の荷が少し下りた。例えば「今は採用にフォーカスする時期だから開発は進まなくてもいい」など割り切ることができた。加えて重要になるのが「周囲に共有しておく」こと。当初はエンジニアの朝会で共有することは開発の進ちょくだけと思っていたため、採用にフォーカスしている時期は進ちょくを示せず、歯がゆい思いをした。しかし途中で「今は採用でこんなことを進めています」と言ってもいいのだと気づき、これも気持ちが楽になってきたという。

 タスクがありすぎて途方にくれてしまったら「今はこれをやるのだとフォーカスを決めて、それをちゃんと周りにも言っておくこと」が大事と野上さん。

 二つ目の「何をやったらいいのか分からない」については、野上さん自身の分析によると「張り切って理想を掲げがち」と「プロセスがクリアになっていない」ことが背景にあると分かった。前者は、裁量が多く、やりたいこともたくさんあるため。後者は誰に相談して、どのように進めていけばいいのかプロセスが不明確であるためだ。

 これについては「ミニマムの徹底」。理想を掲げるのは大事だが、最初の1人では全部できるとは限らない。「これなら余裕でできるというレベルから始めるのが大事」と野上さんは言う。例えば機械学習なら最先端モデルを作るのではなく、基本的なルールベースのものにする。具体的には前日最も売れた商品を「今日のおすすめ」に出すなどだ。

 実装をシンプルにすると、全体を見通す余裕も出てくる。するとPMやフロントエンドに頼ることなく「自分でできそうだからやっちゃおう」となる。それが「正直正解か分からない」と野上さんは言うものの、「これなら次はこの人に相談しよう」など色々とクリアにすることができた。一度はやってみる価値がありそうだ。

 三つ目の「自分の選択が正解か自信が持てない」については、選択できる立場になると生まれる悩みかもしれない。肩書きでは責任者ではないものの、実質的には機械学習については責任者のように選択できる立場になっていた。野上さんが「これで行こうと思います」と言えば周囲も「いいんじゃない」と認めてくれるものの、野上さんは「おそらく完璧ではないのに、本当に大丈夫?」と内心で不安を抱えていた。

 こういう時に大事なのは「とにかく人と話す」こと。野上さんはソウゾウではオンリーワンの存在だったものの、メルカリグループ内なら他にも機械学習に詳しい人がいるので探して相談しに行った。当初は「聞きたいことをクリアにしてから行かなくては(失礼にあたる)」と気負っていたため、疑問が漠然としているうちは相談しに行けなかった。その状況を「どうしようもないです」と他チームに相談したら、週次で相談する時間を設定してもらうことができた。些細なことでも気軽に話せるようになり、自分の選択にも自信が持てるようになってきた。

当初の理想的な構想をバッサリ切り捨てて、最小限にした実装とは

 ここからは野上さんの気づきが実際のプロダクトにどう反映されてきたのかを見ていこう。パーソナライズされたおすすめを表示するのが目標だったため、野上さんは「類似商品検索APIを作り、メルカリで最近見た商品に類似するShopsの商品を表示する」とイメージしていた。メルカリ在籍時には写真検索をしていたため、馴染みがあり得意なところから始めたほうがいいと考えたためだ。

 アイデアとしては理想的ではあるものの、野上さん1人で進めるには壮大だった。「本当にこれで良かったのかな」と迷いも生じた。そこでメルカリのレコメンデーションチームに相談したところ「ルールベースのミニマムから始めたほうがいいよ」とアドバイスをもらい、作りかけたものを捨てて、簡単なところからやり直すことにした。

 結果的には「最近見たShops商品と同じカテゴリの商品を表示する」というシンプルなものから始めることにした。当初の構想ではメルカリの閲覧履歴から類似商品を検索し、変更後はShopsの閲覧履歴から同一カテゴリの商品を表示する。こうするとデータの参照がShops内で完結し、類似商品検索APIを開発しなくてもすむ。

 「すごく簡単なロジックです。1人で決めていたら『これで大丈夫かな』と不安になったと思います。しかしこれはメルカリのレコメンデーションチームがメルカリの実績を踏まえて『これでも全然いけるよ』と言ってもらえて決めたので、自信を持って進めることができるようになりました。これだけシンプルにできたので、バックエンドもフロントエンドも結局1人で全部やりきることができました」(野上さん)

今回の試行錯誤が実際のプロダクトにどう活きたか
今回の試行錯誤が実際のプロダクトにどう活きたか

 当初は類似商品検索APIも構想にあり時間がかかると見込まれていたが、そこはなくしたため、2カ月足らずでリリースまでたどり着けた。現在(11月中旬)はABテストをしているところだ。着手しかけたものを捨てても、シンプルにしたほうが断然早くリリースできた。

 野上さんは(グループ企業とはいえ)1人目として移籍し、さまざまな課題や葛藤に直面して得た気づきを語ってくれた。これはスタートアップや新規事業の開発現場に投入されたエンジニアなら直面することではないだろうか。ポイントとして野上さんは「集中するタスクを決めて、周りに共有する」「Minimum Startを徹底」「できるだけ人に意見を聞きに行く」を挙げた。

 幸いなことに野上さんはグループ企業内に相談相手を見つけることができたものの、もし手が届く範囲に相談相手を見つけることができないなら「今はカジュアル面談が流行っているので外の人に聞きに行くのもありかなと思います」と野上さんは提案する。

 野上さんは日々の開発業務以外にも、ソフトウェアエンジニア育成プログラム「Build@Mercari」を立ち上げるなど、ダイバーシティ&インクルージョンに関する活動にも精力的に取り組んでいる。これらに関しても日々のカジュアル面談などを通じて、情報交換を行ってるようだ。気になる方は野上さんのアカウントに直接コンタクトをとることをおすすめする。彼女から学べることは、数多くありそうだ。

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/15236 2022/01/21 12:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング