2020年に起こった2つの変化

石川佑樹氏(以下、石川):じゃあまず「メルカリShops」について、僕から20分ほど簡単にお話しさせていただければなと思います。よろしくお願いします。ここでは、「メルカリShops」というサービスを作るにあたって、どういう考え方で進めて来たのかをご紹介させていただければと思います。

「メルカリShops」を作るにあたって、何点か考えたことがあったんですけど。その中でも、特に2020年の1年間で起こったことを受けて非常にいろいろ考えました。

2020年に起こったことは、大きく2つあったかなと思います。一番大きかったのはコロナの感染拡大で、いろんな影響を受けたというところ。そのなかで、僕らの周りで大きく変化したことは2つあります。1つ目がオフラインでの営業が難しくなったこと。メルペイ加盟店さまに関しても、非常に多くの方が影響を受けていらっしゃったのがまず1つ目です。

2点目は、Work From Home(WFH)とかテレワークとか、あとは緊急事態宣言などで、外に出られなかったり、外に出てもお店がやっていない部分もあって、より多くの人がネットでモノを買うようになるという変化が起きたかなと思ってます。

この1つ目のオフラインでの営業が難しくなったというところなんですけど。メルペイ加盟店さま中心に、いろいろとヒアリングや調査を進めていく中で、特に生産者の方や小規模事業者の方が困っていらっしゃるとお聞きしました。コロナの影響もあって、ここがかなり死活問題になっている状況が見られました。

もう1つ、よりネットでモノを買うようになったという点は、実際に昨年の数字でも出ていまして、ネットショップ利用での1世帯あたりの支出額が、前年比で20パーセント以上増えています。(売上規模が)数兆円あるようなネットショッピングのサービスさまの数字も、年率で20パーセント以上伸びていたり。

要するに、昨年はより多くの人がインターネットでモノを買うようになったことが、数字にも表れていると思っています。この2つの変化から考えたところとして、これによってオンラインでのソリューションの必要性・重要性が非常に高まった年だったなと考えています。

ネットショップ開設のハードル、4人に1人しか売れない現実

そういう(ネットショッピングの)需要が非常に高まった一方、いろいろヒアリングや調査をする中で、難しさも見えているなと思っています。

まず1つ目が、いろいろな事業者さまの中でも、ネットショップ開設まで至っている方は、日本全体のわずか7パーセント弱でした。もう1つは、がんばってECサイトを作った方でも、その中で実際に売れている方は4人に1人、だいたい25パーセントぐらいしかいないというかたちで。このあたりに課題があるというところが見えてきていました。

EC開設が進んでいない理由として、どのあたりにブロッカーがあるのか、実際にアンケートを取ったりヒアリングをしました。その中で見えてきたのが、管理・運営できる人がいない、売れるかどうかわからないとか、ITに対する知識・経験がないというところです。

要するに、ネットショップを作成する、もしくは運営する知識・ノウハウがないというところが、1つのブロッカーになっていることがヒアリングから見えてきました。

もう1つは、ネットショップを作るところまではいけたんだけど、その後なかなか売れない。そこに対して、何が障害になっているのかを確認すると、特に一番大きかったのがECサイトへの集客ができていないのが非常に課題になっていそうだなと、ヒアリングの中で見えてきました。

ネットショップを「みんなのものへ。」

これらを鑑みて、ここに対して、我々のこれまでの知見を活かせるんじゃないかと思って、「ネットショップを限られた人のためのものから、みんなのものへ。」ということで立ち上げたのが、今回の「メルカリShops」です。

「メルカリShops」は、スマホ1つで、メルカリ同様に誰でも簡単にネットショップを開設できるEコマースプラットフォームです。今回の「メルカリShops」を通じて、メルカリとしてEC化支援事業に参入するかたちで発表させていただきました。

今回の課題をどう解決していくのかなんですけど、まず1つ目が、ITに関するノウハウや知識がなければ、なかなかネットショップ開設は難しいという点。これに関しては、慣れ親しんだメルカリの体験、メルカリに出品する時と同様の簡単さでネットショップが開設できるというところで、ハードルを下げていけるんじゃないか、というのがまず1つ目。

