孤独になりがちな業務を「チーム」で乗り切る、みてねData Engineeringグループの文化に迫る

2023/5/15

image

「家族アルバム みてね(以下:みてね)」では、「1秒動画」や「人物ごとのアルバム」など、機械学習を用いた機能やコンテンツを提供しています。

今回インタビューしたのは、それらの機能開発を行うData Engineeringグループ(以下:DEグループ)のマネージャーである松石(写真左)と、バックエンドエンジニアの浜田(写真右)です。

機械学習について「すごく詳しいわけではない」と語るふたりが、DEグループに感じる魅力とは?モチベーションや働き方、現在抱える課題などについて聞きました。

ミッションは、機械学習を用いた「みてねの魅力を高めるコンテンツ」の開発

──DEグループは、名前の通りデータを扱うチームなのでしょうか?

image

松石:機械学習を用いて、みてねのプロダクトとしての魅力を高めるコンテンツや、ユーザーの最適な選択・編集を補助するレコメンドシステムを開発しています。具体的には、「1秒動画」や「人物ごとのアルバム」などの機能です。

メンバー構成は、MLチームが1名とバックエンドチームが5名の合計6名。MLチームは現在、MIXI全体の横断組織である開発本部の方にもご協力いただいています。

──機械学習を用いたシステムの開発を行うチームなんですね。おふたりのこれまでの経歴は?

浜田:2017年にミクシィ(現MIXI)に中途入社し、モンスターストライクのSREとLX事業部でエンジニアリングマネージャーを経験しました。そして2019年から、みてねのDEグループでバックエンド開発を行っています。

松石:自分は学生時代にリリース前のみてねでインターンを経験し、当時のチームや組織文化に惹かれて2016年に新卒入社しました。

入社当時はフルスタックエンジニアで、2017年からはAI/ML 技術を使ったコンテンツ自動提案・自動編集・自動分類などのレコメンドシステムの開発・運用に携わっています。今は開発に加えて、マネージャーも担っています。

──お二人はもともと、機械学習に興味を持たれていたんですか?

浜田:学生時代に自然言語処理には触れていたのですが、社会人になってからは全くで。実はDEグループにジョインする前も少し不安でした。

ただ、実際には機械学習の深い知識を必須とするわけではなく。機械学習の基礎知識+バックエンド開発の経験があれば大丈夫そうだったので、自分でもできそうだと思いジョインを決めました。

松石:自分も学生時代に機械学習の研究をしていましたが、すごく詳しいわけではありません。ふわっと基礎知識があるくらいのレベル感ですね。開発も基本的にバックエンドがメインです。

──機械学習について必ずしも精通している必要はないのですね。

“ワーキングアグリーメント”を活用し、共通認識の蓄積をはかる

──チーム内にはどのようなカルチャーがありますか?

image

浜田:みなさんドキュメント化の能力が高いなと思いました。これはDEグループのメンバーに限らず、みてね全体で言えることですが。

松石:たしかに。口頭のみで話を進めることは少ないですね。議論の経緯と結論についてのドキュメントを残すのはとても大事だと思っているので、DEグループでは”ワーキングアグリーメント”という方法で、チーム内の文化として根付かせている最中です。

──“ワーキングアグリーメント”とは?

松石:チーム内で合意した、チームとして身につけたい働き方の約束事を明文化したものです。このような約束事をいくつか用意して、定例MTGで確認する場を設けるというプラクティスを実践しています。

直近では「仕事で悩んだらSlackのハドルミーティングで呼びましょう」「Slackでメンションを付けて発言されたらリアクションをしましょう」「分からない時は分からないで構わないので、まずはリアクションをつけて気づいていることを伝えましょう」などの項目を置きました。

──全部で何項目ぐらいあるのでしょうか?

松石:重点的に置いている項目は3つです。常にその時注力すべきものを置いて、週に1度確認する。そして達成できている状態が続けば、その項目を注力すべきものから外して次の項目を入れるようにしています。

浜田:ここで完了した項目が、チームの共通認識としてどんどん溜まっていきます。この“ワーキングアグリーメント”のおかげで、新しくジョインした方にもチームで大切にしている価値観を知ってもらうことができているのではないかと思います。

