こんにちは、白川秋です。
昨日――2026年8月1日は、朝から晩まで、うちの個人開発アプリ「ちえちゃんと秋ちゃん」(ニコニコ生放送のコメントビューア、通称コメビュ)の新バージョン v2.7.2 に向けて、ひたすら手を動かし続けた一日でした。
読み上げの不具合を直し、ダークモードを実装し、旗マークを付け、そして最後には「合言葉配信」という深い森に分け入って……。数えてみたら、大小あわせて8つもの改善を詰め込んだ、なかなか濃い一日だったんです。
何度も「これで解決だ!」と思っては、ログを見て「あ、違った……」と肩を落とし、また立ち上がる。そんなことの繰り返しでした。でも、ひとつずつ、確実に前に進めた。今日はその一日を、事細かに振り返ってみたいと思います。
開発の話ではありますが、「わからないことを、どう調べて、どう確かめていくか」という部分は、プログラミングをしない方にも何か通じるものがあるはず。長くなりますが、よかったらお付き合いください。
この記事のポイント
- 世界中を調べても答えのなかった認証APIを、実機の通信を覗いて暴いた話
- 「効いた気がする」で終わらせず、真因を確かめてから動く開発の姿勢
- ダークモードから合言葉配信まで、v2.7.2の8つの改善を全部お見せします
9分12秒でわかるまとめ動画
v2.7.2、やったことは大きく8つ
まず最初に、今回のバージョンで直した・入れたものを並べておきますね。
- リアルタイムログを過去ログより先に取得するよう修正
- 電波が悪いときにギフト音が複数回鳴る不具合の修正
- 「配信者の通信状態」を示す赤ログが3秒で消える問題の修正
- ダークモードの実装
- 自分の番組の表示速度の改善
- サポーターの名前の横に⚑(旗)を表示
- ラグでバックグラウンド再生が壊れるのを対処
- 合言葉配信に検索から入れるように改善
こうして並べると地味に見えるかもしれませんが、ひとつひとつに「そうなっていた理由」があって、それを突き止めるまでが本当のドラマなんです。順番に見ていきましょう。
① リアルタイムのコメントを、ちゃんと「今」読む
コメビュって、リアルタイムで流れてくるコメントと、あとから遡って取ってくる過去ログの、両方を扱っています。ここで順番を間違えると、「今まさに書き込まれたコメント」が、過去ログの後回しにされて、微妙に遅れて表示されてしまう。
そこで、リアルタイムのログを過去ログより先に取りに行くように直しました。地味ですが、「今この瞬間の盛り上がり」を逃さないための、けっこう大事な調整です。ライブって、コンマ何秒の「今」が命ですからね。
② 電波が悪いと、ギフト音が何度も鳴る問題
これはユーザー体験としてけっこう気になるやつでした。電波状況が悪いとき、ギフトの効果音が「ポン、ポン、ポン」と複数回鳴ってしまう。
原因は、通信が不安定なときに同じギフトの情報が何度も届いてしまい、そのたびに「新しいギフトだ!」と勘違いして音を鳴らしていたこと。そこで、一度鳴らしたギフトはちゃんと覚えておいて、同じものが再び届いても二度は鳴らさないようにしました。
ここで大事にしたのが、「時間で判定しない」こと。「◯秒以内に来たら同じものとみなす」というやり方は、過去に何度も痛い目を見てきたんです。電波が悪いと、その◯秒を平気で超えてくるから。だから今回も、時間ではなく「このギフトそのものを識別する印」で見分けるようにしました。地道ですが、これがいちばん確実なんですよね。
③ 「配信者の通信、乱れてます」の赤いお知らせが、一瞬で消える
配信者さんの通信が乱れて音声が途切れたとき、コメビュには「配信が乱れています」的な赤いお知らせが出るようになっています。ところが、これが3秒でパッと消えてしまっていた。見逃した人からすると「え、今何かあった?」ってなりますよね。
これも直して、ちゃんと状況が伝わるようにしました。エラーやお知らせって、出す瞬間より「ちゃんと気づいてもらえるか」のほうが大事だったりします。
④ ダークモードの実装
そして今回、ついにダークモードを入れました!
夜、布団の中でこっそり配信を見る人(私です)にとって、あの白い画面のまぶしさは地味につらい。目にも優しくないし、なんとなく画面の存在感がありすぎる。
というわけで、暗い背景で落ち着いて見られるダークモードを実装しました。これ、要望も多かった機能なので、入れられて嬉しいです。夜のニコ生ライフが、ちょっと快適になるはず。
⑤ 自分の番組の表示を、キビキビと
配信者さんが自分の番組を開くとき、その番組情報の取得と表示が、ちょっともたついていました。ここを見直して、キビキビ表示されるように改善。
配信する側にとって、自分の枠がサッと出てくるかどうかは、地味だけど気持ちよさに直結する部分。細かいけど、こういうところの手触りは大事にしたいんです。
⑥ サポーターさんの名前の横に、旗マーク(⚑)
配信を応援してくれるサポーターさん。その方の名前の横に、⚑(旗)マークを表示するようにしました。「この人は応援してくれている人だよ」というのが、コメント欄でひと目でわかる。
ちなみにこの機能、iPhone版を担当してくれている相棒のちえさんにも実装してもらえるよう、「どのデータから判定するか」「旗はどの記号を使うか」まで細かく書いた技術仕様書を、この日にHTMLでまとめて渡しました。二人三脚でアプリを育てているので、こういう引き継ぎ資料づくりも大切な仕事のひとつです。
⑦ ラグでバックグラウンド再生が壊れる問題との、長い戦い
さて、ここからが技術的に骨のある話になります。
バックグラウンド(アプリを閉じて他のことをしている間)でのコメント読み上げが、大きなラグをきっかけに、そのあと一切読まれなくなってしまう――という厄介な不具合がありました。
これ、真因を突き止めるのに苦労しました。「たぶんここだろう」で直そうとすると、たいてい外れる。だから、計測用のログを仕込んで、実機で何度も再現させて、数字とにらめっこ。
そうしてようやく、真犯人が見つかりました。主コメ(配信者さんの固定コメント)に付く特殊な番号が悪さをして、そのあと届く本物のコメントを全部「もう読んだやつ」と勘違いして黙殺していたんです。受信自体は生きているのに、何も読まない。ログを見て「あ、これだ」と分かったときは、思わず声が出ました。
原因さえ分かれば、対処はできます。この特殊な番号を、判定に混ぜないようにして解決。「効いた気がする」で満足せず、ログで真因を確定させてから動く――今回もこの姿勢に助けられました。
ちなみに同じ流れで、「バックグラウンドの読み上げがもたつく」問題も調べたんですが、こちらはサーバー側の反応速度が下限で、こちらでは変えられないと判明。深追いせず「ここまで」と線を引きました。追いかけるのも、撤退を見極めるのも、どっちも大事なんですよね。
⑧ そして本丸――合言葉配信に、検索から入れるように
一日のいちばんの山場が、これでした。
そもそも「合言葉配信」ってなに?
ニコ生には「合言葉付き限定公開」という配信方法があります。配信者さんが「番組URL」と「合言葉」を設定して、その両方を知っている人だけが視聴できる、鍵付きの配信です。「仲間内だけに配信したい」というときにぴったりの機能ですね。
ところがこれ、コメビュ泣かせなんです。なぜなら、どこからも見つけられないように作られているから。
- キーワード検索しても出てこない
- 自分の放送履歴にすら出てこない(自分で立てた合言葉配信すら一覧に出ない)
つまり「一覧をタップして開く」といういつもの入り方が通用しない。従来のうちのアプリでは、無理に開こうとすると「コメント待機中」で固まっていました。
まず「入口」を作る
見つけられないなら、番号を直接打って入るしかない。というわけでまず、検索欄に「lv◯◯◯◯」と番組番号を打ったら、検索せずにその番組へ直行する機能を追加しました。フルURLの貼り付けも大文字もOKにして、使いやすく。
「自分は入れちゃう」問題
ここで面白い現象に遭遇します。私が自分の合言葉配信を開くと、合言葉なしで入れてしまう。理由は、配信者本人や一度合言葉を入れた人は、視聴の権利がすでにアカウントに紐づいているから。だから私では、そもそも壁にぶつからないんです。
これでは検証ができない。そこで他の配信者さんに協力してもらい、私が一度も入ったことのない新しい合言葉配信を立ててもらって、ようやく「入る権利を持たない状態」のログを取ることができました。
ちょっと怖かった無限ループ
そして一度、ヒヤッとしました。合言葉画面を出す仕組みを組んだら、「合言葉画面 → 視聴画面 → また合言葉画面……」と2秒おきに延々と往復するループに突入してしまったんです。ログがすごい勢いで流れていくのを見て、正直ゾッとしました。
原因は、私が組んだ「認証が成功したか」の判定が甘くて、合言葉を入力する前の一瞬を「成功」と誤認していたこと。ここも慌てず真因を突き止めて、「本当に認証が通ったことを示すデータ」を確認できたときだけ進むように修正。ループは止まりました。
最大の壁――「合言葉の送り先」を突き止める
いちばんの難関がこれでした。合言葉画面は出せる。でも、入力された合言葉を、どこにどう送れば認証されるのかが、まったくわからない。
まず世界中の技術情報を調べました。ニコ生を解析している有名なツールやライブラリを片っ端から。すると、驚くべきことに――世界中のどの実装も、合言葉配信の認証には対応していなかったんです。年齢制限のゲートには対応していても、合言葉だけは誰も突破していない。まさに「誰も公開していない」領域でした。
ここで推測で組みたくなるのをぐっとこらえました。認証まわりを当て推量で作ると、動かなかったときにいちばんハマる。だから、実機の通信を、その場で覗くという方法を取りました。
パソコンとスマホをWi-Fiでつないで、パソコンのブラウザから、アプリ内の通信をリアルタイムで観察する。この状態で、実際に合言葉を入力して送信する。最初は広告の通信が山ほど出てきて埋もれていたんですが、フィルターに「password」と打った瞬間――たった一つだけ残りました。
permission という名前の、ステータス200(成功)のリクエスト。「これだ!」と。長い一日の中で、この瞬間がいちばん嬉しかったかもしれません。手探りで森を進んできて、ようやく目印を見つけた感覚でした。
中身を取り出したら、合言葉をどこにどう送ればいいか、完全にわかりました。推測ゼロ。ニコ生の公式ページが実際にやっている、その通りの方法。これなら確実です。
仕上げ――アプリらしい、すっきりした画面へ
送り先がわかったので、最後は仕上げ。当初は公式の合言葉ページをそのままアプリ内に表示する案でしたが、これだと広告やおすすめ配信で画面がごちゃごちゃに。ちえさんからも「もっとすっきりしたオリジナル画面にできない?」という声が。
APIが特定できた今ならできます。公式ページを丸ごと出すのはやめて、「合い言葉を入力してください」の見出しと、入力欄と、OK・キャンセルのボタンだけ。うちのアプリの世界観に合った、シンプルで気持ちのいい画面にしました。実機で試したら、ちゃんと入れました。あの「コメント待機中」で固まっていた画面が、今はすっきりした合言葉画面に。報われた瞬間でした。
最後の詰め
大きな山を越えても、細かい石が残っていました。「Webで合言葉を入れて見ていた配信が、終了した瞬間に合言葉画面が出る」問題や、「番号入力で入った配信が終わったあと、検索画面が検索中で固まる」問題。どちらも真因を突き止めて、ひとつずつ塞ぎました。ユーザーさんが触ったときに「あれ?」とならないように。
一日を終えて――「真因を確定してから動く」ということ
今日一日を通して、あらためて大事にしていたのは「真因を確定してから動く」という姿勢でした。
「たぶんこうだろう」で手を動かすと、たいてい遠回りになります。動かなかったときに、何が悪いのかわからなくなるから。だから、ログを取る。実機の通信を覗く。数字で確かめる。「効いた気がする」じゃなくて「効いた」を確認してから、次に進む。
今日は何度も「これで解決だ!」という誘惑があって、そのたびに立ち止まって確かめました。ギフト音のときも、バックグラウンドのラグのときも、合言葉のループのときも。急がば回れで確かめる時間をケチらなかったからこそ、v2.7.2という形にちゃんとまとまったんだと思います。
そして何より、世界中を探しても答えがなかったものを、実機の通信を覗いて自力で突き止められたこと。これは開発者として、素直に嬉しい体験でした。誰かが用意してくれた答えをなぞるんじゃなくて、自分の手で確かめて見つけた。その一つひとつが、アプリの中に静かに積み上がっていく。
8つの改善を詰め込んだ、長い一日でした。でも、いい一日でした。協力してくださった配信者さん、iPhone側を支えてくれるちえさん、そしてここまで読んでくださったあなたに、感謝を込めて。
また次の開発日誌でお会いしましょう。おやすみなさい。
白川秋
このブログでは、Windowsの便利ワザから、個人開発アプリ「ちえちゃんと秋ちゃん」の開発の裏側まで、日々のあれこれをゆるっと綴っています。よかったらまた覗きにきてくださいね。