もう1つが、ネットショップを開設してもなかなか売れないというところ。これに関しては、メルカリの1,900万人以上の顧客基盤を用いるとこと。これまでずっとマシンラーニング、AIを活用して商品のマッチングをやってきたので、そのあたりを活用して、お客さま独自の集客なしで売れる体験を提供する。それによって、解決していけるんじゃないかと考えました。

これは今までずっと、フリマアプリとしてメルカリが「かんたん」で「売れる」に取り組んできたところを、今回の事業者さまに価値提供、ソリューションとして提供すると。それによって、EC化に対する課題を解決していければと考えたのが、今回のサービスのきっかけでした。

「メルカリShops」の特長

ここから「メルカリShops」の特長について具体的にお話ししたいと思います。まず1つ目、スマホ1つで簡単にネットショップが作れますよという部分なんですけど。先ほど触れましたけど、フリマアプリのメルカリへ出品するのと同様の簡単な操作で、ネットショップの開設・運営が可能です。

今回は事業者さま向けにより便利なかたち、事業者さまが求めるであろう在庫管理の機能なども、スマホ1つで完結するように作っております。

もし「メルカリShops」に触られた方がいたら、見たことあるかもしれないですけど、実際の画面の一番左が出品の画面です。メルカリの出品画面とかなり近しい体験になっています。

真ん中が実際の商品画面で、ここにサイズや種類を登録されていた場合は、そこを選んで購入することが可能になっています。右側がショップのページになっていて、このページを事業者さまが求める形にどんどん改修していけるようになっています。

今のフリマアプリのメルカリと「メルカリShops」の違いをいくつか抜粋すると、まず1つ目はアカウントの使い分けができますよ、というところで。フリマアプリの個人のアカウントは、けっこうプライベートで使われてる部分もあるのかなと思っています。

それがある種、紐づかないと言いますか、バレないかたちでお店を開くことができます。アカウントの使い分けができることで、安心してご利用いただくことが可能です。

もう1つは、まとめての出品や在庫管理の機能がついているということ。値下げの部分も、今回は値下げ交渉なしとしています。ネットショップなので、そのあたりがない分、物づくりの時間に専念いただければというかたちで作っております。

AIで1,900万人以上のメルカリ利用者と店舗をマッチング

2つ目のポイントは、1,900万人以上のメルカリ利用者に届けることが可能というところです。これまでメルカリで培ってきた部分を活用して、その便益をネットショップの運営者さまにご提供します。

もう1つ大事なのが、このAIによるパーソナライゼーションかなと思っています。メルカリはさまざまな利用者さまに活用いただいており、その方々の要望や需要に対して、ネットショップさまの商品を提案、マッチングしていくということ。その部分でAI、マシンラーニングの技術を活用することで、売れる体験を提供していければと思っています。

次が3つ目、初期費用・月額利用料は無料です。これはメルカリと同様に、商品が売れた際にのみ、販売価格の10パーセントが手数料として発生するかたちになってます。なので、初心者の方や初めてネットショップをやるという方にも、気軽に開設いただけるんじゃないかと思っております。

次が注力カテゴリのところですね。まず1つ目のカテゴリとして、フードがあります。卸先に困ってらっしゃるような農家さんや漁師さん、コロナをきっかけにECをやってみたいという街の飲食店さん。あとは観光地もかなりダメージを受けられているところがあるので、地方の特産品を売られているようなところを中心に使っていただきたいなと考えています。

次がクリエイターさまのジャンルです。ハンドメイド、手作りの物を作られているような方だったり、個人でアパレルブランドをやられているような方、ステイホームを充実させるような雑貨などを作られている方に使っていただきたいなと考えています。

こういった注力ジャンルに関しては、メルカリの利用者さまにアンケートを取ったところ、わりとハンドメイド作品やご当地グルメ、食品・食材の地方の名産品などは、メルカリのお客さまからも非常に需要が高いので、そういったところのマッチングをしていければと考えています。

先週水曜日(7月28日)に、クリエイターさま、生産者さまと小規模事業者さまを中心に先行のショップの受付開始を始めました。もしかしたら、みなさんのメルカリのアプリ内にすでに登場してるかなとは思うんですけど、1週間かけて「ショップ」タブを登場させていきました。

メルカリアプリ外でも、スマホで1つでネットショップを開設可能に

