はじめに
最近、アプリ開発の中で「ワイヤーフレーム」を使い始めたところ、思いがけずドメイン設計が大きく前進しました。
ワイヤーフレームとは、 Figma などを使って作る UI デザインの一種です。
ただし、色やフォントサイズなどの細かい UI にはこだわりません。
ボタンや入力欄であることがわかれば良いという程度のラフな UI デザインのことを言います。
もともとドメイン駆動で設計を進めていたのですが、どうしても「抜け」や「曖昧さ」が残る感覚があり、手応えが弱い状態が続いていました。
しかし、ワイヤーフレームを作り始めたことで、その状況が一変しました。
この記事では、 ワイヤーフレームがどのようにドメイン設計を補完し、加速させたのかを整理してみます。
ドメイン設計だけでは埋まらない違和感
ドメイン設計を進めていると、以下のような状態に陥ることがありました。
- ユースケースはある程度整理されている
- エンティティや値オブジェクトも定義できている
- しかし「本当にこれで使えるのか?」という違和感がある
つまり、構造はあるが、実感がない状態です。
このとき不足していたのは、「ユーザーがどう操作するか」という視点でした。
ワイヤーフレームを作って起きた変化
試しにワイヤーフレームを作り始めたところ、明確な変化がありました。
1. ユーザーの行動が具体化される
ワイヤーフレームでは「画面上で何をするか」を考える必要があります。
- どこで入力するのか
- どの順番で操作するのか
- 何を確定とみなすのか
これにより、ユースケースが単なる文章ではなく、操作として具体化されました。
2. 必要なデータと制約が見えてくる
操作を具体的にすると、自然と以下が見えてきます。
- この画面では何のデータが必要か
- この操作はどんな条件で許されるのか
ここで重要なのが、 不変条件(インバリアント) です。
例えば、口座振替管理アプリなら、
- 支払い元は必ず 1 つである
- 振替は「元 → 先」の関係を持つ
- 不正な組み合わせは作れない
など、これらはドメイン設計だけでも定義できますが、 ワイヤーフレーム上で「操作」として考えることで、一気に現実味を帯びます。
3. ドメイン設計の「抜け」が露出する
ワイヤーフレームを作る中で、次のような気づきが頻発しました。
- この状態、どうやって作る?
- この操作、どのユースケースに対応する?
- このデータ、どこに属する?
つまり、ドメイン設計で曖昧だった部分が強制的に表に出てくるのです。
これはかなり大きなメリットでした。
ワイヤーフレームは見た目のためではない
今回一番の発見はここです。
ワイヤーフレームは、
- UIの見た目を決めるためのものではなく
- 制約と構造を発見するためのツール
でした。
ワイヤーフレームを通すことで、
- UI からドメインが洗練され
- ドメインが洗練されることで、さらに UI が洗練される
という相乗効果が得られます。
作業を進めるたびに「UI とドメインがつながる」感覚があります。
この「つながる感覚」は、設計がうまくいっているサインだと感じています。
まとめ
ワイヤーフレームを取り入れたことで、以下の効果がありました。
- ユースケースが操作として具体化される
- 不変条件が自然に見えてくる
- ドメイン設計の抜けが露出する
- 設計全体に一貫性が生まれる
結果として、 UI設計とドメイン設計が分離されたものではなく、相互に補完し合って、プロダクトが良くなっていく と実感しました。
おわりに
もしドメイン設計を進めていて、
- なんとなく手応えが弱い
- 抜けがある気がする
と感じている場合は、 一度ワイヤーフレームを作ってみることをおすすめします。
見た目を整える必要はありません。 むしろラフであるほど、本質が見えてきます。
設計が「つながる」感覚を得られるはずです。