見出し画像

二回目の一人目 ML Engineer になりました。

こんにちは!先月半ばにカウシェに一人目の ML Engineer(機械学習エンジニア)として入社した白川 達也(tatsuya)です。

実はスタートアップに一人目 ML Engineer として入社するのは前職に引き続き二回目で、世の中的にも同じような経験した方はそんなにたくさんはいないのではないかと思ったので、一人目ないしはそれに近いタイミングで ML Engineer をやることの面白さを伝えてみようと思います。正直いつも試行錯誤しながらやってはいるのですが、学びつづけながら実践するチャンスだらけで楽しいです。

なお、本記事はシェア買いアプリ「カウシェ」 Advent Calendarのクリスマス後延長戦、26 日目の記事となります。

カウシェを選んだ理由

正直かなり迷ったのですが、最終的に下記の点を鑑みてカウシェに決めました。

  • 伸び盛りのスタートアップであること

  • 事業やプロダクトが提供する体験が固まりきっていないこと

  • 自分が経験したことがない業界であること

  • 新たな出会いが多いこと = 知り合いが少ないこと(知り合いは一人もいませんでした)

  • 人や組織に関しての想いを持っていること(ここ数年の自分のテーマでした)

  • 機械学習がプロダクトのコアになり得ること

  • 野心的であること

  • 挑戦に寛容なこと

最初にカウシェの採用担当の方から声をかけられたときは普通の EC を運営している会社かなと思ってあまり興味はなかったのですが、課題選考でカウシェの機械学習戦略を立てることになって色々研究した結果、創業 2 年目にして自分の想像を超えた組織づくりをしており、かつ、お得なサービスを作ろうとしているのに Vision や Mission には「楽しい」というワードが使われているあたりにピンとくるものがあり、カウシェに入社することに決めました。転職活動中にコーチングも受けてみたのですが、コーチに「3 秒で決めるならどこ?」と聞かれ、3 秒ならカウシェだなと思ったのも大きいです。未知な部分が多いほどつい飛び込んでみたくなってしまいます。

課題選考で作ったスライドから。Vision、Missionともに実は「楽しさ」推しです。

入社後から今までにやったこと

現在はカウシェの Platform チームに所属し、部署横断的に機械学習技術の応用をしたり、機械学習の学習・実行基盤を整えたりをする仕事をしています。ML Engineer としては一人目だったのもあり、社内の全チームの仕事をチラ見・盗み見しながら「機械学習やアルゴリズムなどを使ったらこんなこともできそう、面白そう!」というのを提案してみたり、思いつきを雑に実装してみたり、アプリに実装する機能を作ってみたり、機械学習基盤やデータ基盤を設計・構築してみたりなど、いろいろやれています。入社してからまだ 1 ヶ月ですが、貢献できそうな部分だらけで、毎日自分の仕事が増えていく感じがしています笑

入社する前から入社後の最初の 1 ヶ月くらいはやり散らかそうと決めていました。もっとできたなと反省する部分も多いですが、多方面に手を付けたおかげでカウシェに対する手応えがだいぶつかめてきた気がします。以下、どんなことをやったのかを紹介しながら、それをどんなふうに楽しんでいるのかをお伝えできればと思います(並行してやっていたりするので必ずしも実行順ではないです)。
Enjoy Working! 🎉

整備された膨大なオンボーディング

自分がカウシェに惹かれた理由の一つでもあるのですが、カウシェという会社は組織づくりに対して異常なくらいの想いをもった会社だと思っています。創業 2 年目にしてこの練度の組織設計を作れているのは、正直自分の想像を超えていました。

入社してからのオンボーディングプログラムも非常にリッチで、入社後数日はほぼこのプログラムを一人でこなしていました。だいたいなんでもドキュメントになっていて、ちゃんと管理・更新されています。

現状、オンボーディングプログラムは 5 日分あります。