これからの「メルカリShops」が、どう広がっていくのかというところなんですけど。ここまではメルカリアプリ内の話をさせていただいて、これからは左側のメルカリアプリ外に関しても、Webサイトの形でネットショップ開設できますよというところで。

それも一気通貫に、メルカリアプリ内・外を問わず、スマホでネットショップの開設・運営ができるプラットフォームを作っていければなと考えています。「メルカリShops」を通じて、さまざまなすべての価値あるモノに対して、新たな売れる場所を提供していければと思っております。

簡単ではありますが、「メルカリShops」を作る上でどういうことを考えて、ここまで作ってきたかを簡単にご説明させていただきました。ありがとうございます。

では次は名村さんのほうから、ソウゾウのエンジニアの組織とカルチャーについてちょっとお話いただければなと思っています。名村さんにバトンタッチします。お願いします。

メルカリとソウゾウの「バリュー」

名村卓氏(以下、名村):ソウゾウCTOの名村です。ここからは、僕がソウゾウのエンジニアの組織とかカルチャーについて説明をしていきます。

まずはカルチャーというよりは会社のバリューなのですが、ソウゾウはメルカリのグループ子会社なので、メルカリ全体のバリューも持っています。見たことある方もいるかもしれませんが、「Go Bold」、大胆にやっていこうというところと、「All for One」、すべては成功のためにみんなで協力してやっていきましょうというところ、あとは「Be a Pro」という、何事もプロフェッショナルであれというところのバリューは、ソウゾウでも同じように持っています。

ソウゾウ独自のバリューもありまして、ソウゾウではこれにさらに1つ大きく「Move Fast」、まず始めようというバリューを持っています。これは書いてあるとおり、Move Fast、速く動くというのと同じような意味になりますが、一人ひとりの自由な発想と責任感をもとに、まずは行動をして、そこから学んで物事を前進させるところで、行動することに赴きを置いたバリューを置いています。

「技術の力」でお客さまに最大の価値を提供する

そんなバリューを置いている会社の中で、ではソウゾウでエンジニアがどういう役割を果たしていくべきかと考えているかですが、まず1つ目は、エンジニアなので技術の力でプロダクトの可能性を最大限に引き出して、お客さまに最大の価値を提供する、というところが一番大きな役割かなと思っています。

この「技術の力で」というのは、エンジニアなのでいろいろな技術を使って、作ってほしいプロダクトや作りたいプロダクトみたいなものを作っていきますが、もちろんエンジニアもいろいろなアイデアとかがあると思います。何よりも今あるプロダクトを想定以上のものに洗練させたり、みんなが思ってもいなかったものに昇華させることができるのも、やはり技術の力のおもしろいところなので、これを持って、今までなかったようなものなどを作って、お客さまに最大の価値を提供するのが、エンジニアの役割になっています。

もう1つ、もちろん技術の力を使ってプロダクトの価値を最大化するのですが、それと同時にいろいろな人たちがソウゾウの中に集まっているので、そういった中で、多様な知恵や挑戦がいくつも生み出されていくと思うのです。そういった多様な知恵と挑戦をいくつも生み出していく中で、今までなかったような価値や誰も考えつかなかったような価値を新たに世の中に生み出していく。

そういったところも、エンジニアの大きな役割になっているかなと思うので、新しい技術を使って、そういったものができていくこともあれば、今までいろいろなことを経験したり、いろいろな人とチームワークでやっていく中で、ひらめいたようなものもあると思うので、そういったところで挑戦して、生み出していくことをエンジニアの役割にしています。

エンジニアが負うべき責務

こんな役割を持って行く中で、エンジニアの役割はこういうもので、どういう責務をエンジニアが負っていくのか、エンジニアが果たしていくかというところも、合わせて紹介します。まず初めに、お客さまにとって価値のあるサービスを作るというのがエンジニアの第一の責務であって、この責務を持って、やはり事業を成功に導くところが、非常に大事かなと思っています。

なので、エンジニアもただ言われたものを作るだけではなくて、自ら動いて価値のあるサービスを作って、最終的には事業が成功するところに向かっていく、ドライバーとして動いていくのが、エンジニアの責務と考えています。

