BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース メタにおけるThreadsアプリのiOSパフォーマンスの改善

メタにおけるThreadsアプリのiOSパフォーマンスの改善

原文リンク(2025-01-03)

MetaのエンジニアであるDave LaMacchiaJason Pattersonは、アプリのパフォーマンスはユーザーにそのアプリを使いたいと思わせる鍵であると言う。これには、アプリを超高速で、バッテリー効率よく、さまざまなデバイスや接続条件下で信頼できるものにすることも含まれる。

Threadsアプリのパフォーマンスを向上させるため、Metaのエンジニアはアプリの起動の速さ、写真やビデオの投稿のしやすさ、クラッシュの頻度、バグ報告の数を測定した。この目的のために、彼らはいくつかのメトリクスを定義した:FIREfrustrating image-render experience)、TTNCtime-to-network content)、cPSR(creation-publish success rate)。

FIREは、イライラする画像レンダリング体験を経験した人の割合であり、画像がネットワーク上でレンダリングされている間にアプリから離れることにつながる可能性がある。大まかには、FIREは、画像が完全にレンダリングされる前にアプリから離脱したユーザー数を、その画像を表示しようとした全ユーザーの合計で割った商として定義される。この指標を測定することで、Threadsアプリ開発者は、ユーザーに対して画像がどのように読み込まれるかについてどんなレグレッションも検出できる。

Time-to-Network content (TTNC)は、アプリが起動し、ユーザーフィードが表示されるまでのおおよその時間である。長いローディング時間は、ユーザーがアプリを放棄する可能性のあるもう一つのエクスペリエンス・キラーである。アプリのバイナリ・サイズを小さくすることは、全体のバイナリを小さく保つためにもっとも重要である。

誰かがThreadsにコードをコミットしようとするたびに、そのコード変更によってアプリのバイナリ・サイズが設定されたしきい値より大きくなる場合はアラートが表示されます。

さらに、アプリのバンドルから不要なコードとグラフィック資産を削除した結果、バイナリのサイズはInstagramの4分の1になった。

ナビゲーションのレイテンシーに関しては、これはおそらく起動時間よりもさらにクリティカルだ。メタのエンジニアはA/Bテストを実施し、それを突き止めた。

最小のレイテンシー注入ではいくつかのビューで影響は小さいか無視できましたが、最大のレイテンシー注入では全体に悪影響がありました。人々は、より少ない投稿を読み、自分自身で投稿する頻度が減り、一般的にアプリとやり取りすことが少なくなります。

変更がナビゲーションのレイテンシーのレグレッションを引き起こさないようにするため、メタのエンジニアは、新しいナビゲーションのトリガー、UIが構築されている状態(アプリケーションがユーザーに表示するための画面や要素が生成されているプロセス)、アクティビティ・スピナー、ネットワークからのコンテンツや表示されているエラーなどの関連イベントを追跡するロガーシステム、SLATEを作成した。

これは、多くのUIの基盤となっている共通コンポーネント、および、特定のイベントに対してコード内に「マーカー」を設定することでパフォーマンスを測定するシステムを使用して実装されています。通常、これらのマーカーは特定の目的を念頭に置いて作成されます。

creation-publish success rate(cPSR)は、ユーザーが何らかのコンテンツを投稿するプロセスが成功する確率を測定する。iOSでは、ビデオや大きな写真の投稿は特に厄介で、ユーザーはコンテンツのアップロードが完了するのを待たずに、投稿後にアプリをバックグラウンドにしてしまう可能性があり、その場合、OSがアプリを終了させてしまう可能性がある。

ここで、Metaが取ったアプローチでは、投稿に失敗した場合のユーザー体験を改善することが目的とされた。これは、単に再試行するか中止するかの選択肢を提供するだけでなく、ユーザーが失敗した投稿をより柔軟な方法で管理できるようにするため、「Drafts」と呼ばれる新機能を導入することで達成された。

Draftsがある場合、投稿に関するバグレポートを提出する人が26%少ないことがわかりました。この機能は明らかに違いを生み出しています。

もう一つのアプローチでは、データのアップロードが完了した時点でのリクエストを、アップロードしたデータが処理され公開される前に表示することで、絶対的な待ち時間とは対照的に、知覚される待ち時間を減らそうとした。

最後になりましたが重要なこととして、Metaのエンジニアは、Swiftの完全な並行処理を採用した後、アプリの安定性が大きく向上したことを確認した。これは、彼らが言うには、データレースを防止する、およびデータレースによって引き起こされるデバッグが困難な問題を軽減する上で、素晴らしい仕事をする。

作者について

この記事に星をつける

おすすめ度
スタイル

BT