![見出し画像](https://assets.st-note.com/production/uploads/images/108344219/rectangle_large_type_2_b29e39233a0524d8d19c00c144a40d08.png?width=800)
[WWDC23] 空間でのUIデザイン講演 翻訳&まとめ
こんにちはKeijiroh(@keijirohn)です。
WWDC 2023でApple Vision Proが発表されました。
Design for spatial user interfacesという、空間コンピューティングのUIデザインについての講演を翻訳&まとめます。
![](https://assets.st-note.com/img/1686756198765-G2B2pA9xJx.png?width=800)
講演してくれたのは、AppleデザインチームのLorena Pazmino (@lorepazmino)とMiquel Estany Rodoriguez (@the_berd)のお二人です。
イントロ
![](https://assets.st-note.com/img/1686756236853-Hxq4hP0ujh.png?width=800)
LorenaとMiquelがお届けします。
この講演では、空間コンピューティングでのUIのデザイン方法についてをお話します。
これまでのプラットフォームと一貫した皆さんが慣れているビジュアルデザインを作りました。さらに空間コンピューティングに合うように進化させた要素もあります。
UI foundations
![](https://assets.st-note.com/img/1686756620295-fWHQppZcah.png?width=800)
初めにわかりやすくて使いやすい、アプリアイコンとインタフェースについてお話します。
アプリアイコン
![](https://assets.st-note.com/img/1686756693138-1DsJHKLRgM.png?width=800)
![](https://assets.st-note.com/img/1686756813784-WolSBC04PR.png?width=800)
アプリアイコンは3次元で現実空間に馴染む様に作ります。
![](https://assets.st-note.com/img/1686756981037-ZDcB0tHAwn.png?width=800)
ユーザーが見ると少し拡大され、表示します。システムがハイライトと影でレイヤー間の僅かなDepthを使うビジュアルエフェクトにします。
![](https://assets.st-note.com/img/1686756814384-GhYD6nag6x.png?width=800)
アイコンには、複数のレイヤーを用います。
![](https://assets.st-note.com/img/1686757125342-0rpFtbSrBO.png?width=800)
他のプラットフォームでは、レイヤーはパララックス(視差)を作るのに使われていますが、私達のシステムでは最大3つの2次元レイヤーを作ることで自動的に3Dのエフェクトを作成します。
![](https://assets.st-note.com/img/1686756814752-oKcd6gpG02.png?width=800)
3つのレイヤーとは、Background layer、2つのForeground layerです。
![](https://assets.st-note.com/img/1686757223458-NcevfYfWnk.png?width=800)
それぞれ1024x1024 pixelの正方形の画像となっています。Foreground layerは背景は透明にします。
![](https://assets.st-note.com/img/1686757290493-nJNxHpx1o1.png?width=800)
![](https://assets.st-note.com/img/1686757395639-76GaWCfWKn.png?width=800)
その後システムにて、円に切り抜かれ、最終的にDepth、影、ハイライトが付与され、アイコンになります。グラフィックは真ん中に表示するようにしましょう。もしグラフィックを端の方まで作ると、拡大された時にはみ出してしまうかもしれません。
![](https://assets.st-note.com/img/1686757495475-pO0XuuM9FG.png?width=800)
またビジュアルに透明はあまり使わないようにしましょう。影とまざってしまいます。
マテリアル
![](https://assets.st-note.com/img/1686757601120-yXnaTh35Ig.png?width=800)
次にマテリアルです。
アイコンをタップすると、様々な空間でアプリが起動します。明るい部屋の中や、狭い部屋、飛行機内、夜など、ユーザーの様々な空間に応じてアプリはライティングを調整します。
![](https://assets.st-note.com/img/1686757601309-hSUQIOtox8.png?width=800)
![](https://assets.st-note.com/img/1686757802472-xK6XotUMDP.png?width=800)
![](https://assets.st-note.com/img/1686757601235-Ckg8lvu3Vt.png?width=800)
アプリはユーザーの周りのわかりやすい場所に配置され、どんな距離でも簡単に使え、どんな明るさでも見えやすくしなければなりません。
![](https://assets.st-note.com/img/1686757998101-vvPaazlRhP.png?width=800)
私達はGlass Materialというビジュアルランゲージをデザインしました。システムはグラスウィンドウを用い、現実空間の一部として感じられます。現実空間のものや光に応じて、薄く透けて見えます。
![](https://assets.st-note.com/img/1686757998038-5lLvoXJMBK.png?width=800)
ハイライトと影を用いることで、ユーザーは空間の中の位置とサイズを理解します。
![](https://assets.st-note.com/img/1686758179086-0MuwGgh8Rz.png?width=800)
このキャンバスにUIを載せることで、軽く、現実空間にあるような印象を与えます。このマテリアルを用いることで、ウィンドウの後ろに他のアプリや人がいることが理解できます。
![](https://assets.st-note.com/img/1686758343271-KnWFUq8cP2.png?width=800)
空間内でのよいエクスペリエンスを与えるために、周りの空間に注意が行くようにし、ウィンドウで空間を隠さないようにしましょう。透明でないウィンドウを使うと、重く、圧迫した印象を与えます。
![](https://assets.st-note.com/img/1686758651111-5THoDF9qUv.png?width=800)
グラスマテリアルを使うことで、部屋の明るさが変わっても動的にコントラストやカラーバランスを変更でき、空間の一部のように感じられます。
iOSやMacOSと違い、空間コンピューティングでは明るさ調整やダークモードはありませんが、周囲の環境に応じて自然と空間に馴染む色合いになります。
![](https://assets.st-note.com/img/1686758854040-al2yZA0Vns.png?width=800)
システム的にマテリアル色を変えること、それ自体が機能的に意味をもたせることができます。
例えば、サイドバーに暗いマテリアルを用います。また明るいマテリアルをボタンの様に注意を引くために使います。検索窓には暗いマテリアルを用いることで、周りのコンポーネントと違いをつけられます。
![](https://assets.st-note.com/img/1686759192040-hj7x3uJbBP.png?width=800)
ボタンには明るいマテリアルを用いることで注意をひけます。
![](https://assets.st-note.com/img/1686759192171-lDRZqYdF8D.png?width=800)
さらにコントラストをつけるには、暗いマテリアルをセルの背後につけましょう。
![](https://assets.st-note.com/img/1686759192842-wpYFv2AIW2.png?width=800)
逆に明るいマテリアルをつけると、可読性が下がり、コントラスト差がでないので避けましょう。
タイポグラフィ
![](https://assets.st-note.com/img/1686759343697-GKSCTdIWXt.png?width=800)
全てのプラットフォームで同じフォントを使いますが、空間コンピューティングに合わせて、どの距離でも可読性を高めるため、調整しました。
詳細は、"Principles of spatial design"をご覧ください。
![](https://assets.st-note.com/img/1686759344120-hkakJZc9jN.png?width=800)
空間コンピューティングで可読性を高めるため、iOSではBodyにRegularを使っているところを空間コンピューティングではMedium、TitleではSemiboldをBoldにします。
![](https://assets.st-note.com/img/1686760657205-wnv6Og5jyB.png?width=800)
またウィンドウを拡大、縮小しても可読性を保つために、Boldや可読性の高いフォントを使う様にしましょう。
鮮やかさ
![](https://assets.st-note.com/img/1686761007761-6WsDJK8nqF.png?width=800)
Vibrancy (鮮やかさ)も可読性を高めるための重要な要素です。後ろにあるものに応じて、ウィンドウ上にあるライトやカラーを調整します。空間コンピューティングでは、後ろにあるものは常に変化し続けるので、可読性を高めるため、リアルタイムでVibrancyを調整します。
![](https://assets.st-note.com/img/1686761117482-F5rwtWFhF0.png?width=800)
![](https://assets.st-note.com/img/1686761117842-0cEfGcTpME.png?width=800)
後ろのコンテンツに応じてウィンドウのグラスマテリアルのVibrancyを調整することで、可読性を高め、洗練された印象を与えます。システムコンポーネントをできるだけ使いましょう。システムコンポーネントでは、デフォルトでVirancyエフェクトを使っています。
![](https://assets.st-note.com/img/1686761370552-2p9kuoh1He.png?width=800)
PrimaryのテキストにはVibrancyを使わず、SecondaryのテキストにVibrancyマテリアルを使うことで、ユーザーの理解を高めます。
カラー
![](https://assets.st-note.com/img/1686761435768-vXV5mPcVQY.png?width=800)
グラスウィンドウに使っているカラーとその上のコンテンツのカラーが似たような色になると見づらくなります。テキストや記号に白を使うことで、それを避けられます。
![](https://assets.st-note.com/img/1686761593212-8xKP19sA8T.png?width=800)
もし白以外の色を使いたい場合は、バックグラウンドに使うか、ボタンに使うようにしましょう。出来るだけ可読性を高めるように調整されているシステムカラーを使うようにしましょう。
レイアウト
![](https://assets.st-note.com/img/1686761902698-6i0i1XaGeZ.png?width=800)
エルゴノミクス的に、また簡単にターゲット出来るように作られたレイアウトについてお話します。
人間工学
![](https://assets.st-note.com/img/1686761965841-79HUoIAOaP.png?width=800)
ユーザーが快適にコンテンツを楽しめるように、コンテンツを配置する位置についてお話します。
私達のシステムでは、主に眼と手を使います。大事な事は、ユーザーの身体的な快適さと安全をまもることです。首と眼の疲労を防ぐ位置にコンテンツを配置することが重要です。
![](https://assets.st-note.com/img/1686770857393-kAQR3y5R7K.png?width=800)
上下に首を動かすより、左右に首を動かす方が簡単です。UIはField of Viewの中に入れ、高すぎたり低すぎたりする位置に配置するのは避けましょう。
![](https://assets.st-note.com/img/1686770947848-bGXImZ9og8.png?width=800)
大きなキャンバスを用いる際は、縦長より横長のキャンバスにしましょう。
![](https://assets.st-note.com/img/1686771005720-Yl8DAgcgpX.png?width=800)
重要なコンテンツは真ん中に配置することで、ユーザーは快適にみることができます。
サイズ
![](https://assets.st-note.com/img/1686762054737-r62Ar2hkk3.png?width=800)
次にコンテンツのサイズについてです。適切なサイズにすることでターゲットしやすくなります。各ユーザーの眼は少しずつ違いがあるので、簡単に眼でターゲット出来るようにデザインします。
![](https://assets.st-note.com/img/1686771220782-YC7xa22wsA.png?width=800)
![](https://assets.st-note.com/img/1686771220871-l7Yqqg7w4L.png?width=800)
![](https://assets.st-note.com/img/1686771221393-KQgxHZhfEY.png?width=800)
![](https://assets.st-note.com/img/1686771222038-N1UENDctsH.png?width=800)
ユーザーが簡単に眼で選択できるように、各要素のサイズはこのように設定します。スペースも考慮しましょう。
![](https://assets.st-note.com/img/1686771223096-8d7C3mU265.png?width=800)
![](https://assets.st-note.com/img/1686771389686-TDPVjsLxSJ.png?width=800)
閉じるボタンのように、28ptで小さくてもその周りに60ptの選択できるスペースがあるので、ユーザーは問題なく選択することが出来ます。
![](https://assets.st-note.com/img/1686771440124-8Srrb5U2K0.png?width=800)
隣のテキストが、インタラクティブな要素出ない場合は、間をあける必要はありません。
![](https://assets.st-note.com/img/1686771225149-8FDa7hQv71.png?width=800)
また大きいボタンを使う場合は、スペースを開ける必要はありません。
![](https://assets.st-note.com/img/1686771225411-1sKSEdbAq3.png?width=800)
全ての選択できる要素は、最低60 ptのスペースを取るようにしましょう。
ポインティング時のフィードバック
![](https://assets.st-note.com/img/1686762130285-JcjIUK6e0O.png?width=800)
Focus Feedbackについてお話します。
ユーザーが眼でコンポーネントを見た時、少し光るビジュアルエフェクトかホバーエフェクトをつけます。
![](https://assets.st-note.com/img/1686771711602-qRXTj31jas.png?width=800)
選択できるコンポーネントを見た時は、ユーザーが何を見ているか理解出来るように、ホバーイフェクトをつけます。
![](https://assets.st-note.com/img/1686771712071-JYFvBHjpUy.png?width=800)
選択できないコンポーネントは、ホバーエフェクトをつけないことで、選択出来ないことを理解します。
![](https://assets.st-note.com/img/1686771910099-MDhdDc8Glu.png?width=800)
メニューリストで使う時は、それぞれのアイテム間に4ptのスペースをあけます。
![](https://assets.st-note.com/img/1686771910395-AoCbJwNhn5.png?width=800)
![](https://assets.st-note.com/img/1686771956910-ByQqB8Gwxn.png?width=800)
画像とテキストのセットが要素になる時は、それぞれの要素の範囲を決め、その範囲上でホバーエフェクトをつけることで、その範囲が1つの選択範囲と理解することが出来ます。
![](https://assets.st-note.com/img/1686772146052-yRbLXTmZkN.png?width=800)
![](https://assets.st-note.com/img/1686772146107-7pMHEN29or.png?width=800)
角丸にし、内側の角の半径とパディングを足すと外側の角の半径になるようにします。同心円になるように設定します。
![](https://assets.st-note.com/img/1686772304605-P4k2qcgO2g.png?width=800)
ウィンドウとエレメントでも同様に同心円になるように要素の角を設定します。それにより、要素と要素や、要素とウィンドウがそれぞれ繋がっているように感じます。
画面から空間へ
![](https://assets.st-note.com/img/1686772396108-wH23Jz5kvz.png?width=800)
最期に、これまで作られてきたアプリをスクリーン上から空間上に持ってくるかをお話します。
![](https://assets.st-note.com/img/1686772438633-qpTdBn29O8.png?width=800)
最初にインプットモデルの概要をお話し、アプリの中心となるウィンドウ、タブバー、サイドバーについてお話します。その後、新しい表現方法として、オーナメンツについてお話し、最後に、メニューやポップオーバー、シートなどのようなモダリティについてお話します。
入力
![](https://assets.st-note.com/img/1686772558012-jPlsYYzAyO.png?width=800)
![](https://assets.st-note.com/img/1686772558311-xPqFhmcQpV.png?width=800)
ユーザーは、眼、手、声を使ってインタラクションします。エレメントを見て、指でタップすることで選択します。主には離れた距離で操作します
![](https://assets.st-note.com/img/1686772558886-U17g6Td3ss.png?width=800)
直接操作することも可能です。
![](https://assets.st-note.com/img/1686774277722-GWajglWKFT.png?width=800)
またTrack Padやキーボードを接続して操作することも可能です。
![](https://assets.st-note.com/img/1686774344418-l8eRbGBFuj.png?width=800)
![](https://assets.st-note.com/img/1686774344818-T8saDpVrGk.png?width=800)
それぞれのインプットをサポートした、各コンポーネントを用意しています。それぞれ適切なフィードバックを返すように作っています。システムコンポーネントを使うことで、素早くアプリを開発し、アプリ自体の開発に力を入れられます。
詳細は、"Design for spatial input"をご覧ください。
ウィンドウ、タブバー、サイドバー
![](https://assets.st-note.com/img/1686774613617-RPi7LSjsCm.png?width=800)
これまでのiOSなど他のプラットフォームで見慣れている、Window、Tab bar、Side barについて説明します。
![](https://assets.st-note.com/img/1686774695752-nmrxacYTgv.png?width=800)
iOSでは、白のキャンバス上に、全てのコンポーネンツを乗せていました。
![](https://assets.st-note.com/img/1686774774333-OKnVDSMB9q.png?width=800)
新しい空間コンピューティングのシステムでは、グラスマテリアルのウィンドウが空間上に表示されており、コンテンツがその上に乗っています。
![](https://assets.st-note.com/img/1686774872428-4R7aNrO6lM.png?width=800)
iOSでは、タブバーコントローラーは画面の下に水平に配置されています。
![](https://assets.st-note.com/img/1686774872816-Ff8GpODl7B.png?width=800)
空間コンピューティングでは、タブバーは垂直にウィンドウの左側に配置されています。メインコンテンツが表示されているウィンドウ外でアクセスしやすい位置です。
タブバーを軽い印象にしたいので、6つ以上のコンテンツを配置するのは避けましょう。
![](https://assets.st-note.com/img/1686775147105-U74wmsG74D.png?width=800)
タブバーの要素を少しの間見つめると、タブバーが拡張されラベルが表示されます。目線を外すと、自動的にタブバーが縮小されラベルが非表示となります。
![](https://assets.st-note.com/img/1686851209393-QeNe91pSms.png?width=800)
サイドバーはウィンドウの端に表示することで、ユーザーは現在どのタブにいるのかすぐに理解できます。
オーナメント
![](https://assets.st-note.com/img/1686851351972-6ZUPeqTL1d.png?width=800)
新しい表現方法の、オーナメントについて説明します。
![](https://assets.st-note.com/img/1686852176361-wU2aNVhQCm.png?width=800)
これまでは、上部真ん中にアクセサリを配置していました。
![](https://assets.st-note.com/img/1686852177087-Q9Vg2F5Goi.png?width=800)
空間コンピューティングでは、アクセサリは下部、少し手前側に表示します。ヒエラルキー構造を使い、ユーザーは簡単にアクセスすることができます。
![](https://assets.st-note.com/img/1686852177861-i4S4fagpbs.png?width=800)
ツールバーを表示するのには、オーナメントが最適です。コンテンツに関連のあるツールを提示します。
![](https://assets.st-note.com/img/1686852178401-x8uvFes1AW.png?width=800)
オーナメントは、ボタンのセットでグラスマテリアルで囲まれています。なのでボーダレスのボタンを使いましょう。このケースでは、各ボタンがインタラクティブなボタンというのは自明です。またホバーエフェクトをつけます。
![](https://assets.st-note.com/img/1686852179103-yoRU61sZLx.png?width=800)
20pt重なった状態で表示するようにしましょう。これによりメインウィンドウの一部と感じることができるかつ、メインコンテンツを邪魔しない位置です。グラスマテリアルを使っているので、メインコンテンツが少し透けて見えるのもとてもきれいです。
![](https://assets.st-note.com/img/1686852746360-ipIBngcjKU.png?width=800)
例えば映画を観ている時にタップすると、コンテンツを邪魔することなくすぐに映画をコントロールするオーナメントが表示されます。
![](https://assets.st-note.com/img/1686852746576-CZQAN92LyT.png?width=800)
オーナメントは拡張することも可能で、追加情報をのせることも可能です。
![](https://assets.st-note.com/img/1686852746781-6QryMDPr8k.png?width=800)
オーナメントはメインコンテンツを邪魔することなく、情報を提示することが可能ですので、あなたのアプリでも最大限活用しましょう。
メニュー、ポップアップ、シート
![](https://assets.st-note.com/img/1686852747269-BAmh8Bv4Mq.png?width=800)
Menus、Popovers、Sheetsについて説明します。
![](https://assets.st-note.com/img/1686853216809-znOlZDpPnQ.png?width=800)
iPadではボタンを押すと、メニューが提示されます。メニューが提示されると、ボタンは少し暗くなります。
![](https://assets.st-note.com/img/1686853411398-gSBd6J1mmw.png?width=800)
ポップアップは指定するボタンを指しており、ナビゲーションバーは非選択状態になっています。
![](https://assets.st-note.com/img/1686853216770-dJBPMegkXV.png?width=800)
空間コンピューティングでは、メニューやポップアップは、ウィンドウ外で提示されます。デフォルトで各ボタンの真ん中になるように配置されており、ユーザーが見ている箇所で表示されます。
選択されているボタンは、白背景と黒ラベルで表示することで、どのボタンが選択されているかわかりすくします。iPadの時のような矢印無しで提示できます。
![](https://assets.st-note.com/img/1686853217288-kISubUeRra.png?width=800)
白背景ボタンは、選択状態でのみ使用するようにしましょう。
![](https://assets.st-note.com/img/1686853217873-CZv2HXvzoJ.png?width=800)
シートは、モーダルビューで表示されます。アプリの中央で表示され、表示される時は親ウィンドウと同じ前後関係で表示します。シートに集中できるかつ、シートが消えるまで親ウィンドウは少し暗くし操作が出来ないようにします。
![](https://assets.st-note.com/img/1686854089919-xOVOQAn1UB.png?width=800)
さらにシートをシートの上に表示する場合は、同様に、親シートを後ろに押し下げ、少し暗くし、その手前側に表示します。
![](https://assets.st-note.com/img/1686854409239-BUlVoHdTEQ.png?width=800)
![](https://assets.st-note.com/img/1686854409428-1BOoOjZdm9.png?width=800)
最初のシート表示後、ウィンドウそのままで二番目のシートを同じウィンドウで提示することも可能です。その際は閉じるボタンではなく、戻るボタンにします。
![](https://assets.st-note.com/img/1686854409759-tdtteSgcp1.png?width=800)
閉じるボタンは、上部左側に配置するようにしましょう。
最後に
これらのシステムモデルを使うことで、開発中はアプリ内の体験に集中することができます。
この記事が気に入ったらサポートをしてみませんか?