各チームとのウェルカムチャットも設定していただき、どんなことをしているチームなのかも知ることができました。EC 業界は初だったので、Marchandise チーム(販売事業者の開拓をするチーム)ってこういう事をするのかぁとか、EC の棚割りってこうやって管理しているのかぁなど、何でも新鮮でした。iOS、Android アプリの開発に関わるのも実は初めてでした。いままで触れたことがないものに触れるのは学びがあっていつでも楽しいです。

カウシェはマトリックス組織を採用していて、私は 2023 年には Data Group に所属し、Commerce UX Team と Platform Team として仕事をするようです

私は Platform チームに所属しているのですが、Platform チームは組織の中でどうあるべきかというような議論も毎日のようにしています。チーム・トポロジーがほぼ共通言語になっているので、その文脈で議論することが多いです。ここ数年、「人と組織・関係性」は自分の中のテーマの一つだったので、システムとして組織がどうあるべきかを日々考えることができるのはありがたいです。

最近データプロダクトとはなんぞやみたいな議論を社内でよくするのですが、カウシェの場合、組織もプロダクトであるという感があります。組織プロダクト。今考えた造語ですが、カウシェは組織プロダクト作りにこだわりを持っていると感じます。

データを眺めた

スタートアップあるあるだとは思うのですが、データを活用して何かをしようとする前にデータの収集や整備が必要になりがちです。カウシェの場合、ありがたいことにカスタマー(カウシェアプリ上で商品の閲覧・購買をしてくれるお客様)、商品ともすでに結構な規模になっていました。エンジニアもみな経験豊富でログなどもちゃんと設計されているので、最低限必要なデータは揃っており、それらは BigQuery 上に一元化されて日常的に分析されていました。

ただ、機械学習のようにデータさえもプロダクトの一部として扱うようなことをしようと思うと、ちゃんとした機構・品質でデータを扱えるようにする必要があり、やはり整備が必要な部分が多々見えてきました。

カウシェは「自律・自燃」を組織ビジョンとして掲げており自分もこのビジョンが大好きです。単にお題目として掲げられているだけではなく、各チームが「自律・自燃」できるようにしくみを整えていくことも求められます。データの活用に関しても同様で、いかにして各チーム(ひいては自分)が自律・自燃にデータを活用できるようにするのか、というのは目下の課題です。みんなでデータプロダクト、Data Mesh、Data Fabric、Data Vault、… などの概念を検証しつつ、どんなしくみを作れば自律・自燃できるのかを議論しています。データもプロダクトも組織も生き物です。組織は急拡大しプロダクトは常に変化していくことを前提とした上で未来のデータがどうあるべきかという超上段の議論をし、自分たちなりの回答を模索できるのは初期フェーズの醍醐味でもあります。
(とはいえ手が足らなすぎるので誰かに手伝って欲しい…)

Data Engineer の JD を作った

上記の通り、データの整備やデータ活用のための基盤づくりが急務だったのですが、自分はその領域に一定の経験はあるもののそこまでスペシャリティが強いわけではないので、Data Engineer の JD (Job Description)を作りました。JD づくりを通して、チームの組織設計や必要なスキルの棚卸しができて自分のなかでもだいぶクリアになりました。

※ ちなみに絶賛募集中なので、一人目データエンジニアとして楽しくチャレンジしたい方いたらぜひお話させてください!リアルタイムレコメンド基盤や実験基盤、ほかにもこれから出てくるであろうカウシェ独特なデータ処理基盤の構築をご一緒したいです。

個人的には Analytics Engineer も必要な気がしています。機械学習も自分ひとりの手には余るので、ML Engineerも…。データサイエンティストは恒常的に不足していますし…。要するに全方位的に人が足りていないと自覚しています。この最小限のチーム構成でスタートアップさせる感じはアツいです。

カウシェアプリを弄り倒す

具体的なアプリ/プロダクトがあるのって楽しいですよね。私はアプリを弄り倒しながらこれもできそうあれもできそうみたいな想像をするのが大好きです。

