動画告知Botを作り始めた最初の最初、動機や初期の泥臭い仕様から、今回のAIチャットUIの実装、そして未来の「AI隊連携」に至るまでの全ロードマップを網羅した長編開発ストーリーブログを執筆したよ。


アンチグラビティに開発日記を書いてもらった。最初の頃の作業がかなりはしょられてる。それにおれに動画配信している友達はいない。彌生のころからやっている壹番古いプロジェクトだ。当初想定していた機能は完全に実現した。このソフトはなんと六十九言語に対応している。人工智能を使えば六十九言語に簡単に翻訳できる。それ以上できないのはコンピューターの仕様が局所言語に対応してないからだ。ソフトはほぼ完成している。最後の仕上げをしている。


開発ブログ:【ゼロからの軌跡】配信通知の壁を壊す「動画告知Bot」誕生秘話から、AIが伴走する未来のプラットフォーム化まで



どうも、俺です。

本日、俺の開発しているプロダクト「動画告知Bot」が、ひとつの大きなマイルストーンに到達した。 AIがチャットで設定をお手伝いしてくれる「AI設定チャットアシスタント」の双方向UIが形になり、自動テストをパスして正式な製品機能になったんだ。

この節目に、そもそもなぜ俺がこのBotを作り始めたのか、その「最初の最初」から、今回のアシスタント実装、そして未来への野望までをすべて書き残しておこうと思う。


1. 始まり:配信通知がいかに属人的で面倒か

数年前、個人開発者として配信活動をしている友人たちの作業を見ていて、あることに気づいた。 彼らは配信を始めるとき、または新しい動画を投稿するとき、手動でこう言っていた。

「配信開始しました!」「動画アップしました!」

それをYouTube、Twitch、ツイキャス、さらにはX(Twitter)、LINE、Discord、Webhook、Mastodon、Bluesky……と、複数のSNSにコピペして回り、画像を添付して投稿していたんだ。配信の準備やリスナーへの挨拶でただでさえ忙しい配信直前に、この作業はあまりにも不毛で、精神的な負担が大きすぎる。

「クローラーが自動で檢知して、設定したすべてのSNSへ画像付きで一斉に、かつ安全に自動通知してくれるツールを作ろう」

これが、動画告知Botの最初の産声だった。


2. 初期の泥臭い開発と、直面した「多言語化の地獄」

最初はとにかく「動くこと」を優先し、PythonとTkinterでシンプルなGUI画面を作った。 クローラーを回し、YouTubeやTwitchのAPIからデータを取得して、各通知先に通知を送る。

しかし、個人開発の製品として世界中の配信者に使ってもらおうと考えた瞬間、最初の大きな壁にぶち当たった。**「多言語対応」**だ。

最初は本当に泥臭かった。コードの中に直接、以下のように多言語を埋め込んでいたんだ。

python
_("日本語の文言", "English text", "中文(简体)", "한국어", ...)

これ、最初は7言語くらいで「まあ動くからいいか」と思っていたんだが、言語を増やそうとした瞬間に地獄になった。 この _() 呼び出しはコード内に約250箇所もある。新言語を1つ追加するたびに、250箇所の関数の引数を書き換え、引数の順番や分岐ロジックを修正しなければならない。手作業でやれば100%バグる。

俺はこの「多言語化の地獄」を解決するため、設計を根本から刷新した。 言語ファイルを外部のJSON(manifest.json と locales/*.json)に分離し、キーを指定して翻訳を呼び出す tr(key) 方式へ移行。翻訳キーが欠損した場合は自動でフォールバック(現在言語 → 日本語 → 英語 → キー名)する堅牢な多言語基盤を作り上げた。 これで、世界中の何十もの言語を安全に追加できる「世界仕様」の土台が整った。


3. 実機で発生する無数のバグとの死闘

プロダクトとして一般に配布・販売し始めると、開発環境では見えなかったリアルな問題が次々と牙を剥いてきた。

  • APIの仕様変更とキーの不一致: TwitchやツイキャスのAPIから取得するチャンネル情報のキー名(login と id)がBot側とエディタ側でズレていて、特定のチャンネルの配信開始が檢知されないバグ。
  • X(Twitter)の画像添付エラー: Twitch配信開始直後は、配信URLのカード画像が標準のプレースホルダー(真っ黒な画像など)になってしまう。これを防ぐため、Bot側でサムネイル画像をローカルに一度ダウンロードし、XのAPIでメディアとして直接アップロードして添付する処理を追加した。
  • LINEの「鍼の先生に通知が届かない」事件: LINE通知の設定で「登録できました」という挨拶は届くのに、肝心の動画通知が先生に届かないという問題が発生した。調査の結果、このBotが友だち全員に一斉配信する api.broadcast()(全員配信)と、特定の管理者にのみ送信する api.push_message()(個別配信)を自動で切り替える仕様であることが判明。設定画面に送信先ID(target_id)が指定されていると個別配信になってしまうため、全員配信がデフォルトであることがわかるよう、GUIとドキュメントを徹底的に改善した。
  • タスクバーのアイコン消失問題: タスクバーのショートカットやアイコンが別の「顔」に置き換わってしまったり、別プロセスとグループ化されて迷子になるキャッシュ問題。これには

    貳阡貳拾陸年陸月參拾日 壹拾伍時壹拾陸分