もう1つは、Move Fastというバリューにもありますが、考えて、決断して前進するところを当たり前のようにやってほしいと考えています。なので、ボーっとしていても会社は動き続けるので、意外とボーっとしていても仕事は降ってくるのですが、そういったことではなくて、やはり自分で考えて決断することがすごく大事だなと思っていて、自分で決断を下して物事を進めていくことを、とにかくやってほしいと思っています。

もう1つもけっこう大事なのですが、いろいろな人がチームの中にいて、それぞれいろいろな価値観を持って物事に取り組んでいます。今ソウゾウが手掛けているメルカリShopsも、いろいろなショップのオーナーさんがいて、いろいろな価値観を持ってサービスを提供しているので、自分の価値観だけに囚われずに、いろいろな世の中の価値観を受け入れる。

大きな器みたいなものを持って、その価値観を変化させることにあまり躊躇しないと。自分の意思を強く持つのはすごく大事ですが、一方で柔軟に物事を考えて、価値観をそれぞれうまく変化させて、良いものを作っていくことができるのも、一応責務として捉えています。

ソウゾウが目指すエンジニア文化

そういった役割や責務をエンジニアに求めていく中で、ソウゾウが目指しているエンジニア文化というものありまして、これはスライド1枚にまとめていて、エンジニアがどういった空気や文化の中で働いていくかを、他にもいっぱいありますが、この3つに集約させていけるかなと思っています。

まず何より、けっこういろいろな重責を求めていく中で、「楽しくないとやはりやっていけないよね」というのはあると思うんです。だから「事業を成功させてください」と言われても、ぜんぜん楽しくなかったり、やっていても辛いという中で、成功だけを求められると非常に辛い空気になるし、そんなところからあまりクリエイティブな発想や価値が生まれてくるとは思わないので、やはりエンジニアにとって、普段の開発や仕事が楽しいなと思えるような文化作りや仕組み、そういったものを整えていきたいなと思っています。

あとはGo Boldにもありますが、やはり積極的に挑戦が行われているような環境でないと、事業の新しい価値を想像するようなところはなかなかできなくて、やはり100回ぐらい挑戦してやっと1個か2個ぐらいうまくいったトライがあったね、というぐらいの成功率で挑戦をどんどんしていって、失敗しても成功してもお互い称え合えるような、自分が進んでとにかく挑戦したくなるような、そういう前向きな環境や空気を作りたい。

なので、もちろん当然なのですが、失敗した人を責めるような環境にはしたくないので、失敗してもそれを称えられるような、挑戦したこと自体をやはり褒め合えるような、そういう環境や空気にしていきたいなと思っています。

あとは、僕も私事ながら最近子どもが生まれて思うのですが、やはりエンジニアとして子どもに胸を張って「やっています」みたいな仕事をするべきだなと思いますし、自分が作っているサービスや自分が使っている技術、そういったものが他の人に対しても、ある程度自信と誇りを持てるような、そんな仕事であったほうがいいな、と。

そういう仕事じゃないと、そもそも楽しい仕事とは言えない、というのはあると思うので、やはり会社がやろうとしている事業もそうですし、エンジニアが解決しようとしている問題や、作り出そうとしているものは、常に世の中にとってすばらしいものであるべきで、その自信と誇りをエンジニア自身が感じられるような、そういう空気や文化を目指して、やっています。

なので、重責を求めていく一方で、こういった空気や文化も大事にして、エンジニアがその責務を辛いと思わないような、そういうところが楽しくて、モノを作り出していくのがとにかく楽しくて仕方がないみたいな、そういうような環境を作っていけるようにします。

メルカリShopsの技術スタック

ここからは、ちょっと文化の話から、メルカリShopsの技術スタックの話を、簡単におさらいしてまとめようと思います。今日はちょっと時間がそんなにないのでさらっと紹介しますが、最近記事を書いたので、詳しくはそちらの記事を見てもらえるといいかなと思います。

メルカリがGoogle Cloudの中で動いているのもあって、メルカリShopsもGoogle Cloudプラットフォーム上で稼働していまして、これが今の全体像です。簡単な図ですが、よくあるフロントエンドをWebで作っていて、BFFがGraphQLで動いていて、そのバックエンドサービスがマイクロサービスでいくつか分断して動いていて。Microservicesの数は、今は30から40ぐらいありますかね。

