オフライン参加のつもりが予定が狂い、今回はオンライン視聴。ラストの Liquid Glass 対応に関するトークはオフライン限定ということで、残念ながら聴講できず。最後のアセットコンパイルの話で、Assets に含めた svg ファイルが、ビルドの過程で各解像度の png に変換されていると知り目から鱗。
イベントページ:https://love-swift.connpass.com/event/367730/
アーカイブ動画:https://youtube.com/live/uZpxIPIg6F0
アプリの “かわいい” を支えるアニメーションツールRiveについて
上ちょ / uetyo さん
- Rive とは? “インタラクティブ” アニメーションツール
- ユーザーのタップを起点にアニメーション、音声再生、Haptic も可能
- 複数種類のアニメーションを用意したい場合
- Lottie アニメーションは種類分の個数が必要だが、Rive はファイルは一つのみでOK
- Rive ファイル内で分岐が完結
RiveViewModel: Rive ファイルに指示するプロトコルを SDK が提供(型安全)riveViewModel.view()でビュー生成Screenに手を加える必要なし- アニメーション、再生タイミング、タイマー調整… は従来、エンジニア実装、デザイナー確認のラリーが発生していたが、 Rive ファイル内でデザイナー完結するのでラク
- アニメーションの制作方法:
- 初期:Rive ファイルの作成をエンジニアが主導+デザイナー巻き込み
- 現在:デザイナーで完結
- Rive は Duolingo が最も利用している、アニメータ専門チームが存在
- Lottie Animation との使い分け
- Rive:パフォーマンスが高い(メモリ使用量、CPUのレンダリングコスト)
- 銀の弾丸ではない、ループ再生は Lottie を公式が推奨する
- カスタムフォントはキャッシュ機構が必要(メモリ使用が増大し不安定に)
- Q&A
- Lottie と比べて微妙な点
- Rive が高機能すぎて作りにくい
- Lottie は AE から直接エクスポートできるが、Rive は専用のツール (Rive Editor) が必要で学習うコストが高い
- 前述のパフォーマンスに対する考慮が必要
- 後発の Rive だからこそ導入時の困りごと
- トラブル時情報が少ない(フォーラムやGitHub Issueで質問→レスポンスに時間がかかる)
- 日本語での情報が少ない、AIの学習も進んでいない
- 採用すべき
- ただのローディングだけであれば慣れ親しんだLottieが良さそう
- 画面全体で利用したい、アニメーション途中のインタラクションをさせたいケースはおすすめ
- 両方採用はあり?
- ワンバンクは両方利用
- ケースによって片方に倒すのもあり
- Lottie と比べて微妙な点
異業種からiOSエンジニアへの道のり〜iOS開発の魅力〜
hinakko さん
未経験からエンジニアになるまでの自らの歴史。自分から機会を得て、人と出逢いにいくその行動の量や幅がとにかくすごい。ひなっこさんはバイタリティに満ちていて、お会いするたびに圧倒されているが、そんな彼女のキャラクターが画面を越えて滲み溢れてくるプレゼン。ぜひアーカイブをご覧ください。
アセットのコンパイルについて
ojun さん
xcassetsによるアセット管理が、最終的にどのようにアプリに表示されているかxcassetsは ipa に含まれない`- Assets.car にビルド・変換されている
actoolを利用してビルドされている
actoolとはxcassetsをコンパイルするツール、Xcodeに内包$ man actoolでコマンドオプション見れる- ビルドログでコマンド実行確認できる→整形
- output path 指定など
actoolはプロジェクト外でも使える- コマンドとして公開されているため、Xcode のプロジェクト関係なく Assets.car 作成可能
- Assets.car の中身
assetutilコマンドで確認可能$ assetutil —info Assets.car- 画像のプロパティがJSONでまとまっている
- insidegui/AssetCatalogTinkerer で可視化可能
xcassetsがなくても Assets.car があれば画像を表示可能- 事実上コンパイルをスキップ可能
- デモ実演
- Assets をターゲットから外すと、Preview に画像は表示されない
actoolにより Assets.car を生成 → Preview に画像が表示される- Assets ではなく .car ファイルを見ていることがわかる
- 嬉しいこと
- クリーンビルドをすると、アセットのビルドに多くの時間がかかる
- アセットを大量に含むアプリの場合、事前に .car をビルドしておくことでビルド時間を短縮できそう
- Q&A
- xcassets が複数あるとエラー
- ファイル名変えて(固定アセットを)複数管理できる?
- サブモジュールで持っておけばマージされるかも
- ファイル名変えて(固定アセットを)複数管理できる?
xcassetsに SVG 含む場合、最終的な ipa に内部で png 化されている説、これもビルド時間に含まれる- 含まれる
- xcassets が複数あるとエラー