Apple が iOS 12 でアニメーションをよりスムーズにする方法

iOS 12 のユーザーは、Apple が行った一連の変更のおかげで、以前のバージョンと比較してユーザー インターフェイスがよりスムーズにスクロールし、コマ落ちが少なくアニメーションを処理できるようになったと感じるかもしれません。

セッション中に説明しました」ココアタッチの新機能「WWDC 2018 で、Apple のエンジニアはiOS12長年にわたってユーザーを悩ませてきたアニメーションの問題を解決する機会として。いくつかのフレーム落ちの背後にある原因は、エンジニアがファーストパーティのアプリを調査しているときに発見され、Josh Shaffer がその原因と問題を修正するために Apple が行ったことについてアドバイスしました。

その大部分は、iOS デバイスのプロセッサによって実行されるタスクのスケジュール設定の改善と、今後のアニメーションの事前読み込みで構成されています。

確認された問題の 1 つは、メニュー内のオプションのリストの項目やドキュメントのさらに下にあるグラフィックなど、ユーザーがスクロールするときに生成する必要があるデータを iOS が処理する方法に関連しています。 iOS 10 で導入された Cell Pre-fetch と呼ばれる API は、事前にバックグラウンドでデータをプリロードすることでこの問題を解決することを目的としており、遅延や突然の大規模なプロセッサ負荷が発生することなく画面に表示できるようになりました。

プリフェッチ修正後のタスク スケジュールのタイムライン

これはうまく機能しますが、Apple は、画面上で別のセットのデータが生成されると同時に、近い将来使用されるデータのプリフェッチ リクエストが原因で、スクロール中にフレーム落ちが発生する場合があることを発見しました。 、CPU ボトルネックが発生し、両方のタスクの速度が低下しました。 Apple はプリフェッチ API を更新し、最も重要なレンダリング タスクが完了した後にタスクをキューに入れてデータをフェッチすることで、このような事態が起こらないようにしました。

もう 1 つの、おそらくより大きな問題は、実行されるタスクが比較的少ない期間、つまり CPU に負荷がかかっておらず、バッテリ寿命を維持するためにクロック速度が低下する可能性がある期間中のフレーム落ちに関連していました。ユーザーのアクションによってタスクがトリガーされる場合、CPU のクロック速度の増加により追加の作業への応答が遅くなり、実質的にボトルネックが発生し、フレームのドロップが発生することが判明しました。

iOS 12 では、このような状況で CPU がより迅速に応答し、適切なクロック速度まで増加してタスクをより高速に実行できるようになります。完了すると、CPU はクロック速度をできるだけ早くアイドリング レベルまで下げます。

一般的な自動レイアウト ビューでのリソース消費量を示すグラフ

自動レイアウトは、開発者がさまざまな表示サイズに合わせて画面上でアプリのコンテンツの配置を定義できるようにする Apple のフレームワークで、iOS 12 では消費リソースが少なくなるように更新されました。フレームワークで使用されるリソースが原因で使用される可能性があることが判明しました。要素がネストされている場合や他の項目の配置に依存している場合など、さまざまな場合に指数関数的に拡張されます。

iOS 12 での Apple の最適化により、指数関数的なスケーリング要素が大幅に削減され、CPU と GPU への影響が軽減されました。要素が互いに独立して配置されるレイアウトでは全体的に使用するリソースが少なくなりますが、これでも iOS 11 から iOS 12 ではいくらかの改善が見られます。

Shaffer 氏は、自動バッキング ストアと呼ばれる、アプリがタスクを実行するために必要なメモリ量を削減できる iOS 12 の新しい技術についても取り上げました。

ステージ上で示された例では、同じサイズの写真とグレースケールで描画された画像は、色やピクセルごとに使用されるビット数に大きな違いがあるにもかかわらず、通常は同じ量のメモリを消費することが示されています。自動バッキング ストアは、すべてを平等に扱うのではなく、コンテンツ自体の深さによってファイルのメモリ使用量を定義し、その要素のメモリ使用量を削減する可能性があります。

Apple は、これらの変更とその他のパフォーマンスの改善を、iOS 12の開発者ベータ版。これらの機能は現在も鋭意開発中であるため、秋に予定されている iOS 12 の一般公開までに修正できない問題が発生した場合、Apple が古い方式に戻す可能性は十分にあります。