Communitygithub.com

モーションアナリティクス

モーションの多いWebページ(WebGL、スクロールフィルム、シェーダーヒーロー、パーティクルシーンなど)の品質とパフォーマンスを測定し、参照と公平に比較します。プロファイリング、高速化、予算設定、ベンチマーク、アニメーションページの評価、シーンのカクつきやバッテリー消費、品質段階やDPR上限の選択、参照との近さの判断に使用します。

モーションアナリティクス とは?

このスキルは、モーションの多いWebページのパフォーマンス測定と参照比較を実現します。p50およびp95のフレームタイム予算、段階的な品質ラダー、ページとテクスチャのウェイト予算、モーションサイト向けのWeb Vitals、およびサイドバイサイドシートと独立した評価者による参照グレーディングをカバーします。対応プラットフォームはブラウザベースのWebアプリケーションで、`frame-meter.js`スクリプトをページに挿入してフレームタイムを計測し、`compare-sheet.mjs`で参照との比較シートを生成します。このスキルを使うことで、開発者は「滑らかに感じる」「参照に近い見た目」といった主観的な評価を、再現可能な数値に変換できます。ワークフローはベースライン測定、高負荷セクションの特定、原因の修正、品質ラダーの追加、再測定、参照グレーディングの順に進み、一貫した計測条件と証拠に基づいた評価を重視します。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/iboss21/regescore-motioncraft-skills/tree/main/plugins/motioncraft/skills/motion-analytics

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

モーションアナリティクス は何をしますか?

モーションの品質は測定可能です。「スムーズに感じる」「参照に近い見た目」というのは主張に過ぎません。このスキルはそれらを来週も再現できる数値に変換します。

2つのジョブ:

  1. パフォーマンス: 各フレームにかかる時間、ページの重さ、デバイスが遅いときのページの適応方法を測定します。ガイド: references/performance.md。ツール: scripts/frame-meter.js。
  2. 参照グレーディング: ページが参照または自身の設計目標にどれだけ近いかを公平に判断します。ガイド: references/reference-grading.md。ツール: scripts/compare-sheet.mjs。

クイックスタート

任意のページでフレームタイムを測定する

メーターをドロップして、?meter を付けてページを開きます:

<script src="frame-meter.js" defer></script>

小さな読み取り表示にp50、p95、および推奨品質段階が表示され、コンソールには5秒ごとにサマリーがログ出力されます。コンソールから次のコマンドも実行できます:

frameMeter.start();          // クリーンな測定を開始
// ...ページをスクロールし、主なインタラクションを使用...
frameMeter.report();         // { frames, p50, p95, p99, max, fps, longFrames, jank, suggest }

ワークステーションではなく、気にする最も遅いデバイスで測定してください。アイドルフレームは負荷の高い瞬間を隠してしまうため、測定中はページ全体をスクロールし、主なインタラクションを使用してください。

サイドバイサイドシートを作成する

node scripts/compare-sheet.mjs ./shots/ours ./shots/reference ./compare --labels "Ours,Reference"

同じファイル名の画像をペアリングし、compare.html(常に作成)とcompare.png(sharpがインストールされている場合)を書き出します。グレーディングガイドに従って、このシートを評価者に渡します。

重要な数値

測定項目目標理由
フレームタイム p95ターゲットデバイスで16.7 ms以下(60 Hz)p95は人が感じる値。中央値はカクつきを隠す
フレームタイム p50p95よりかなり低いギャップが大きいとスパイク(アップロード、GC、シェーダーコンパイル)が存在する
長いフレーム(50 ms超)スクロール中は0それぞれが目に見えるひっかかりになる
最初の画面のページウェイト3 MB未満モバイルデータでの第一印象
ページ全体10 MB未満読み込み時間、データコスト、バッテリー
Largest Contentful Paint2.5 s未満重いアセットが到着する前に合成された静止画を表示する
Cumulative Layout Shift0.1未満Canvasとビデオのボックスは領域を確保する必要がある
Interaction to Next Paint200 ms未満重いレンダーループが入力をブロックしてはならない

詳細、アセットタイプごとの予算、および実用的な品質ラダーについては、references/performance.mdを参照してください。

ワークフロー

  1. ベースライン。 ?meterを付けてページを読み込み、上から下まで2回スクロールし、主なインタラクションを使用してから、frameMeter.report() を読み取ります。デバイス、ブラウザ、ビューポート、数値を書き留めます。
  2. 負荷の高いセクションを見つける。 セクションごとに frameMeter.start() で開始し、report() で終了して繰り返します。最も悪いp95が作業箇所です。
  3. 原因を修正する。 通常は、デバイスピクセル比が高すぎる、フル解像度のポストパス、ドローコールが多すぎる、スクロール中にアップロードされるテクスチャ、初回表示時にコンパイルされるシェーダー、または非表示時のレンダリングのいずれかです。パフォーマンスガイドの修正テーブルを参照してください。
  4. ラダーを追加する。 高速なページでも、弱いスマートフォンではダウンスケールが必要です。ローリングラダースニペットを使用します: p95が22 msを超えたら一段階下げ、12 ms未満なら一段階上げます。
  5. 同じ方法で再測定する。 同じデバイス、同じパス、同じ時間。改善前後の数値を報告します。
  6. ターゲットと比較して評価する。 ページがデザインや参照ルックを再現する場合、4モーメントシートを作成し、references/reference-grading.md の3評価者方式を実行します。

レポート形式

Page: <name>   Device: <model, browser>   Viewport: <w x h, DPR>
Path: full scroll x2 + signature interaction, 60 s
Before: p50 9.8 ms, p95 31.2 ms, long frames 6, weight 14.1 MB
After:  p50 7.1 ms, p95 15.9 ms, long frames 0, weight 8.7 MB
Changes: DPR cap 1.5 on phones, bloom at half res, hero textures to WebP 2048, shaders pre-compiled in loader
Ladder: tiers 0 to 3, settles at tier 3 on desktop, tier 2 on the test phone

ルール

  • 平均FPSではなくp95を報告する。 平均58 fpsは毎秒のカクつきを隠す可能性があります。
  • 数値ごとに1つのデバイスクラス。 1つの主張にラップトップの測定値とスマートフォンの測定値を混在させないでください。
  • 毎回同じパス。 スクロールパス、インタラクション、時間が一致した場合のみ、測定値は比較可能です。
  • コールドロードも測定する。 初回表示ではシェーダーのコンパイルとテクスチャのアップロードが行われます。そこに長いフレームが存在します。
  • 証拠に基づいて評価する。 「近い」という判定には、一致した瞬間のシートと、ページを作成していない評価者が必要です。

関連

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

関連スキル