見出し画像

【Skill配布あり】(おそらく)AIのUI出力精度を劇的に上げる方法

今日の記事は最近実験中のAIでのUI検討方法についての記事です。

この記事に含まれること
・どのようにAIにUXを検討させた利便性の高いUIを出させるか
この記事に含まれないこと
・あなたのデザイントーンや美しいUIを出すこと

AIにUIを作らせると、それっぽい見た目で動くUIが出てくるんですが…どことなく違ったり物足りなかったりします。

最近Claude Codeで検索UIを実装してみて、色々指摘していい感じのUIにしたのですが、この時ふと疑問を覚えました。
「なーんでAIはこれを最初から出せないんだ?」

最初は「AIはUXを理解していないから」「人間の感情の機微がわからないから」「ユーザー起点で考えていないから」浅いものが出てくるんだと思っていたのですが…最近ちょっと違う仮説にたどり着きました。

その原因は多分、「AIがUIの検討前にベストプラクティスを棚卸ししていないから」です。

この検討方法に関してClaudeのskillにしたので後続で配布しています。
それでは始めてみましょう。

手癖問題

例えば「検索UIを作って」とAIに頼んでみると、最近のAIはすぐに実装してくれます。
入力フィールドに虫眼鏡アイコンがあり、他にもいくつか機能があり、ちゃんと動くものです。

しかし何回か同じプロンプトで生成していくとあることに気づきます。

生成が安定しないのです。一口に検索UIを作ってといっても出力は安定せず、あぁこういう機能もあるのか…と思わされるわけです。

画像
一口に検索UIと言っても、多様

今までこれを思考停止で「AIは出力にブレがあるからな…」と受けていましたが、よくよく考えるとこれはおかしな話です。

仕様検討はロジカルシンキング

UIを作り慣れている人なら知っていることですが、UIの検討というのは思いの外ロジカルに検討されています。

例えばUIの検討はこんな風にを説明できるはずです。

商品検索UIの検討
Q1.商品検索にサジェスト機能は必要か?
A.望ましい。数文字入れた次点で候補が複数絞れるなら入力の手間を省くことができる

Q2.商品検索は前方一致であるべきか?完全一致であるべきか?
A.部分一致ないし曖昧さを加味したベクトル検索を許容するべき。人々は商品名をそんなに正確に覚えていない。

UIには美的要素が含まれこのあたりになると感覚的になってしまいますが、少なくとも利便性の高い機能というのはロジカルに類推可能なわけです。

となるとここで一つの疑問が湧いてくるわけですね。

「なぜロジカルの権化たるAIは、ロジカルなUI検討を毎回同じ形に収束させられないのか?

そうです。
つまり感覚的に作っているのではなく、ユーザーのことを理解してロジカルシンキングで検討しているのであれば、ある程度のクセはあれどどのディレクターがやっても、どのAIがやっても、ロジカルでさえあればUIは高確率で同じ形に収束するはずなのです。

が、現実は同じAIですら出力がブレるわけですね。

あれ?ロジカルじゃないじゃん?これはなぜなのか?

AI、手癖でUIを作ってるんじゃないかぁ?

ここでAIの仕組みについて思いを馳せてみますが、AIは確率論的に回答を生成しているので、厳密にはロジカルに決めているわけではありません。
UIを段階を追って検討させるというプロンプトわたしていなければ反射的にレスポンスを返していることになります。

もう少し正確に言うとこれは系列生成と言われる問題です。
ざっくりいうとAIは次のトークンを生成するとき、直前のコンテキストに想起が引きずられます。
なので「検索UIを作って」と言われた瞬間、AIの中で「よく見る検索UIパターン」への引力が強くなって、それ以降の展開はその初動に影響されるというわけです。

これが手癖の正体で、さながら「お!検索UI作るのね!思いついたわぁ。これです!」みたいな感じなわけですね。

棚卸しはその初動をベストプラクティスの列挙によって意図的に制御する操作なので、AIの構造的にワークするはずです。

ユーザー起点の問題だと思っていたが…

さて、この問題を最初私は「AIはユーザーの気持ちがわからない≒AIにいれるコンテクストやサービスの情報が足りない-AIがユーザーの気持ちを理解することが出来ない」…からだと思っていたのですが、ここにもう一つ落としありそうです。

それって、同じコンテクストを与えたらブレなくUIが出ることになりませんか?

