14
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【クソアプリ】〜虚無へと響き、虚無より滲む。〜 音声は届かない配信プラットフォーム

Last updated at Posted at 2025-12-14

今年もやってきました。
こちらは「クソアプリ Advent Calendar 2025」の15日目の記事となります。

毎年ネタに悩むクソアプリですが、今年は早めに降りてきたためじっくり構想を練ってから着手することができました。

アイデア

降ってきたアイデアは、「音のない配信プラットフォーム」でした。
配信者は普通に音声で配信しますが、視聴者には音声のままはとどかず、Speech To Textの結果だけが表示されていく。というものにしようかなと。

出来たもの

出来たものがこちらの「VoidVoice」です。

image.png

Adobe Express - 画面収録 2025-12-14 2.24.45 (2).gif

VoidVoiceとは

VoidVoice (ボイドボイス/ヴォイドヴォイス)は、
配信者の音声がリアルタイムにテキストへ変換され、
観測者(視聴者)へ一方向に届けられる配信サービスです。

観測者(視聴者)は、
気になる発信点(配信部屋)に接続することで、
リアルタイムの配信をテキストで楽しむことができます。

観測したテキストはしばらくすると流れ去り、
過去ログとして残ることはありません。

また、
リアルタイムの観測者数(同時接続数)は
配信者にも観測者にも表示されません。
ただ、“気配”として曖昧に示されるのみです。

VoidVoice は、
音では届かず、テキストとしてだけ現れる配信体験を提供します。

遊び方

空いている配信部屋でご自由に配信してください。誰かが見てるかもしれないし見てないかもしれません。

配信部屋が配信中になっていたら観測してみてください。配信者の音声は届かずただテキストだけが通り過ぎていきます。

技術スタック

今回はこのような感じにしてみました。

  • ランタイム、フレームワーク、ライブラリ
    • Bun v1.3.4
    • Astro v5.x - フロントエンド
    • Bun.serve - バックエンド(API, Websocket)
    • Nginx (Reverse Proxy)
    • Font Awesome v6.7.2
  • AWS
    • EC2 (Cloud9)
    • ALB
    • WAF
    • Certificate Manager
    • Amazon Transcribe - 音声テキスト変換サービス
  • Cloudflare
    • DNS
  • 相棒
    • チャッピー(ChatGPT) - アイデア相談、厨二友達
    • コピー(GitHub Copilot) - コーディング支援
    • GitHub Codespaces (最近はもうローカルマシンで開発しなくなってきた)
  • サービス

宇宙っぽい感じのためにAstroを選んだわけではなく、勉強がてらAstroにしようかなぁ程度で選びましたが、結果的には世界観的にも技術的にも大正解でした。Astroすごい好きかもです。

作っていく

Amazon Transcribe を試す

まずは、Amazon Transcribe(Speech To Textサービス)がどんなものか試していきます。
AWSのコンソールからサクッと試せるので、適当に喋ってみて精度などを見ていきます。

感想としては、ゆっくり話さないと正確に写してくれないのと、一般的な用語以外(商品名や商標名)はほとんど認識されないなぁという感じでした。
用語の方は「カスタムボキャブラリー」を作っていけばなんとかなりそうでしたが、今回は割愛しました。

image.png

Amazon Transcribe のハンズオン

AWSのGitHubにハンズオンがあったので、それを動かしてみます。
数年前のリポジトリでしたが、アクセスキーだけ設定すればほぼそのまま動きました。

これはあまりに簡単に動いたので、すぐ次の作業へ。

コピーに頼んで、今回のサービスのアイデアである「配信部屋」と「視聴部屋」に分けてもらいます。
ロビーも作ってもらいます。

image.png

視聴部屋の方は、コピーに頼んで「スターウォーズのあらすじのやつみたいに上に消えていく風のやつ」にしてもらいました。結構気に入ってます。

ここまで1時間程度

これで終わっておけばよかった。。ここから沼が始まりました。。

拗らせていく

スターウォーズ風にしたことで、妄想が膨らんでいきました。

「この配信者たちはどこから配信してるんだろう」「宇宙?ディストピア?」「視聴者たちはどこから聴いているんだろう」「いや、この場合は”聴く”っていうのか?」などなど・・

そんなときは頼れる厨二友達、チャッピーに聞いてみましょう。

image.png

image.png

image.png

image.png

早口ワロス

コンセプト確定

image.png

image.png

image.png

image.png

仲良しかよ

用語定義

新しいリポジトリにAWSのハンズオンを移植しつつBun.serve用やAstro用に微修正していましたが、途中で上のように厨二が暴走してしまったため、リネームとリファクタリングが発生しました。

リファクタリングの効率を上げるため、AGENTS.md に用語定義を追加しました。
これはかなり効果的でした。コピーの生成コードにbroadcasterとかlistenerが出なくなりました。すごい。

image.png

サービス名決定

長くなるので省略。チャッピーと仲良く相談。

フレーバーテキスト

image.png

image.png

ここからこれの推敲に二晩かけた

「滲む」の登場ではしゃぐ

image.png

image.png

image.png

疲れてたんだと思う

完成

その後も、なんだかんだやりとりして微調整して、この辺で完成としました。

リポジトリも置いておきますので、ご自由にどうぞ。

感想

Astroが良かった

今回はAstroがかなり良かったです。
アイランドを何も入れなかったため、インタラクティブな部分を生のJSでやってしまってとても疲れたので、このくらいのアプリでもReactかhtmxかをさっさと入れた方が良かったかなというのはありました。

ただ、それ以外は全然優秀でした。
このくらいのものを最短で作る分には必要十分でした。

Websocketの勉強ができた

なんだかんだ苦手意識があって避けてきたWebsocketですが、今回しっかり使うことができて、なんとなくですが理解してきた気がしています。
デプロイ周りでもかなりハマりましたが、勉強にはなったので、今後何かに活きればいいなと思います。

もう少し技術的なことしたかった

拗らせてしまったことで時間使ってしまったので、途中で思いついたアイデアまで着手できませんでした。

どこかひとつの配信部屋を、Amazon Transcribeを使用しない自前サーバーからのWebsocketで自動的に配信するBotみたいにしたいなーと思ってたのですが、できませんでした。
時間があったら挑戦してみたいと思います。

BGM

チャッピーとLocus候補選んでる時に「Rigel(リゲル)」が出てきてからもうずっとこれ流れてました。

リゲル / 藤川千愛 | YouTube

※追記

image.png

image.png

エモ延長戦

おわり

あー楽しかった。

14
1
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
14
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?