見出し画像

【1-2】「ダッシュボードが固まります!!!!」— 作った道具が、動かない

【この章について】 この連載は、プログラミング経験ゼロの私が、有料の音声入力アプリTypelessの「自分専用版」を作っていく記録です。第1章(全5回)は、Claude Codeと出会うの約3ヶ月の話。別のAIと組んで、動くものは確かにできたのに、だんだん使わなくなっていった日々です。当時の道具が発話ログを382件残していて、この章の引用はすべてその実物から取っています。うまくいった話ではありません。でも、第2章から始まる3週間は、この3ヶ月の上に建っています。

著者の自己紹介

前回記事


便利にするはずのものが、動かない

前回、喋った言葉が整った日本語になって出た。嬉しくなって、その日のうちに次を頼んでいる。過去の文章を日時ごとに並べて見られる画面がほしい、と。

できた。そして、こうなった。

ダッシュボードが非常に重たくてフリーズしてしまいます

初代MyTypelessのダッシュボード(笑

原因の見当がついていないわけではなかった。私はこう続けている。

コンテナのサマリを見た感じ、リソース枯渇によるものではなさそうですが、調査すべきポイント、ログなどを教えてください

メモリ不足ではない。そこまでは自分で見た。そこから先が分からない。

「やっぱり駄目ですね。。」

対処が返ってくる。試す。

キューの対処をやってもやっぱり駄目ですね。。

別の対処が返ってくる。試す。

同じ問題が出るのですが。。。

そして、こうなる。

またエラーです

またまたエラーです!

この「また」が、この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が生まれる。

次回記事


いいなと思ったら応援しよう!