連載「Technology Company Internals」では、テックカンパニーの内側で働くエンジニアに、技術に精通したエキスパートが対面で話を聞き、テックカンパニーとは何か?を探るだけでなく、テックカンパニーを目指す企業の指針となることを目指します。
CRE(Customer Reliability Engineering)とは?
白石: 本日はよろしくお願いします。まずは自己紹介からお願いしたいと思います。
kentan: shimada kenta(以下kentan)と申します。CREを担当しているグループのエンジアリングマネージャーを担当しています。
白石: 不勉強でお恥ずかしい限りですが、CREという職種名を初めて聞きました。CREというのはどういうお仕事になるのでしょうか?
kentan: CREは元々Googleが提唱したアイデアで、Customer Reliability Engineeringの略称です。日本語でいうと「顧客信頼性エンジニアリング」で、顧客からの信頼を担保するために必要なエンジニアリングを行っていくという仕事です。
メルカリにおいては、例えば違反出品の検知など、お客さまの安心・安全を支える機能の開発を行うのが、CREチームの仕事になります。
白石: なるほど!そういう機能の開発に特化したチームということですね。
kentan: はい、ちなみにメルカリでは、CREをチームの名前として使用しているのも特徴の一つと言えると思います。
白石: というと?
kentan: GoogleのCREは単一の専門職を指すんです。一方メルカリでは、CREというチームの中にプロダクトマネージャ、ソフトウェアエンジニア、エンジニアリングマネージャ、QA(品質保証)が存在します。
白石: なるほど、単にGoogleのアイデアを活用するだけでなく、メルカリという企業に合わせて落とし込んでいるというわけですね。では、「お客様の安全・安心を支える機能」というと、具体的にはどんなものが挙げられますでしょうか?
kentan: そうですね、禁止出品物や違反行為を検知して出品内容の改善を促すアラート機能や、今春から夏にかけての実装を予定している、価格高騰商品を対象としたアラート機能などが大きなところでしょうか。最近だと、お客さまによる取引評価システムなどもうちのチームで担当していますね。ほかには、カスタマーサポートの人たちをサポートするツールの開発なども、弊社ではCREチームの仕事の一環として扱われています。
CREの実際…仕事の進め方、そして技術
白石: なるほど、大変興味深いです。では、CREという仕事の具体的な進め方についても教えて下さい。
kentan 弊社の場合、カスタマーサポート(CS)と連携して行う仕事がかなり多いですね。例えば新しい機能を作る際、まずプロダクトマネージャーとCSが密に連携してお客さまの声を分析します。そしてその結果を元に、プロダクトマネージャーが機能のアイデアをチームに持ってきて、テックリードと一緒に仕様を作る…という流れで進んでいます。
白石 なるほど。あと、差し支えない範囲で構いませんので、違反出品の検知は技術的にはどのように実現しているのかを教えて頂けますか?大変興味があります。
kentan そうした処理は、出品時にまずルールベースでのチェックが行われます。例えば出品されたものの中に特定のキーワードが入っているとアラートが上がるようになってます。こうした仕組みにより、アダルト関連や著作権を侵害していそうなものなど、出品が禁止されているものを検知して、出品を停止したりアラートを上げたりしているわけです。ブランドの偽物なども検知の対象になっていたりしますね。
白石: そうなると、怪しいものを見つけるためのルールやキーワードをどうやって作るのかが重要ですね。そうしたルールは、どうやって見つけているのでしょうか?
kentan そうした分析は、カスタマーサポートの方が行っています。こういう単語が入っているとあやしい、などのノウハウがCSに蓄積されているんですね。
白石: 単純なルールで見つけられないような違反については、どうやって判定するのでしょうか?
kentan: そこは機械学習を使って、出品の情報をチェックしています。ただ、機械学習による判定も完璧ではありません。なので、機械学習エンジンがアラートを上げた情報に対して、CSの人が最終判断を行うという仕組みになっています。
白石: なるほど…カスタマーサポートの役目が、本当に重要ですね。
kentan そうですね。一般的にCREの定義にはカスタマーサポートは入っていないのですが、弊社ではそこをひとまとめしてしまってもおかしくないくらい、密に連携しています。
メルカリの中身はマイクロサービスだらけ!
白石 では、kentanさんのチームが採用している開発のアーキテクチャなどについても、簡単にお聞かせ願えますでしょうか?
kentan: うちのチームだけに限った話ではないのですが、弊社はマイクロサービスアーキテクチャを採用しています。メルカリというサービスは、様々なマイクロサービスの集合体で構築されています。
白石: そうしたマイクロサービスは、どのように開発されていますか?言語とか、プラットフォームとか。
kentan: バックエンドはほとんどがGo言語で書かれていますね。一部、機械学習を利用しているところはPythonで書かれています。インフラはほとんどがGCP(Google Cloud Platform)上で動いていて、マイクロサービスはKubernetesで管理されています。
白石 なるほど。では、マイクロサービスがどんな単位で分割されているかについてもお聞きしたいです。例えばCREに関してであれば、どのようなマイクロサービスに分かれているのでしょう?
kentan 例えば、出品のルールを司っているマイクロサービスだったり、違反行為に対する利用停止や利用制限に関わるマイクロサービスもあります。機械学習を使って違反出品を検知するためのマイクロサービスなどもありますね。
他にもカスタマーサポートに使ってもらう社内ツール用のマイクロサービスなどもありますね。1つの社内ツールに対してマイクロサービスが3つに分かれて動いていたりします。
白石: ほんとに、全体がマイクロサービスの集合体だ。ちなみに、マイクロサービスに振り切ったことで苦労した点とかはありますか?
kentan そうですね。やはり1つのマイクロサービスで閉じない機能を作る時は大変になります。その場合、他のマイクロサービスと連携する必要があるのですが、現状の弊社の体制だと他のチームが作っているものと連携させる形になるんですね。そのため、他チームへの依頼ベースで進めることになり、優先順位やスケジュールの調整といった、マネジメントの煩雑さがあったりはします。
CREはクリエイティブな仕事。作りたいものだらけ!
白石 kentanさん的には、今のチームでエンジニアとして働く楽しさってどんなところにあるとお思いでしょうか?
kentan そうですね、マイクロサービスを採用していることで、好きに技術を選べる環境だというところが、まずは面白いのではないでしょうか。例えば、うちではGCP(Google Cloud Platform)を広く使っているのですが、Cloud Spannerを使うかDatastoreを使うか、などもマイクロサービスごとに違う。あるチームだと、DatastoreからSpannerにマイグレーションしたりする事例もありました。
白石: 技術的にチャレンジする環境があるというのは、エンジニア冥利に尽きますね。
kentan: はい、エンジニアリング組織全体としても、そういうチャレンジをボトムアップで行っていくことが推奨されているので、チャレンジは非常にしやすい環境です。
他には、クロスファンクショナルなチームだというのもいいところで、別の分野の技術に手を伸ばすのもやりやすい。例えばバックエンドのエンジニアとして入った方でもマシンラーニングに関わることができたり、フロントエンドに手を出せたり。技術の幅を広げていきたい方には、魅力を感じていただける環境じゃないかと思います。
白石 素晴らしい。じゃあ逆に、課題と感じてらっしゃることはありますか?
kentan 課題は、作りたいものがたくさんあるのですが、それをやるための人が足りてないというところですね。
白石: それが課題ですか、面白い(笑) エンジニア大募集、ということですね。ちなみに例えば、作りたいものってどんなものがあるんでしょうか?
kentan そうですね、いろんなアイデアがありますが、一つ挙げるとするとカスタマーサポートの皆さんの負荷をもっと下げるために、機械学習をより活用していく…とかですね。例えばディープラーニングによる画像解析の精度を上げれば、違反出品をより効率よく検知できるだろう、とか。
白石 なるほど。非常に多くの方に使われているサービスだからこそ、お客様の安全・安心を担保するための課題もどんどん出てきて、CREに求められることもどんどん増えていくんでしょうね。本日は大変興味深いお話、ありがとうございました!
Expert’s Voice
今回CREという仕事を初めて知ったのだが、ものすごく興味深い。CREを社内の職種(チーム)として明確に定義していることが、メルカリという企業が何を重視しているのかを端的に表していると感じた。
また、「安全・安心」なんて言葉から連想される保守的なイメージよりも、CREはずっとクリエイティブな仕事だと感じた。顧客が安心して使える場を作り込む、という点で、ものすごくやりがいを感じられそうな仕事である。
個人的には、今回のインタビューを通じて、メルカリというサービスの裏側を垣間見ることができて、非常に面白かった。また機会があれば、メルカリの他の機能やサービスについても深く伺いたいところである。