入社後 2 週間くらいは毎朝 15 分くらい時間をとり、アプリを触って Feedback をするようにしていました。触り倒すなかでカウシェはまだまだ改善の余地(伸びしろ!)があるなと感じ、気にせずどんどん Feedback を投稿するようにしました。

下記は一例ですが、検索機能をいじっているときに、アルゴリズム的に明らかにおかしい挙動があったので投稿してみたら、直ちに原因が特定・修正され、開発版がリリースされたのは入社体験として最高でした。これを通じてアプリ内部での Shopify の使い方や開発版アプリのリリースフローなども学べました。

検索結果がおかしいかもと投稿したら、すぐに議論が始まり、翌日には修正された開発版がローンチされていました。

アプリを鳥の目虫の目で観察しているといろんなアイデアが湧いてきます。プロダクトにどんな仕込みを入れておくと後でそれをもとにした非連続な体験を提供できそうかを考えるのは ML Engineer の矜持の一つかな、と思います。この観点でどれくらい貢献できているかはまだわからないですが、今後も組織に ML Engineer なりの観点をもたらしていったら、データが増えれば勝手にスケールする体験が作っていけるのではないかと思い、ワクワクしています。

Platform チームの ML Engineer の Vision、Mission を定めた

と、ここまで ML Engineer としてのポジショントークをしてきましたが、自分自身、実は ML Engineer という役職にたいしてある種のおさまりの悪さを感じています。私自身は、機械学習の技術としての面白さにももちろん大きな関心がありますが、データから体験が生まれるプロセスのもつポテンシャル、明確に型どれない対象をゆるふわっと表現できてしまう表現力、データに内在する構造をデータドリブンに知れたりする部分に一番ワクワクしています。一方、ML Engineer という言い方をしてしまうと、あくまでプロダクトの中の機械学習関係の実装部分にフォーカスするみたいな狭量なイメージがあるなと思い、自分がやりたいことをちゃんと表現できている感じがしません。

それもあり、目下所属中の Platform チームのメンバーとして短中期で自分の成し遂げたいことの目線や他の人達からの期待を明確化するために、Platform チームの ML Engineer の Vision、Mission を定めました。11 月にカウシェに入社してから色んな方々と話すなかで、機械学習、ML、Machine Learningという技術が何をもたらすのかを組織としてイメージを合わせていく必要がありそうだと感じてもいて、言語化の重要性はしばしば感じてもいます(ML = メーリングリスト?みたいなのはあるある)。下記が今回設定した Platform Team の ML Engineer の Vision & Mission です。

Vision
    Drive the best data-driven UX improvement
Mission
    機械学習に関する組織的な学びの最大化
    機械学習基盤の構築

Mission #1: 機械学習に関する組織的な学びの最大化
次のような想いを込めました。

  • 機械学習という概念を組織にインストールしてふつうの技術にすることで、「これって機械学習で実現できるかも?」という気づきの芽を会社内のあらゆるところで自発的に生み出せるようにしたい。

  • 機械学習周辺の最新の技術動向には常に目ざとくキャッチアップし、最高の体験をいつでも作り始められる状態にしていたい。

  • カウシェ内でも無数の機械学習プロダクトが生まれていくはずなので、そこで得た知見も組織として最大限学んでいきたい。

Mission #2: 機械学習基盤の構築
こちらはありきたりかもしれませんが、幸いにも(?)ゼロベースで機械学習基盤の構築をせねばならないので、良さそうなものを見繕いながら、スモールスタートできるように気をつけながら絶賛開発中です。どうスモールスタートしたのかについては、いつか記事にしたいです。

Vision: Drive the best data-driven UX improvement
Vision に関してはちょっと自分のこだわりが入っています。ユーザー体験(ここでのユーザーはアプリユーザーだけではなく、カウシェに関わるすべての人達)を改善させるための最高の方法として機械学習を提供したいという想いから Drive the best data-driven UX improvement としました。 The best data-driven UX でも The best data-driven UX improvement でもなく、 Drive the best data-driven UX improvement です。機械学習はデータから新しい体験を創出するための技術でもありますが、

Product → ユーザー体験 → Data → Product