もちろんコンテクストの密度によって解釈の幅があり生成のブレがある…ということは事実ですが、同じユーザー像-状況を与えても違う検索UIが出る理由にはなりません。

となるとAIがいいUIを作れないのは感情の点だけでなく別の問題があることになります。

UXデザインに大事な2つの要素

ここでちょっとUXデザインの話をしますが、そもそもUIを検討する際に、あるいはUXデザインを考えるときに大事な要素が2つあります。

私が思うに、基本的にUXデザインの本質は下記です。

UXデザインの本質:
ユーザーの課題をちゃんと理解すること
× 解決のアプローチを思いつくこと
=いい解決

この前者がUXリサーチ-後者がUXデザインと言われるのですが、ユーザー像をイメージさせるというのはこの前者にあたります。

では後者は?

良いアイディエーションにはインプットが必要

ではどのように良い解決のアプローチを思いつくのでしょうか。

みなさんは良いアイディエーションをするのに一番大事なことはなにか?と言われたら何だと思うでしょうか。

ブレスト?バイアスをなくすこと?数を出すこと?

私の意見は「良いインプット」です。

例えば昨今だとAIがわかりやすいですね。
AIは紙に書いてあることをOCR的に読むことが出来ますが、このことをあなたが知らなければ、あなたは電子化のシステムを考えているときに「紙をAIに読ませればいいじゃん!」とアイディアを思いつくことができません。

知識はアイディエーションの種であり、知識があるからいいアイディアを思いつき、知識を持つことで課題の解像度があがります。

だからAIにもUIを作成させる前にインプットが必要です。
検索UIを検討させる前に、検索UIにはどのような実装パターンが有るかが必要なのです。

良い検索UIを実装するには:
ユーザーが検索のときに迷っている課題を知ること×
検索UIやナビゲーションのアイディアを知っていること
=ユーザーが迷わない検索システム

手癖ということはAIの引き出しがあいてない!

そこでまたおかしなことに気づきます。

でもよ、AIこれだけ情報持ってるから、検索UIやナビゲーションのベストプラクティスぐらい知っているんじゃね?

そうですね。AIはちゃんとこれらのベストプラクティスを知っていますし、検索でdebounceが必要なことも、XSS対策が必要なことも、0件のときに誘導文を出すべきことも、全部知っています。

でも知っているのに出てこないのです。
なぜなら手癖で作っているから。

実装に入る前に「このUIで何を検討すべきか」を一度も展開しておらず、知識がアイディエーションに使われていないのです。

というわけでAIに作業させる前にベストプラクティスの棚卸しをさせる必要があります。これが私の考える(おそらく)AIのUI出力精度を劇的に上げる方法です。

検討させるべきレイヤー

ここからはどのようにUIのベストプラクティスをAIに検討させるべきなのか解説。最後にClaudeのSkillもあります。

まずUIには「見た目」以外にもいくつかの検討レイヤーがあります。
例えば5つぐらいに分けてみましょう。

検索UIの検討レイヤー
L1  見た目・レイアウト    コンポーネント配置、空状態、レスポンシブ
L2  インタラクション・挙動   debounce、アニメーション、フォーカス制御
L3  ロジック・アルゴリズム   前方一致/完全一致/曖昧一致、AND/OR/NOT
L4  セキュリティ・信頼設計   エラーの情報開示レベル、入力サニタイズ
L5  バックエンド責務の境界   どのレイヤーで処理するか、APIの契約

肌感としてAIが手癖で出してくるUIは、L1〜L2しか見えていません。
L3以降はバックエンドよりですしね。

たとえばログインフォームで「IDが違います」「パスワードが違います」と個別に教えるのは、L4の設計ミスです。

これは攻撃者にとって「このIDは存在する」という情報になってしまうので、セキュリティ界隈では、「IDまたはパスワードが違います」と曖昧に返すというTipsが言われています。
でも手癖で作ると、親切心から自然に個別のエラーを出してしまいます。

これはバグではなく、設計の決定が省略された結果なのではないでしょうか。

棚卸し

実装の前に引き出しを全部開けさせましょう。

この棚卸しとは、知識を増やす作業ではありません。
すでに持っている知識をL1からL5まで意識的に引きさせ、その後にAIに「このUIで検討すべきことは何か」を判断させるのです。

