【ITニュース解説】How I Handle 15-Second AI Tasks Without Losing 87% of Users
2025年09月13日に「Dev.to」が公開したITニュース「How I Handle 15-Second AI Tasks Without Losing 87% of Users」について初心者にもわかりやすく解説しています。
ITニュース概要
AIタスクの長い待ち時間でユーザーが87%離脱する問題を解決。非同期処理で即座に受付、フロントで段階的な進捗を表示し、完了をWebhookで通知。これにより離脱率が12%に激減し、売上も大幅向上した。
ITニュース解説
AIが画像を生成するなどの時間がかかる作業をユーザーに提供するアプリケーションを開発している時、その「待っている時間」が大きな問題となる場合がある。あるAIを活用したユニフォームデザインアプリケーションでは、ユーザーがデザイン生成ボタンを押してから実際に結果が表示されるまで、15秒から20秒もの時間がかかっていた。この間、ユーザーはただ「読み込み中」を示すスピナーを見せられるだけで、何も進捗がわからない状態だった。その結果、信じられないことに、ユーザーの87%が生成プロセスの途中でアプリを諦めて離れていってしまった。これは単にユーザー体験が悪いだけでなく、ビジネスにとっても深刻な損害をもたらす。
ユーザーが途中で離脱すると、生成のために使われたAIの計算コスト(例えば1回あたり0.04ドル)が無駄になる。また、ユニフォームが完成していれば発生したはずの注文機会(平均12ドル)も失われ、さらにアプリが「壊れている」と感じさせることでブランドイメージまで低下させてしまう。このアプリケーションでは、わずか1ヶ月で約1万ドルもの潜在的な収益を失ったため、根本的な解決策が必要だと判断された。
この問題の解決策として導入されたのが、「非同期処理」と「スマートポーリング」という二つの技術を組み合わせた方法である。従来の方式では、ユーザーがリクエストを送信してからAIが作業を終えるまで、ずっと接続を維持して待たせる「同期処理」が行われていた。これに対し、新しい方法では、処理を三つのフェーズに分ける。
まず、ユーザーがデザイン生成のリクエストを送信すると、システムはわずか200ミリ秒という瞬時にそのリクエストを受け付けたことを返す。この時、AIによる実際のデザイン生成作業はバックグラウンドで開始される。これはまるで、レストランで注文をしたら、すぐに「注文を受け付けました」という返事が来て、料理は後でシェフが作るのと同じようなイメージだ。システムは、このバックグラウンドで開始された作業に一意の「予測ID」を割り当て、そのIDと現在のステータス(例えば「開始中」)を一時的なデータ保存場所(キーバリューストアと呼ばれるシンプルなデータベースのようなもの)に記録し、すぐにユーザーに「あなたのデザインは作成中です!」というメッセージと予測IDを返す。これでユーザーは長時間待たされることなく、すぐに何らかのフィードバックを受け取ることができる。
次に、「フロントエンドマジック」と呼ばれる部分で、ユーザーインターフェースが工夫される。ユーザーがリクエストを送信し、予測IDを受け取ると、アプリの画面上には単なるスピナーではなく、具体的な進捗を示すプログレスバーとメッセージが表示される。このプログレスバーは、実際のAIの進捗に合わせて変化する。どのように進捗を知るかというと、「ポーリング」という仕組みを使う。ユーザーのアプリは、受け取った予測IDを使って定期的にサーバーに「AIの作業状況はどうなっていますか?」と問い合わせるのだ。
このポーリングには、「プログレッシブ遅延」という工夫が加えられている。最初は1秒後、次は2秒後、その次は5秒後、といった具合に、問い合わせの間隔を徐々に長くしていく。これは、サーバーへの問い合わせが頻繁すぎると負荷がかかりすぎたり、ネットワークの帯域を無駄に消費したりするのを防ぐためである。サーバーから「処理中」という返事が来れば、アプリはプログレスバーを更新し、「AIがあなたのユニークなデザインを作成中です…」といった具体的なメッセージを表示する。そして、「成功」という返事が来たら、AIが生成したデザイン画像を表示して、このポーリングを終了する。
そして、このシステムをより効率的でリアルタイムにするための「Webhookの秘密兵器」という部分がある。AIサービスがデザイン生成作業を完了すると、AIサービス自身が直接、アプリケーションのサーバーに対して「作業が終わりましたよ!」という通知を送る。これがWebhookである。サーバーはWebhookを受け取ると、まずその通知が本当にAIサービスから送られてきたものなのかを検証する(署名検証)。これにより、悪意のある第三者からの偽の通知を防ぎ、セキュリティを確保する。通知が正当なものであれば、AIが生成した画像データをダウンロードして保存し、キーバリューストアに保存されている該当する予測IDのステータスを「成功」に更新する。この更新により、フロントエンドが次にポーリングした時には、最新の「成功」ステータスを受け取り、すぐに結果をユーザーに表示できる。
この新しいアーキテクチャを導入した結果は劇的だった。ユーザーの離脱率は87%からわずか12%にまで激減し、セッション滞在時間は340%も増加した。結果的に、コンバージョン率(実際に注文に至る割合)は2.3%から8.7%へと大きく向上し、売上は278%も増加した。ユーザーが待つ時間が減り、イライラすることがなくなったため、サポートへの問い合わせも65%減少した。また、AIの計算コストも、無駄な生成が減ったことで、コンバージョン1回あたりのコストが40%削減された。
このシステムを構築する上で、いくつかの重要な注意点がある。AIサービスは、もしWebhookの通知がサーバーに届かなかった場合、何度も再試行することがある。そのため、同じ通知が複数回届いてもシステムが重複して処理しないようにする「冪等性」という考え方を取り入れる必要がある。例えば、すでに処理済みの通知であれば無視するといった対策である。また、キーバリューストアに保存したステータス情報は、いつまでも残しておくと不要なデータが膨大に蓄積されてしまうため、一定期間が過ぎたら自動的に削除されるように設定する(TTL:Time To Live)。さらに、もし何らかの理由でWebhookが失敗し、AIサービスからの通知が届かなかった場合に備え、アプリケーション側が直接AIサービスに問い合わせて状況を確認するバックアップの仕組みを用意しておくことも重要である。
この非同期処理とスマートポーリング、Webhookを組み合わせたアーキテクチャは非常に堅牢で、大量のアクセスにも対応できることが証明されている。ピーク時には同時に500以上のデザイン生成を処理し、1日あたり1万枚以上の画像を生成している。世界中のユーザーに対しても50ミリ秒未満という非常に短い応答時間でステータスチェックを提供し、3ヶ月間の運用で一度もシステムが停止することなく稼働し続けている。これは、ユーザーに快適な体験を提供しながら、ビジネスの成長を支えるための強力なパターンである。