というサイクルを実現するための技術・考え方でもあると捉えています。広義の ML Engineer として、このサイクル自体を最高の形で実現したいと考えています。

このサイクルを最高の形で実現したい。出典: https://montrealethics.ai/andrew-ngs-ai-for-everyone-the-definitive-starting-block-for-ai-novices/

Personalized Recommendation の設計・実装をはじめた

アプリやデータを弄り倒したりしながら議論した結果、カウシェアプリに一番不足しているのは Personalization ではないかと感じました。現状のカウシェは Personalize がほぼできていません。全カスタマーに同じアプリ体験が提供されており、個人の興味関心や嗜好などを十分に反映されません。

これは先日ある人と話していて生まれたフレーズなのですが、現状のカウシェは「100 万カスタマー 1 モール」です。どのカスタマーにも同じ並びで商品が提供されています。そのため、運良く良い位置に配置された商品はカスタマーの眼に多く触れ、結果として手に取られやすくなります。一方、運悪く奥の方に配置された商品はカスタマーに気づかれない、という事態が起きてしまっています。強い言い方をすれば、これではアプリ上で閲覧・購入をしてくれるカスタマーにとっても不誠実ですし、商品を出品していただいているパートナーに対しても同様です。そのため、「1 億カスタマー 1 億モール」(こっそり規模を増やしました)を実現すべく、パーソナライズされた商品レコメンド機能の実現に取り組んでいます。まずはバッチから初めていますが、近いうちにリアルタイム化も見据えています。

パーソナライズされたレコメンド機能の実現にあたって Design Doc を書きました。同じドキュメントをみんなで見合って議論をすることで、考え方や知見が蓄積できるため、とても重要なドキュメントだと思っています。将来のことを考えてどんなふうにカッコつけておきたいのかみたいなのも記載しておくと機能が将来どう成長しそうなのかについての目線も合わせられます。機械学習の場合、どうしても試行錯誤しながらロジックを調整することがあるため、ロジックの細かい詳細部分はあえて書かないようにし、あくまで実現したい方向性とそれがどうこのデザインで実現されるのかを書くことにこだわりました。実装が完了したら、こちらもまた別途記事にしたいと思います。

Design Docの一部。Notion 上に作成しています。実現したいものの方向性を宣言しみんなで吟味することが大事だと思っています。

あらためて初期 ML Engineer のすゝめ

つらつらとカウシェに入ってからやったことを書いてみましたが、ML Engineer として初期に入社するメリットは無数にあるなと感じています。

  • 機能実装だけではなく体験創出に対してコミットできる

  • 必然的に色んな人や物事と関わる必要があり視野が広がる

  • やらないといけないことだらけで、知見も経験も貯まるし貢献し放題

  • 事業にたいするデータ観点の仕込みができる

  • 自分の学びをすぐ還元できる

  • 機械学習に関しては伸びしろしかない

  • マネージャーでありプレイヤーである全方位的な立場で仕事ができる

一方、自分が下手にブレーキをかけてしまうと事業が(ML的な方向性で)伸びなくなるという意味で、責任重大な立場だと勝手に思っています。カウシェが提供する体験を究極的に深くし、それをデータドリブンにスケールしていけるよう、頑張ります。楽しみです。

本記事を読んでいただいてご興味を持っていただいた方、ご一緒しましょう!飛び込んでみたら楽しいですよ!自分も子供がいますが、仕事もプライベートも両取りで楽しんでいます。来年はカウシェなりのユニークなソーシャル EC 体験を作っていく最大のしごとが控えています。一緒にやりませんか?もっと聞きたい・相談したいなどあれば、Twitter @s_tat1204 もしくは YouTrust などでお気軽にお声がけください。


明日の シェア買いアプリ「カウシェ」 Advent Calendar 執筆担当者は、 いつもデータ分析をご一緒している @yoshitsugu さんです。引き続き、お楽しみください。



この記事が参加している募集

入社エントリ

この記事が気に入ったらサポートをしてみませんか?