2016年8月にリリースした、すれ違いを恋のきっかけにするスマートフォン向けマッチングアプリ「CROSS ME(クロスミー)」
2017年6月6日(火)に放送されたTBSの報道番組「NEWS23」でも取り上げられるなど注目いただいている同アプリに、企画段階から携わっているのがリードエンジニアの川田です。
現在新卒7年目の川田。入社以来サーバーサイドを担当している彼は、自ら企画したソーシャルゲームが頓挫したり、携わったサービスが軌道に乗らずクローズを余儀なくされたりと悔しい思いをしてきたといいます。「現在の自分があるのはあの日々があったから」と語る川田。これまでどのような苦難を乗り越えてきたのか、そして現在担当する「CROSS ME」ではどんな技術的挑戦を行っているのか、話を聞きました。
川田 浩史 株式会社プレイモーション 「CROSS ME」リードエンジニア 兼 サーバーサイドエンジニア。 2011年サイバーエージェント新卒入社。入社後は、サーバーサイドエンジニアとして数々のコミュニティサービスやソーシャルゲームの立ち上げ・運用に携わる。2015年11月よりグループ会社の株式会社プレイモーションに出向し、現職。
サーバーサイドエンジニアからプロデューサーへ
ーーこれまでの経歴を教えてください
2011年に新卒でサイバーエージェントに入社しましたが、当時はC言語しか触ったことがありませんでした。いま思うと、ポテンシャル採用だったのかも知れません(笑)。
Web系の開発経験がまったくなかったので、フロントエンドをやるかサーバーサイドをやるかすら決めていませんでした。そんななか配属された「アメブロ」芸能人ポータルチームの先輩に、「もし将来フロントエンドをやるとしても、サーバーサイドのことをわかっておいたほうがいい」とアドバイスをもらい、サーバーサイドエンジニアとしてキャリアをスタートさせることにしました。
4ヶ月ほど「アメブロ」芸能人ポータルの運営でJavaを書いていたのですが、次第に「新規サービスをやってみたい」という熱意が強くなっていきました。ちょうどそのタイミングで、新規のユーザー投稿型コミュニティサービスの立ち上げに参画させてもらうことに。そこで初めて事業の立ち上げを経験し、スクラム開発などの開発手法についても学びました。
さらに、当時エンジニアが社長の藤田に自社サービスの改善案や新規企画を提案して点数を競い合うという取り組みがあったのですが、それがきっかけで社長から「新規ゲームを立ち上げないか」と声をかけてもらったんです。
ーーそれまでにもプロデューサーをやってみたいという思いはあったのですか?
コミュニティサービスを運用していたときのプロデューサーがエンジニア出身だったということもあり、「そういうキャリアパスもいいな」とは思っていましたね。
社長から声をかけてもらい新規ゲームの企画を始めたのが、入社3年目に入ったタイミングです。それまで一切企画の経験がなかったので、かなり苦戦しましたね…。なんとか形にしようと試行錯誤しましたが、結局3ヶ月経っても企画が立ち上がらず、プロジェクトは解散ということになってしまいました。
私の他にも数名ジョインしてくれていたので、責任を感じましたね。「リーダーたるもの、とにかく方向性を指し示さないといけないんだ」と反省しました。そして、3ヶ月とはいえプロデューサーを経験したことで、エンジニアとしてどう働くことがチームにとって望ましいのかも、わかるようになってきました。
尊敬していた先輩の退職
ーープロデューサーのままでいるか、エンジニアに戻るか、その後のキャリアは悩みましたか?
悩みましたね。結果的に、「やっぱり自分の手でものづくりがしたい」という思いと、「エンジニアだからといって企画に口出ししちゃいけないわけではない」「むしろ口を出したほうがいい」という気付きから、サーバーサイドエンジニアに戻ることにしました。スキルアップの必要性を感じて、社内の研修組織で約3週間Node.jsやCassandraを学んだのもこのころです。
その後ソーシャルゲームの立ち上げに携わるのですが、当時はまだ以前の失敗を精神的に引きずっていたり、担当していたゲームが次々クローズしてしまったりと、テンションの低い日々を過ごしていました(笑)。なかでも辛かったのは、担当した3つ目のゲームがリリース間際に解散してしまったこと。実はこのとき初めてエンジニアリーダーを任されていたのですが、結局日の目を見ることがなく、失いかけていた自信を更に無くすことに…。
続いて4つ目のゲームでは初めて運用を経験しましたが、これまで携わったサービスよりはるかに大規模だったこともあり、大人数で運用することの大変さを知りました。
結果的にそのゲームもクローズしてしまうんですが、そのタイミングで尊敬していた先輩が退職することになったんです。いよいよ「もう頑張れないかもしれない」と落ち込んでいたときに、その先輩から「上の世代がいなくなったんだったら、お前らが引っ張ってくしかないじゃん」と言われたんです。
その言葉を聞いて、はっとしましたね。先輩に育ててもらえる環境が当たり前になっていたことを、恥ずかしく思いました。そのころからサービスに向き合う姿勢が変わったように思います。「自分が動かないとなにも変えられないんだ」と強く意識するようになりました。
ーーその後どういったきっかけでプレイモーションにジョインし、「CROSS ME」に携わるようになったのでしょうか?
5つ目に担当したゲームがまたもやクローズしてしまい、どうしようかと考えているときに、「マッチングアプリを立ち上げるので一緒にやらないか」と声をかけてくれたのが、プレイモーション代表の平松でした。2015年11月頃のことです。
平松は以前社長室に在籍し、新規サービスの企画アドバイスをしていました。当時私がソーシャルゲームの企画を考えていたことで、接点があったんです。
まず、平松ともう1人のプランナーと私とで、方向性の話し合いから始めました。まだ「すれ違い」というコンセプトも決まっておらず、「恋愛偏差値を出してみるのもおもしろいかも」などひたすら企画を出していきましたね。
悩みながらも「すれ違い」をコンセプトに決め、ようやく具体的な仕様や実現するための方法を考える段階に進みました。
「すれ違い」を技術でいかに実現させるか
2016年1月から本格的に開発がスタート。言語はGoに決めました。社内でGoの事例が増えていたり、サーバーサイドのメンバーが前チームでGoを使っていたことなどがきっかけです。私自身はGoの経験はなかったのですが、とても書きやすくすぐになじむことができました。それまで使っていたNode.jsと比較すると可読性も高く、メンバーが増えたときにすぐ慣れてもらえそうだというのも大きな理由です。
インフラ環境は主にAWSを利用。データストアにはAurora、ElastiCache(Redis)、ユーザー検索や地名検索、ユーザーの位置情報の検索などにはElasticsearchを利用しています。Elasticsearchはmanagedの利用も検討しましたが、当時のバージョンが古かったり、VPC内に置いたほうがなにかと都合がよかったためEC2に乗っていますね。ただ運用面でなかなかしんどい部分があるため、現在は別の方法を検討しているところです。
認証はCognito、画像などの静的ファイルはS3に置いています。
「CROSS ME」最大の特徴である「すれ違い」は、KinesisとLambda、Elasticsearch、Auroraで実現しています。
開発初期はとりあえず動くものをつくらなければと思い、batch処理で定期的に位置情報を取得し、15分に一度更新するという方法をとっていました。ただ一定間隔おきにしかすれ違いが発生しないというのは、ユーザーの満足を得られにくいのではないか?と思い、もっといい方法はないかと悩んでいました。そんなとき社内で相談する機会があり、そこでもらったアドバイスを元に検討して、現在の構成でいくことにしたんです。Kinesis、Lambdaを使うことで、クライアント側から送信した位置情報を特に難しく考えずリアルタイムで処理できるし、ユーザーが増えたときに位置情報が拾われるまでの時間がかかるようなら、shardを分割するだけで簡単にスケールアウトできると考えたからです。
Kinesisは分析などの事例を目にすることが多いので、ユーザーに近い機能で利用しているのはもしかしたら珍しいかも知れません。
(参考:「位置情報を使った「すれ違い」機能の実装 [server]」)
サービスが成功すれば自分の役割はなんでもいい
ーー現在の運用体制を教えてください
専任のマーケティング担当なども含めて約9名です。
リードエンジニアとしてサービスの立ち上げを行う上で、過去の経験は非常に役立っていると思います。過去に企画が頓挫してしまった経験から、リーダーとしてメンバーに方向性を指し示すことの大切さを痛感していますし、立ち上げは苦しいことも多いですが、自分が逃げずにしっかり向き合うことの重要さも、今では十分理解しているつもりです。
ジョイン直後は代表の平松から「早く信頼されるようにがんばってね」と言われていましたが(笑)最近ではなにも言われなくなったので、信頼してくれているのかなと思います。
ーーマッチングアプリを運営する上でエンジニアとして大切にしていることはありますか?
サービスの特性に関係なく、まずはユーザーの皆様に快適にご利用いただきたいので、日々の細かなサービス改善は怠らないようにしています。
マッチングアプリを運営する視点でいうと、18歳以上の年齢確認を行うための免許書提出など個人情報を管理する必要があるので、特にその管理を徹底しています。また、サイバーエージェント独自の監視基盤システム「Orion」を利用して、安全な出会いの場を提供できるようにしています。Orionに監視したい項目のログを投げることで、Orion側のツールに反映。監視メンバーが24h体制でチェックし、Orionのツール上で承認か否認を判断することで、「CROSS ME」側のapiが叩かれてユーザー情報が更新されます。個別の情報の承認否認だけでなく、特定のユーザーが何度も否認される情報を更新している場合には要監視ユーザーとして別軸でチェックし、悪質だった場合には強制退会などの判断をすることもあります。
インターネットでの出会いに対して、世間的にまだまだ不安感があることはもちろん承知しています。そんななか、最近では大手メディアで頻繁にサービスを取り上げていただくなど、追い風を感じていることも確かです。安心して楽しめるサービス運営ができるよう、ますます気を引き締めていきたいですね。
ーー今後「CROSS ME」をどのようなサービスに成長させていきたいですか?
私たちのサービスだけではなく、市場全体を成長させていきたいという気持ちが一番大きいです。出会いの場のひとつとしてマッチングサービスを当たり前に使ってもらえる世の中になればうれしいですし、そのなかでも特に「CROSS ME」を使えばいい出会いがたくさんあるという状態が作れればいいなと思っています。
私は学生のころから「Webを通してリアルな世界をよりよく変えたい」と思っていたのですが、今まさにその思いのまま働くことができていると感じます。自分の技術を社会的意義のあるものに活かせるよろこびは大きいですね。
ーーさいごに今後のエンジニアとしての展望は?
私は元々ものづくりが好きで今はエンジニアという形でものづくりに関わっていますが、サービスがよくなるためなら自分の役割はなんでもいいと思っているタイプなんです。とはいえ、今は自分がサーバーサイドのエンジニアとして技術力を身に付けることがサービスの成長につながると考えているので、この領域をもっと極めていきたいと考えています。
そのためにも、つい疎かにしてしまっている登壇や執筆などの「アウトプット」の部分を、今期はもっとがんばりたいですね。