ハイパフォーマンスなGIFアニメ再生を実現する工夫 by noppe

iOSDC Japan 2025
採択
2025/09/20 10:50〜
Track D
レギュラートーク(20分)

ハイパフォーマンスなGIFアニメ再生を実現する工夫

noppefoxwolf noppe noppefoxwolf
7

iOSでGIFやAPNGなどのアニメーション画像を扱うとき、「UIImageViewにセットするだけでは滑らかに再生できない」「全フレームがメモリに展開されて落ちる」といった経験はないでしょうか?
このトークでは、それらの課題を解決するために開発した軽量ライブラリnoppefoxwolf/AnimatedImageの内部構造と工夫について紹介します。
AnimatedImageはMastodonアプリDAWN for Mastodonのために設計されたハイパフォーマンスなアニメーション画像再生ライブラリです。

AnimatedImageは、標準のUIImageViewと同じ使い勝手を保ちつつ、以下のような特徴を持ちます:

  • CADisplayLinkによる正確なフレーム制御
  • メモリ消費を抑えるフレームごとのデコードとキャッシュ設計
  • 並列デコード処理を活かした描画最適化
  • APNG, GIFなど複数フォーマットのサポート

セッションでは、開発にあたっての設計判断、パフォーマンスとの向き合い方、低レイヤーAPI(ImageIO, CGImageSource, CADisplayLinkなど)の活用法を、実際のコード例を交えながら解説します。

「どうやって描画スケジューリングを行っているのか?」「標準APIでここまでできるのか?」といった疑問を持つiOS中上級者に向けて、画像表示の深層に踏み込む内容です。

アニメーション画像に関する知識だけでなく、パフォーマンスチューニングやAPI設計にも興味のある方にとって、学びの多いセッションになるはずです。