4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

新しいお店を開拓したいけど一歩が踏み出せない人のためのアプリ『Roamble』をベータ版公開しました

4
Last updated at Posted at 2026-03-08

はじめに

こんにちは、ひるげです。

「気になっているカフェの前を通り過ぎて、結局いつものチェーン店に入ってしまう」
そんな経験、ありませんか?

自分自身がこの課題を強く感じていたので、コンフォートゾーン脱出を後押しするアプリ「Roamble」を開発し、昨日Webベータ版を公開しました。

この記事では、Roambleベータ版の開発で実践した技術選定・実装・インフラ構成について紹介します。「個人開発でどう技術を選ぶか」「無料枠でどこまでできるか」に悩んでいる方の参考になれば幸いです。

Roambleとは

Roambleは、現在地周辺のスポットが提案され、実際に訪問すると経験値(XP)が貯まる...
そのループで「新しい場所への一歩」を後押しするWebアプリです。

技術構成の全体像

カテゴリ 技術
フロントエンド React (TypeScript), Vite, Tailwind CSS
バックエンド Go (Gin)
データベース MySQL(TiDB Cloud Starter)
キャッシュ Upstash Redis
インフラ Cloudflare Pages + Cloud Run(東京リージョン)
外部API Google Maps Places API

iOS化を見据えた技術選定

Roambleは最初からiOSネイティブアプリ化を視野に入れて開発しています。そのため、技術選定でも将来の移行コストを意識しました。

フロントエンド: React(TypeScript)

最終的にはReact Nativeでネイティブ化する予定です。ReactとReact Nativeはコンポーネントの考え方が共通しているため、Web版で培ったUIロジックやカスタムフックを活かしやすくなります。react-native-web による共通化も選択肢に入ってくるため、最初からReactを選んでおくメリットは大きいです。

バックエンド: Go(Gin)

GoはAPIサーバーとして十分な実績があり、スケーラビリティにも優れています。
フロントエンドをReact Nativeに移行してもバックエンドはそのまま流用できるため、長期的な観点でも安定した選択です。

TinderライクなカードUIの実装

Roambleのコア体験の一つが、カード形式でのスポット提案です。スワイプしながらどこに行くか考えられるTinder風のUIを採用しています。

実装にあたって、こちらのZenn記事のアイデアを参考にしました。特に「カードの移動距離が閾値を超えたら次のカードに飛ばす」という判定ロジックの考え方は非常に参考になりました(コード自体は別途実装しています)。

実装のポイント:

  • ドラッグ中のカード角度をリアルタイムに変化させてフィードバック
  • 閾値を超えたらアニメーション付きで次カードへ遷移

Duolingoを目標にしたゲーミフィケーション設計

訪問記録の動機付けとして、ゲーミフィケーション要素を取り入れています。ここで参考にしたのがDuolingoです。

Duolingoが習慣化に優れている理由は「小さな成功体験の積み重ね」と「視覚的な進捗表現」にあると思っています。Roambleでも同じ設計思想を採用しました。

実装した要素:

  • XP・レベルシステム: 訪問するたびに経験値が貯まり、レベルアップ。称号も変化
  • バッジ: 「最初の一歩」「ジャンルコレクター」など、特定の条件を達成すると獲得

「怖かったけど行けた」という体験が数値として積み重なることで、次の一歩を踏み出す理由になる、そういう設計を目指しました。
まだDuolingoの足元にも及びませんが、今後もゲーミフィケーションの強化は続ける予定です。

できるだけ無料でデプロイできる環境選び

インフラ選定については、以前書いた以下の記事で詳しく解説しているので、合わせて読んでいただけると嬉しいです。

Roambleでは上記の記事内でも示した、以下の構成を採用しています。

カテゴリ サービス
フロントエンド Cloudflare Pages
バックエンド Cloud Run(東京リージョン)
DB TiDB Cloud Starter
キャッシュ Upstash Redis

ベータ版の規模(テスター数十人)であれば、この構成で完全無料で運用できるものと考えています。

パフォーマンス改善: Render→Cloud Run移行

開発初期はバックエンドをRenderの無料枠でホストしていましたが、本番公開前にCloud Run(東京リージョン)へ切り替えました。

理由はシンプルで、Renderの無料枠はサーバーがシンガポールにあるため、日本のユーザーへのレスポンスが遅くなる点が気になっていました。

実際に同じAPIエンドポイントでTTFB(Time To First Byte)を計測したところ:

TTFB
Cloud Run(東京リージョン) 226ms
Render(シンガポール) 363ms

約137msの改善。体感でもはっきりわかるレベルの差でした。

Cloud RunはDockerfileをデプロイする形式のためRenderより設定のハードルはやや高いですが、無料枠が月200万リクエストと余裕があり、東京リージョンを選べる点でRoambleには最適でした。

おわりに

Roambleはまだベータ版で、改善したいことが山積みです。ゲーミフィケーションの強化、提案のAI利用やパーソナライズ、そしてiOSネイティブアプリ化を目指しています。

ベータ版リクエストは以下から送信できます。
リクエストフォームの受付は2026年3月14日(土)に締め切る予定です。
使ってみた感想やフィードバックがあればぜひお寄せください。

以上が、Roambleベータ版の技術選定と構成の紹介になります。参考になれば幸いです!

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?