SSGOI LogoSSGOI
← ブログに戻る
ssgoi 2.5.2: モバイルアニメーション最適化完了 🎉

ssgoi 2.5.2: モバイルアニメーション最適化完了 🎉

ムン・デスン
performancemobileoptimizationrelease

こんにちは、ssgoiのメンテナーです。

本日、ssgoi 2.5.2をリリースしました。このバージョンの核心はモバイル環境の最適化です。

なぜ再構築したのか?

以前は、アニメーション実装を外部ライブラリに依存していました。迅速な開発のための選択でした。

しかし、ユーザーからのフィードバックが寄せられ始めました:

  • 「モバイルでカクカクします」
  • 「アプリを切り替えて戻ると壊れます」
  • 「Galaxyデバイスでもたつきます」

使用していたライブラリ(古いバージョン)は、可変FPSを全く考慮していませんでした。

「自分たちで作ろう。」

どのように構築したか

ステップ1: 優れたコードの研究

GSAP(20k stars)のTicker実装を分析しました:

  • Delta Time Clamping(時間差制限)
  • Lag Smoothing(遅延スムージング)
  • Adaptive Frame Rate(適応フレームレート)

Svelte Motionのスプリング実装も分析しました:

  • Semi-Implicit Euler(半陰的オイラー法)
  • Allen Chouの正規化技法

React Native Reanimatedのネイティブ最適化も参考にしました。

ステップ2: コア最適化の実装

半陰的オイラー法

// 速度が先、位置が後(順序が重要!)
velocity += -2*dt*ζ*ω*velocity + dt*ω²*(target - position);
position += dt*velocity;

可変FPS防御コード

// 1. dtを制限
dt = Math.min(dt, 0.1);

// 2. バックグラウンド復帰への対応
if (elapsed > 500) {
  startTime += elapsed - 33;
}

RAF最適化

// シングルトンパターン - RAFは一度だけ呼び出し
ticker.subscribe(animation.update);

ステップ3: 実機テスト

  • iPhone 13, 14 Pro
  • Galaxy S21, S23
  • ローエンドAndroid(Galaxy A12)

すべてのデバイスで安定動作を確認 ✅

アップデートすると自動的に適用されます。

詳細な技術文書

最適化プロセスと数値解析理論: https://velog.io/@k-svelte-master/optimize-anaimtion-performance-in-mobile

おわりに

オープンソースライブラリを運営して学んだこと:

  • ユーザーフィードバックが最も重要
  • 優れたコードをたくさん読む必要がある
  • 小さな最適化が集まって大きな違いを生む

皆様のフィードバックのおかげで、より良いライブラリになりました。 ありがとうございます! 🙏


Github: https://github.com/meursyphus/ssgoi NPM: https://www.npmjs.com/package/ssgoi