公開に失敗したら「Fix with AI」をワンクリック
Mythexで公開が失敗すると、ダイアログに実際に何が起きたのかが表示され、失敗のたびにFix with AIとTry againの2つのボタンが出るようになりました。Fix with AIを押すと、失敗の内容とアプリが出力したものをエージェントに渡すので、エージェントはプロジェクトを修正して再公開します。アプリ側に問題がなければ、そのまま公開し直すだけです。また、実際にはアプリ側に原因があった問題を「こちら側の問題」として扱うことをやめ、公開後数分たってから壊れるアプリも検出するようにしました。
変更点
どの失敗にもFix with AIを表示
以前は、Fix with AIが表示される失敗と、Try againしか表示されない失敗がありました。その振り分けは、原因がどちら側にありそうかに基づいていました。こちら側の問題に見えるものでは、問題のないコードをエージェントが追いかけてクレジットを消費することを避けたかったのです。
その結果、どの種類の失敗なのかを自分で判断する必要がありました。今では、すべての失敗で両方のボタンが表示されます。エージェントは失敗の種類と、その背後にある出力を受け取るので、アプリに問題があれば修正し、問題がなければ公開し直します。どちらだったかを伝える必要はありません。
例外は、原因がコードではない場合です。リンク名がすでに使われている場合は別の名前を提案し、クレジットが不足している場合はクレジットを追加する方法を案内します。
何が起きたかを伝えるメッセージ
以前は、いくつかの失敗が「こちら側の問題です。もう一度公開してください」として処理されていました。これは事実ではなく、公開し直しても解決しませんでした。今では、それぞれに専用のメッセージがあります。
- 「アプリが公開後に起動しませんでした。」 アプリは公開されましたが、接続の受け付けを開始しませんでした。多くの場合、別のポートで待ち受けているか、
localhostでしか待ち受けていません。公開されたアプリは0.0.0.0と$PORTのポートで待ち受ける必要があります。決まった時間待って様子を見る代わりに、アプリが実際にそのポートで接続を受け付けているかを確認するようになりました。 - 「ファイルが大きすぎます」/ ファイル数が多すぎます。 静的サイトには、ファイル1つあたりのサイズ上限(サイトの種類によって約25〜30 MB)と、2万ファイルの上限があります。アップロードの前に、すべてのファイルの種類で同じ方法でフォルダーを計測し、上限を超えたファイルをすべて一覧表示するようになりました。
- 「アプリが起動直後に停止しました。」 多くの場合、環境変数やシークレットなどの設定が不足している、最初のリクエストでクラッシュした、または起動コマンドにエラーがあったことが原因です。
公開後に壊れるアプリの検出
公開自体は成功しても、数分後にアプリが失敗することがあります。繰り返しクラッシュし続けたり、動いているのに接続を受け付けなくなったりします。Mythexは公開済みのアプリを定期的にチェックします。アプリが数分以内に何度もクラッシュしたり、動作しているのに接続を受け付けていなかったりすると、その公開は失敗とマークされ、メールが届き、プロジェクトにはFix with AIと一緒にメッセージが表示されます。
アプリが自力で回復した1回のクラッシュは、公開の失敗にはなりません。原因がアプリのメモリ不足であった場合は、それについて別のメールが届きます。
公開済みのアプリを失敗とマークするとき、その時点でアプリが出力していた内容も保存します。その生の出力はユーザーには表示されませんが、Fix with AIがエージェントに渡す情報になるので、推測ではなく実際のエラーから修正を始められます。
使い方
- いつもどおりPublishをクリックします。
- 失敗したら、ダイアログのメッセージを読みます。何かが失敗したという表示だけでなく、何が起きたのかを伝えるように書かれています。
- Fix with AIをクリックします。エージェントがビルド出力やアプリのログを読み、プロジェクトを修正します。その後、再公開できます。
- メッセージに、アプリに問題はないと書かれている場合(「公開が一時的に混み合っています」や「公開が中断されました」など)は、通常Try againで十分です。
- 公開済みのアプリが何度もクラッシュしているというメールが届いたら、プロジェクトを開いてください。同じメッセージとFix with AIがそこにあります。
再公開するときは、メッセージでリンク名が問題だと書かれていない限り、同じリンク名のままにしてください。
なぜ作ったのか
公開の失敗は、多くの人が最初に出会う本格的な壁であることが多いです。アプリはプレビューでは動くのに、Publishを押すと立ち上がりません。開発者ではない人にとって「ログを確認してください」は、実行できる助言になりません。Fix with AIは、その瞬間をワンクリックに変えます。そして、正直なメッセージがあるので、読んだときに正しい場所を指し示してくれます。
制限
- Fix with AIはエージェントを使うため、ほかのメッセージと同じようにクレジットを消費します。
- 修正できるのはプロジェクト内のもの(コード、設定、起動コマンド)です。リンク名が使われている問題、確認されていないメールアドレス、残高が空のクレジットは修正できません。
- 大きなファイルをStorageに移すか、より小さくするかといった判断は、ユーザーが行う必要があります。
すべてのメッセージと、それぞれへの対処法はドキュメントにあります: 公開のトラブルシューティング。失敗した状況を解決する一般的な方法については、AIで作ったアプリのデバッグ方法をご覧ください。