@Frontend Conference 2017
生放送がログイン不要・高画質で見放題のプラットフォーム
[PR]FRESH!では配信主を募集しています。
ここから本題
1
ウェブサイト/アプリのUIの品質ってなに?
分けて考えてみましょう
すべてがユーザーとの接点
1
ウェブのUIはHTMLを基にして作られている
最近はJSから直接DOMを構築することも多いですが
提供される製品やサービスについて、買い手側である顧客(消費者)が求める特性との合致度
↓
ウェブのUIにおける、ユーザーの体験
加えて多様な人々、様々な利用環境
多種多様なユーザー(や端末)が様々な環境で UIを使用した際の体験の総量ではないか
UXの総量
1
UX = y
ターゲットであるペルソナが得られるUXを頂点とした場合、他ユーザーが得られるUXはペルソナとの近似度に従って下がる
多変量に分布する
多次元空間の大きさ = 品質
頂点は複数、また時間とともに移りゆく可能性も
ではないか(私見)
基礎的品質 / ロングテール的品質
HTMLがUIの基礎的品質を担う。
CSSはよりコンテキストに沿ったものを担保しJavaScriptは機能的品質を担う。
フォームなどは直接HTMLが機能的品質を担う
まず使えるということ
ex : button
<button type="button">Button</button>
<div class="button">
<span class="sr-only">Button</span>
<span class="bar"></span>
<span class="bar"></span>
<span class="bar"></span>
</div>
<button>
を再現するためにはtabindex
属性によるフォーカスの受け取り:focus
のスタイル実装role="button"
によるセマンティクスの補強onKeyPress(Space, Enter)
などのキーボードEventトリガーの実装disabled
属性による操作不可の実装すべてを実装しないとそれぞれのユースケースで品質が下がる
<button>
使おう
1
ex : モーダルウインドウ
body
の末尾にモーダルつけちゃうconst button = document.querySelector('button');
const modal = document.createElement('div');
modal.innerHTML = '<p><a href="#">Link in Modal</a></p>';
button.addEventListener('click', () =< {
document.body.appendChild(modal);
});
button
押した時にフォーカスをモーダルに移して上げる必要がある。
でもDOMの順序に気をつければ…
DOMの順番を自然な流れで構築しよう
ex : img
要素のalt
属性
現在のHTML仕様では機能不足なこともある
マークアップ言語に不足しているセマンティクスを提供する
詳しくは昨年の発表を
大事なのは、HTMLに足りないものを補うこと
SPA(Single Page Application)のページ遷移
CLIENT SIDE OF █████FRESH.TV 2016.04.05 - Node学園 20時限目 @ahomu
覚悟が必要
HTMLをなるべくHackしない
Hackするときは覚悟を持って💪