合同会社Techno Vision AO

連載「YOKOSO PAY の舞台裏」第 1 回

YOKOSO PAY のシステム構成小さく始めて、伸びたら広げる

YOKOSO PAY とは

  • 旅行者・お店・町をつなぐ、町おこしのプラットフォームです。旅のプランづくりから、予約・注文・支払い、帰ったあとのおみやげやお知らせまでを、ひとつのアプリでつなぎます
  • 訪日外国人も、日本人のリピーターも使えます。11 の言語に対応し、アプリのインストールは要りません
  • 飲食・体験・物販・通販のお店と、スタンプラリーや AR の宝探しなどの町のイベントを、同じ土台で動かしています。実際のお店で使われています

はじめに

合同会社Techno Vision AO は、町おこしのプラットフォーム「YOKOSO PAY」を作り、運営しています。

この連載では、ふだんは見えない YOKOSO PAY の舞台裏を、4 回に分けて紹介します。

  1. システムの構成 (この記事)
  2. AI ネイティブな開発体制
  3. 守る・気づく・直す ── セキュリティと運用
  4. 企画から一緒に ── イベントや地域の取り組みへの伴走

第 1 回は、全体の構成です。何をどこに置いたのか、なぜそれを選んだのかを説明します。

YOKOSO PAY でできること

旅の前から旅のあとまで、旅行者・お店・町のそれぞれに機能があります。

どれも、体験版の実際の画面で試せます。

体験版で試す飲食体験物販通販自治体・イベント

全体の構成

YOKOSO PAY の全体の構成
図 1YOKOSO PAY の全体の構成押すと拡大します

構成は、大きく 5 つに分かれます。

部分役割使っているもの
画面お客様とお店が操作する画面Cloud Run
API画面とデータの間で、処理を受け持つ窓口Cloud Run
データ注文や予約などの記録Firestore
定期処理決まった時刻に動く仕事Cloud Scheduler・Cloud Run Jobs
見張り異常を見つけて、運営に知らせるCloud Logging・Cloud Monitoring

外側には、決済の Stripe などの外部サービスがあります。ここからは、それぞれを選んだ理由を説明します。

画面: アプリを入れずに開ける

AR: ブラウザだけで動く宝探し

API: 共通の機能をまとめて、保守しやすく

データ: 変化がすぐ画面に届く

決済: カード番号を持たない

定期処理: 人が忘れても止まらない

決まった仕事は、人の手ではなく、時刻で動かします。「忘れずにやる」は、いつか必ず抜けるからです。

AI: メニューを訳す・写真から読み取る

エンジニアの方へ: Google Cloud の構成図

ここまでの内容を、Google Cloud のサービス名で描くと次のとおりです。

YOKOSO PAY の Google Cloud 構成 (現在)
図 2YOKOSO PAY の Google Cloud 構成 (現在)押すと拡大します

お金のトラブルを防ぐ ── 返金・二重払い・チャージバック

カード決済でもめやすいのは、決済そのものより、その前後です。「二重に払ってしまった」「返金したはずが返っていない」「身に覚えのない請求だと言われた」。YOKOSO PAY は、こうした場面まで仕組みで受け止めます。

二重に払わせない

返金を確実に

チャージバックに備える

チャージバックは、カードの持ち主が「身に覚えがない」とカード会社に申し立てて、支払いが取り消されることです。

お店の売上を守る

実装中のこと

次の 4 つは、いま作っているところです。

YOKOSO EC: 同じ土台に、通販を足す

体験版: 誰でも試せる入口を、本番から切り離す

紹介ページの「体験版」では、お店とお客様の両方の立場で YOKOSO PAY を試せます。業態 (飲食・体験・物販・通販) を選ぶと、お店の画面とお客様の画面が左右に並びます。注文から会計までを、1 人で体験できます。

体験版: biz.yokosopay.com/trial

体験版を本番から切り離す構成
図 3体験版を本番から切り離す構成押すと拡大します

誰でも使えるので、作るときに 2 つの課題がありました。

課題 1: 同じブラウザで、店員とお客様が混ざる

1 つのブラウザに 2 つの画面を並べると、ログインの情報が混ざります。お客様の画面なのに、店員として動いてしまうことがあります。