その後ろでデータベースのPostgreSQLが動いているといった感じの構成になっていて、すごくシンプルな、最近よくあるパターンになっているかなとは思います。特徴的なのは、Cloud Runというサーバーレスの環境で動いています。AWSでいうとLambdaやFargateに近い環境ですね。自分たちでコンピュートインスタンスや、Kubernetesのクラスタみたいなものを運用することを今のところ避けているといった状況ですね。

あとは、プロジェクトのレポジトリも、最初に考えた時にモノレポでいきましょうというのを決めて、最近モノレポの事例が増えてきていると思いますが、それぞれの例えばマイクロサービスが5個ぐらいあった時に、その5個を全部1つのレポジトリで管理しましょうというのがモノレポの仕組みです。メルカリShopsに関しては、マイクロサービス、Web、共通ライブラリ、マシンラーニングのコードなど、ほぼこのモノレポの中に書いて管理されています。

こうすることで、いろいろな変更をまとめて1つのプルリクで出したり、みんながいろいろな技術スタックの流れを見ざるを得ない状況になったりするので、どこでどういう変化が起きているのかは、今のところ追いやすいです。もっと巨大になってくるとすべては追えなくなってくると思いますが、今のところ追いやすくなっていて、最初のタイミングで、レポジトリを1つにするという選択は、わりと良かったなと思っています。

「Next.js」「GraphQL」「NestJS」

このように、モノレポの構成で置いていますというところが1つと、あと「どういう技術を使っているんですか?」という具体的なアイコンを並べておきました。詳しくは先ほどの記事にも書いてありますが、フロントエンドはTypeScriptで行っていて、Next.jsをフレームワークとして使っています。

Next.jsはSSR(Server Side Rendering)や、ISR(Incremental Static Regeneration)、SSG(Static Site Generation)などが提供され、パフォーマンスやSEOのために持てる仕組みが非常に多いので、そういったところで使っているのと、CDNなど高速化するのに相性が良いので、使っていたりします。

BFFに関しては、GraphQLを選択しています。GraphQLは、APIの定義で考えることが、シンプルです。RESTのAPI定義みたいなものを作らなくても、だいたいなんとなくグラフで表現できるので、そこが楽だというのもあります。また、リソースの取得は非常にフレキシブルになります。GraphQLを動かすフレームワークとしてNestJSを採用しています。

NestJSを採用している理由は、マイクロサービスと連携しながらGraphQLにリソースをコンバートして出していくという中で、いろいろな依存関係がサーバーの中に出てきますが、DIなどの仕組みを使うと、そこが比較的シンプルに定義できるため、そこで使っています。

バックエンドの「GO」マシンラーニングの「Python」

バックエンドではGOが主体ですね。あとはマシンラーニングの領域でPythonが使われていまして、gRPCでそれぞれ通信していて、NestJSともgRPCで通信している状況です。ORMにentというORMフレームワークを使っていて、PostgreSQLのアクセスは、全部このORMでやっている感じになっています。

マシンラーニングは先ほど言ったとおり、Pythonで組んでいて、Vertex AIというGoogleが2021年に発表したAIプラットフォームを使っていくことを考えてやっています。なので、Kubeflowなどをデータパイプラインとして使う仕様になっています。

code-serverも提供していて、クラウドIDも提供していて、クラウド上のVisual Studio Codeみたいなものを社内向けに提供しています。CIは、GitHub Actionsでほぼ動いていて、ビルドシステムはBazelを中心に使っています。データベースはPostgreSQLを使っていますが、これは将来的にCockroachDBみたいなデータベースに移行できたらいいなと思っています。

Spannerというクラウドデータベースを使うという選択肢もありましたが、どちらかと言うとDXを最大限にしたかったので、ローカルでは動かないなどいろいろな問題がSpannerにはあるため、やめました。コストが高いというのもありますが。あとは、entでデータベースのレイヤーを記述したりすることで、DXを最大化したいというのもあったので、そういったものも含めてPostgreSQLという選択肢になっています。

キャッシュのレイヤーは、MemorystoreというマネージドのRedisがあり、それがGoogle Cloud上にあるので、Redisを使っているといったスタックになっています。

これは今ザッと使っている技術スタックです。あと半年から1年もするといろいろな技術スタックがこの中に積まれてくると思いますが、今のところはこういった感じの技術の選定でやっています。技術スタックの紹介は以上です。