AirbnbのアニメーションライブラリLottie(ロッティー)の使い方🎅

![Lottie_logo-600x300.jpg](https://qiita-image-store.s3.amazonaws.com/0/126720/059efc63-3b7f-0ac5-270e-5895d49d2d2d.jpeg)

# この記事を3行で説明すると
- Lottieという動画をアプリに組み込むためのライブラリを使うといいよ
- JSONファイルを組込むので格段に軽くなる
- 必要なものをAirbnbがほとんど用意してくれててすごい👏

今回は導入のメリット・デメリット、利用する際につまづいた点を書いていきたいと思います。
この動画を例としてあげながら進めていきます。


<blockquote class="twitter-tweet" data-lang="ja"><p lang="et" dir="ltr">Merry Christmas🎅 <a href="https://t.co/rvGR9THE5s">pic.twitter.com/rvGR9THE5s</a></p>&mdash; いなげ (@17_makoto) <a href="https://twitter.com/17_makoto/status/944825747557949440?ref_src=twsrc%5Etfw">2017年12月24日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

# Lottie(ロッティー)ってなーに

   - Lottie(ロッティー)は、Airbnbから登場したiOS、 Android、React Native対応のアニメーションライブラリです。
Adobe After Effectsで表示できるアニメーションをリアルタイムでレンダリングし、ネイティブ アプリで静的な コンテンツを作るのと同じくらい簡単に面白い動きをするアニメーションを作成することができます。

>詳しくはこちら👇
[Airbnbがリリースしたアニメーションライブラリ「Loitte」とは？｜ferret フェレット](https://ferret-plus.com/6214)

# 作成フロー
作成のフローは以下のステップです。

1. ZXPInstallerをDL：http://aescripts.com/learn/zxp-installer/
1. BodymovinをDL（Aeのプラグイン）：https://github.com/airbnb/lottie-web
2. アプリに組み込みたい動画をAeで作成
3. 動画をBodymovinでJSONで書き出し
4. [プレビュー](https://www.lottiefiles.com/preview)でエラーがないか確認
5. 問題なければ実装（orデータの受け渡し🙏）

- 参考：[Adobe After EffectsとbodymovinでSVGアニメーションの作成を試してみる - Qiita](https://qiita.com/takaaki_ishii/items/ed9f31afd61842e64c17)


# 導入のメリット

## アプリサイズが軽くなる
![filesize.png](https://qiita-image-store.s3.amazonaws.com/0/126720/0aa89ddf-62e0-9655-4371-bc8ede415de5.png)

左が動画形式のファイル、右がjsonのファイル。
jsonのファイル形式で組み込むのでアプリサイズが大幅に軽減されます。

## 表現したものがそのまま反映される
![ease.png](https://qiita-image-store.s3.amazonaws.com/0/126720/f2ae60d7-3938-bcab-c3be-3275f4c0b65b.png)

動画作成する際細かいイージングを指定すると思います。
イージングもそのまま反映されるのでコードで制御をする必要はありません。
結果として実装をお願いする際にコミュニケーションコストが減ります。

# 導入のデメリット

## まだ[サポート](http://airbnb.io/lottie/supported-features.html#)されていない表現がある

![support.png](https://qiita-image-store.s3.amazonaws.com/0/126720/ca4ad2bc-8791-15c0-ed98-1cee522f8f2c.png)
[Supported After Effects Features · Lottie](http://airbnb.io/lottie/supported-features.html#)

上の図のようにWebではサポートされているが、アプリではサポートされていないもの、
アプリでもiOSはサポートされているがAndroidではサポートされていない表現があったりします。

またテキストを利用する際はフォントデータの組み込みが必要になります。

サポートされてない表現を利用、フォントを組み込み忘れるとクラッシュしてしまうので、「[Supported After Effects Features · Lottie](http://airbnb.io/lottie/supported-features.html#)」でサポートされているかどうかを確認しながら作成を進めましょう。

# 利用する際につまづいた点

## Aiファイルがシェイプになっていない
https://www.lottiefiles.com/share/yNey2V

Previewのように全てエラーで表示されてしまいます。

## 文字がアウトライン化されていない
https://www.lottiefiles.com/share/jUehQs

「導入のデメリット」で記載しましたがテキストを利用する際はフォントデータの組み込みが必要になります。
回避方法の一つとしてテキストをアウトライン化することも解決することができます。

## 完成系がこちら
https://www.lottiefiles.com/share/XhksR7

こまめにプレビューを見ながら作成を進めていくのが、Lottieを利用する際のポイントかと思います。

# まとめ

- 動画をサービス内で用いる際には利用できると良さそうです
- とはいえAeでのアニメーションデザイン自体の工数がかかるので
    - アニメーションを適用する必要があるのか
    - スケジュール・工数的に作成可能かという判断が事前に必要だと思います

# 参考リンク
- ライブラリ：[LottieFiles - Free animation files build for Lottie, Bodymovin](https://www.lottiefiles.com/)
- サポート一覧：[Supported After Effects Features · Lottie](http://airbnb.io/lottie/supported-features.html#)
- プレビュー：[Preview your lottie files on the web - Lottiefiles](https://www.lottiefiles.com/preview)
- inageの投稿：[inage on Lottiefiles](https://www.lottiefiles.com/17_makoto)
    - 個人で投稿もできたりします


### ＼Please follow me!!／
Twitterアカウントではデザインやお仕事についてつぶやいています
👉[いなげ @17_makoto](https://twitter.com/17_makoto)