解決2 つの画面を、別のドメイン (アドレス) で表示しました。ブラウザはドメインごとに記録を分けるので、店員とお客様は別の人として扱われます。

課題 2: 誰でも使える入口から、本番に届いてはいけない

体験版の API は、誰でも使える入口です。本番と同じ権限で動かすと、体験版に弱点が 1 つあるだけで、本番のデータや決済の鍵に届いてしまいます。

解決体験版は、本番とは別の環境で動かしています。

使われた分だけ費用がかかる仕組みなので、体験用のお店を常に用意しておく必要もありません。

エンジニアの方向けに、Google Cloud のサービス名で描くと次のとおりです。

体験専用の環境の Google Cloud 構成
図 4体験専用の環境の Google Cloud 構成押すと拡大します

これからの構成 ── 今は小さく、伸びたら広げる

今は小さく、安く

利用の規模に合わせて、今の構成はあえて小さくしています。

土台にしているサービスには、毎月の無料枠があります。超えた分も、使った量に応じた小さな単価です。

サービス毎月の無料枠超えた分の料金
Cloud Run (画面と API)200 万リクエスト、CPU 18 万秒、メモリ 36 万 GiB 秒100 万リクエストあたり $0.40。ほかに、処理にかかった秒数に応じて
Firestore (データ)1 日あたり読み取り 5 万回・書き込み 2 万回、保存 1 GiB10 万回あたり数セント

金額は Google Cloud の公開価格です (2026 年 10 月時点、米ドル)。

伸びたら、速く・強く

小さく始めても、伸びたときに作り直さずに済むことが大事です。何をどの順で足すかは決めてあり、どれも今の作りのまま足せます。

YOKOSO PAY の Google Cloud 構成 (これから)
図 5YOKOSO PAY の Google Cloud 構成 (これから)押すと拡大します
順番足すもの切り替えの目安
1見張り: サービスが止まった・エラーが増えた・遅くなったことに気づく仕組み (外形監視・Error Reporting)近いうちに。費用はほとんどかかりません
2待機する台数と、台数の上限: しばらく使われなかった後の最初の表示も速くし、混んでも詰まらないようにする導入してくださるお店が増え、営業時間中ずっと使われるようになったら
3Cloud CDN: 画面のファイルを、利用者の近くから配る仕組み。CDN から返した分はサーバまで届かないので、利用が多いほど費用も抑えられる実際に使うお客様が増え、画面を開く回数が多くなったら
4入口の守り: ロードバランサと Cloud Armor (不正なアクセスやボットを止める仕組み)取引の規模が大きくなり、狙われる心配が増えたら

足したときに毎月増える費用は、公開価格から次のように試算しています (1 ドル 150 円で計算)。

足すもの毎月増える費用の目安
見張りほぼかかりません。外形監視は毎月 100 万回まで無料、Error Reporting は無料です
待機する台数CPU 1 つ・メモリ 0.5 GiB の台を 1 台待たせて、月 $10 前後 (約 1,500 円)
Cloud CDNロードバランサが月 $18 前後 (約 2,700 円)。ほかに配った量に応じて、アジア向けは 1 GiB あたり $0.09
Cloud Armor守りの設定 1 つで月 $5、ルール 1 つにつき月 $1。ほかにリクエスト数に応じて

最初から全部を入れると、本番だけで月 $40 前後 (約 6,000 円) の固定費が、使われていなくてもかかり続けます。検証や体験の環境にも入れれば、その数倍です。

どれも、使ってくださるお店とお客様の増え方を見ながら、困ることが起きる前に足します。 足すときは、上のように費用も見積もったうえで決めます。Cloud Run は混み具合に応じて自動で台数を増やし、ロードバランサの後ろにもそのまま置けるので、足すときに画面や API を作り直す必要はありません。

まとめ

次回は、この仕組みを少人数で速く作りながら、壊さないための開発体制を紹介します。AI のエージェントの使い方と、人が確かめているところも書く予定です。

ご意見・ご相談

構成へのご意見や、「うちの地域やイベントで使えないか」「こんな仕組みを一緒に作れないか」というご相談をお待ちしています。

お問い合わせのフォーム

YOKOSO PAY

旅行者・お店・町をつなぐ観光アプリ

YOKOSO PAY のご紹介を見る