ツール一覧AI活用ノート / AIに書かせたアニメーションが凡庸になる理由と、手で直す3箇所

AIに書かせたアニメーションが凡庸になる理由と、手で直す3箇所

2026-09-03モーション読了 約10分

要素を画面に出すコードまではAIで足ります。差が出るのはイージング・時間差・減速の長さの3つで、ここは今も手で数値を決める仕事です。W3C仕様とMaterial Design、GSAP公式ドキュメントの公開値をもとに、自動化する層と触る層を分けます。

「AIに書かせたアニメーション、なんか安っぽい」——これ、AIの能力の問題ではなく、指示の粒度の問題です。調べたので共有します。

この記事の目次
  1. 結論
  2. なぜAIの出力は「無難」に寄るのか
  3. 手で決める1箇所目:イージング(減速の「形」)
  4. 手で決める2箇所目:時間差(stagger)
  5. 手で決める3箇所目:減速の長さ(duration)
  6. 誰も書かないところ:AI出力に自動では入らない2つ
  7. prefers-reduced-motion
  8. ライセンスと責任の所在
  9. 実際の作業の分け方
  10. よくある質問

結論

時間で請求しているなら、要素の出し入れの実装はAIに投げて、イージング・時間差・減速の長さの3つだけ手で決める。ここが一番時給が高い。

モーションを勉強中なら、まずAIに書かせて、出てきた easeduration を1つずつ数値で置き換える練習をする。ゼロから書くより早く形が身につきます。

案件が「動きで差別化したい」系なら、3箇所を触る前提でスケジュールを取る。AI出力そのままだと、他社のAI出力と見分けがつきません。

自動化できる層と手で決める層 1. 構造をつくる DOM取得・ScrollTrigger配線・クリーンアップ処理 AIで足りる 2. 何を動かすか決める opacity・y移動・scale の割り当て AIで足りる 3. どう動くか決める イージング曲線 / 要素間の時間差 / 減速にかける長さ 案件ごとに数値が変わる。既定値のままだと全部同じ顔になる 手で決める

なぜAIの出力は「無難」に寄るのか

理由は単純で、既定値が一番安全だからです。

GSAPの公式ドキュメントには「GSAPはデフォルトのイーズとして power1.out を使う」と明記されています。CSSなら ease(W3Cの仕様上は cubic-bezier(0.25, 0.1, 0.25, 1) と等価)が既定です。指示がなければ、AIはこの既定値のまま出します。当然です。既定値は壊れないので。

そして既定値は「どのサイトでも無難に見える」ように設計されています。無難に見えるということは、差がつかないということでもあります。ここを理解しておくと、AIに何を追加で伝えればいいかがはっきりします。

