本文へスキップ
作品一覧
公開中 · ベータ

puny-chat

1対1のメッセンジャーに、ふたりのあいだで暮らす小さなドットの生きものがいます。話して、ごはんをあげて、おそうじして、育っていくのを見守ります。

デスクトップブラウザのpuny-chat。チャットの上の小さなステージにバディがいる
なに
iPhone + Webアプリ · 韓国語 / 日本語 / 英語
開始
2026年
担当
ひとりで
動いている場所
Railway + MongoDB Atlas、シンガポール

概要

puny-chatは、ちょうどふたりのためのメッセンジャーと、そのあいだで暮らす小さな生きものです。おなかがすいて、散らかして、たくさん話すほど育ちます。AIのプロンプトも毎日のミッションもありません。ただ、ふたりで小さなものを世話するだけです。

名前だけでゲストとして始めて、8文字の招待コードで友だちをひとり招待します。同じExpoアプリがiPhoneとWebで動き、Webアプリはホーム画面に追加して通知も受け取れます。50秒のデモでは、ログインなしでたまごが育つ様子を見られます。

できること

リアルタイムチャット
再接続すると見逃したメッセージを埋め、再送しても届くのは一度だけ。入力中・既読・オンライン表示つき。
育てるバディ
たまごから赤ちゃん、子ども、おとなへ。時間がたつとおなかがすいてうんちもしますが、数日放っておいても死にません。
かんたんなお世話
ごはん皿やうんちをタップするか、チャットに「ごはん」と送るだけ。誰がお世話したかは会話に残ります。
気分のあるバディ
ひとりにしておくと踊ったり歌ったり。子どもになると「ひさしぶり!」「ごはん食べた?」と話しかけてきます。
ふたりだけ
登録なしで始めて、Googleはあとから連携。招待コードはひとつ、部屋はふたりまで。
どこでも
まずはiPhone、同じアプリがWebでも。ホーム画面に追加すればプッシュ通知も。韓国語・日本語・英語、ライトとダーク。
新しい部屋。バディが生まれて、友だちを招待するボタンがある
8文字の招待コード
会話のあいだにバディのできごとが入るチャット
バディの詳細。経験値、おなか、きれいさ、ごはんとおそうじのボタン

つくり

アプリ
Expo (React Native) · TypeScript · Expo Router — iPhoneとWebをひとつのコードで
サーバー
Java 25 · Spring Boot 4 · WebFlux · WebSocket
データ
MongoDB Atlas
認証 · プッシュ
Firebase Authentication · Expo push · Web Push (VAPID)
インフラ
Railway(サーバー)· Cloudflare Workers(Web)· Terraform、stateはR2 · GitHub Actions

メモ

バディは見たときに計算する

おなかとうんちは保存もスケジューラーでの更新もしません。誰かが部屋を開いたときに、最後のごはんとおそうじの時刻から計算します。

トランザクションなしで一度だけ

クライアントのメッセージIDのユニークインデックスで、再送しても同じメッセージが返ります。条件つき更新なので、ふたりが同時にごはんを押しても一回分です。

既読を見てからプッシュ

3秒たってもまだ読まれていないときだけ、iPhoneにもWebにもプッシュを送ります。Web Pushの暗号化と署名は、追加ライブラリなしでJDKだけでやっています。

小さなアプリに小さなインフラ

最初はUR checkと設定を共有してAzureで動かし、月2,000円ほどでした。いまはRailway、Atlasの無料枠、Cloudflareで、すべてひとつのTerraformにまとめています。