--- title: "読み上げBotを作っていたら、防災・天体・人狼まで生えた — で、これまだ読み上げBOTなの?" description: "声を読み上げるだけのはずだったDiscord Botに、地震速報・天体・人狼・釣りまで生えた。コマンド一覧を眺めて「これ、まだ読み上げBOTって言っていいのか?」と立ち止まった自虐まじりの振り返り。専門知識なしで読めます。" url: https://ryuuneko.com/blog/zunda-yomiage-bot-jimon published: 2026-06-20 08:46:30.898105 updated: 2026-06-20 08:51:49.407323 --- 先日、自分が作っているDiscord Bot「ずんだー」のコマンド一覧を、ひさしぶりに上から下まで眺めていました。読み上げ、辞書、NGワード、入退室、誕生日、ルーレット、YouTube通知、サポートチケット、荒らし対策、緊急地震速報、津波、天体イベント、金曜ロードショー、人狼、ワードウルフ……。 そして、ふと手が止まりました。 **……これ、まだ「読み上げBOT」って言っていいんだろうか?** ![ずんだーの使い方ガイド。「VOICEVOX読み上げ」の隣に、誤読報告・入退室アナウンス・NGワードフィルター・荒らし対策・サポートチケット・誕生日通知・お知らせ配信・カスタムルーレット・YouTube新作通知・防災/天体/金曜ロードショー通知・人狼・ワードウルフが並ぶ機能カードの一覧](/blog/uploads/zunda-feature-grid-b560c9.png) *▲ これ、ぜんぶ「読み上げBOT」の機能一覧です。左上の「VOICEVOX読み上げ」だけが本業で、あとは……。* この記事は、その自問自答です。技術的な深掘りは前に3本書いた([おまけ機能ロマン暴走記](/blog/zunda-omake-roman) /[星空の見え方を計算で描く話](/blog/zunda-mikae) /[人狼が生えた話](/blog/zunda-games-honki))ので、今回はもっと情けない、**「で、お前は結局なに屋なんだ?」**という話をします。専門知識なしで読めます。 --- ## プロフィール欄には、今でもこう書いてある ずんだーの自己紹介には、今でも「**Discord読み上げBot**」と書いてあります。嘘はついていません。本業はあくまで、ボイスチャットに流れてくる文字を声にすること。VOICEVOXという音声合成エンジンで、ずんだもんやその仲間たちの声でしゃべる。それが背骨です。 問題は、その背骨に、**本業と縁もゆかりもない部品が次々とくっついていった**ことです。 最初はささやかでした。読み上げに、読み間違いを直す辞書がついて、入退室のあいさつがついて、誕生日を祝うようになって……このあたりまでは、まだ「読み上げBotの便利機能」と言い張れます。 問題はそのあとです。 --- ## 最初の一歩は、たぶん「自衛」だった 振り返ると、読み上げ以外のことに手を出した最初のきっかけは、**前向きな思いつきではなく、後ろ向きな必要に迫られて**でした。 荒らしが来たんです。 そもそもずんだーは、**自分のYouTubeチャンネルの視聴者が集まるサーバーのために作った**読み上げBotでした。配信を見た人たちが集まって雑談する、身内の溜まり場。そこで自分たちが気持ちよく喋れるように、と思って作ったものです。 ところが、こういう誰でも入ってこられる開けた場所は、荒らしやレイド(短時間に大量のアカウントが押し寄せる攻撃)の標的になりやすい。**自分の視聴者サーバーが、実際にやられました。**読み上げBotは、こういうとき何の役にも立ちません。 それで、メッセージを消したり、**レイドを検知して一時的にロックダウンしたり、DMで本人確認(認証)してからロールを渡したり**——という、いわゆる荒らし対策(Guard)を足しました。自分たちの溜まり場を守るために。 これは完全に自衛です。「便利機能を増やしたい」ではなく「**このままだと居場所が荒れて使い物にならない**」という、消極的な理由。でも結果的に、これが効きました。良くない意味で。 なぜなら、ここで**「読み上げ以外のこともやるBotである」という前例**ができてしまったからです。一度それを自分に許すと、歯止めがなくなる。荒らし対策をやるなら誕生日を祝ってもいいし、ルーレットを回してもいいし、YouTubeを見張ってもいい……と、堤防が一か所切れたら、あとは早かった。 「いつの間にか多機能Botになってる」のスタート地点は、たぶんここです。**楽しくて増えた**というより、**守るために一歩はみ出したら、はみ出し方を覚えてしまった**。 --- ## 「読み上げBOT」に、普通こんなものは付いていない 時系列で並べると、自分でも引きます。 - **ルーレット** — 罰ゲームやスプラの武器ランダムを引く抽選機。声を読むのと、何の関係が?(ただし、視聴者から実際に「欲しい」と言われたのは、かろうじてこのへんが最後) - **YouTube新作通知** — 好きなチャンネルの配信開始を見張る。もはや読み上げではない(ただし、出自が視聴者サーバーなので、これだけは居場所と地続きではある)。 - **サポートチケット** — 問い合わせ専用チャンネルを自動で立てる、運営支援ツール。完全に別ジャンル。 - **荒らし対策(Guard)** — スパム検知・レイド対策・DM認証。さっき書いた「最初のドミノ」。これはセキュリティ製品の領分。 - **緊急地震速報・津波予報** — 防災。しかも震度マップの画像まで自前で描く。読み上げBotがやることではない。 - **天体イベント** — 満月や流星群を天文計算で出す。プラネタリウムである。 - **金曜ロードショー** — 今夜の放送作品を教える。テレビ欄である。 - **人狼・ワードウルフ** — 全11役職のガチ人狼が遊べる。ゲームセンターである。 声を読み上げるためにVCに居座っているだけの存在が、いつの間にか**防災システムでありプラネタリウムでありテレビ欄でありゲームセンター**になっていました。一つひとつは「あったら楽しいよね」で足したものなのに、全部並べると、もはや何のアプリだか分からない。 しかも白状すると、視聴者から「これ欲しい」と**実際に要望があったのは、ルーレットあたりが最後**でした。そこから先のYouTube通知も地震速報も天体も人狼も、**誰も頼んでいません**。全部、自分が作りたくて勝手に生やしただけです。需要に応えて増えたのなら、まだ言い訳が立つ。でも途中からは完全に、供給側の暴走でした。 しかも、まだ増えようとしています。いま手元で**釣りゲーム**を作っていて(図鑑・レア度・釣り場・天気・称号……またガチな構成です)、これがそのうち生える予定です。読み上げBotに、魚図鑑。もう自分でツッコミが追いつきません。 --- ## 「肥大化」は、ちゃんと痕跡を残す 面白いもので、機能を盛りすぎたプロジェクトは、**そのことが操作のあちこちに滲み出します**。後から振り返ると、「あ、ここで無理が出てたな」という痕跡が残っている。ずんだーにも、いくつもありました。 ### ヘルプが、電話帳になった `/help` で使い方が見られるのですが、機能が増えるたびにこれが伸びていき、ある時期「項目を詰め込みすぎて読めない」状態になりました。仕方なく**用途ごとのまとまり(読み上げ・辞書・YouTube・管理者設定…)に整理し直す**羽目になった。ヘルプを再構成しないと読めないヘルプって、それはもう機能が多すぎるという白状です。 ### コマンドの名前を、何度も付け替えている 過去の更新履歴を見ると、コマンドの整理・改名・統廃合がやたら多い。`/start` を `/tts start` にまとめたり、`/eew` `/astro` `/kinro` という3つの通知コマンドを `/notify` ひとつに畳んだり、数値を手入力する `/tts voice set` を廃止してフォーム操作に寄せたり。 これは要するに、**増やしすぎた入口を、定期的に片付けないと収拾がつかなくなっている**ということです。順調に育っているなら、こんなに頻繁に間取りを変え直す必要はない。改装の回数が、増築のしすぎを物語っています。 ### ステータス欄が、何を宣伝すればいいか迷っている ずんだーのプロフィールには短いステータス文が出せるのですが、ここに何を書くかも二転三転しました。あるときは `/help` の案内、あるときは「いま読み上げているVCの数・参加サーバー数」。本体ですら、自分の何を一言で名乗ればいいか決めかねている節があります。 --- ## ……で、開き直って考えてみた ここまで散々「読み上げBOTを名乗るな」みたいに書いてきましたが、改めて全体を眺めて、ひとつ気づいたことがあります。 **結局いちばん本気で作り込んでいるのは、まぎれもなく「読み上げ」そのものだった。** 派手なおまけに目を奪われがちですが、地味な本業のほうが、実は圧倒的に手がかかっています。たとえば—— - **読み始めを速くする** ために、長文を頭から少しずつ区切って、しゃべりながら裏で残りを合成する仕組み(段階チャンク)を入れた。 - **同時にたくさんのサーバーで使われても詰まらない** ように、複数のBotで仕事を分担する「ボイスプール」を組んだ。 - **音声合成が一瞬失敗しても無言にならない** ように、作り直す予備の読み上げと、無言で固まったのを検知して先へ進む安全装置を足した。 - **読み間違いを直し続ける** ために、ふりがな辞書をOSSとして外に切り出し、ユーザーが「読み方が違う」をその場で報告できる導線まで作った。 - そもそも基盤ごと、より速く安定するように**Node.jsからRustへ丸ごと作り直した**。 体感で言えば、「長いコメントを貼っても**最初の声がすぐ出る**」「人が多いサーバーで連投されても**順番待ちで固まらない**」「合成が一瞬コケても**黙り込まずに読み続ける**」——使っている人が気づきもしない“当たり前”を保つために、いちばん手間をかけているのがこの部分です。 おまけの震度マップや天文計算は、確かにロマンで暴走した部分です。でも、**「声がちゃんと出る・速い・止まらない・読み間違えない」という背骨のほうに、いちばん長い時間を注いでいる**。派手さはないけれど、ここを手抜きしたら、そもそも読み上げBotを名乗る資格がないからです。 つまり答えはこうでした。**ずんだーは、恥ずかしいくらい読み上げBOTです。** 周りにくっついた賑やかなおまけのせいで見えにくいだけで、いちばん過剰に作り込まれているのは、地味な「声を読む」ところ。十徳ナイフにいくら道具が生えても、ナイフの刃がいちばん研がれているのと同じです。 --- ## 本業を見失ったように見えて、見失っていない 趣味で作っていると、「必要か」より「作りたいか」が勝ってしまう瞬間が何度も来ます。だから機能はどんどん増える。コマンド一覧は散らかるし、ヘルプは電話帳になるし、自分でも「何屋なんだ」と笑ってしまう。 でも、増築を繰り返しても背骨だけは太らせ続けている限り、それはたぶん**まだ「読み上げBOT」**なんだと思います。名乗りを変えなかったのは、意地でも面倒でもなく、そこが本当に芯だから。おまけは賑やかだけど、芯は声のほう。 「これ、まだ読み上げBOTって言っていいのか?」——さんざん迷ったあげくの結論は、**「言っていい。むしろ、それしか言いようがない」**でした。地震マップを描こうが人狼を捌こうが魚を釣らせようが、VCに居るあいだ、こいつはずっと、誰かの言葉を声に変え続けています。 次は何が生えるんでしょうね。でも、どれだけ増えても、**最初に直すべきなのはいつも「声が遅い」「読めない」「途中で止まる」のほう**です。おまけがどれだけ賑やかになっても、ここだけは後回しにしない。何が増えても、刃だけは研いでおこうと思います。 --- *※この記事は2026年6月時点の実装をもとにしています。文中の機能や名前は、その後の整理で変わっている可能性があります(実際、コマンドの間取りはこれを書いている今も片付け続けています)。釣りゲームはまだ本番に出ていない開発中の機能です。*