ゆうなぎ日記

日常を綴る

Catalyst という個人サービスを2年やっています

こんにちは、夏猫です。この記事はバーチャルケモミミ Advent Calendar 2025 21日目の記事です。

わたしは2年程度 Catalyst という VR-SNS 向けフォトシェアリングサービスを開発、運営しています。

catalyst.natsuneko.com

技術スタックの紹介

技術スタックとしては、以下のような構成になっています。 SaaS モリモリですね (コストもモリモリです)。

一応 FANBOX で支援いただいているおかげで黒字運営になっています。ありがとうございます! 構成図を書いてみると、こんな感じになっています。最近は iOS ネイティブクライアントも開発しているので、 api.natsuneko.com へ直接アクセスしているケースもあります。

構成図

メインである catalyst.natsuneko.com 、 API サーバーである api.natsuneko.com、アカウントサービスである accounts.natsuneko.com は Vercel 上の Next.js App Router で、 citlali.natsuneko.com での画像配信は Cloudflare Workers で最適な画像サイズ、フォーマットへ変換した後、 Cloudflare ネットワークを介して配信されます。 ストレージバックエンドにはほとんどのケースで Cloudflare R2 を、一部軽量画像については Cloudflare Images で直接配信しています。前段に Cloudflare Workers を通している理由としては、 Cloudflare Images は画像のキャッシュ効率がいまいち (おそらく結構な頻度で画像の再圧縮が行われている) で、配信速度が十分な速度を満たせなかったため、 Cloudflare Workers 上で事前にいくつかのパターンの画像を生成し、 R2 へ格納することで、2回目以降の問い合わせを高速で行っています。

Catalyst では、画像のメタデータを解析して保存する機能もあるので、それらの画像については Cloudflare R2 のアップロードイベントなどを経由して Workers へ問い合わせ、解析を行っています。

解析されたメタデータ。拒否しない限りは自動で付与されます。

IdP には海外の Passkeys ネイティブ対応の Hanko.io というサービスを使っています。 Auth0 に比べて安価で、かつ Passkeys 対応が早かったことから採用しています (パスワードなんて持たないのが一番ですからね)。が Auth0 と比べるとログインに使える OAuth プロバイダーの選択肢がかなりビジネスよりなこと (GitHub, Microsoft, LinkedIn など......) と、そこそこの頻度で障害が起きたりするので、なんとも言えない気分になります。

データベースとしては MySQL サーバーには PlanetScale を、 Redis キャッシュには Upstash Redis を採用しています。 PlanetScale は2〜3年前は無料だったんですが、有料化してしまって、特に移行することなくそのまま払い続けています。しかし Primary と Replica 2台が付いて 49USD/mo ということで、まぁ許容範囲かなと言う感じ。実際には Catalyst のみでなく、他サービスのデータベースも一緒に住んでいるので、 Catalyst 単体で見るともっとコストとしては安い想定です。

PS-10 で運用しています。 MySQL コンパチ最小プランですね。

Upstash Redis にはキャッシュデータとして、トレンド機能の提供や、iOS ネイティブクライアントのアクセストークンの有効性の確認などを行っています。こちらは Pay as You Go プランで、こちらは Redis の容量とコマンド問い合わせ回数による課金です。今のところかかっているコストはおおよそ 〜2USD/mo という感じ。安いと 1USD 行かないケースもあります。

今月のコスト、約 2USD

フロントエンドの CSS フレームワークには、 TailwindCSS と shadcn/ui を採用しました。サービス開始当初は自前でデザインしていたのですが、思ったより整合性を取るのが大変なので、最終的には shadcn/ui に落ち着きました。 TailwindCSS はわたしが CSS 書くのが苦手だから採用しています。 HTML がやんちゃになる代わりに、 CSS のスコープやセレクターの名前付けから解放されます。

やんちゃな HTML

Next.js は App Router を採用しています。最近は React2Shell なんかで話題になっていた RSC を結構使っています (うちのサービスたちは対策済みです)。主に Googlebot 向けの SSR 用途でですが、そもそも画像中心のサービスというのもあって、インデクシングする文章も少ないですし、実は SSR しなくても良いのでは?という気持ちもあったりします。

検索エンジンには Meilisearch を採用しています。 Meilisearch は軽量で高速な検索エンジンです。これは Oracle Cloud 上で運用している自前 k8s クラスタ上で運用しています。なんと無料枠で収まる。 (クラスタ含め) アップデートが難しいことが難点ですが、Meilisearch Cloud では 30USD/mo が最低ラインだと考えると、多少の手間は許容できるでしょう。

コストの話

コストとしてはちまちま紹介してきましたが、次のモノがベースラインとして乗っかってきます:

  • PlanetScale 49USD/mo
  • Hanko.io 29USD/mo
  • Cloudfalre Workers 5USD/mo
  • Cloudflare Images Storage 5USD/mo
  • Vercel Pro 20USD/mo

ここに従量課金として

  • Cloudflare R2
  • Cloudflare Workers 
  • Upstash Redis

