カジノがない日本で、世界最先端のポーカールームシステムを作ってしまった話。
「俺たちは今、世界最先端のシステムを作ってる」
と、世界のヨコサワは言った。
「来場者が全員アプリを持っていて、そのアプリと連動してトーナメントの戦績管理、シート移動、オーダーの提供も一貫してできる仕組みなんて、世界のどこに行ってもない」
本場ラスベガスをはじめとして、世界中のカジノを回ってきたヨコサワさんがそう言うんだから、たぶんマジだ。
これは採用のための文章で、僕たちと一緒に真剣になれるソフトウェアエンジニアのあなたにPOKER ROOMの開発チームの姿を知ってほしくてこの文章を書いている。次のメンバーは自分かもしれないと思ったら、そういうつもりでぜひ読んでみてほしい。
全部読むまで待てない!というアツい人 → 採用応募フォームはこちら
小さなチーム、大きな仕事
僕はふじとかふじくんとかPOKER ROOMで呼ばれている。CTOとして技術開発全般を担当している。
正直に言うけど、POKER ROOMの開発チームはまだ小さい。自分を含めて4人。あと、ヨコサワさん。あなたポーカーとか撮影とかめちゃめちゃやることあるのにそんな暇ないでしょ、って言いたくなるぐらい、開発の僕たちと仕様や優先順位やリリースの話をしてる。
(写真はROOTS REWARDSの開発会議の様子。1人はリモート)
開発チームは、アプリ、予約システム、WEBサイト、ROOTSで使われるチェックイン・注文システムやトーナメントタイマー、そしてその土台となるユーザー認証基盤、決済基盤などのほぼ全てのソフトウェアを開発・運営している。ROOTSに来場される数千のお客様たちの体験を支えるという、大きな仕事だ。
技術構成としては、GolangによるAPIサーバーをECSで配信し、React.jsでアプリ、Vue.jsでWEBサイトや管理システムを運用する形をとっている。
この仕事は楽しい。僕たちが作るシステムは常に使うお客様がいて、自分たち自身もファンであるROOTSで直接使っている人の声を聞きながら改善や施策のリリースができる。フィードバックサイクルの速度がめちゃくちゃに早く、しかも直接的なので、いいものを作ればすぐに声が返ってくるし、中途半端なものを作ると微妙な顔をして使っている人の顔が見える。
「アプリ、便利ですよね」って、自分たちが作っているアプリを目の前で使ってもらいながら言ってもらえるなんて、開発者なら誰でも体験してみたいことの一つじゃないだろうか?
そんな、僕が大好きなPOKER ROOM開発チームの歴史の一部を、今日は書いてみたいと思う。
なにもない、からのはじまり
「スマート店舗を作りたい」とひろきが言ったのがはじまりだった。「ROOTSから意味のない紙とペンを排除しよう」と。
ひろきは、そのためにWSOPで獲得した3,500万円の賞金や、そのとき注ぎ込める資金の全てを突っ込んで、すばらしいキャストや開発者がいないと成り立たないポーカールームを作ろうとしていた。
で、ヨコサワさんが「ふじくんがいないと出来上がりません!!」とかいう。いや、そりゃそうだろうよ、まだ開発者いないんだもん。
無茶苦茶だと思った。あまりにも無茶苦茶だったので、僕は、その話に乗ることにした。
まずは仲間が足りない。ひろきが、ヨコサワさんが作ろうとしているものは、開発者ひとりで支えられるような小さなものではなかった。もっともっと仲間がいる。
そこから僕たちの仲間集めは始まった。
日本にカジノを作ります。という動画が公開されたのはその後のことだ。
逸材、揃う。そしてリリースへ
POKER ROOMは延べ4,000人を超える応募者に恵まれ、その中にはソフトウェアエンジニアからの応募も多数含まれていた。システムに関する情報なんてほとんど出してないのに、備考にGitHubのリポジトリを添えてくれる人もいた。
たくさんの面接を重ね、弱冠22歳にして圧倒的な表現力とスピード感を武器にするフロントエンドエンジニアのおか、なぜかディレクションまでこなす京大卒サーバーサイドエンジニアの山崎さんをチームに迎えることを決め、僕たちはリリースに向けて走り始めた。
残り1ヶ月ほどで、WEBサイト、予約システム、アプリ、ROOTSで利用するシステムなどの全てを作り上げないといけなかった。特にアプリはスケジュールが厳しく、公開に向けた申請を考慮すると本当に数週間もなかった。
正直この頃のチームはおかしかった。アプリ申請まで数週間って参加してすぐに言われたら普通即答で無理ですって言う。でもそうならなかった。
おかが「Reactなら何とかなると思います」とか言い出して、3日後にほとんど動いているアプリがデモされた。「あとはAPI接続したらいけると思います」とか言ってる。嘘だろ。マジか。
じゃあAPIは? という話になると、山崎さんが「いや、もう必要なのは全部できてますね」と言う。え、何十個も作るやつあったでしょ。マジか。
動くものを3日で上げてくるフロントエンドエンジニアと、大量のエンドポイントを一気に仕上げてくるサーバーサイドエンジニア。逸材が揃ったことが明らかになった瞬間だった。
とはいえ、だ。ソフトウェア開発は動いてからが長い。続く懸念は、クオリティの磨き込みとセキュリティだった。社内総出でアプリの検証環境を触りながらフィードバックを受けて品質向上に取り組んでいたが、非機能要件(アプリの動作以外の、セキュリティや安定性などを担保するための要素)は十分な状態とは言えなかった。
ここでも僕たちは逸材に恵まれた。SREエンジニアのてっちゃんが内定し、リリース目前のチームに参加した。てっちゃんは前職で数十億円規模の流通を誇るサービスの決済システムを担当しており、セキュリティに対する知見も深かった。
最後の不安要素だったセキュリティに磨きをかけて、不正決済などのリスクを入念につぶし、僕たちはついにリリースの日を迎えた。
テレビ放映レベルのアクセスを捌く
5月29日。開発チームは、ROOTSというプロジェクトの凄さを思い知ることになる。
この日は、日本にカジノを作りました。という動画の公開と同時に、ROOTSのプレオープン抽選の受付を始めることになっていた。
ひろきと話して、累計で数十万のユーザーが集まる可能性がある、と見立て、システムの強化が必要であると判断し、対応を進めていた。テスト環境ではオーバースペックすぎて絶対に用意しないようなデータベースに切り替え、接続テストを進める。事前の準備が勝負だった。その規模ならテレビ放映と同じつもりで備えなければならない。
世界のヨコサワチャンネルでは、 yokosawa.shop というオフィシャルグッズのECサイトが公開時にサーバーダウンした前例がある。二の舞にならないよう、十分すぎるほどにサーバーを強化して臨むことにした。
リリース直前、「さすがにこんなハイスペックじゃなくていいと思うんですけどね」とてっちゃんが言い、僕も「まあ、あとでスペック落とそう」と話していた。だが、動画のリリースとともに、予想は見事に外れた。
動画の公開時のWEBサイト及びアプリのアクセス数は、テレビでのCM放映と同じぐらいの規模が出ていた。アクセスログのグラフは垂直に跳ね上がり、サーバーのCPUやメモリの使用率が上がっていく。
ここでドラマなら事故でも起こるところだが、リリース後はむしろ安定して受付を行うことができた。誤算だったのは、やりすぎだと思った備えが全然やりすぎではなかったことだった。
最終的に、ROOTS SHIBUYAは、5,000名に迫る事前抽選への申込をいただいた。
決済システムが止まった日
お客様に恵まれ、順調かに思えたリリース後のROOTSだったが、POKER ROOM開発チーム史上最大のトラブルに見舞われることになる。
決済代行会社からの、決済システムの提供中止だ。
ことの始まりは朝7時。
決済代行会社から届いたメールに目を疑った。「決済はもう止めた。今後の新規決済は一切受け付けない」という旨のことが書いてあった。
ヨコサワさんのツイートにもある通り、ギャンブル利用のために決済システムを利用していると判断されて、利用規約に抵触するとして利用停止になった、という内容だった。
ROOTSは法律を遵守して運営していて、金銭的報酬にあたる景品などは提供していないため、まったくの誤解だ。
しかし決済を止めたと言われている以上、発覚した時点で当日の営業に支障が出ることは明らかだった。事前の打診や予告なしの決済停止で、備える手段もなかった。
そこからは、営業開始まで4時間半の勝負だった。それまでに、お客様にROOTSを楽しんでもらうために必要なことを、全て終わらせなければいけなかった。
営業を継続するため、始業までに完了すべきだったことは三つあった。
・クレジットカード決済導線を除外し、現金決済のみの仕組みにすること
・予約の新規受付停止
・WEBサイトへの告知
おか、山崎さん、てっちゃんに電話やメンションを繰り返し、始業時間を早めて総出で対応に当たり、なんとか開発側の対応を終えた。
お客様のご理解と、ROOTSのキャストの皆さんの尽力のおかげもあり、ROOTSは営業を続けることができたが、本当に間一髪だった。
そこからは更に、予約受付再開に向けた開発が必要だった。
・来場時に現金決済で予約できるよう予約システムを変更
・切り替え先の決済代行会社と連携する決済システム開発
・誤解を解いて決済停止を解除
特に決済システムの切り替えは、数ヶ月単位の期間を要することもある難易度の高い開発だ。
一刻も早くお客様に元どおりの体験を提供したかった僕たちは、1週間後に予約受付再開、2週間後にクレジットカード決済再開を実現した。これはちょっと他の開発チームでは見たことないレベルだと思う。(そもそも、決済システムが止まる経験自体もめちゃめちゃ稀だと思うけど)
その後、継続的な説明により、もともと利用させてもらっていた決済代行会社からも改めて利用許諾をいただき、晴れて誤解も解けて、一件落着、となった。自分たちの提供しようとしているクリーンなポーカーが認められたように感じられて、とても嬉しかった。
世界最先端のポーカールームシステム
そんな出来事を乗り越えて、ROOTS REWARDSに向けた開発会議をしているときのこと。
「来場者が全員アプリを持っていて、そのアプリと連動してトーナメントの戦績管理、シート移動、オーダーの提供も一貫してできる仕組みなんて、世界のどこに行ってもない。俺たちは今、世界最先端のシステムを作ってる」
とヨコサワさんが言った。
確かに、ROOTSではアプリに予約・チェックイン・注文・戦績管理などの機能が一元化されていて、様々な体験をシームレスにつないでいる。
例えば、フードの注文をしてから席を移動しても、注文した商品は移動した先の席まで届くことや、トーナメント終了時にアプリに戦績が反映され、その日のうちにランキングが公開されることは、実はお客様が全員アプリを持っていて、同じシステムにROOTSのシステムがつながっているからできることだったりする。
面白いのは、ソフトウェアだけ扱う人にとってはあまり珍しいことではない「データがシームレスにつながっている状態」が、リアルの場に持ち込まれると世界に前例のないシステムになるということだと思う。
ひろきやヨコサワさんが見てきたカジノの体験に、テクノロジーの力を加えることで更に進んだ体験を目指したくて作ったもので、そうなるように仕込んでいたのだという。
つまり開発チームは、まんまとひろきとヨコサワさんの思惑に乗せられて、自覚なく「最先端」の仕組みを作っていたわけだ。マジか。
POKER ROOMという会社は面白すぎる
ソフトウェアエンジニアリングの知見をポーカーの世界に持ってきて、世界最先端のシステムを磨き上げていくって、面白い。面白すぎてやばい。
POKER ROOMはいつも文化祭前夜みたいな感じで、あまりにも楽しんでやっているので時々こんなに楽しくていいのかと心配になるぐらいだ。
同時に、いつだってお客様の体験に対して真摯で、体験を妥協した実装も、体験価値の低い企画も、めちゃめちゃストレートにダメ出しされて、その場でわいわい話しながら改善されていく文化がある。そして徹底してお客様の声を聞きにいくし、そのことで施策の良し悪しを一所懸命見定めようとしている。
僕はそんなPOKER ROOMが好きで、だからもっとここでチャレンジしたいと思える。
やりたいことが多すぎる!!
ROOTSは先日ROOTS REWARDS Season.0 BETAを発表し、様々な機能がリリースされることを公表したばかりだ。
ポーカーの魅力を色んな人に知ってもらい、ポーカーを文化として広めていきたいという思いで取り組んでいて、まだまだやりたいことがたくさんある。
僕たちのタスクリストには山ほどやることが積まれていて、優先順位をしっかり選んでやっているのにタスクリストは増えていく一方だ。新規テーマの機能開発、既存機能のブラッシュアップ、非機能要件の充実、ソフトウェアの品質アップなど枚挙にいとまがない。やりたくなったらどんどん積んでいくので半分くらいは自分たちで積んでいるタスクだったりする。
早くこの機能もあの機能も作りたすぎて、毎日手が足りないので歯を食いしばってやることを選んで対応しているような状況だ。
そう、POKER ROOMには、俺たちと一緒に夢中になってくれるソフトウェアエンジニアがもっと必要なんだ。
なので、やりたいこと、もっともっと進める仲間を探しています。
というわけで、採用応募フォームはこちら。
我こそは!という方のご応募、ご連絡お待ちしております!