AI時代のプロダクトマネージャーの一日:一言を、押せるプロトタイプに変えるまで
まず具体的な話から。先週の水曜の午後、僕の頭の中にぼんやりした思いつきが浮かんだ。「気軽に家計をつけられる小さいものが欲しいな」。二時間ちょっと後、同僚はもう僕のスマホで本当に触っていた——「一件追加」を押して、金額を入れて、カテゴリを選ぶと、トップに戻ったとき今月いくら使ったか、円グラフがいくつに割れているかが見える。コードは一行も書いていない。
この話をするのは、AIってすごいだろ、と言いたいからじゃない。直感に反する一つのことを言いたい。多くの人は、AIが来たからにはPMも急いでプログラミングを学ばないと淘汰される、と思っている。でもこの半年ちょっとの僕の実感はまるで逆だ——コードを書くという行為のハードルは、猛烈な勢いで崩れ落ちている。本当に価値が上がって、しかも希少になっているのは、別のものだ:一つのことを、AIが一発で正しく作れるくらいまで明確に言葉にすること。
この記事では、その理屈そのものは語らない。僕が具体的にどうやったかを書く。上に書いた家計の小さいものを例に、踏んだ地雷も含めて、一歩ずつ分解して見せる。あなたの手元にも、ずっと温めているのに手をつけていないアイデアがあるなら、読み終わったら自分で一回試せるはずだ。
第一歩:すぐ作らせない。先に、向こうから僕に質問させる
僕がAIでものを作り始めた頃、いちばんやりがちだった間違いは、頭の中のぼんやりした一言をそのまま投げつけることだった——「家計簿アプリ作って」——そして完成品が返ってくるのを待つ。
結果はいつも同じ。向こうは「たぶんこれが欲しいんだろう」というものをくれて、それは僕の頭の中とは天と地ほど離れている。僕が少しずつ直すと、向こうは少しずつずれていく。二人でお互いを当てっこして、当てっこしているうちに僕がキレる。
その後、習慣を一つ変えた。ほんの一言の話なのに、効き目は異常だった。もう直接作らせない。先に、向こうから僕に質問させる。 僕はこう言う。「家計をつける小さいツールを作りたい。まだ書かないで。先に僕に5つ質問して。あなたがはっきりさせる必要があるのに、僕がまだ言っていないところを、質問で引き出して」。
すると向こうはこう聞いてくる。誰が使う、あなた一人?それとも複数人?カテゴリは要る、カテゴリはあなたが決める?それとも僕がいくつか初期設定する?金額は収入と支出を分ける?データはスマホのローカルに保存でいい?それとも別の端末でも見られるようにする?予算の通知は要る?
見てのとおり、これらの質問は、全部もともと僕の頭の中でぐちゃぐちゃで、詰めきれていなかったところだ。 向こうが僕の代わりに「僕は結局何が欲しいのか」を絞り出してくれた。この5つに答え終わると、このものの姿が、まず僕自身の中で先にはっきりする。この状態から作らせると、一発で決まる確率が格段に上がる。
僕が踏んだ地雷:この一歩を飛ばして浮かせた二分は、あとで二時間かけて返すことになる。 一度、質問がうるさくて、いきなり作らせたことがある。機能は揃っているけど僕の欲しいものとはまるで違うものが出来上がって、手直しした挙げ句、最初からやり直したほうがマシだった。今はこの一歩は絶対に外さない。
第二歩:一度に、一箇所だけ直す
最初のバージョンが出てくる。押せる。でも絶対にどこか変だ。ここで二つ目の地雷が待っている。気に入らない十箇所を、一息に全部言ってしまうことだ。
「トップの色が薄すぎ、カテゴリのアイコンがダサい、円グラフの色を変えたい、一件追加のボタンが小さすぎ、あと金額に小数点を自動で付けられる?そうだ、ついでに検索も足して……」
昔はこうやっていた。早く済ませたくて。結果はこうだ。向こうが直し終わると、色は合っている、でもボタンの件は忘れている。あるいはボタンは直ったけど、円グラフがまた壊れた。直す箇所が増えると、向こうはあちらを立てればこちらが立たずになり、あなたも結局どの一言が効いて、どの一言がこっそり漏れたのか分からなくなる。
今は、一度に一つの変更だけ言う。言ったらスマホで一度押して、この一箇所が合っているのを確認してから、次を言う。 遅い?見た目は遅い。でも一歩一歩が安定していて、後戻りしない。計算してみたけど、こうやって進めたほうが、「全部言ってから一緒に手直し」よりずっと速い。しかも僕は最初から最後まで、今どういう状態かを分かっている。
これはAIの小技でも何でもない。ものづくりのいちばん素朴な原則そのものだ。小さい歩幅で、一歩ごとに検証できる。 ただAIが、一歩ごとのコストを極限まで下げてくれたぶん、欲張る理由がますますなくなった、というだけだ。
ひと言はさむ:それぞれの変更を、どう言えばAIに伝わるか
上で「一度に一つだけ直す」と言ったけど、「一つ」だけでは足りない。肝心なのは、その一つをどう言うかだ。これは記事全体で、いちばん実践的で、いちばんすぐ効くと僕が思っているところだ。
僕が踏んだいちばん大きな地雷は、形容詞でAIに指示を出すことだった。「トップをもっとイイ感じに」「ボタンをもっと堂々と」「色をもっと高級に」——こういう言葉を口にした瞬間、判断権を全部向こうに返してしまう。なぜなら「イイ感じ」「高級」は、向こうにとっては一万通りの解き方があって、向こうは適当に一つ選び、それはたいていあなたの欲しいやつじゃない。
その後、自分に二つのことを強制した。参照物を渡す、状態を渡す、形容詞を渡さない。
参照物を渡すというのは、「イイ感じに」と言わずに、「トップのカード、余白はWeChat読書みたいな感じを参照して、一画面に三つか四つだけ、詰め込まない」と言うこと。向こうはすぐに何が欲しいか分かる——曖昧な評価を投げるのではなく、突き合わせられる具体物を渡したからだ。
状態を渡すというのは、「記録がないときの処理をしといて」と言わずに、「一件も記録がないとき、トップの真ん中に灰色の一行で『まだ記録がありません、右下の一件追加を押してください』と表示。空っぽの円グラフは出さない」と言うこと。それぞれの状態で、画面に具体的に何が出るべきかを言葉にする——データがあるとき、ないとき、読み込み中、エラーが出たとき。具体的に言うほど、向こうがあなたの望まない形に「自由に発揮」する余地がなくなる。
僕の今の自己チェックはこうだ。一つ指示を言い終えたら、その中に形容詞がないか見返す。 「イイ感じ、堂々、高級、ちょっと最適化」みたいな言葉があったら、そこで止めて、「誰を参照する、具体的にどんな形か」に翻訳する。この小さな動作は、どんなAIの小技を学ぶよりも効いた。
第三歩:最初のバージョンから本物のデータを載せる。「サンプル文字」を使わない
これは、いちばん見落とされやすいのに、結果にいちばん響く一条だと思う。
多くの人はプロトタイプを作るとき、AIにまず「ガワ」を組ませる習慣がある——中身は「タイトル一」「本文プレースホルダー」「¥000.00」みたいな偽物で、「構造が合ってれば、中身は後で入れればいい」と考える。
僕はもうこうしない。最初のバージョンから本物のデータを載せさせる。 家計のこの例では、昨日僕が本当に使った数件をそのまま初期値にさせた。朝食12、タクシー28、買い物63、そして懐が本気で痛い、子どもの習い事の申し込み2000。
なぜか。偽物のデータは、あなたを騙すからだ。 全部「¥000.00」だと、画面はさっぱり見えて、「いいじゃん」と思ってしまう。でも「2000」みたいな、本物の、桁のそろわない数字を入れた途端、問題が一気に噴き出す。金額が長くなると、右側が画面の端に突き当たる。あの円グラフは、2000の一件に押しつぶされて、他の数件がほとんど見えないほど小さくなる。カテゴリ名が少し長いだけで、レイアウトが押されて変形する。
これらの地雷は、偽物のデータでは一つも見えない。そしてリリースすると、全部が本物のユーザーの顔に降ってくる。 本物のデータを使えば、それらは自分の手元の最初のバージョンで露見する。しかも早く露見するほど、直すのが安い——今なら一行の言葉を直せば済むのが、リリースしてユーザーに怒られてから直すとなると、話がまるで違う。今の僕の習慣は:本物の数字が使えるなら、絶対にプレースホルダーは使わない。本物で、極端であるほどいい——いちばん長い名前、いちばん大きい金額、いちばん空っぽの状態(一件も記録がないとき、画面はどんな形か?)。全部、最初のバージョンで見ておく。
第四歩:必ず、実機で自分の手で一通り押す
プロトタイプが出来上がると、AIはたいてい自信満々にこう告げる。「完了しました、機能はすべて実装済みです」。
この言葉は一字も信じるな。向こうが嘘をついているんじゃない。手が生えていないから、本当に一度押すことができないんだ。
僕はこれで痛い目に遭った。あるとき向こうは、記録も削除も集計も全部できました、と胸を張った。僕もコードのロジックを見て粗が見つからなくて、信じた。ところが同僚が触ってみて、一件追加、いいね。次にその一件を押して消そうとしたら——反応なし。削除ボタンは描いてあった。でも「押したら本当に消える」という動作が、抜けていた。しかも向こうはそれに全く気づかず、「完了しました」と告げていた。
それ以来、鉄の掟を一つ立てた。どんな「できました」も、僕が自分で、実機で、肝心のあの一本道を手で通してみて、はじめて有効だ。 一件追加する、それがリストに現れるのを見る、それを消す、集計がそれに連れて変わる——このつながりを自分の手で通せないうちは、まだ終わっていないものとみなす。この一歩は三分もかからない。でもこれが、あなたと「リリース後にユーザーに見つかる」との間にある、唯一の壁だ。
具体的にどう通すか、僕には泥臭いやり方がある。手をつける前に、まず紙に、このものがいちばん肝心な二、三本の道を書き出す。 家計のこれなら、僕が書いたのは——「①一件追加できて、それが見える ②一件削除できる ③トップの数字と円グラフがそれに連れて変わる」。この三本だけ。作り終えたら、僕はAIが何と言おうと見ない。この紙を持って、一本ずつスマホで押していく。通ったら一本消す。消せないやつが、まだ終わっていないところだ。
この紙を甘く見ないでほしい。これは、手をつける前に「このものは結局どの数件で成り立っているのか」を先に考えきることを強制してくる——多くの人が途中で迷子になるのは、この二、三本の主要な道を、紙の上で一度も決めていないからだ。作っているうちにあれこれの細部に引っ張られて、最後は機能が山ほどあるのに、いちばん核心の道が通っていない。どの道が必ず通らないといけないかを先に考えきってから、AIに作らせる。最後に、その数本の道を自分の手で検証する——この頭とお尻の二枚の紙は、間で向こうが何行コードを書いたかより、ずっと大事だ。
第五歩:検収ラインは「押し通せるか」であって、「見た目が合っているか」ではない
上のいくつかの歩をつなげると、実は同じ一つの判断が繰り返し現れているのが分かる。僕は結局、何をもって、このものが行けるか行けないかを判断するのか?
僕が自分に出した答えはこうだ。一本の完全な道を本当に押し通せるか、であって、見た目が合っているかではない。
「見た目が合っている」は、いちばん人を騙しやすい。スクショをグループに送れば、みんな「イイね」と言う。でも一人も本当に一件記録していないかもしれない。一方「押し通せる」は硬い——一人の生身の人間が、開いて、一件記録して、結果を見るまで、途中で詰まらず、死んでいるボタンが一つもなく、この道が通った、そのときはじめて、このものは本当に成り立っている、と言える。
ここが、AI時代のPMがいちばん守るべきところだと僕は思う。ものを作るコストがほぼゼロまで押し下げられたとき、「それっぽいものを一つ作る」ことは、もう価値がない。画面じゅうにあふれている。価値があるのは、あなたがまだ判断できるかどうかだ:このそれっぽいものは、本当に使えるのか、それとも見た目がそれっぽいだけなのか。 この判断は、AIがあなたの代わりにはできない。なぜならAI自身が、自信満々に「完了しました」と言いながら削除ボタンを抜かした、あの張本人だからだ。
で、結局プログラミングは学ぶべきか
冒頭の問いに戻る。
僕の答えはこうだ。あなたはコードの書き方を学ばなくていい。でも、AIが一発で正しく作れるレベルまで話を詰めきる方法は、学ばないといけない——この二つは別物だ。 前者は、まさに値下がりしている手仕事を学ぶこと。後者は、ますます希少になっている判断力を鍛えること:ぼんやりしたアイデアを詰めきる、一度に一歩だけ進める、本物のもので検証する、自分の手で押し通してから信じる。
これらは、はっきり言ってどれも「技術」じゃない。むしろ、自分が何を欲しいか考えきっていて、しかも一歩ずつ検証する気のある人なら、もともと持っているべき習慣に近い。AIはただ、こうした習慣の見返りを、何倍にも増幅しただけだ——あなたが明確に考えるほど、向こうがくれるものは正確になる。あなたが適当にやるほど、向こうも適当になる。
僕にも今なお分かっていないところがあるので、ついでにあなたに投げておく。「アイデアを、押せるものに変える」という行為が、一つの午後で何往復もできるくらい速くなったとき、PMと「自分が何を欲しいか考えきった、ただの普通の人」との間の、あの線は結局どこに引かれるのか?僕自身も答えを探している最中だ。でも少なくとも、あの線が「コードを書けるかどうか」の上にはないことは分かっている——先週のあの家計の小さいものは、最初から最後まで、僕はコードを一行も触っていないのだから。
ディスカッション