プロジェクトにアサインされるのは1人。でも孤独な戦いではない

──実際の業務はどのように進められていますか?

image

松石:みてねではドメイン制によるプロダクト開発体制を導入していますが、DE グループではプロジェクト単位で人をアサインし、レコメンドまわりの機能開発に取り組んでいます。なので、職能横断でプロダクトの開発・運用を担当するDAD・MERCHなどのドメインチームとは少し違った動き方です。

アサインするプロジェクトの判断基準は、各メンバーの希望、スキル、優先順位などです。アサイン後はDEの担当領域におけるプロジェクト管理や、ステークホルダーとの折衝によるスコープ調整まで担当いただいています。

──基本的に、1人でプロジェクトにアサインされることが多いのでしょうか。

浜田:僕が直近でDE領域を担当した「年間版1秒動画」のプロジェクトは、割と大規模な生成や配信が必要なので2人体制でした。ですが他のタスクでは1人のことが多いですね。単純に人数が足りていないという意味で、一人ひとりの負担が大きくなってきていると感じます。

ただ、そのような状況でも個人プレーではありません。1人でコードを書いてそのままデプロイするのではなく、チーム内で議論やコードレビューを行っています。常に状況をチームメンバーに共有して、全員の納得のもと前に進めるようなやり方です。

──ワーキングアグリーメントでも「仕事で悩んだらSlackのハドルミーティングで呼ぶ」という項目がありましたね。

image

浜田:そうですね。特に朝会とは別に、毎日の定例として30分ほどのハドル会を実施して、そこでカジュアルな相談を持ち寄っています。チーム内で雑談や議論が不足しているという認識があり、最近始まった取り組みです。

このハドル会のおかげで、さらに相談しやすい環境になったと思います。

──プロジェクトにアサインされるのは1人でも、周りのサポートはきちんと受けられる環境なんですね。

浜田:はい。いつも松石さんに泣きついてます(笑)

松石:いやいや。いつも積極的に「やります!」とタスクに取り組んでいただいて、本当に助かってます。もちろん、浜田さんがおっしゃったように1人で全部やるような環境ではないです。とはいえ、直接担当していない人にすべての状況を理解してもらうのは限界があると思います。

なので年賀状や年間版1秒動画などの毎年発生するプロジェクトは、出来るだけローテーションするように気をつけています。自分でやってみないと分からないこともあると思いますし、互いの状況への理解を深め、気軽に相談できるよう工夫していきたいです。

みてねのコンテンツ生成を支える、レコメンドシステムとは

──DEグループの取り組みについてのブログを拝見しました。「1秒動画」や「人物ごとのアルバム」に用いられている“レコメンドシステム”について、詳しく教えてください。

松石:レコメンドシステムは、ある一定期間にアップロードされた写真や動画から最適な組み合わせを抜き出し、ユーザーに提供するような機能です。たとえば1秒動画では、抜き出してきた写真や動画から、ダイジェスト動画を作っています。

浜田:もう少し補足すると、写真から顔を検出して集めた、目の位置や傾きなどのさまざまな情報をレコメンドに役立てています。人物ごとのアルバムはちょっと特殊で…

──どのように特殊なのでしょうか?

松石:人物ごとのアルバムは、アップロードされた写真や動画を自動で判別して人物ごとに分類するような機能です。これは裏側の仕組みが少し特殊で、似た顔をまとめるというやり方で分類をしています。

──似た顔をまとめるとは…?

image

浜田:似た顔をまとめる操作を“クラスタリング”と言います。1ヶ月、2ヶ月くらいの範囲でアップロードされた写真や動画をクラスタリングして、クラスタリングしたもの同士をつなぎ合わせていくことで、人物ごとの分類が可能となりました。

松石:ただ、子どもは成長に伴って顔つきが変わりやすいので、それに追従しながら正しく分類しなければならないんですよね。0歳と4歳じゃ顔つきが全然違ってきます。撮影日時の情報や見た目の類似性などの要素を組み合わせるなど、いろいろと工夫しながら常に精度改善に取り組んでいます。

