メルペイスマート払いの与信モデルの構築や不正検知、AML(Anti Money Laundering、マネーロンダリング対策)など、メルペイを“裏”から支えているのがMLエンジニアです。
一口にMLエンジニアと言っても、メルペイには複数のチームがあり、チームごとに働き方も異なります。「お隣のMLエンジニアは、どういう働き方をしているの?」ということで、今回はcredit modeling チームのMLエンジニア・@Yuhiとfraud preventionチームのMLエンジニア・@Liにそれぞれのチームの働き方や動き方について質問しあってもらいました。
この記事に登場する人
-
川上 雄飛(Yuhi Kawakami、@yuhi)2013年、新卒で株式会社NTTデータへ入社。大規模トランザクションシステムのインフラ設計、開発および運用に従事。入社4年目に社内横断のアナリティクスチームへ異動し、データ分析のコンサルティングを担当。2019年11月にメルペイへ入社し、MLエンジニアとして与信モデルの開発、そのシステム運用などを担当。現在はテックリードも務める。博士課程に在籍し機械学習分野の研究活動にも従事。 -
Victoria Li(@Li)2017年、新卒でヤフー株式会社に入社。プレミアムサービスのフロントエンド開発・運用を担当。入社2年目から機械学習エンジニアにキャリアチェンジし、ECサービスのためのモデリングとデータ分析、機械学習基盤構築に取り組む。2021年9月にメルペイに入社。機械学習エンジニアとして、不正検知モデルの開発や機械学習基盤の開発を担当。中国出身。
不確実性の高いタスクとリモートワークの相性
@yuhi:@Liさんがメルペイに入社したのはたしか、半年前くらいですよね。メルペイに入社する前はどのようなことをしていたのですか?
@Li:私自身、もともとはソフトウェアエンジニアとしてキャリアを積んできました。ただ、途中でMLに興味を持つようになり、勉強などをしてMLエンジニアにキャリアチェンジしたんです。その後、ECサービスにおけるモデリングなどを経験し、2021年9月にメルペイへ入社しました。現在、AMLチームでは不正なカードの利用停止や無在庫出品の検知など、主に不正検知のモデル構築やシステム開発などを行っています。@yuhiさんは、どういった経緯でメルペイに入社したんですか?
@yuhi:私は新卒でSIerに入社しました。最初の3年ほどはシステム開発に従事し、その後3年ほどは社内横断組織のデータ分析チームでデータ分析コンサルティングなどをしていました。
その中で、自社サービスを開発する企業でデータ分析、MLを使ったプロダクト開発をしたいと思い、2019年11月にメルペイへ入社しました。現在、credit modelingチームのテックリードとしてメルペイスマート払いの与信枠を決める機械学習モデルの構築、そのシステムの開発、運用を手がけています。
@Li:メルカリグループは2020年2月からフルリモートへ移行。私がメルペイに入社したときは、すでにフルリモートでした。でも、@yuhiさんが入社されたタイミングでは、オフィスに出社して働いていたんですよね?
@yuhi:入社してから3〜4カ月ほどは出社して働いていました。その後はコロナ禍もあり、リモートワーク中心の働き方に転換していった感じです。
@Li:出社からリモートワークに変化して、課題に感じた部分はありましたか?
@yuhi:コミュニケーションの取り方は難しかったですね。対面の場合、表情から細かいニュアンスを読み取ることもできますし、ランチに行って雑談することもできます。気軽に人となりを知ることができる一方、リモートではそれが難しい。オンラインでは微妙なニュアンスや表情の違いが感じ取りにくくなるので、コミュニケーションの取り方は工夫していました。@Liさんは、何か課題に感じていた部分はありましたか?
@Li:前職もリモートワーク中心だったので、そこまで課題は感じませんでした。入社してしばらく経ったときに感染者数が落ち着きを見せてきたため、一度ウェルカムランチの機会がありました。そこでチーム全体が集まれたのは個人的に良かったですね。
一方で、入社時に必要な情報が溢れかえっていて、何を先に見ればいいかわからない問題はありました(笑)。そこはマネージャーや当時のテックリードとの1on1を通して、「これがわからない」といったことを話し合い、キャッチアップする情報の優先度を決めていきました。
また、AMLチームでは気軽にコミュニケーションできるよう、Slackのハドルミーティングを使うようにしています。少し話せば済むことに対して、わざわざミーティングを設定するのは心理的ハードルも高い。ハドルミーティングを使うことで、気軽に情報を聞いたり、情報を教えたりしています。
@yuhi:ハドルミーティング、いいですね。リモートワークだと、雑談する機会が減ってしまい、業務的に必要な情報しか話さなくなってしまいます。周りのチームの状況や情報など、一見今すぐに必要ではなさそうだけど、後々必要になるかもしれない情報のキャッチアップができなくなってしまったのは、個人的には課題でしたね。
また、MLはタスクの不確実性が高く、実際にいろんな条件で実験をやってみたり、データ分析を実施したりして、その結果を見て次にどうするかを考えるんです。やってみて判断…を繰り返していくので、自分の考えだけだと、どうしても考えが偏ってしまったり必要な視点が抜け落ちてしまったりする。
今までは周囲の人と雑談ついでにレビューしてもらったり、議論したりすることで異なる視点をもらうことができ、思考も整理されていった側面もありました。しかし、リモートだとそれが難しい。隣に他メンバーがいたら気軽に話しかけられますが、リモートの場合は「少しお時間いいですか?」と聞く必要があったりして、なかなか相談しづらかったりするんですよね。これまでも気軽に雑談できる機会をつくるといった工夫もしてきましたが、まだまだ課題として残り続けているイメージです。
MLのタスクは「遊撃スプリント」でまわしていく
@Li:リモートワークでのコミュニケーションはなかなか難しい問題ですよね。そうした中、メルペイではリモートワークでの作業効率を高めるためにスクラム(一定の期間内でタスクを進めながら振り返りを行う、次の作業効率やタスクの練度を上げるフレームワーク)を取り入れているじゃないですか。credit modelingチームでは、どのように運営しているんですか?
@yuhi:私が入社したタイミングから、credit modelingチームではスクラムを取り入れていました。しかし当時はスクラムの練度も低く、形はあるけど機能してない状態でした。そうした中、リモートワークということもあり、チームとしての作業効率を上げるためにスクラムを強化していくことにしたんです。チーム内で『カイゼン・ジャーニー』という書籍の輪読会を実施し、スクラムやスプリントとはどうあるべきかを学び、それに則ってスクラムを進化させていきました。
とはいえ、MLのタスクとスプリントのプランニングってあまり相性が良くないんです。例えば、2週間単位のスプリントの場合は2週間分のタスクを事前に見積もると思いますが、MLのタスクは不確実性が高いので途中のタスクを終えたところで全体の方針が変わることがよくある。つまり、この先2週間でやるタスクを見積もること自体が難しく、仮に見積もることができたとしても途中で変わる可能性がある。MLのタスクをスプリントの枠組みでうまく運営することはなかなか難易度が高いと感じました。
@Li:その課題感はAMLチームでも同じでした。今はその課題をどうやって解決しているんですか?
@yuhi:credit modelingチームではML以外の通常のエンジニアリングタスクもあるので、それらタスクはセオリー通りスプリントを活用してスクラムを運営しています。MLのタスクとMLとは直接関係ないタスクを同居させたまま、スプリントをまわすにはどうすればいいか。考えた結果、たどり着いたのが”遊撃スプリント”です。
@Li:遊撃スプリント…具体的にどういうものですか?
@yuhi:例えば、10営業日の中で1日4時間ほど作業できる時間が確保できるとします。2週間のスプリントで40時間分のタスクがこなせるわけです。一般的なスプリントプランニングではゴールを決めて、そのゴールに向けて40時間をどう使うかを計画するのですが、先ほども言ったようにMLのタスクは不確実性が高いので、まずざっくりしたゴール…例えるなら、モデルの実装、評価完了のように立てて、30時間を作業時間として確保する。
また、タスクを細分化して切り出したり、ざっくりとした計画は立てるものの時間の見積もりをつくることはしません。とりあえず30時間分の工数を確保し、その中でできることをやっていくようにしています。その上で、日々の朝会などでタスクの状況を共有してその都度タスクや方向性を調整してゴールに近づけていく、という形で運営しています。
@Li:30時間を超えてしまうことはあるんですか?
@yuhi:超えてしまうこともあります。その場合は残りの10時間から融通するようにしています。ただ、基本的には30時間の中でできることをやるようにしています。
@Li:30時間でおさまるタスク量にして、残ったものは次のスプリントにまわす?
@yuhi:そういう形で進めています。
「long term backlog」と「デリゲーションポーカー」
@yuhi:AMLチームはどうやって進めていますか?
@Li:AMLチームではスクラムマスター不在でスクラムを運営するようにしています。言い方を変えれば、全員がスクラムマスターなんです。スクラムマスターを中心に計画する方法もいいのですが、AMLチームは複数のプロジェクトを同時進行していて、かつそれぞれにメイン担当がいて、スプリントゴールに対して進行やワークフローの改善などのスクラムマスターの役割を発揮しています。そのメイン担当がスクラムマスターになると、どうしても属人性が高まってしまう。そこで、チーム内でお互いにコーチング(スクラムマスターの役割の1つ)ができるよう、1つのプロジェクトに対して2人以上のスクラムマスターが関わるようにしたのです。
具体的には、とあるプロジェクト技術に対して知見を持っているメンバーがいたら、その人がチーム向けにオンボーディングを実施し、プロジェクトに興味を持ってくれるメンバーを探すんです。その後は興味を持ってくれたメンバーがメインの担当になり、知識を教えた人はサポート役としてメンバーのコーチングなどを行います。ひとつのプロジェクトに対して、少なくとも2人以上が担当できる体制をつくるようにしているわけですね。
@yuhi:それはcredit modelingチームでも同じです。スクラムマスターが1人だけだと、スプリントを運営する上で必要な観点が偏ってしまいます。そうすると、スプリントが上手く進んでいかないので、credit modelingチームでもスクラムやスプリントをどう改善していくべきか、のメンバーの理解を深めるためにもスクラムマスターは交代制にしています。そうすることで、スクラムやスプリントへの理解度が深まり、練度も上げていくことができました。
@Li:ちなみに、credit modelingチームでは各メンバーに対して、どのようにタスクの割り振りをしているんですか?
@yuhi:credit modelingチームでは、半年先までにやるべきタスクを四半期で整理する「long term backlog」という方法を取り入れています。その中で、各メンバーの希望や適性を判断し、タスクへのアサインを決めるようにしているんです。
@Li:なるほど。AMLチームでも、四半期ごとにメンバーの「Will」「Can」「Must」、そしてチームのOKRのタスク振り返りをしています。それに加えて、デリゲーションポーカーを取り入れているんです。これはテッククリードとメンバーが、どれくらい自由度を持って動くかを決めるものです。例えば、方向性だけ決めて残りは全部任せるのか、それともすべて任せるのか、もしくは日々進捗を確認してほしいなど、いくつかのレベルがあり、それを両者で認識合わせしていきます。
これを実施することで、「もっと自由度が欲しいのに、全部決められてしまっている」といったお互いの期待値のズレを防ぐことができます。
@yuhi:credit modelingチームではlong term backlogによって、足元だけでなく長い目線でやるべきタスクが漏れていないかを確認しています、デリゲーションポーカーがあることで、お互いの期待値がズレてしまった結果、タスクが抜け落ちてしまうことがなさそうですね。
キャリアプランの開示とドラッカー風エクササイズで成長の機会をつくる
@yuhi:また、credit modelingチームではキャリアや成長について、自分以外の各メンバーがどういう風に考えているか、を知る機会があまりありませんでした。一緒にチームとして動いているのですが、以前は周囲に対してキャリアプランをあまりオープンにせずに、マネージャーとの定期的な1on1で話すほか、四半期ごとのメンバー間のpeer reviewしか見る機会がいないという課題感がありました。
@Li:多分それは共通の課題かもしれません。そこで、AMLチームは新たにメンバーのキャリアプランを開示するようにしました。
「PMになりたい」「EMになりたい」など、自分が目指すキャリアパスを開示することで、peer reviewのときに、より的確なアドバイスができるようになったんです。今では、チーム全体がお互いのキャリアアドバイザーのような関係性になっています。
@yuhi:peer reviewではレビューをもらった後、書いてある内容を読み、今後の自分の成長の糧にしていくと思います。ただ、書いてある内容が文字だけなので、細かなニュアンスも含めてレビューを受け取る側に伝わっていない可能性もある。
また、peer reviewを受け取った側もアドバイスに対して、こういう風にやっていきますという意思を周りに発信できない。目指す方向が合っているのか、目指すべき姿に近づいているかなど、認識のズレをなくすために peer reviewのreview会というものを実施しています。もらったレビューに対して、こう考えている、こうやっていきたいと思っているといったことを周りのメンバーも含めてレビューを書いた人に共有して、今後の成長に活かすようにしています。
他には、ドラッカー風エクササイズというものも実施しています。これは自分がどうやってチームに対して貢献するか、自分が大事にしている価値観を共有して、周りのチームメンバーがどう思っているかも書くというものです。
これにより、その人の進むべき道や周りの人たちはその人の考えを理解でき、期待値のズレをなくすことで成長のきっかけを見つけることに生かしています。
@Li:ドラッカー風エクササイズで価値観と周りの期待値がズレるケースはありますか?
@yuhi:実際にやってみて、ありましたね。ただ、ズレが分かると、本人からすると周りからこう見られているんだな、ということも分かるので、自分が目指すべき方向性もより具体的になります。
キャリアプランの開示、どうしてる?
@yuhi:個人的には、キャリアプランにはさまざまなレベル感があると思うのですが、AMLチームではどこまで開示しているんですか?
@Li:peer reviewの一番下に自分のキャリアプランを考える欄があるじゃないですか。そこに書いてあるものをコピーして、共有しています。そこに書いてあるレベルもさまざまで、来期の話もあれば、10年後の話などもある。あえて具体的なフォーマットを決めずに、相談したい内容を気軽に書けるようにしています。
@yuhi:キャリアプランの開示の前提として、チームメンバー間での心理的安全性が高い状態であるということがありそうな気がしました。そうでなければ、なかなかハードルが高いと思います。心理的安全性が高いチームをつくるための工夫などで、チームとして意識されてることはありますか?
@Li:キャリアプランを開示するときも、開示できる範囲内で大丈夫なようにしてます。AMLチームは日常の業務で少しずつ心理的安全性を蓄積している感じです。スクラムマスターが不在だからこそ、それぞれのタスクを担当しているメンバーの進捗が悪い場合は自らアラートをあげるようにしています。そこで他のメンバーのリソースに空きがあれば拾ってもらうなど、気軽に相談しやすい環境を構築することで心理的安全性を高めています。
@yuhi:最後に@Liさんが一緒に働きたいと思う、MLエンジニア像を教えてください。
@Li:課題が与えられたときに自ら解決策を見つけ出し、それをプロジェクトなどに落とし込める人であればいいかなと思います。自走できる人ですね。
@yuhi:確かにMLのタスクは不確実性が高いので、作業やってみた結果、次どう動くべきか論理的に考えて動ける人は重宝されている気がします。また、メルペイに関してはビジネス側、プロダクトマネージャーなど非エンジニアと協業する機会も多く、彼らとのコミュニケーションが苦でないメンバーは活躍している人が多い印象です。
改めて今日はありがとうございました! AMLチームの働き方や仕事での動き方がわかって楽しかったです。
@Li:こちらこそ、ありがとうございました!