ui
gauge meter / speedometer gauge / needle gauge
下が開いた円弧の目盛りに、中心軸で回る針と色の付いた弧を重ね、値が変わるたびに針が振れて止まる計器表示。数字より先に「目盛りのどのあたりか」「危険域に入ったか」が一目で伝わる。肝は針と弧を同じ時間・同じイージングで動かすことと、桁が大きく開く値を対数で目盛ること。
02 — Prompt template
03 — Params
sweep(目盛りの開き角 deg) — 範囲 180〜300 / 初期 220
0から最大までの針の振れ幅。180は半円で、横長の枠に収まるが針先が水平に寝る。220〜270がスピードメーターらしい形で、下の開いた部分に数値を置ける。300を超えると最小と最大の端が近づき、どちらの端か読み違える。duration(針が止まるまで s) — 範囲 0.2〜1.6 / 初期 0.64
0.5〜0.8sが目安。0.3s未満だと振れる過程が見えず値が差し替わっただけに見える。1.2sを超えると次の操作のたびに針が追いつかず、表示が常に遅れて見える。easing(針の止まり方) — 選択: ease-out-quint / back-out / linear(初期: ease-out-quint)
ease-out-quint(0.22,1,0.36,1)は素早く振れて目盛りの手前で静かに止まる。back-outは値を一度通り過ぎて戻るアナログ計器の手触りが出るが、一瞬だけ実際より大きな値を指す(危険域の境目では誤報に見える)。linearは機械的。scale(目盛りの付け方) — 選択: log / linear(初期: log)
1,000〜1億のように桁が開く値は対数(log)にすると、1桁ごとに同じ角度だけ振れる。linearにすると1億以外の値がすべて左端に固まり、針がほとんど動かない。0〜100%のように範囲が狭い値はlinearでよい。
04 — Vocab
gauge / dial — 円弧の目盛りと針で値を指す計器表示。スピードメーターや圧力計が原型。円を一周するcircular progress(進捗率)と違い、両端が開いていて「どの範囲のどこか」を読ませる。
対数目盛り(log scale) — 値の対数を等間隔に並べる目盛り。1,000→1万→10万が同じ角度ずつ進むので、桁の開いた値(ユーザー数・ファイルサイズ・周波数)を1本の針で読める。
transform-origin(SVG) — 回転の軸。SVGの要素は既定で原点(左上)を軸に回るので、針は中心軸の座標をpx指定するか transform-box: view-box と組み合わせて合わせる。
閾値マーカー(threshold) — 危険域・上限の始まりを示す短い目盛り。針が越えたら色を変えるが、色覚に頼らないよう文字や形の変化も添える。
role="meter" — 範囲の中の現在値を表すARIAロール。進み続ける作業の割合を表すprogressbarとは区別する。
05 — NG → OK examples
NG
言い方: 「「数値をメーターっぽく表示して、動きもつけて」」
なぜNG: conic-gradient を回しただけの円グラフや、針だけが回って弧は一瞬で差し替わる実装が返ってきやすい。transform-origin を指定しないと針が SVG の左上を軸に回って画面外へ飛ぶ。桁の開いた値を linear で目盛ると、ほとんどの値で針が左端から動かず、メーターにした意味が消える。
OK
言い方: 「「gauge meterをSVGで。開き角220deg、値はlogで0〜1に正規化。前面の弧はpathLength=100のdashoffset、針はgのrotate(transform-originは中心軸)。針と弧は同じ0.64s cubic-bezier(0.22,1,0.36,1)。数値は800ms ease-out-cubicでカウントアップ、危険域超過で赤+弧だけ1.4sで脈打つ。reduced-motionでは即時表示」」
なぜOK: 形(開き角)・値から角度への変換・弧と針それぞれの描き方・同期させる時間とイージング・危険域の見せ方まで確定している。特に「針と弧を同じ時間・同じイージング」の一言が無いと、針先が弧の先端を追い越したり置いていかれたりする。
