AIに作ってもらったアプリ、そして何十回もの間違い
林政賢 ·
まず結果から話します。
私は《PurpsyNightX(紫色微醺夜X)》というパーティーゲームアプリを作り、すでにApp Storeに公開しています。友人たちが集まって、それぞれスマホで同じ「個室」に接続し、順番にカードを引いて質問に答え、お互いに点数をつけ合うというものです。
中には1,400枚以上の質問カード、39枚の限定エンディングカード、22の画面があり、最大10人が同時接続できます。これくらいの規模は、以前なら小さなチームが必要でした。
プログラムの部分はほぼすべてAIが書きました。
すごそうに聞こえますよね。でも、ここで話を終えたら、この記事は嘘になってしまいます。
何十回も間違えた
直近のこのプロジェクトだけでも、実際に起きたことで、しかも誰かが指摘しなければ直らなかったものがこれだけあります。
中央揃えは書いたつもりが、アニメーションがその設定を上書きしていた。
その一行が画面の半分を覆ってしまう。
ひとつ直すと、別の問題が生まれる。
2回修正して、ようやく本当に直った。
しかも原因は、前日にAI自身が追加した演出だった。
質問が見えないまま答えを選ぶ羽目に。
これは一度だけではなかった。
AIは文字数制限のせいだと思って修正したが直らず——本当の原因はまったく別のところにあった。
これは私が覚えているものだけです。プロジェクト全体では、何十回も避けられませんでした。
そしてそのたびに、誰かがスマホを手に取り、実際に使ってみて「ここがおかしい」と言って初めて、AIは調べに行くのです。
「おかしい」と言う人がしていること
先週実際にあったことを一つ話します。この一件が、事の本質をいちばんよく表しているからです。
あるプレイヤーがこう言いました。「ルームの中が全部重くて、ボタンを押しても反応がない」
この一言をそのままAIに投げました。AIはネットワークを計測し、実際にデータが地球を大きく回り込んでいて、往復に0.5秒かかっていることを発見しました。それを踏まえて最適化を行い、経由回数を減らしました。もっともらしい話ですし、計測結果も事実でした。
そこで私自身がスマホでプレイしてみました。
私:まだ重い。
たったこの一言。でもこの一言が、それまでの方向性をすべて覆しました——それによって、次のこの一文が引き出されたのです。
ネットワークが遅くても、ボタンが反応しなくなることはない。
ここで少し立ち止まって考えてみてください。この一文には、技術的な話は一切ありません。
これは、混同されていた二つの事象を切り分けただけです。「押してから結果が出るまで少し待たされる」と「押しても画面がまったく動かない」——これは別種の「使いにくさ」です。最初の修正が対処したのは前者でしたが、プレイヤーが訴えていたのは後者でした。
別の観点から計測し直したところ、本当の原因が見えてきました。
誰も操作せず、放置されていたわずか10秒の間に、プログラムはひそかに画面全体を78回も再描画していました。つまり何もしていなくても毎秒8回も再描画していたことになります——スマホがあなたの操作に反応しきれないのも当然です。
原因は、あるコードが毎秒「チャットの吹き出しをそろそろ消すべきか」をチェックしていたことで、しかも画面に吹き出しがあるかどうかにかかわらず、常にチェックしていたのです。吹き出しが実際に必要なのは表示されている6秒間だけで、それ以外の時間はすべて無駄な処理でした。
修正後、同じ10秒間の再描画回数は0回になりました。何もしていなければ、本当に何もしていない状態になったのです。
これには名前がある。「デバッグ」という
あなたはきっと「それは自分には縁がない話だ」と思うでしょう。
でも、もう一度上の一連の流れを読み返してみてください——私がしたことは3つだけです。実際に使ってみる、予想と違うことに気づく、2種類の異なる「使いにくさ」を分けて言葉にする。
どれ一つとして、プログラムが書ける必要はありませんでした。
あなたにその能力が足りないのではなく、ただ誰もその能力に名前があると教えてくれなかっただけです。
次の3つのうち、あなたは少なくとも1つに当てはまるはず
決済で同じ情報を3回入力させられる、解約ボタンがメニューの5階層目に隠されている、押し間違えるボタンがいつも同じ位置にある——あなたはただイライラするだけでなく、どこがイライラするのかを言葉にできます。それはユーザー体験に対する判断力であり、しかも最も教えるのが難しい種類のものです。
そこで一歩踏み込んで聞いてみたら、実際にはそうではなかった。その「最初のもっともらしい答えを鵜呑みにしない」という直感こそが、この記事でいちばん重要な能力です——AIが最初に出してくる説明は、常にもっともらしいものだからです。
「壊れた」だけでは役に立ちません。「ここをタップしたら、あれが出てきた。でも前の画面に戻ると思っていた」なら十分に役立ちます。これは感覚を事実に翻訳する力で、エンジニアはそれを「再現手順」と呼びますが、あなたにとっては「話をきちんと伝えること」と呼んでもいいでしょう。
なぜAIには特にこの能力が必要なのか
それはAIがあなたの製品を「使う」ことはないからです。
AIはコードの一行一行を理解できますが、「使っていて煩わしい」というあの感覚を持っていません。電車の中で片手で操作することも、友人にせかされて焦ることも、周囲が騒がしくて文字が見えづらいと感じることもありません。
AIは疲れることも、苛立つことも、5回直しただけで投げ出したくなることもありません——これはAIの最大の強みですが、裏を返せば、AIは眉をひそめることもないということです。
さらに厄介なのは、「なぜこう作ったのか」と尋ねると、ほぼ必ずそれらしい専門的な説明を返してくることです。たとえ本当の理由が「一つ前のステップでたまたまそう書いてしまっただけ」だとしても。AIはあなたを騙しているわけではありません——本当にそれでうまくいったと思い込んでいるのです。ちょうど、文書を編集して保存ボタンを押したつもりが、実は別のウィンドウを開いていた、というのと同じです。
だからこそAIには、立ち止まって「ちょっと待って、これはおかしい」と言ってくれる人が必要なのです。そして、その人にプログラミングの知識は必要ありません。必要なのは実際に時間をかけて使ってみる意志と、それを口にする勇気だけです。
では今、いちばん価値があるのは何か
この数週間の経験から言えば、それは二種類の人です。
一つは、デバッグができる人。プログラムを直せることではなく、「ここが変だ」と気づき、どこが変なのかを言葉にできること。この能力は、たった一つの方法でしか養えません——自分のものを実際に使い倒し、自分でも文句を言いたくなるくらいまで使い込むことです。
もう一つは、論理を細かく考えられる人。数学ができることではなく、混ざり合ったものを切り分けられること——「遅い」と「反応しない」は違う、「未ログイン」と「ログイン失敗」は違う、「使い方がわからない」と「使いたくない」は違う、というように。
この二つの能力がAIと組み合わさって初めて、「一人でチーム一つ分の仕事をやり遂げる」という結果が生まれます。これらが欠けていれば、AIは非常に効率よく「やるべきでないこと」を完璧にやり遂げ、しかもその過程で説得力たっぷりの理由をいくつも生み出すでしょう。
AIによって「手を動かすこと」は安くなった。だからこそ「判断すること」が高くついている。
もしあなたがずっと「自分は技術がわからないから何もできない」と思っているなら——私からの提案は、まず毎日使っている、いちばんイライラするアプリから始めてみることです。そのイライラの原因を、具体的に3つの文にしてみてください。
きっと書けることに気づくはずです。
それが出発点です。
技術編
実際にどうやったのか知りたい方へ
エンジニア向けに書いた完全版の記事もあります。今回の記事であえて省いた部分がこちらに書かれています。
- アーキテクチャ全体とツール選定の理由
- 誰も事前に教えてくれない4つのCloudflareの落とし穴、それぞれの原因と解決策付き
- 「遅延を直したらチラつきが発生した」問題を実際にどう解決したか(コード付き)
- 本文中に登場するすべての数値の計測方法
新着記事
二つの AI ランプ、どっちを擦る?
Claude Fable 5.1 と GPT-6 Astra が二日違いで登場、価格は同じ。スコア比べではなく、問いはひとつ——vibe coding を始めるなら誰に払うか。
著者:林政賢(監督 · Gen AI クリエイター兼エンジニア · 瑭宜影像創意工作室 創業者)