実際にやってみる:ECサイトの商品検索UI

ではAIに指示してみましょう。

画像
これからECサイトの商品検索UIを検討したい。検索UIのベストプラクティスを棚卸ししてみて

今回紹介のSkillを使うとこうなります。

長いので雰囲気掴んでくれれば大丈夫です。
UIスタックについては後で説明します。

画像

棚卸し:商品検索UI(ECサイト)

目的の1行定義: ユーザーが頭の中にある「欲しいもの」を、できる限り少ないコストで商品と結びつける。

UIスタック(5状態)
Ideal State
— 検索結果が適切にヒットし整理されている状態
Empty State — 2種類ある。検索ワードなし(初期)と、0件ヒット(検索後)
Partial State — 画像なし・価格未設定・在庫切れ商品が混在する状態
Loading State — サジェスト遅延、結果フェッチ中、フィルター適用中
Error State — ネットワーク失敗、クエリ解析エラー

L1 — 見た目・レイアウト

検索入力
トップバー固定(Sticky Search) — 回遊・再検索が多いEC全般向け。スクロール後も検索できる
・ヒーロー検索(画面中央大型) — 検索が唯一の導線のとき(旅行・求人)。EC総合には過剰になりがち
・折りたたみ検索(虫眼鏡→展開) — SP限定。常時表示するとナビと競合するとき
・音声入力ボタン — 料理・DIYなど「ながら検索」シーンがある商材
・カメラ(画像検索)ボタン — ファッション・インテリア。「これと同じ」需要がある場合

検索結果グリッド
カード型グリッド(2〜4列) — 汎用。商品の視覚訴求が重要な場合
・リスト型(1列・テキスト多め) — スペック比較が必要な家電・PCパーツ等
・グリッド/リスト切り替えトグル — 探索スタイルが多様なユーザー向けに提供
・無限スクロール — 探索的ブラウジング向き。ただし「今どこにいるか」が失われる
・ページネーション — 目的指向の検索(特定商品を探している)に向く。戻れる安心感がある
・ハイブリッド(初期は無限、途中からページ区切り) — 離脱防止と位置把握の両立

フィルター・ソート
サイドバー固定フィルター — PC幅で商品数が多い場合。常時見えて探索が楽
・フィルターバー(横スクロール・SP) — モバイル全般。チップ型で絞り込み状態を視覚化
・モーダル・ドロワーフィルター — SPでフィルターの選択肢が多い場合
・ソートドロップダウン — 結果の上に常設。デフォルト値の設計が重要
・アクティブフィルターチップ(×で解除) — 適用中フィルターを常に表示。「今何で絞っているか」を明示

L2 — インタラクション・挙動
Instant Search(入力と同時に結果更新) — 高速APIがある場合。debounce 200〜300ms推奨
・サジェスト(オートコンプリート) — 誤字補正・カテゴリ誘導に有効
・検索履歴の表示 — フォーカス時に前回クエリを出す。再検索コストを下げる
・人気ワード・急上昇表示 — 探索的ユーザー向け。初期フォーカス時のEmpty誘導に使える
・フィルター即時反映 vs「適用」ボタン — 選択肢が少ない→即時。多い→ボタン型(誤操作防止)
・スケルトンUI(Loading) — カード型のレイアウトシフトを防ぎ、知覚速度を上げる


とまぁこんな感じで、本来UIには検討すべきことがこれだけあるのです。

ここまでが棚卸しです。

棚卸しが何を変えるのか

手癖の問題を別の角度から言うと、「選択/判断しない」です。

我々もUIを作るときにいくつかの選択肢からロジカルに選んで、UIを決定します。
選ぶためには比較対象が要ります。AIは比較対象を洗い出していません。だからUIに根拠がなく(乏しく)、だから便利ではないのです。

根拠のない設計は修正できません。
「なんとなくこうした」に対しては「なんとなく直す」しかなくなる。修正依頼が来るたびにゼロから作り直すのは、「選んでない」からです。

Skill作ったよ

というわけで棚卸しがいかに重要か伝わりましたでしょうか。
この棚卸しをさせるClaudeのSkillを作りました。

以下はskillの解説。まずSkillはこの構成になっています。

ui-design
Skill.md
├ examples.md
├ ui-stack.md
└ novel-ui.md

Skill.md

