互換性抜群!「Web Animations API」の基本をおさらいしよう
ホームページ上で何らかのアニメーションを実行しようとするときには、どのような技術を使ってアニメーションを作ればいいのか悩みます。
というのも、アニメーションを実装するのに、CSSアニメーションやCSSトランジション、HTML5のCanvas、SVGアニメーション、GIFアニメーション、JavaScriptでDOM操作をすることで実装するアニメーションなど、さまざまなものがあります。
しかしながら、決定版とも言える新しいアニメーションフレームワークとなるJavaScriptのAPIの策定が、W3Cで進んでいます。
それが、今回ご紹介する*「Web Animations API」*です。
通常、スクリプトを使ってアニメーションを実装する際には、いざ作ろうとしてみると、サポートブラウザの問題やデバイス間での見え方の違いなどで、考慮すべき点がいろいろ多いのが現実です。
しかし、このWeb Animations APIはまだ草案段階(Working Draft)ではあるものの、対応範囲は次々に広がっており、ブラウザ側で標準的な仕組みを用意してくれるので、非常に便利です。
それでは、このWeb Animations APIとは一体どのようなもので、他のアニメーションフレームワークとは何が違うのでしょうか。
今回は、Web Animations APIの基本について、概要から基本的な考え方までをご紹介します。
Web Animationsが生まれた経緯
インターネットが広く一般に普及し、誰もがスマートフォンを持ち歩くような時代になり、ユーザーの目を引くアニメーション表現はWeb環境において必須の技術となりました。
しかし、その実装方法にはこれまで統一的な手段がほとんどなく、ホームページの製作者はそれぞれに工夫を凝らしながらアニメーションを手作りしていました。
その結果、アニメーションに特化したJavaScriptライブラリが続々とリリースされ、やがて乱立することとなり、それぞれのライブラリ同士の互換性や相性の問題が、製作者の悩みとなっています。
ブラウザーベンダーの側でもこの状況を問題視しており、実際にWeb環境下でアニメーションを実装するための統一した手段の仕様を検討していました。
実際に、CSSにおいてはすでにアニメーション関連の技術は確立されつつあります。
一方で、HTML5では、広範な仕組みを外部から取り込んだことで、さまざまな弊害が生まれました。
例えば、SVGの仕組みがそれにあたります。
HTMLではSVGの機能(transformやfilterなど)をこれまでもHTML向けに再定義してきた定義がありますが、HTML5では、SVGそのものを仕様として取り込んでしまったため、同じ仕様がダブってしまうことになり、全体としての整合性が乱れてしまいました。
そういう経緯があり、Webの仕様を定義する団体であるW3Cでは現在、HTMLにおけるCSSやSVGの仕様を一度バラバラにしつつ、これらの仕様を包括する*リファクタリング(統一的な仕様への再構築化)*に取り組んでいます。
こうした流れに従い、Webアニメーションの仕様も、一度新たにWeb Animationsとして再構築・再定義されることになったのです。
W3Cが中心的に策定を進めていることもあり、最終的にはアニメーションを取り巻く問題を解決し、Web Animationsに統合していきたいという方向性で動いています。
対応状況については、基本的なコンポーネント(コアコンポーネント)はすでにChromeやFirefoxではサポートされており、現在ではSafariやEdgeでも開発中です。
また、対応していないブラウザでも同じように実装できるように*「ポリフィル」と呼ばれる外部JavaScriptプラグイン*も提供されているので、非対応ブラウザでもポリフィルを読み込むことでクロスブラウザ・クロスデバイス対応のアニメーションを実装することができます。
Web Animationsの基本的な考え方
Web Animationsでは、CSSアニメーションと同じように*キーフレーム(アニメーションの進捗を実際のグラフィックに適用する際の枠組み)*を定めることでオブジェクトを変形したり動かしたりすることができます。
あとは、ブラウザの側でWeb Animationsの仕様に基づきキーフレーム間をトゥイーン(自動補正)します。
例えば、色が「赤から黄色に変わる」というアニメーションであれば、タイミングから算出されたアニメーションの進捗に応じた色(50%であればオレンジ色)でグラフィックを描くことになります。
上記の例で言えば、CSSアニメーションのキーフレームは以下のようになります。
@keyframes changeColor {
from {
background-color: red;
} to {
background-color: yellow;
}
}
このキーフレームの設定では、from(0%)に「background-color: red;」、to(100%)に「background-color: yellow;」を設定しており、それを直線的に動かしていることになります。
これをWeb Animations APIを使ってJavaScriptに置き換えると、以下のようになります。
var changeColor = document.getElementById(‘box’).animate([{
backgroundColor: ‘red’;
}, {
backgroundColor: ‘yellow’;
}], {
duration: 3000,
iterations: Infinity,
easing: ’linear’
});
基本的な構造はCSSアニメーションで組み立てるときと同じですが、キーフレームを指定する代わりに配列を組んだオブジェクトとして表現しています。
fromやtoを宣言する必要はなく、JavaScript側でキーフレームを割り当てます。
しかし、この時点ではアニメーションは再生されません。
以下のように呼び出すことで、再生が行われます。
changeColor.play();
Web Animations APIはCSSではなくJavaScriptベースで動いているため、random関数などJavaScriptでサポートされている関数を組み合わせてアニメーションを作成したり、DOM操作で直接HTML要素を変形・移動させることも可能です。
また、Web Animations APIでは、SVGを使ったアニメーションもサポートしています(Chrome環境でのみ作動します)。
<svg id=“box”><path fill="red" d="M30,100L100,30L170,100L100,170z" class="target"/></svg>
var target = document.getElementById(‘box’).animate([ d:{
"path('M30,100L100,30L170,100L100,170z')",
"path('M40,40L160,40L160,160L40,160z')",
"path('M100,30L170,100L100,170L30,100z')"
}], {
duration: 2000,
iterations: 2
});
以上により、3種類のフレームをセットしながら、なめらかに変形するSVGアニメーションが完成します。
このように、SVGアニメーションを作成する際に、コマとなるPathが分かって入れば、Web Animationsのanimate関数内でそのコマをつなぎ合わせることで、動きのある複雑なSVGアニメーションを実装することも可能です。
Web Animations APIを活用しよう
Web Animations APIをうまく使えば、オンボーディングしやすいマイクロインタラクティブアニメーションも実装しやすくなります。
例えば、決済プラットフォームのStripeでは、Web Animations APIを大いに使ってぬるぬると動くUIアニメーションを実装しています。
Web Animations APIでは、CSSでもサポートしているようなeasing処理をそのまま使うことができるため、非常に便利です。
Stripeの例では、cubic-bezierというeasingを使って、フォームが入力後にスライディングするようなアニメーションになっています。
まとめ
Web Animations APIの登場により、たくさん乱立していた膨大な量のJavaScriptプラグインの中から一つを選んでダウンロードし、そのプラグインのことを勉強してアニメーションを作成するということがなくなり、ますますアニメーションを使った開発が行いやすくなります。
また、Web Animations APIはいま注目を集めているSVGを使ったアニメーションもサポートしているため、学ぶ価値は大いにあります。
今回は基本事項しか解説をすることはできませんでしたが、より詳しく知りたい方は、下記の参考ページを合わせてご覧ください。
参考:
Web Animations APIの基本的な使い方・まとめ
- ページ
- 印刷物のカタログやパンフレットは、通常複数のページから成り立っています。インターネットのホームページもまったく同じで、テーマや内容ごとにそれぞれの画面が作られています。この画面のことを、インターネットでも「ページ」と呼んでいます。ホームページは、多くの場合、複数ページから成り立っています。
- CS
- CSとはCustomer Satisfactionの略称で「顧客満足度」を意味します。顧客との関係維持、サービスの発展に関するマーケティング戦略に関わる用語です。
- HTML
- HTMLとは、Webページを記述するための言語です。"HyperText Markup Language "の略です。"<"と">"にはさまれたさまざまな種類の「タグ」によって、文章の構造や表現方法を指定することができます。
- JavaScript
- JavaScript(ジャバスクリプト)とは、Webサイト上でさまざまなインタラクティブな動きを実現するために用いられる言語
- フレームワーク
- フレームワークとは、アプリケーションソフトを開発する際によく必要をされる汎用的な機能をまとめて提供し、アプリケーションの土台として機能するソフトウェアのことです。 元々は枠組み、下部構想、構造、組織という意味の英単語です。アプリケーションのひな形であり、これを開発に利用することで、大幅な効率の向上が見込めます。
- JavaScript
- JavaScript(ジャバスクリプト)とは、Webサイト上でさまざまなインタラクティブな動きを実現するために用いられる言語
- W3C
- W3Cは、World Wide Web Consortiumの略称で、ダブリュー・スリー・シーと呼ばれています。WWWコンソーシアム、またはワールドワイドウェブコンソーシアムと表記されることが多く、国際的な非営利団体です。主に、WWWと呼ばれるウェブ上で利用される技術の標準化を進めています。
- デバイス
- デバイスとは「特定の機能を持つ道具」を表す語で、転じてパソコンを構成するさまざまな機器や装置、パーツを指すようになりました。基本的に、コンピューターの内部装置や周辺機器などは、すべて「デバイス」と呼ばれます。
- フレームワーク
- フレームワークとは、アプリケーションソフトを開発する際によく必要をされる汎用的な機能をまとめて提供し、アプリケーションの土台として機能するソフトウェアのことです。 元々は枠組み、下部構想、構造、組織という意味の英単語です。アプリケーションのひな形であり、これを開発に利用することで、大幅な効率の向上が見込めます。
- インターネット
- インターネットとは、通信プロトコル(規約、手順)TCP/IPを用いて、全世界のネットワークを相互につなぎ、世界中の無数のコンピュータが接続した巨大なコンピュータネットワークです。インターネットの起源は、米国防総省が始めた分散型コンピュータネットワークの研究プロジェクトARPAnetです。現在、インターネット上で様々なサービスが利用できます。
- ページ
- 印刷物のカタログやパンフレットは、通常複数のページから成り立っています。インターネットのホームページもまったく同じで、テーマや内容ごとにそれぞれの画面が作られています。この画面のことを、インターネットでも「ページ」と呼んでいます。ホームページは、多くの場合、複数ページから成り立っています。
- JavaScript
- JavaScript(ジャバスクリプト)とは、Webサイト上でさまざまなインタラクティブな動きを実現するために用いられる言語
- CS
- CSとはCustomer Satisfactionの略称で「顧客満足度」を意味します。顧客との関係維持、サービスの発展に関するマーケティング戦略に関わる用語です。
- HTML
- HTMLとは、Webページを記述するための言語です。"HyperText Markup Language "の略です。"<"と">"にはさまれたさまざまな種類の「タグ」によって、文章の構造や表現方法を指定することができます。
- HTML
- HTMLとは、Webページを記述するための言語です。"HyperText Markup Language "の略です。"<"と">"にはさまれたさまざまな種類の「タグ」によって、文章の構造や表現方法を指定することができます。
- W3C
- W3Cは、World Wide Web Consortiumの略称で、ダブリュー・スリー・シーと呼ばれています。WWWコンソーシアム、またはワールドワイドウェブコンソーシアムと表記されることが多く、国際的な非営利団体です。主に、WWWと呼ばれるウェブ上で利用される技術の標準化を進めています。
- HTML
- HTMLとは、Webページを記述するための言語です。"HyperText Markup Language "の略です。"<"と">"にはさまれたさまざまな種類の「タグ」によって、文章の構造や表現方法を指定することができます。
- CS
- CSとはCustomer Satisfactionの略称で「顧客満足度」を意味します。顧客との関係維持、サービスの発展に関するマーケティング戦略に関わる用語です。
- W3C
- W3Cは、World Wide Web Consortiumの略称で、ダブリュー・スリー・シーと呼ばれています。WWWコンソーシアム、またはワールドワイドウェブコンソーシアムと表記されることが多く、国際的な非営利団体です。主に、WWWと呼ばれるウェブ上で利用される技術の標準化を進めています。
- JavaScript
- JavaScript(ジャバスクリプト)とは、Webサイト上でさまざまなインタラクティブな動きを実現するために用いられる言語
- プラグイン
- プラグインは、本来あるソフトウェアに機能を拡張させるために追加するプログラムのことです。
- デバイス
- デバイスとは「特定の機能を持つ道具」を表す語で、転じてパソコンを構成するさまざまな機器や装置、パーツを指すようになりました。基本的に、コンピューターの内部装置や周辺機器などは、すべて「デバイス」と呼ばれます。
- CS
- CSとはCustomer Satisfactionの略称で「顧客満足度」を意味します。顧客との関係維持、サービスの発展に関するマーケティング戦略に関わる用語です。
- CS
- CSとはCustomer Satisfactionの略称で「顧客満足度」を意味します。顧客との関係維持、サービスの発展に関するマーケティング戦略に関わる用語です。
- JavaScript
- JavaScript(ジャバスクリプト)とは、Webサイト上でさまざまなインタラクティブな動きを実現するために用いられる言語
- CS
- CSとはCustomer Satisfactionの略称で「顧客満足度」を意味します。顧客との関係維持、サービスの発展に関するマーケティング戦略に関わる用語です。
- JavaScript
- JavaScript(ジャバスクリプト)とは、Webサイト上でさまざまなインタラクティブな動きを実現するために用いられる言語
- CS
- CSとはCustomer Satisfactionの略称で「顧客満足度」を意味します。顧客との関係維持、サービスの発展に関するマーケティング戦略に関わる用語です。
- JavaScript
- JavaScript(ジャバスクリプト)とは、Webサイト上でさまざまなインタラクティブな動きを実現するために用いられる言語
- HTML
- HTMLとは、Webページを記述するための言語です。"HyperText Markup Language "の略です。"<"と">"にはさまれたさまざまな種類の「タグ」によって、文章の構造や表現方法を指定することができます。
- フォーム
- フォームとは、もともと「形」「書式」「伝票」などの意味を持つ英単語です。インターネットの分野では、パソコンの操作画面におけるユーザーからの入力を受け付ける部分を指します。企業のホームページでは、入力フォームが設置されていることが多いようです。
- UI
- UIとは、ユーザーインターフェイス(User Interface)の略で、ユーザー(使い手)とデバイスとのインターフェイス(接点)のことを意味します。
- CS
- CSとはCustomer Satisfactionの略称で「顧客満足度」を意味します。顧客との関係維持、サービスの発展に関するマーケティング戦略に関わる用語です。
- フォーム
- フォームとは、もともと「形」「書式」「伝票」などの意味を持つ英単語です。インターネットの分野では、パソコンの操作画面におけるユーザーからの入力を受け付ける部分を指します。企業のホームページでは、入力フォームが設置されていることが多いようです。
- JavaScript
- JavaScript(ジャバスクリプト)とは、Webサイト上でさまざまなインタラクティブな動きを実現するために用いられる言語
- プラグイン
- プラグインは、本来あるソフトウェアに機能を拡張させるために追加するプログラムのことです。
- ページ
- 印刷物のカタログやパンフレットは、通常複数のページから成り立っています。インターネットのホームページもまったく同じで、テーマや内容ごとにそれぞれの画面が作られています。この画面のことを、インターネットでも「ページ」と呼んでいます。ホームページは、多くの場合、複数ページから成り立っています。
おすすめ記事
おすすめエントリー
同じカテゴリから記事を探す
カテゴリから記事をさがす
●Webマーケティング手法
- SEO(検索エンジン最適化)
- Web広告・広告効果測定
- SNSマーケティング
- 動画マーケティング
- メールマーケティング
- コンテンツマーケティング
- BtoBマーケティング
- リサーチ・市場調査
- 広報・PR
- アフィリエイト広告・ASP
●ステップ
●ツール・素材
- CMS・サイト制作
- フォーム作成
- LP制作・LPO
- ABテスト・EFO・CRO
- Web接客・チャットボット
- 動画・映像制作
- アクセス解析
- マーケティングオートメーション(MA)
- メールマーケティング
- データ分析・BI
- CRM(顧客管理)
- SFA(商談管理)
- Web会議
- 営業支援
- EC・通販・ネットショップ
- 口コミ分析・ソーシャルリスニング
- フォント
- 素材サイト
●目的・施策
- Google広告
- Facebook広告
- Twitter広告
- Instagram広告
- LINE運用
- LINE広告
- YouTube運用
- YouTube広告
- TikTok広告
- テレビCM
- サイト制作・サイトリニューアル
- LP制作・LPO
- UI
- UX
- オウンドメディア運営
- 記事制作・ライティング
- コピーライティング
- ホワイトペーパー制作
- デザイン
- セミナー・展示会
- 動画・映像制作
- データ分析・BI
- EC・通販・ネットショップ
- 口コミ分析・ソーシャルリスニング