メルカリグループで働くソフトウェアエンジニアに、ちょこっとお話を聞いていく本シリーズ。第46回は、US@Tokyo ML/DataチームのMLエンジニア@lain21が登場。聞き手はメルカリEdge AIチームのMLエンジニア@chicaです。
ともにMLエンジニアな@lain21と@chicaですが、今の職種を選んだきっかけは?メルカリグループのAIチームそれぞれの特徴は?さらに今どんな美容にハマってる?などなど、ワイワイお話ししました。
(なお本記事は原則在宅勤務になる前に実施。当初は状況が落ち着いてから公開予定でしたが、このままだとお蔵入りになりかねないので、今回のタイミングで公開にいたりました)
低糖質ダイエットに励むか、ひたすら有酸素運動をするか
@chica:久しぶりだね〜。
@lain21:久しぶり!私が今年1月にメルカリUSの東京オフィス(以下US@Tokyo)に異動して、会う機会が減ったもんね。最近どう?
@chica:プライベートで言うと、#z-beauty(社内メンバーで美容について語るSlackチャンネル)にも書いたけど、ダイエット!目標のパンツを履くために、パーソナルトレーニングに通い始めて、あと、気合い入れて食事制限しています。最初の1週間は低糖質ダイエットから始めたんだけど、合わなくて。低脂質に変えてから、脂肪も順調に落ちてる!
@lain21:私がダイエットにハマったときは、ひたすら有酸素運動してたなあ。一番成功したときは月に180km走って、食事制限もして、8kg落ちた。
@chica:え、やば。減りすぎでは?
@lain21:まあ、1ヶ月で8kgはやばいよね(笑)。今年は行けるかどうかわからないけど、フランスで開催されるワインを飲みながら走るメドックマラソンに参加したいと思っていて。そのために、体と肝臓を鍛えないと。
写真左から@lain21(US@Tokyo ML/Dataチーム、MLエンジニア)、@chica(メルカリEdge AIチーム、MLエンジニア)
@chica:え?ワインを飲みながらマラソン?そんなのあるんだ?でも@lain21は薬学部出身だから、ダイエットも体を鍛えるのも論理的にできそうだよね。
薬学部を経てアメリカで宇宙工学を研究、そしてメルカリへ
@chica:では、メルカンの「エンジニアと立ち話」ということで。経歴を教えてください!
@lain21:そっか、これメルカンの取材か。雑談しすぎちゃった(笑)。はい、大学では薬学部を卒業し、そのまま同学部の大学院に進学したけど中退しました。『宇宙兄弟』という漫画をきっかけに、宇宙工学に興味を持って…。NASAで働くことを夢見て、JAXAで1年くらいインターンもしました。その後は、アメリカの大学院で航空宇宙工学を学び、卒業。さらに機械学習をロボットAIに応用する研究をするために、MITの航空宇宙工学の博士課程に進学したのですが、1年で中退しました。
@chica:2回中退してる。1年で飽きる傾向があるのかな(笑)。
@lain21:そうですね(笑)。帰国して、メルカリ含むいくつかの日本の会社でMLエンジニアとしてインターンを経験した後、2019年1月にJP版メルカリのAIチームにMLエンジニアとして入社しました。
@chica:当時のAIチームは12〜3人くらいの規模感でした。同じMLエンジニアとして初めて女性メンバーが来たので、嬉しくてよく覚えています。
@lain21:JP版メルカリでは、価格推定モデルをつくったり、2ヶ月ほどメルペイのMLチームに出向したりしていました。そして2020年1月から、US@Tokyoに異動したんです。
@chica:1年で3つのチームを渡り歩いてて、フットワーク軽くてすごい。いずれ、アメリカで働きたいとかあるんですよね?
@lain21:そうですね。でも今は物理的に移動ができないから、現時点では難しくなっちゃいましたけどね。
小学生からゲームのプログラマーになると決めていた
@lain21:@chicaはどんな経緯でエンジニアになったのですか?
@chica:私は、小学校の頃からゲームが好きだったんです。だから、将来はゲームをつくる職業に就くと決めていました。ゲームプランナーやデザイナー、音楽プロデューサーなどいろんな職種があるんですが、小中学生のうちにひととおり試してみて一番楽しかったプログラマーになろうと思ったんですよね。
@lain21:その頃から進路を決めているのすごい。
@chica:その後、情報科学専攻がある女子大へ進学したんですが、そこには数学が好きな子はいたけど、プログラミングが好きな子はあまりいなくて。自分は、その中ではプログラミングできる方だと思っていました。でも、4年生のときにGoogleが実施していた「BOLD」という女性向けインターンに行き、人生で初めてプログラミングできる女性たちに出会い、「ああ自分、雑魚だな」と打ちのめされて(笑)。
@lain21:雑魚じゃないよ!(笑)
@chica:「うわあ、勉強したい」と思って、そこからめちゃくちゃ頑張りました。そして執念で、小学生の頃から入りたかった念願のゲームの会社に入社できました。でも気づいちゃったんですよね。「私、ゲームするのは好きだけど、つくるのはそんなに好きではないな」と。
@lain21:ええ!?遅くない?(笑)
@chica:ゲームプログラミングのストイックさは面白かったんですけど。2年で会社を退職。そのあとは、友だちが経営していたデータ分析を行うベンチャー企業に入社しました。そこで、データ分析の経験は積めたのですが、その会社は買収されて、環境が変わっちゃって。
@lain21:その後にメルカリへ入社したんですか?
@chica:当時、BIチームでデータアナリスト向けの「1Day選考会」をやっていたんです。これは複数回の面接、選考プロセスを一気に行うというものです。面白そうなのでポチッと受けてみましたが、1Day選考会では落ちちゃいました。でもあまりに面接が面白かったので、そこでメルカリに興味を持ちました。そして、AIチームのエンジニアとして応募し直して、入社することができたんです。
Python愛、そして「検索しても答えのない」未踏の領域へ
@lain21:@chicaの(ML開発に必須の)Python愛はすごいからね。
@chica:うん、Python愛に目覚めたのは学部4年なんですけど。当時のインターン先のマネージャーに「あなたには基礎知識が足りない、何か一つを極めてみると良いよ」と言われたことがあって。そこで「じゃあ、私はPythonを極めよう」と思ったんです。Pythonを極めたら他のこともできるようになると考え、関連ドキュメントも全部読み込みました。そうしたら、「Pythonだったらこれくらいの開発ができる」と予測できるようになりましたね。
@lain21:(言語としての)Pythonのサイズ感がちょうど良いよね。便利なものがだいたい揃ってるし、何でもできるし。
@chica:プログラミングの勉強を始める人にとっても、Pythonはちょうど良いサイズ感ですよね。当時は、機械学習に使われるメジャーな開発言語ではなく、便利なツールつくれる言語という感じ。今で言うちょっと前の「Go」みたいな雰囲気もあり、私からすると、地下アイドルを推している気持ちでPythonを推してました(笑)。
@lain21:私、最近Pythonを書いてないなあ。PHPとGoしか書いてない。そしてメルカリに入ってから@chicaは何をしていたかというと?
@chica:当時のAIチームのSys MLに入って、Kubernetes(クバネティス)や、既存の違反検知システムのリファクタや効率化など行ったりしながら、基本知識を学びました。そして2019年10月から、Edge AI(※)技術基盤を整備するEdge AIチームへ異動。チームの信念としては、機械学習のモデルはつくらず、既存のモデルでスマートフォンに実装するというのがテーマです。でも今、沼にハマっていて…。
※Edge AIは、エッジの端末に直接AIを搭載して情報処理をする技術のこと。
@lain21:うん。
@chica:TensorFlow Lite(※)とか、MediaPipe(※)とか、発展途上なのでそのまま使っても動かないことが多いんです。既存のコードを直さないと動かないんですよ。でも、MLやディープラーニングにすごくくわしいわけではないので、なかなか答えにたどり着けず、沼にハマってますね。
※TensorFlow Lite(テンサーフローライト)は、モバイル端末上でより軽量でより高速に推論できるように最適化された、Googleのオープンソースのディープラーニング フレームワーク。※MediaPipeは、マルチモーダルを利用したMLパイプラインを構築するためのGoogleのオープンソースのフレームワーク。
@lain21:いろいろ大変だよね。プルリクエストを送ってもマージしてくれないし。
@chica:そうそう。でも、今人生で初めて誰もやってない、検索しても答えが出てこないものに挑んでいる感じですごく楽しいですね。
@lain21:すごい。私はそんなモチベーションで進路や仕事を選んでないなあ。MITに入ったのも、当時一目惚れした人がいたから、執念で入ったという(笑)。
@chica:いい話じゃん。
@lain21:MITに入ったときには、その人にはもうパートナーができてたけど(笑)。
US版メルカリならではの「Smart Pricing」機能
@chica:最近、JP版メルカリはCamp体制になって、基本的にはチームが機能ごとに紐づきました。私たちのEdge AIチームは、プラットフォームを担当しています。でも、Edgeのプラットフォームはまだ存在していません。いきなりプラットフォームをつくるのではなく、スタディケースや知見を溜めて使えるようにしていこうとしています。今私がやっているのは、リアルタイムの価格推定なのですが、Camp体制ではボトムアップで新機能の開発できるのが面白いですよね。
@lain21:Edge AIチームは、R&Dに近い感じがしますね。
@chica:確かに。@lain21は今何しているの?US版メルカリはJP版とは全然UIも違うし、アイテムにも特徴ありますよね?
@lain21:US版メルカリには「Smart Pricing」という自動で価格下げてくれる機能があります。この機能をお客さまがオンにすると、自動で5%ずつ価格を下げてくれて、予め設定していた最低価格までいくと止まります。さらに、値下げのたびに検索結果の上位にくるようにもなっています。このSmart Pricing機能はリリース時にすごく良い結果が出たので、今はこの機能のアルゴリズムの改善をやっています。
@chica:すごい!この機能、JP版メルカリにも欲しい!
@lain21:US版メルカリで開発されたMLモデルを、マイクロサービスで本番環境への実装も担当しています。データ分析もやって、アイデアを考えて、簡単なロジックでいいからバックエンドで実装して…と、本当にいろいろやってますね。US版メルカリ側とのやりとりも多くて、早朝8時とかにミーティングが入るのが辛いけど(笑)。
JP、メルペイ、US@Tokyo、それぞれのAIチームの特徴とは
@chica:@lain21は、JP版、メルペイ、そして今のUS版と、メルカリグループすべてのAIチームを渡り歩いてきたと思います。@lain21からみた、それぞれの違いはどんな感じですか?
@lain21:JP版メルカリでは、じっくり仕事に取り組めました。失敗を気にせずにできたし、やりたいことを選べたし、勉強の時間もとれましたね。機械学習の施策を本番に出すには、バックエンドやインフラがわからないとできなかったので。
@chica:うんうん。メルペイとUS@Tokyoはどうでした?
@lain21:メルペイは、JP版メルカリよりも危機迫る感じでしたね。当然ですが、お金が関連するサービスなので、決済周りのシステムはちゃんとつくらないといけない。あと払い周りの開発に関わっていましたが、与信の話をひたすらしていましたね。一方で、US版メルカリはひたすらベンチャーという感じで、整ってないものも多い。地雷を踏み、かつそれを直しながら走っている感じがします。今はプロダクトにどっぷり浸かれていて、自分の考えた機能を実装しているのが楽しいです。
@chica:私はずっとJP版メルカリですね。でも、AIチームが12〜3人の頃に入って、その後はインドなどを含む国内外から新卒メンバーが入ってきて、あっという間に50人くらいのチームになって…。気づけば、自分の役割もどんどん変わっていきました。優秀なメンバーが多く、専門性では勝てないことはわかっている。じゃあ、自分にできることは何か?というと「ちゃんとつくる」だと思っているんです。新卒メンバーが、意欲的に「これつくりたい!」と思うものを実現できるように支えたいと思っています。そのために、最近、スクラムマスター認定をとったんです。スクラムミーティングをやるたびにプロジェクトのベロシティが改善していくのが感じられるようになりましたね。
@lain21:偉いなあ。
@chica:もう私いなくても大丈夫だな、みたいな(笑)。でも、その状態をつくれたのは良かったですね。ところで、@lain21ちゃんの仕事のモチベーションは何ですか?
@lain21:うーん。最初は個人的なモチベーションしかないけど、一緒に働く人が楽しいことかな。US@Tokyoは働きやすいですね。出したアイデアはすぐに実装して動かせるし、良い意味でベンチャーっぽいです。あと、成功しなきゃという危機感がすごい。
@chica:ベンチャーだからね。
@lain21:入社して今一番仕事している(笑)。
@chica:私はベンチャーっぽさを失わない環境で、平穏に仕事していたいですね(笑)。