このスキルにはまずいくつかの重要なコンセプトが書かれています。
ざっとこんな感じ。

・手癖で作るな考えろ
・何のUIかわからないと棚卸ししようもない
・単に作る画面だけでなく、どのフローのなかで使う画面か考えろ
・ユーザーにとっていいUI/悪いUIとは何か定義しろ

でその後に思考プロセスを書いてます。

Step1.棚卸し
受け取ったUIコンポーネント・画面名に対して、全レイヤーにわたって使えるパターンを在庫として展開する。
Step2.文脈の要求
棚卸しを踏まえ、ユーザーの文脈と照らし合わせるために不明な情報を聞く。
Step3.アイディエーション
・棚卸しのパターン × 文脈 を掛け合わせて、可能性を展開する。
・文脈に照らして各パターンを評価する
 ◎ 強く推奨 / ○ 検討余地あり / × 不適
Step4.要件定義
・アイディエーションの結果を、実装可能な仕様に落とす。
・採用パターンと理由、具体の仕様など
Step5.実装
・要件定義を翻訳してコードを書く。
・もちろん文章で要件定義をさせてもよい
Step6.体験の検証
・実装後、STEP 0 で立てた体験目標と照合する。
・作業中は実装バイアスがかかるため、完成後に改めてユーザー視点で見直す。

使ってみた他の人によるとStep2とか3とかは省略されることがあるみたいですが、Step1だけは必ず行うように言明しています。正直これしてくれればあとはなんとでもなる気がする。

examples.md

棚卸し出力のフォーマットなど
執拗網羅的に棚卸しさせるため

画像

ui-stack.md

UIスタックはScott Hurffという人が提唱したUIのよくある状態を5つにまとめたものです。

画像
引用:UIデザインの考慮もれを防ぐ【UI Stack】

必ずしも毎回5つに収束するわけでもないが、まぁ考えやすい。
さっきのベストプラクティス-実装の棚卸しとはまた別に、そもそもどういうUI状態があり得るのか?の検討をなくすために。

novel-ui.md

このスキルはちょっと特殊。
先程からベストプラクティスや既存パターンと言っているが、実はここに一つ課題があります。というのもベストプラクティスは「先人の失敗の集積」であり、実装される概念そのものが新しい場合、既存パターンに乗り切らない可能性があるわけです。

例えば検索UIで「キーワードだけじゃなくて、ユーザーが今どういう状況かを加味して結果を変えたい」みたいな要件が出てきたとします。

キーワード検索のベストプラクティスは豊富にありますが、「状況を加味した検索」のパターンはまだほとんど言語化されていません。
このとき既存パターンに引き寄せると、結局「フィルターを増やす」「タグを付ける」という方向に収束してしまって、本来表現したかった概念が歪みます。

このときに真にUI検討で判断すべきは「既存パターンで実装できるか」ではなく「既存パターンで概念の意味が保存されるか」なわけです。
ままならないときにパターンからではなく概念から逆算して未知のUIを作る必要が出てきます。

このスキルにはその判断フローを入れています。
AI時代、みんなが自分のツールを作るようになれば前例のない概念のUIが生まれることはあるわけで、そのときにワークする(はず)です。

終わりに:

AI時代、UIを「サッと作れる」はAIの強みなので全部捨てろとは言いません。
なぜなら速いことは価値なわけです。しかし早くとも失敗しない方法はあるわけです。

思うに、AIはすでにUXに関しての知識は十分です。
なのでプロンプトに「UXを考えて」と書くより、「棚卸しをしてから実装して」と書くほうがおそらく効きます。

まだ試作段階なので正直なところはわかりませんが、今のところは何だか機能している気がします。

是非使ってみての感想を教えてください。

補遺

多分なんだけどAI手癖問題はUIに限らず汎用的な課題な気がする。
なんでも棚卸しさせることが重要カモ

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

なつ (生活者/デザイナー/リサーチャー) いただいたお気持ちは、お茶代や、本題、美術館代など、今後の記事の糧にします!

ピックアップされています

Design,AI,UX

  • 81本

コメント

コメントするには、 ログイン または 会員登録 をお願いします。
最近はAIとデザインが多い。時々表現と祈りの話をします。
【Skill配布あり】(おそらく)AIのUI出力精度を劇的に上げる方法|なつ (生活者/デザイナー/リサーチャー)
word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word

mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1