仕事概要
【Data Engineering グループ】
みてねでは、お客様のアップロードした写真や動画を人物ごとに自動分類する「人物ごとのアルバム機能」や、アップロードした動画を1秒ずつ繋ぎ合わせた「1秒動画」、自動提案フォトブック、DVD作成時の「1枚にまとめる」機能といった写真・動画の自動分類・自動提案機能を提供しています。
Data Engineering グループは、これらレコメンド機能の研究開発および運用を行っています。
【お願いしたいこと】
みてねの Data Engineering グループは、2022年9月現在5名で構成されています。
うち4名は機能開発および運用を担当するバックエンドエンジニア、1名は研究開発を担当する機械学習エンジニアです。
ここでは特に前者の、機能開発および運用に携わっていただきます。また後者の機械学習に関する研究開発に関しても、個人の興味や希望、技術によって手がけることができます。
直近のタスクの例
・Ruby on Rails を用いた、ユーザに驚きと感動を提供するためのレコメンド機能のサーバサイド開発。具体的には新規レコメンド機能の要件定義・仕様検討から開発・運用・効果測定まで、あるいは既存機能のレコメンド精度改善やパフォーマンス改善、リファクタリングなど。
・大量の画像・動画を処理するメディア解析パイプラインの開発。具体的には、 RDB (Amazon Aurora) から NoSQL (Amazon DynamoDB) へのデータ移行を伴う DB リアーキテクチャプロジェクトの設計・実装とデータマイグレーションの実施。
・「人物ごとのアルバム」機能の自動分類精度を改善するための、バックエンド側機能の設計・開発や効果測定のための仕組みづくり。
お願いしたいことの詳細や、現状の Data Engineering グループにおける課題感および取り組みについては以下の記事もご覧ください:
https://team-blog.mitene.us/%E3%81%BF%E3%81%A6%E3%81%AD-data-engineering-%E3%83%81%E3%83%BC%E3%83%A0%E3%81%AE%E5%8F%96%E3%82%8A%E7%B5%84%E3%81%BF-33188cbbc284
【仕事の進め方】
Data Engineering チームでは、たとえば以下のように研究開発を行っています。
企画・研究。現在のみてねのサービスにおいて、機械学習技術やレコメンド技術により、新しい価値の提供や、すでに提供している価値の拡大ができないか検討する。あるいは最新の動画像認識技術や手法について調査・研究し、サービスに活用できないか検討する。
要件定義。新しいレコメンド機能の要件や仕様を定義し、プロダクトオーナ、デザイナ、アプリ開発チームのエンジニアなどと調整して現実的な落とし所をみつける。
設計。上記要件を満たす実装のアーキテクチャを検討し、チーム内外で設計レビューを受ける。
実装。現在、機械学習機能の実装は Python を、レコメンド機能の実装は Ruby on Rails または Go により実装している。それぞれ必要な機能を実装し、チーム内外でコードレビューを受ける。またクライアントアプリ側やサーバ側機能の一部などは、必要に応じてアプリ開発チームや SRE チームにタスクを依頼する。
運用。リリース後も機能の監視を行い、必要に応じてコードのリファクタやインフラ面での改善などを行う。
【今後のキャリア】
Data Engineering チームでは、レコメンド機能の全般に関わることで、たとえば以下のようなさまざまな経験ができます。
・レコメンド機能によって新しい価値を提供すること
・とくに機械学習技術に関して、プロダクトオーナやデザイナ、ユーザの要求と、現実的に可能な精度・運用コスト・実装コストとを調整して、現実的な落とし所をみつけ社会実装すること
・最先端の研究成果を実サービスに取り入れること
・AWS などのクラウド環境における、大規模なデータ処理基盤の開発と運用
必須スキル
必須スキル/経験
・AWS, GCP などのクラウドプラットフォームを用いた Web アプリケーションの設計・開発・運用・負荷分散の経験
・データモデリングと DB 設計に関する経験
・コンピュータサイエンス(CPU、メモリ、アルゴリズム、データ構造など)の基礎知識
歓迎スキル
歓迎スキル/経験
・GitHub やスクラムによるチーム開発の経験
・とくに Ruby on Rails および AWS による Web アプリケーションの設計・開発・運用・負荷分散の経験
・大規模サービスにおける設計・開発・運用・負荷分散の経験
・レコメンドシステムの設計・開発・運用の経験
・データ基盤の設計・開発・運用の経験
・画像・動画ファイルフォーマットに関する知識と、 FFmpeg, ImageMagick, SoX などを利用した画像・動画処理の経験
・機械学習の基礎知識
・機械学習技術を実サービスに投入した開発・運用経験
・Python, TensorFlow, PyTorch などによるディープラーニングや、画像・動画認識に関する知識および経験
・技術的負債を返却した経験、または継続的なコードベース改善やリファクタリングの経験