が数ドル程度、かかってくるイメージです。月120USDちょい。だいたい月2万円行かないくらい。結構かかっていますね。データベースが一番高いですが、先に述べたとおりいろいろなサービスが同一のデータベースを共用していること、 Vercel Pro も十数サービスが同居していることを考えると、 Catalyst 単体ではもっとコストは低いと考えられます。ところで 120USD が2万円くらいになるなんて、円安許せなく無いですか?悲しい。

今後の話

今後はコストを下げたい気持ちはありつつ、まずは Catalyst のユーザー増を狙っています。ユーザーが増えればユーザー当たりのコストも減るので。今は毎日投稿してくれるユーザーがいたり、リアクションもしてくれるユーザーがいるので、そういったユーザーを増やしつつ、インターネットの隅で開発・運用していきたいですね。

ということで

ということで、バーチャルケモミミ Advent Calendar 2025 21日目の記事でした。明日の記事はまどさんで、「全身で風を感じろ!バイクで行く旅行(ツーリング)の良さとスポット、注意点」です。楽しみですね。 また、裏で Catalyst Advent Calender 2025 もやっております。皆さん良い写真を投稿されているので、是非見ていってください!

Catalyst で振り返る Resonite の1年

こんにちは、夏猫です。 Catalyst という VR プラットフォームの写真投稿サービスを運営しています。

catalyst.natsuneko.com

Catalyst では他のプラットフォームの写真よりも Resonite の写真が多くアップロードされているという傾向があり、うまくデータを処理することで何があったのか、どんな投稿が多かったのかなどを振り返れるかと思ったので、振り返っていこうと思います。 ちなみに各種投稿は

catalyst.natsuneko.com

からも見ることはできます (わたしは BI システムの Redash を用いて解析しています)。

1月

今年初めの Resonite 関連の投稿は、 ankou さんのあけおめ投稿でした。

catalyst.natsuneko.com

Resonite では今年も年越しイベントを開催されるようなので、もし時間が合う方は参加してみてはいかがでしょうか。 他には年始め VRTRPG セッションの様子を投稿されていたり、

catalyst.natsuneko.com

あけおめ兼年始にやっていた年末年始コンテストの投稿だったりがありました。

catalyst.natsuneko.com

2月

2月には、 Catalyst の Resonite 内クライアントを作っていただいたので、皆で眺めていたり、

catalyst.natsuneko.com

MMC25 があったり、

catalyst.natsuneko.com

おしゃれなクラブイベントの投稿があったりしました。

catalyst.natsuneko.com

3月

3月には VRTRPG フォトコンテストが開催されたというのもあってか、 VRTRPG 関連の投稿が多めでした。

catalyst.natsuneko.com

catalyst.natsuneko.com

MMC25 のワールドが出揃い、ワールド巡りもされていた様子です。

catalyst.natsuneko.com

catalyst.natsuneko.com

Shadowed Cove はわたしも行きました。アイテムを強奪(?)したり魔法の壺になんでもかんでもいれたのを覚えています。

前回のブログで紹介したわたしお気に入りのストラトシャウトの投稿も3月でした。

catalyst.natsuneko.com

4月

4月は Nintendo Direct を皆で見ていました。たぶんエアライダーの発表がこの辺だったはず。

catalyst.natsuneko.com

春らしい楽しい投稿もあったり、

catalyst.natsuneko.com

個人的なことですがわたしのアバターをいろいろいじって貰ったのもこの時期の様子。ありがとうございました。

catalyst.natsuneko.com

5月

YOUR さんとオレンジさんの配信を眺めたのは5月のようです。

catalyst.natsuneko.com

VRTRPG の写真は定期的に上がっています。

catalyst.natsuneko.com

6月

喫茶かっこうの様子が上がっていたり

catalyst.natsuneko.com

catalyst.natsuneko.com

YOUR さんと MotoMaid さんとの配信もこの時期だったようです。

catalyst.natsuneko.com

7月

7月と言えば七夕ですよね!ということで、 Resonite 内の笹にみんなで飾り付けをしたり

catalyst.natsuneko.com

catalyst.natsuneko.com

怪しい写真を撮影したり

catalyst.natsuneko.com

夏休みフォトコンもあったので、夏らしい写真が上がっていました。

catalyst.natsuneko.com

8月

8月も夏休みフォトコンの影響があって夏らしい投稿が上がっていました。

catalyst.natsuneko.com

catalyst.natsuneko.com

エアライダーダイレクトを皆で見たりもしました。

catalyst.natsuneko.com

高校?野球の季節でもありますね!

catalyst.natsuneko.com

9月

VRTRPG は相変わらずされていたり。

catalyst.natsuneko.com

catalyst.natsuneko.com

10月

Resonite の非公式?周年イベントで、モザイクアートがあったりしました。

catalyst.natsuneko.com

喫茶かっこうも元気に営業中です。

catalyst.natsuneko.com

11月

11月は体操系イベントや、毎朝の挨拶など、日常系の投稿が多い月でした。

catalyst.natsuneko.com

catalyst.natsuneko.com

catalyst.natsuneko.com

その他

