【1-2】「ダッシュボードが固まります!!!!」— 作った道具が、動かない
【この章について】 この連載は、プログラミング経験ゼロの私が、有料の音声入力アプリTypelessの「自分専用版」を作っていく記録です。第1章(全5回)は、Claude Codeと出会う前の約3ヶ月の話。別のAIと組んで、動くものは確かにできたのに、だんだん使わなくなっていった日々です。当時の道具が発話ログを382件残していて、この章の引用はすべてその実物から取っています。うまくいった話ではありません。でも、第2章から始まる3週間は、この3ヶ月の上に建っています。
著者の自己紹介
前回記事
便利にするはずのものが、動かない
前回、喋った言葉が整った日本語になって出た。嬉しくなって、その日のうちに次を頼んでいる。過去の文章を日時ごとに並べて見られる画面がほしい、と。
できた。そして、こうなった。
ダッシュボードが非常に重たくてフリーズしてしまいます

原因の見当がついていないわけではなかった。私はこう続けている。
コンテナのサマリを見た感じ、リソース枯渇によるものではなさそうですが、調査すべきポイント、ログなどを教えてください
メモリ不足ではない。そこまでは自分で見た。そこから先が分からない。
「やっぱり駄目ですね。。」
対処が返ってくる。試す。
キューの対処をやってもやっぱり駄目ですね。。
別の対処が返ってくる。試す。
同じ問題が出るのですが。。。
そして、こうなる。
またエラーです
またまたエラーです!
この「また」が、この2ヶ月の主題である。
新しい症状が出るのではない。同じ症状が、直したはずなのに戻ってくる。しかも直すたびに別の場所が少し変わっていて、どこまで戻っていいのかも分からなくなる。
素人なりに、切り分けはした
ここは自分でも少し褒めたいところなのだが、私はけっこう真面目に切り分けている。
Ctrl + Shift + Rで何も起きません。dbを消してもう一度appを再起動しましたが、今度は画面が表示されなくなりました。音声を整形かけたらこうなるのか、そもそもapp起動時からそうなのか、もう一度試してみます
ポート変えても同じです。ちなみに音声整形をかける前、app起動直後からこの状態のようです
シークレットウィンドウの結果は添付の通り
ブラウザのキャッシュを疑い、消して試し、ポートを変え、シークレットウィンドウで確かめ、「整形の前か後か」を切り分けている。
プログラミングは分からない。それでも「どこで起きているか」を絞ることはできる。これは後の3週間でも、私がずっとやり続けることになる。
「ダッシュボードが固まります!!!!」
とはいえ、限界はある。
ダッシュボードが固まります!!!!どうにかしてください
感嘆符が4つ付いている。次の日にはこうなっている。
ダメです。音声入力を一度でもやると、この状態で固まってます
そして。
もしもーし、固まりますよ
読み返すと笑ってしまうが、当時はまったく笑っていない。同じ画面を、何十回も開いては閉じている。
いま白状しておくと、この時期の私はAIにかなり強い言葉を使っている。
おい!!プロンプト変えたな!?
(これが何の話なのかは、次回に書く。この一言から、私はあることを始める。)
「ようやく」の3行後
そして、ついに直る日が来る。
ようやく無事にダッシュボードにも履歴が表示されるようになりました。お疲れさまでした
「お疲れさまでした」。ねぎらっている。
だがその同じメッセージの中で、私はこう続けている。
で、さっそく2点気になるところ
1、音声リンクが反応しません、修正してください
2、文章の整形に違和感があります。もっとtypelessのような自然で意図をくみ取る整形にしてください
ねぎらった3行後に、次の要求を2つ出している。
我ながらどうかと思うが、これが「自分で作る」ということなのだとも思う。買った製品なら、直った時点で終わりである。自分の道具は、直った瞬間から次の不満が始まる。
そして、また戻ってくる
またフリーズ問題発生中。。。何か根本的に問題あるのでは??今回の修正でSQLiteに戻ってないですよね??
「何か根本的に問題あるのでは??」
この直感は正しかった。だが正しさは、解決には一歩も近づけてくれない。
ダメ!!!
これがこの日の、最後から2番目のメッセージである。
直したのは、別のAIだった
ここで私は、あることをした。別のAIに、同じコードを見せたのである。Cursorという、コードを読ませるのが得意な相手だった。
cursorにデバッグしてもらいました。以下、そのコメントです。実際に固まる現象はなくなりました
原因は2つあった。
1つ目。htmlという名前の変数を作っていたせいで、Python標準の `html` という部品が上書きされて壊れていた。
2つ目。起動時に音声認識のモデルを全部読み込んでいたので、画面が出るまでに固まって見えていた。
用語|モジュールの上書き/遅延ロード
プログラムには最初から使える部品(モジュール)があり、`html` もその一つ。
同じ名前の変数を作ると、その部品が使えなくなる。しかもエラーが出ないことがある。
遅延ロードは、重い読み込みを「必要になるまでやらない」こと。
起動時に全部読むと、その間ずっと固まって見える。
どちらも、素人には一生思いつかない種類の原因である。そして—一晩分の「また固まりました」の正体が、これだった。
その夜、道具は自分の話を記録していた
面白いことに、この夜のやり取りは、作りかけのその道具自身に記録されている。
v1が最初に記録した9件から、4件を抜き出す。
05/10 23:41 ダッシュボードが固まってしまい、やはり内容は残りませんね。
05/10 23:57 ダッシュボードは綺麗に表示されました。さて、これからどうなるでしょうか。
05/10 23:57 うまくいったようです。これなら使えそうです。
05/11 00:27 Cursorはさすがですね。実に見事なデバッガーです。道具が最初に記録したのは、その道具自身の話だった。

そして、その1分前。
と思ったら音声ファイルをDLできない。これもCursorに聞く?
(聞きました。)
よし、いいでしょう!今日はこんなところでしょう
この回で分かってほしいこと
「AIに聞けば直る」は、半分だけ本当である。
聞けば何か返ってくる。試せる。それでも、同じところをぐるぐる回ることがある。回っている間、こちらには「回っている」という自覚すら無い。毎回それらしい対処が出てくるからだ。
抜けたのは、別の目を入れたからだった。腕のいい相手を呼んだからではない。同じものを、違う角度から見せたからである。
次回は、その「おい!!プロンプト変えたな!?」の話を書きたい。あの日から私は、ファイルを上書きするのをやめた。そして app_r2.pyが生まれる。
次回記事
