⚖️

プロセス派とUX派はなぜすれ違うのか ─ 品質保証の二つの流儀

に公開

はじめに

組み込みソフトウェアを書いてきた人は「プロセスが命」と言う。仕様を固め、テストを書き、手順を守る。守らなければ品質は崩れる。

一方、UI/UXを設計してきた人は「プロセスは邪魔」と言う。先に仕様を固めると探索が殺される。ユーザー体験は試行錯誤の中でしか磨かれない。

この二つの主張は、互いに理解不能に見える。プロセス派はUX派を「規律がない」と見る。UX派はプロセス派を「融通が利かない」と見る。両者の議論はしばしば不毛に終わる。

実は、両方とも正しい。ただし、扱っている対象のベクトルが根本的に違う。だから品質を守る方法も違う。本記事はその断絶の根本を説明する試みである。

決定論的領域と非決定論的領域

まず、対象のベクトルの違いから始める。

決定論的領域とは、入力から出力が一意に決まる領域である。同じ入力を与えれば、必ず同じ出力が返る。間違った出力は「エラー」であり、排除されるべきものだ。組み込み制御、金融計算、データベースの整合性、暗号化の実装、センサーの信号処理 — これらはすべて決定論的領域に属する。

この領域では、品質は仕様からの乖離で測れる。仕様書に「ボタンを押したら10ms以内にモーターが回る」と書いてあれば、11msで回るのはバグだ。曖昧さは敵である。すべての振る舞いを予測可能にすることが、品質そのものを意味する。

非決定論的領域とは、入力から出力が一意に決まらない領域である。正解が複数あり、評価基準が状況と人に依存する。同じ画面レイアウトでも、あるユーザーには使いやすく、別のユーザーには使いにくい。

UI/UXはこの領域に属する。「ボタンの配置はこれが正解」という絶対の基準はない。操作フローも、レイアウトも、文言も、複数の正解が存在し、そのどれを選ぶかは文脈依存だ。

同じ「ソフトウェア」という言葉で括るから混乱するが、この二つは本質的に違うベクトルを向いている。そして、ベクトルが違えば品質を守る方法も違う。

品質の防波堤の引き方が違う

決定論的領域 ─ プロセスによる品質保証

決定論的領域では、プロセスが防波堤になる。仕様定義、設計レビュー、コードレビュー、単体テスト、結合テスト、リリース手順、変更管理。これらの手続きの積み重ねが、予期せぬ状態遷移や実行時エラーを排除する。

プロセスの強力さは、誰が作業しても同じ結果が出ることにある。属人性を排除することがプロセスの目的であり価値だ。開発者が交代しても、品質は下がらない。組み込み系や金融系で厳格な開発プロセスが求められるのは、属人性が残ると事故が起きるからだ。

非決定論的領域 ─ 操作の概念モデルの明示化による品質保証

非決定論的領域では、プロセスは防波堤にならない。正解が複数ある以上、手続きを守っても品質は担保できない。どんなに厳密にテストしても、「使いにくい」は判定できない。

ではどうするか。ここで必要になるのは、判断の軸の明示化である。

具体的には、UI/UXにおける「操作の概念モデル」を明示化することだ。プロダクトのプリミティブは何か、ユーザーがそれに対してできる基本動詞は何か、動詞はどう合成されるか、そしてなぜそう決めたのか。この判断の軸を明示化することで、探索の多様性を殺さないまま、統一感を担保できる。

プロセスは「出力の形」を固めて揺らぎを排除する。操作の概念モデルの明示は「判断の軸」を固めて揺らぎを収束させる。似ているようで、仕組みがまったく違う。前者は禁止事項の積み上げで守る。後者は原理の宣言で守る。

AIの登場で、非決定論的領域の揺らぎが増えた

非決定論的領域には、従来から属人性という揺らぎの源泉があった。設計者が違えば違うUIが出てくる。チームが違えば違う判断をする。この属人性を抑えるために、デザインシステムやガイドラインが整備されてきた。

AIの登場で、新しい揺らぎの源泉が加わった。AI生成の確率的な揺らぎである。

Claude Codeやv0に同じプロンプトを投げても、毎回少しずつ違うUIが出てくる。人間が関わっていないのに、出力はばらつく。従来のデザインシステムやHIGでは、このばらつきを抑えきれない。なぜならそれらは「こうしろ」のカタログであって、未記述のケースが出るとAIは推論でズレるからだ。

ここで「操作の概念モデル」の明示化が決定的に効いてくる。判断の軸が書かれていれば、AIは未知のケースもその軸に接続して導出できる。属人性とAI揺らぎ、二種類の非決定論性をまとめて抑え込める。

非決定論的領域における操作の概念モデルの明示化は、AIの登場によって必要性が一段増した品質保証の営みである。そしてこれは、決定論的領域でプロセスを徹底するのと同じ強度の、正しい品質投資だ。

最大の難所は、二つの領域の接点にある

ここまでで、二つの領域と、それぞれの品質保証の方法を整理した。

現代のソフトウェアの多くは、この二つの領域が同居している。医療機器、車載HMI、産業機械のHMI、組み込みGUI、Electronデスクトップアプリ、ゲームエンジン、CADソフト、DAW、音声配信機材のコンパニオンアプリ、IoTデバイスの管理画面 — 枚挙に暇がない。

こうしたシステムでは、内部コアは決定論的に作り、UIは非決定論的に作る。そして両者を接合する境界面が必ず存在する。

この境界面こそが、アーキテクチャ上の最大の難所である。

なぜ難所か。品質保証のパラダイムが真逆のものを接続する必要があるからだ。

コア側はエラーを一切許さない。例外は排除されるべきものだ。一方UI側はユーザーの迷いを受け入れる。例外は表現されるべきものだ。

コア側は仕様変更に厳格な管理を要求する。UI側は試行錯誤の変更を日常的に要求する。

コア側はプロセスで品質を担保する。UI側は操作の概念モデルの明示で品質を担保する。

この二つを無造作に繋ぐと、どちらかが破綻する。コアの厳格さに引きずられてUIの探索性が死ぬか、UIの柔軟さに引きずられてコアの堅牢性が崩れる。

おわりに

組み込み開発者とUI/UX設計者は、しばしばお互いを理解できないと言う。しかし両者は対立しているわけではない。扱う対象のベクトルが違うから、品質を守る方法も違う。それだけのことだ。

決定論的領域では、プロセスが品質の防波堤になる。手順を守ることが品質そのものである。

非決定論的領域では、操作の概念モデルの明示化が品質の防波堤になる。判断の軸を書くことが、探索を殺さずに統一感を担保する唯一の方法である。

そして現代の多くのソフトウェアは、この二つの領域の接点の上に建っている。その接点を扱える設計者は、両方の流儀を理解し、適切な切り分けを引ける人だ。組み込み出身者にも、UI/UX設計者にも、この視座はこれから必要になっていく。

「プロセスが命」と「プロセスは邪魔」は、対立ではなく役割分担である。そして両方を同時に扱う眼が、これからのソフトウェア設計に求められる。

Discussion