ちなみに konto さんは1月から12月まで皆勤賞を取っていました。いつもありがとうございます!

catalyst.natsuneko.com

おしまい

ということで、 Catalyst の投稿で Resonite に2025年あった出来事を振り返ってみました。 Catalyst では VRTRPG 関連の投稿が Resonite 系の投稿の中でも多く、その次に日常系イベントの投稿が多かったという感じがしています。 イベントも公式イベントだったり非公式イベントだったり、ユーザーイベントだったり様々ありました。 こうして振り返ってみると、Resonite の一年は「特別なイベント」と「何気ない日常」が自然に混ざり合いながら積み重なっていたことがよく分かります。 VRTRPG や各種イベントで盛り上がる瞬間もあれば、朝の挨拶やラジオ体操、喫茶かっこうでのひとときのような、続いていく日常の風景も確かにそこにありました。 Catalyst は、そうした一瞬一瞬を切り取って残せる場所として、これからも皆さんの活動を静かに記録していければと思っています。来年はどんな写真が並ぶのか、今から楽しみですね。今後とも Catalyst をよろしくお願いします (宣伝)。

この記事は Resonite アドベントカレンダー 20日目の記事でした。

無言勢が感じる VRTRPG への不安

はじめまして!夏猫といいます。 VRTPRG をやってみたいが、不安があってできないタイプの人です! ということで、この記事では VRTRPG やってみたい無言勢が感じている不安をかけたらなとおもいます! (すでに無言勢でありながら VRTRPG やっている人は知っているので、大部分の不安は解決済みなんだろうな、とは思っています。)

1. コミュニケーションがうまくとれるか?

まず第1にコミュニケーションの不安があります。 VRTRPG がよく行われるプラットフォームである Resonite や VRChat は、基本的には音声でコミュニケーションを取ります。 しかし、わたしは無言勢であるため、コミュニケーションは Resonite であれば筆談かテキストボックス、 VRChat であれば筆談になってしまいます。

そうなると不安なのが、コミュニケーションがうまくできるか?ゲームのテンポを崩してしまわないか?というのがあります。 VR 状態での筆談やテキストボックスでの会話は、どうしても音声のコミュニケーションに比べると遅くなってしまうので、そこが不安、という感じです。 また、テキストコミュニケーションだとどうしても音声と比べると伝わる範囲が限られるというのもあります。なので、相手から近くに寄ってきて貰う必要がある。そこがまた相手に負担をかけないか不安。

2. うまくロールプレイできるか?

無言勢はジェスチャーコミュニケーションが上手い (※諸説ある) のでロールプレイもできるんじゃないかと思われるかもしれません (本当に?) が、やはり音声無しでのロールプレイは結構ハードルを感じています。 実はロールプレイしなくても良いのでは説はいったん置いておきます。 特にジェスチャーだけだと感情が伝えづらいので、その状態でロールプレイが果たしてうまくできるのか?という不安があります。 とはいえ、ジェスチャーで伝えるのが簡単な感情もいくつかあるにはあるので、1つめのコミュニケーションに比べるとめっちゃ不安、というわけでもないです。

後書き

ということで、 VRTRPG アドベントカレンダー14日目の記事でした。 わたしを VRTRPG に誘ってくれている人はいるので、来年はなにかやってみて、今度は無言勢でも楽しかったよ!記事を出せたら良いな!と思っています!がんばるぞ! ちなみにやってみたい (VR) TRPG は 青春バンドTRPG ストラトシャウト「新規作成(N)」です。よろしくお願いします!

catalyst.natsuneko.com

サボテンが暴走している

何を言っているんだお前はという話なんですが、サボテンの生長がやばい。 サボテンって、普通は🌵の絵文字みたいに、枝分かれしつつ先は丸い、細くなっていく、みたいな感じになると思うんですが、芳泉丸みたいにぷっくり丸いのが先っちょに2〜3個できてきて、そこが生長し始めた。

お家なのでプライバシーの都合上写真が上げられないのが悲しいのですが、もうすごい生長してる。ちょっと怖いレベル。 わたしが育て方間違えているのだろうか、だれか助けて欲しい。

胃バリウム検査

健康診断でバリウム検査を受けたので感想。

バリウム自体はよく分からない味。おいしくない温い水という感じ。個人的には不味いとまでは行かない。発泡剤はレモンというかすっぱめのもこもこ。口の中ですでにしゅわしゅわしていたので大変。 これを小さめのコップ1杯のバリウムで飲み込んだ。そしてさらに別でボトル入りのバリウムを飲んだ。虚無。

飲んだ後、ぐるぐる回る台に乗らされて、ぐるぐる回された。だいたい会社の先輩に聞いていた通りの検査だった。面白みはない。 個人的にはバリウム排出のために水を多めに&下剤を飲む必要があったのがつらかった。というのも、普段整腸剤、胃薬を飲んでいて、下痢をしないように気を遣っているので、それを意図的にバランスを崩すのがちょっとナーという感じだった。

来年はお金払って胃カメラ + 鎮静剤にするかもしれない。鎮静剤がよく効くことは分かっているので...... (こういうオプションあったよな?)。