──子どもの成長に追従できる設計になっているんですね。

すべてのご家族に「人物ごとのアルバム」を便利に使っていただくために

──様々な情報の組み合わせによって分類の精度改善に取り組んでいるとのことですが、他に抱えている課題などありますか?

松石:現状、写真や動画のアップロードが1年空くと人物ごとの分類が難しいんです。もちろん年齢にもよりますが、まだ小さい子どもの場合は3ヶ月くらいが限界かと思います。

浜田:そこは課題ですよね。

松石:そうですね……こういったサービスの利用状況に限らず、さまざまな要因で分類精度に差が出てしまうことがあって。僕たちとしては、すべてのご家族に「人物ごとのアルバム」機能を楽しんでいただきたいので、この分類の精度改善は継続して取り組むべき大きな課題だと思っています。

──人物ごとの分類の精度改善は奥深そうですね...!

image

松石:実は人物ごとのアルバムに限らず、レコメンドや自動生成に対してのフィードバックを得るような仕組みを現時点では持っていません。

フォトブックなどは、売上で多少反応が分かる部分があると思います。それ以外の購買を伴わないような機能についてもフィードバックを得て、プロダクトに反映できる仕組みを作っていきたいです。

──今後の改善にはユーザーの声が重要になりそうですね。バックエンドシステムの面でも、何か課題に感じていることはありますか?

松石:技術的負債の改善が課題です。現状、顔データの解析基盤のデータベースに負荷がかかりすぎていて。アプリ全体の挙動にまで影響して、ユーザー体験が悪化してしまうケースが発生していました。加えて、新機能開発の際に触りづらかったり、構造的に使いづらかったりして、開発スピードにも影響を及ぼしています。

ただ、どうしても期日が決まっているプロジェクトを優先してしまい、中々着手できず。

そんな中、SREグループから「そろそろデータベースの負荷をなんとかしましょう」と、これまで思いつかなかったような方法を提案いただきました。かなり工数が抑えられる方法なので、今はその提案に沿って進めていこうとしています。

──それはすごく助かりますね。具体的にはどういったことをされるのでしょう?

浜田:本当に助かってますよね。一言で言うと、データベースの垂直分割ですかね?

松石:そうですね。それに加えてアーキテクチャの変更など、付随する改善作業も色々と。

浜田:顔の解析結果の統合もありますよね。DynamoDBやAuroraに保存されている解析結果のデータが、各データベースに重複していたり、片方にしかなかったり……。

──これまでの開発で溜まった、さまざまな負債が一気に解消できそうですね。

「みてねの競争力の源泉を作る」ことに面白さを感じる

──最後に、これから一緒に働く方に向けて何かコメントをいただけますか?

image

浜田:みてねで働く上で、モチベーションになっていると感じることが2つあります。1つ目はユーザーさんからのリアクションです。SNSで「今月の1秒動画は最高だった」などのポジティブなコメントを見るとすごく嬉しいですし、喜びや感動を与えられていると思うと自分までハッピーな気持ちになります。

2つ目が大規模データを扱う点で、みてねへの写真・動画の月間アップロード枚数は2.7億枚に達しています(2022年10月時点)。かなりの大規模データなので、技術的にもチャレンジングですごく面白いです。そういったところにモチベーションを感じてくださる方がいれば、ぜひ一緒に働けたら嬉しいです!

──2.7億…!そこまでの大規模データを扱う機会は中々なさそうですね。松石さんはいかがでしょうか?

松石:僕はもともと、機械学習を社会問題に対してどのように活用していくのか、ビジネス応用や社会実装みたいなところにすごく興味があって。

なので、機械学習を活かしたレコメンドシステムの開発を通じて、みてねの競争力の源泉を作ることに面白みを感じています。

機械学習の活用や大規模データの処理に興味のある方で、「家族アルバム みてね」というプロダクトそのものにも興味を持ってくださる方がいらっしゃったら、ぜひ一緒に働いてみたいです。

──自分の仕事がプロダクトの魅力を高めていると実感できる環境なんですね。ありがとうございました!