個人開発のUXは、非エンジニアに向けて考えると良いかもしれない**氣**づきの話
はじめに
自他共に認める非エンジニアのワイ。
それなのにいつのまにか、プロダクトを作るときの目線が「若干のエンジニア寄り」になっていることに氣づいたのだ。
ターミナルを普通に開けて、ファイルパスを意識できて、設定ファイルをそれなりに読める——そういう「調子に乗っている自分」を基準にしてUIを設計していた。(これが自惚れである)
おかしな話だよね。自分がその道に入って間もないのに、気づけばそっちサイドに立ってしまっていたワケで。いや本当に調子に乗りすぎである。
「アプリ開いたら全部入ってた」を目指した話
StoryForgeというローカルLLMを使った小説執筆アプリを作ったとき、当初は「llama-serverを起動して、ポートを設定して、モデルを指定して……」という手順を前提に設計しようとしていた。(まぁ元は自分用だったワケだけど)
自分がその手順を何不自由無く踏んでいたから、それが当たり前に見えていた。
でもよく考えると、仮にこのアプリを売ると仮定したとき、そして使いたいと思ってくれるような人の大半は「小説を書きたい人」であって、「ターミナルを触れる人」ではない。CLIでサーバーを立ち上げる手順なんて、知らなくて当然だ。
なんならローカルLLMという単語すら知らないと思う。
そこで方針を変えた。llama-serverの起動・ポート設定・CUDA版の選択を、全部アプリの内部に隠蔽する。ユーザーがやることは3ステップだけにする。
- アプリを起動する
- モデルを選ぶ
- 書き始める
モデルだけは某所から引っ張る必要があるが、ライセンス周りを確認して直リンにしたりして文字通り詰まらない様にしたり。
目標がそう定まってから、設計の解像度がぐっと上がった気がした。
そこからは怒涛のブラッシュアップ。コンテキストオンボーディングを実装したりするワケで。
特にStoryForgeは、全部入りだけど最初に全部説明しない。を信条に作ってる。
ある程度はオンボするけど、例えばAIに相談してみたいなとそこをクリックして始めて使い方が出るとか。
オンボーディングも、全部一括で教えれば良いというものでも無いという氣づき。
導線を作っておく→ユーザーが使いたいと思ったときに始めて説明がでる。
丁寧なUXとはなんぞやという部分でいう俺なりの信条です。
使う言葉が違う、という当たり前のこと
「LLM」という言葉がある。自分はもう普通に使うし、意味も即座にわかる。でもこれ、エンジニアじゃない人に通じるだろうか。
だからアプリ内では愚直に「AI」という単語に置き換えたりした。
想定ユーザーによって、使える言葉・想定できる操作・許容できる複雑さが全部変わる。これは頭ではわかっていたつもりだったけど、実際に設計していると普通に忘れる。
なんというか、**このくらい基礎だろ!**みたいな思考を一旦取っ払う感じ。
仮想ユーザーを置いてみてわかったこと
自分の場合、「BOOTHで買いたいと思う人」を具体的に想像するようにした。
たとえば、同人誌を書いているが技術には詳しくない人。AIに小説の続きを書いてほしいが、ChatGPTは設定が流れていく気がして苦手な人。英語のUIが苦手で、日本語でちゃんと動くものを探している人。
この人たちを頭に浮かべたとき、UIで使う言葉・ボタンの配置・エラーメッセージの丁寧さ、全部変わってきた。
たとえばエクスポートに時間がかかるとき、「変換中…」だけ表示するのと、「AIに整形してもらっています。環境により数秒〜数分かかることがあります」と書くのでは、安心感が全然違う。前者は自分目線(処理を把握している人向け)で、後者はユーザー目線だ。
「執筆お疲れ様でした。出力には少し時間がかかりますのでご休憩を」くらいのことが書いてあっても、たぶんいいと思ってる。
自分がいつのまにかエンジニア思考になっていた
振り返ると、いくつか気づきがある。
設定項目を「詳細設定」として折りたたみにせず全部並べてしまう。エラーが出たときにコンソールのメッセージをそのまま表示する。「パラメータ」「モデル名」「ベースURL」みたいな言葉を案内文に平気で使う。
これらは全部「自分ならわかる」という理由でやっていたことだ。
自分が非エンジニア出身であることを忘れかけていたのかもしれない。慣れてくると、慣れていない頃の自分がどこで詰まっていたかを忘れていく。
非エンジニアと言うが、ここで難しいのが別にPCの操作は中の上くらいのレベルで扱えることである。
非エンジニアといっても、その中でもPCに詳しい詳しくないがある。
例えば一通りPCの操作は出来るがcmdは知らないとか。LLMという単語は知らんがチャッピーに相談は出来るとかそういうの。
もちろん、簡単にすること自体が必ずしも良いことではないというのも理解している。
よくわからんが動いた!という体験、それはつまり何かあったら詰む。それはそれで困る。
誰に向けて作るか、を意識するだけで変わること
「誰に向けて作るか」を意識するというのは、そんなに難しいことではないと思う。
ただ、個人開発だと自分が一番のユーザーになりがちで、その視点に引っ張られやすい。特に技術的な側面が楽しくなってくると、ユーザーのことより実装のことを考える時間が長くなる。
自分はまだ模索中ではある。でも「このUIUX、一般の方に伝わるか?」と一度立ち止まる習慣ができてきた。それだけでも、たぶん少し違うと思う。
この記事はStoryForge(ローカルLLMを使ったローカル小説執筆支援アプリ)を開発する中で考えたことをまとめたものです。