もうひとつ。W3CのCSS Easing Functions Module Level 2(Editor's Draft、2026年2月23日版)で定義されているキーワードは、ease / ease-in / ease-out / ease-in-out の4つと linearsteps()、そしてLevel 2で追加された linear() 関数だけです。キーワードだけでは表現の幅がそもそも狭い。数値を書く覚悟がないと、選択肢が4つしかない世界に閉じ込められます。

手で決める1箇所目:イージング(減速の「形」)

一番効くのがここです。同じ距離・同じ時間でも、曲線が違うだけで印象が変わります。

Googleが公開しているMaterial Designのモーションガイドラインには、4つのカーブが具体的な cubic-bezier の値付きで載っています。W3Cのキーワードと並べて比較します。

名前 cubic-bezier の値 動きの性格 向いている場面
ease-in-out(W3C) 0.42, 0, 0.58, 1 加速と減速が左右対称 位置を往復するだけの動き
Standard(Material) 0.4, 0, 0.2, 1 素早く加速し、ゆっくり減速 画面内の移動全般
Deceleration(Material) 0, 0, 0.2, 1 最高速で入ってきて減速 画面外から入ってくる要素
Acceleration(Material) 0.4, 0, 1, 1 加速したまま画面外へ 退場する要素
Sharp(Material) 0.4, 0, 0.6, 1 対称に加速・減速 戻ってくる可能性のある要素

← 表は横にスクロールできます →

注目すべきは、W3Cの ease-in-out左右対称(0.42 と 0.58)なのに対し、MaterialのStandardは非対称(0.4 と 0.2)だという点です。減速側の制御点を手前に寄せることで、止まるときにゆっくり効かせている。この非対称こそが「気持ちいい動き」の正体で、CSSのキーワードには存在しません。

イージング曲線の形の違い linear 機械的。止まる瞬間が硬い ease-in-out(対称) 無難。既定値の顔 out系(非対称) 最初に動きが見えて、長く減速 縦軸=進捗 横軸=時間

GSAP側で言うと、公式ドキュメントに載っている power0power4 は指数の強さの違いで、.in / .out / .inOut の接尾辞で「どちら側に効かせるか」を切り替えます。既定の power1.out から power2.outpower3.out に上げるだけで、減速の粘りが変わります。これはAIへの指示を1行足すだけで済む変更です。

弱点も書いておきます。 カーブを強くしすぎると、今度は「もったいぶった動き」になります。power4.out あたりは最初の数十msでほぼ移動を終えて、残り時間を微小な減速に使うので、スクロール量の多いページでは待たされている感覚が出ます。強い曲線はヒーロー1箇所に絞るのが安全です。

手で決める2箇所目:時間差(stagger)

カードが5枚同時にふわっと出るのと、0.08秒ずつずれて出るのとでは、まったく別物に見えます。ここもAIは指示がないと0にします。

GSAPの公式ドキュメントによれば、stagger は複数ターゲットの開始時刻をずらす機能で、stagger: 0.1 は「各トゥイーンの開始時刻の間に0.1秒の間隔ができる」という意味です。オブジェクト形式にすると細かく指定できます。

プロパティ 何を決めるか 使いどころ
each 要素1つあたりの間隔(秒) 枚数が固定のとき
amount 全体で使い切る合計時間 枚数が可変のとき。伸びすぎを防げる
from どこから始めるか(start / center / edges / end / random / 添字) 中央から広がる、外側から寄る等
grid [行, 列] または "auto" カードグリッドを斜めに走らせる
axis グリッドで "x""y" に絞る 横方向だけの波にしたいとき
ease 開始時刻の分布自体にカーブをかける 最初は間隔が広く、後半で詰まる

← 表は横にスクロールできます →

実務で効くのは eachamount の使い分けです。CMS連携で件数が変わるリストに each を使うと、20件になった瞬間に全体が2秒かかるようになります。amount なら合計時間が固定されるので、件数が読めない案件ではこちらが安全。この判断はAIには渡っていない情報(この一覧が何件になり得るか)に依存するので、人間が決める場所です。

弱点。 stagger は気持ちよく見えるので、つい全セクションに入れたくなります。全部にかけるとページ全体が「常に何かが遅れて出てくるサイト」になり、読みに来た人の体感速度が落ちます。1画面に1つまで、が現実的な線です。

手で決める3箇所目:減速の長さ(duration)

3つの中で一番、公開値を参照する価値があるのがここです。

Material Designのモーションガイドラインには、モバイル基準で以下の数値が示されています。

場面 推奨時間
基準 300ms
大きい・複雑な遷移 375ms
画面に入ってくる要素 225ms
画面から出ていく要素 195ms
上限の目安 400msを超えない
タブレット モバイルの約1.3倍(300ms→390ms)
デスクトップ 150〜200ms(モバイルより速く単純に)
ウェアラブル モバイルの約0.7倍(300ms→210ms)

← 表は横にスクロールできます →

ここで見落とされがちなのが入場225ms/退場195msという非対称です。同ガイドラインは「画面から出ていく要素は注意を払う必要が少ないため、短い時間でよい」と説明しています。AIに「フェードインとフェードアウトを付けて」と頼むと、まず同じ数値が両方に入ります。片方を30ms削るだけで、閉じる操作のキレが変わります。

入場と退場は同じ長さにしない 入場 225ms / 減速カーブ(0, 0, 0.2, 1) 最高速で入って、ゆっくり止まる 退場 195ms / 加速カーブ(0.4, 0, 1, 1) 減速せずに抜ける この30msの差 出典:Material Design「Duration & easing」の公開値(モバイル基準)

数値の出どころについて1点補足します。Material Design 3側にも motion.duration.short1 のようなトークン表が公開されていますが、そのページは本文がJavaScriptで描画されるため今回は中身を確認できませんでした。ここで挙げた数値は、静的に読めるMaterial Design 1の「Duration & easing」ページの公開値です。世代が違うので、M3準拠を求められる案件では、必ず現行のトークン表を自分で確認してください。

誰も書かないところ:AI出力に自動では入らない2つ

prefers-reduced-motion

WCAG 2.1の達成基準2.3.3「インタラクションによるアニメーション」(レベルAAA)は、「インタラクションによって引き起こされるモーションアニメーションは、無効化できる」ことを求めています。W3C WAIの解説文書は、その意図を「前庭障害(内耳の障害)による反応——めまい、吐き気、頭痛——を防ぐため」と説明し、スクロール時のパララックス効果を代表例として挙げています。

達成方法として挙げられているのが prefers-reduced-motion メディアクエリです。W3CのMedia Queries Level 5(Working Draft、2026年2月19日版)ではこの特性を「ページ上のモーションを減らしたいという要望」を検出するものと定義し、値は no-preferencereduce の2つです。設定はOS側で行われ、ブラウザがページに伝えます。

AIは頼まないとこれを書きません。「スクロールでふわっと出るアニメーションを」と頼めば、素直にアニメーションだけ返ってきます。テンプレートとしてプロンプトに常駐させておくのが早いです。

@media (prefers-reduced-motion: reduce) {
  .reveal { animation: none; transition: none; }
}

注意点として、W3C WAIの解説は「色や不透明度の変化のうち、知覚される大きさ・形・位置に影響しないものはモーションアニメーションに当たらない」としています。opacityだけのフェードは対象外という整理です。とはいえ動きを止める分岐は用意しておいたほうが、後で指摘を受けたときの手戻りが小さくて済みます。

ライセンスと責任の所在

GSAPは2026年9月3日時点で、商用利用を含めて無料です。GSAPの標準ライセンスページには発効日2025年4月30日(最終更新2025年5月30日)と記載があり、FAQには「本当に何も払わずに商用プロジェクトでGSAPを使えるのか? ——はい、本当です」とあります。SplitTextやMorphSVGといった以前は有料会員限定だったプラグインも商用利用可です。

ただし制限はあります。同ライセンスは、GSAPを使って「Webflowのビジュアルアニメーション構築機能と競合する製品の作成を助長・誘引・実質的に支援するような、コードなしでアニメーションを作れるツール」に組み込むことを禁じています。競合製品を作る目的でのリバースエンジニアリングも禁止です。制作会社が案件で使う分には引っかかりませんが、ノーコードのアニメーションビルダーを自社製品として出す計画があるなら、条文を読んでおく必要があります。

コードそのものについては、料金より責任の所在のほうが実務では効きます。Anthropicの消費者向け利用規約(発効日2025年10月8日)は、出力について「当社の権利・権原・利益(もしあれば)をすべてお客様に譲渡する」と定める一方で、「独立して正確性を確認せずに出力や動作に依拠すべきではない」とも明記しています。つまり、納品物の動作保証はこちら側に残ります。生成されたコードをそのまま入れて、iOSのSafariでスクロール位置がずれたときに責任を取るのは制作者です。

なお、AI生成物と著作権の全般的な整理については、文化庁が「AIと著作権に関する考え方について」(2024年3月15日公表)と「AIと著作権に関するチェックリスト&ガイダンス」(2024年7月31日公表)を公開しています。学習段階と生成・利用段階を分けて論じているので、クライアントから聞かれたときの説明の土台になります。ここでは自分の解釈を書きません。一次資料に当たってください。

実際の作業の分け方

まとめると、こういう分担になります。

工程 担当 具体的にやること
骨組み AI 要素取得、ScrollTrigger設定、破棄処理、reduced-motion分岐の雛形
何を動かすか AI opacity / y / scale の割り当て
イージング 既定値から離れる。数値を書く
時間差 eachamount か、件数の上限を見て決める
長さ 入場と退場を別の数値にする
実機確認 実端末で見る。OSのモーション低減設定をONにしても見る

← 表は横にスクロールできます →

プロンプトに「イージングと時間差と長さは指定するので、そこは空欄で骨組みだけ書いて」と入れておくと、往復が減ります。

よくある質問

Q. AIに cubic-bezier の数値を直接指定すれば、手で触る必要はなくなりませんか? 数値を指定できている時点で、それはもう手で決めています。この記事で言う「手で決める」は、エディタで打つかどうかではなく、数値を選ぶ判断を誰がしたかという話です。

Q. CSSのtransitionだけで足りますか。GSAPは要りますか。 単発のホバーや開閉ならCSSで足ります。W3CのLevel 2で linear() 関数が入り、キーワードだけでは書けなかった曲線もCSSで表現できるようになりました。複数要素の時間差、途中での再生制御、スクロール連動が絡むならライブラリのほうが早い、という線引きが実用的です。

Q. どこから数値を触ればいいか分かりません。 まず退場の時間を入場より短くする、の1点だけ試してください。Material Designの公開値なら225msと195msです。1行で終わり、効果が体感しやすいので、感覚の基準点をつくるのに向いています。

Q. prefers-reduced-motion に対応すると、動きが売りのサイトで見栄えが落ちませんか。 動きをゼロにする必要はありません。達成基準2.3.3が求めているのは無効化できることで、位置移動をopacityの変化に置き換える、移動距離を縮める、といった縮退のさせ方も取れます。OS設定を明示的にONにしている人にだけ適用される分岐なので、通常の閲覧者の見え方は変わりません。

Q. この記事の数値は試したものですか。 いいえ。すべて末尾に挙げた公式ドキュメントと仕様書の記載です。実際に課金して検証したツールもありません。数値はあくまで出発点なので、案件のトーンに合わせて上下させてください。

出典

  1. CSS Easing Functions Module Level 2W3C CSS Working Group / 2026-09-03参照
  2. Understanding Success Criterion 2.3.3: Animation from InteractionsW3C Web Accessibility Initiative / 2026-09-03参照
  3. Media Queries Level 5W3C / 2026-09-03参照
  4. Duration & easing - Motion - Material DesignGoogle / 2026-09-03参照
  5. Easing | GSAP | Docs & LearningGSAP / Webflow / 2026-09-03参照
  6. Staggers | GSAP | Docs & LearningGSAP / Webflow / 2026-09-03参照
  7. Standard License - GSAPGSAP / Webflow / 2026-09-03参照
  8. AIと著作権について文化庁 / 2026-09-03参照
  9. Consumer Terms of ServiceAnthropic / 2026-09-03参照