2020年1月 7日(火)
2019年3月19日に開催したCSS Nite After Dark 2019の池田 泰延さん(ICS)の『現場で活用できるマイクロインタラクションの作り方』フォローアップを公開します。
マイクロインタラクションのセッションにご参加いただき、ありがとうございました。
今回のセッションでは、マイクロインタラクションの役割から、モーション系のツールで作る話、エンジニアがCSSやJavaScriptで実装する段階まで具体的に紹介しました。
ウェブサイトにマイクロインタラクションを実装しようとするとデザイナーやエンジニアのプラスアルファの作業となることが多く、実装工数は増える可能性があります。実装工数が増えようとも、ユーザー体験の向上のために提案できることは大事です。そのため、マイクロインタラクションの必要性をお伝えすることに注力しました。プロダクトが目指すユーザー体験を実現するために、マイクロインタラクションを活用していきましょう。
フォローアップでは、発表での補足とお寄せいただいた質問をいくつかピックアップして回答します。
「再生が滑らかでなく重たい」と「データ容量が重たい」の2つの意味が考えられます。今回は前者について回答します。
再生負荷に関しては、いくつかの最適化のポイントがあります。
一般的にDOMやSVGに比べて、HTML5 CanvasやWebGLのほうが描画性能は高いです。そのため、「再生が重たい」と感じたらHTML5 CanvasやWebGLの採用を検討するといいでしょう。参考までに、私が以前検証した記事を紹介します。同時に動かせる要素の数で比較すると、DOMだと3000個程度、WebGLだと40000個程度となります。
最速のアニメーションライブラリはこれだ! JSライブラリの性能をDOMとWebGLで比較検証 - ICS MEDIA https://ics.media/entry/14993
最近のGoogle検索エンジンはJavaScriptを解析すると言われています。しかし、確実に解析される保証がないので、HTMLのソースコードとして展開しておくことがベストプラクティスのひとつとして知られています。
Nuxt.jsの場合は、SSR(サーバー・サイド・レンダリング)という技術を使って、シングル・ページ・アプリケーションのページ内リンクを静的なHTMLファイルとしても生成できます。HTMLファイルが存在する状態となるので、通常のウェブサイトと同様に検索エンジンは解析してくれます。
次の資料がNuxt.jsのSSRについてわかりやすく説明されているので、参考にするといいでしょう。
Nuxt.jsによるAdobe MAX Japan 2018公式Webサイト制作の舞台裏 - Speaker Deck https://speakerdeck.com/haribote/nuxt-dot-jsniyoruadobe-max-japan-2018gong-shi-websaitozhi-zuo-falsewu-tai-li
はい、変えています。 私の場合ですが、マイクロインタラクションを用意する前提ではじめに提案します。予算や期間が限られる場合に、他の要件と優先度を調整しながら、場合によってはマイクロインタラクションを削ります。
構成案や仕様書に、絵コンテなどの形で明確に記載しておきます。「マテリアルデザインのリップルエフェクトをボタンに追加してほしい」といった共通言語を使って仕様書に記載しておくのもいいと思います。
残念ながら、かならず再現できるわけではありません。
After Effectsはもともと映像制作用のソフトウェアなので、ウェブに適さない部分もあります。たとえば、「エフェクト」はBodyMovinで書き出すと、ブラウザではまったく再現できません。また、複雑なパスアニメーションだと変換で壊れる場合があります。After Effectsで作成する際は、BodyMovinでの変換結果をこまめにブラウザで確認することが大事です。
アニメーションのセンスを磨き、アイデアの引き出しをためておくことが大事です。そのためには、さまざまなウェブサイトやアプリを普段から観察しています。たとえば、次のギャラリーサイトでセンスのいい動きをチェックします。
https://www.awwwards.com/ https://thefwa.com/
また、普段からアニメーションやマイクロインタラクションの練習として、小さなデモを制作するのもオススメです。ウォームアップができていると、いざ制作するときにすぐにアイデアがでてきます。アニメーションは試行錯誤がものをいう場面があります。アニメーションにおいて、予備動作(スケール変化など)が必要な場合とそうでない場合を判断することがありますが、そのときも普段から制作していると感覚的に判断がつくようになります。
サンプルの「1_texteffect」フォルダ内のJavaScriptを、そのような設計のコードにしてみました。アニメーションを始める前に元のinnerHTMLプロパティーのデータを変数にとっておき、アニメーションがおわったところで、innerHTMLプロパティーに再代入します。
2019年、CSS Niteでは49回の関連イベントを通して123セッションが行われました。その中からベスト・セッション+αを選びました。