これを使うと、開発やテストの際に、さまざまな指標に関する知見を得ることができます。コードの一部分のみに限定したベンチマーク評価やテストを行うことができます。アプリの起動時間のベンチマーク評価やテストも可能です。ライブラリ(英語)は、アプリの起動時に、コンポーネントをシンプルかつ効率的に初期化します。このライブラリを使うと、起動シーケンスを効率化したり、初期化の順序を明示的に指定したりできます。リーチとデバイスを活用すると、ユーザーや問題の分布を把握し、開発対象とするスペック、リリースする場所、テストの内容などについての意思決定に役立てることができます。このツールのデータがあれば、品質改善作業の優先順位をつけたり、多くのユーザーに最大限の影響を与えることができる改善内容を判断したりできます。トレースツールで、コードのインストルメンテーションや起動時の問題を診断します。ここで紹介したツールを併用すれば、アプリをスムーズに動作して、ユーザーを満足させ続けることができるほか、組織全体が品質改善作業をサポートするようになるでしょう。入社したい)と思った方は、プロダクトのオーナーや経営者向けに凝縮したケーススタディをご覧ください。こちら(英語)のリンクから参照できます。元に翻訳・加筆したものです。詳しくは元記事をご覧ください。優れたアプリの開発に特に注力しています。数千万人の乗客と数十万人のドライバに一刻を争う重要なサービスを提供するライドシェア企業には、どうしても欠かせません。このような規模のアプリで、パフォーマンス低下やフレームのフリーズ、クラッシュが発生すると、たくさんのユーザーの時間が無駄になる可能性があります。した問題があるだけでも、多くの乗客やドライバが競合他社に流れる原因になりかねません。開発チームは、アプリのパフォーマンスに常に目を光らせています。アプリの起動が遅いという問題に気づいたのは、そのためでした。問題の原因をすばやく突き止め、解決方法を探して、その対応の必然性を上層部に納得してもらう必要がありました。そのためには、たくさんの難問を解かなければなりません。エクスペリエンスにどのように影響しているのでしょうか?また、どの程度の優先順位で対応すべきでしょうか?ありがたいことに、このチームには強力なツールがあり、それが答えを見つける際に役立ちました。チームはこのツールの助けを借り、問題を特定して対応を優先することを上層部に説明し、適切な専任リソースを投入して解決することができました。その経過について説明しましょう。開発チームが最初に行わなければならなかったのは、上層部に依頼して専任のリソースを割り当ててもらうほど切迫した問題であるかどうかを判断することでした。サイエンスの強化など)との間で優先順位を検討する必要がありました。つに挙げられるのが、パフォーマンスの改善とビジネス指標を相関付けることです。使ってこの問題による危険性の全容を正確に把握しました。アプリのパフォーマンスを表すデータにアクセスできます。これには、アプリの無応答エラー、電池の枯渇、レンダリング、アプリの起動時間などが含まれます。それぞれの指標について、現在のパフォーマンスとパフォーマンスの履歴が実機でトラッキングされ、それを同じカテゴリ内の他のアプリと比較することもできます。遅かったことを発見しました。これは切迫した問題です。次に必要だったのは、プロジェクトの適切なスコープを定めることでした。エクスペリエンスに与える影響に見合ったスコープを定めるということです。データから、問題は明らかでした。ライドシェア業界の競合他社と直接比較していることを考えれば、なおさらです。か月作業すれば、アプリの起動時間を十分に改善できると見積もりました。優れたアプリ体験を重視していることを訴えました。エクスペリエンスを改善できるチャンスがあることを示し、適切なスコープと実現可能な目標、そして明確な競合の情報を提示したことで、上層部の許可を得ることができました。起動時間の指標として活用したのは、「操作できるようになるまでの時間」です(完全表示までの時間とも呼ばれています)。チームはアプリの起動ステージごとにプロファイリングし、問題点を探しました。つのステージに分かれています。1)最初に、アプリのプロセスが起動します。レンダリングを開始します。リクエストを送信し、ホーム画面のレンダリングに必要なデータを取得します。ドライバのインターフェースを開きます。フェーズで起きていることがわかりました。ボトルネックが特定できたので、それを解消するために、いくつかの段階を踏むことになりました。最初に、重要な起動パスから不要なネットワーク呼び出しを削除しました。サービスを分割することで、ネットワーク呼び出しの一部を完全に、かつ安全に起動パスの外に出すことができました。できる限り、ネットワーク呼び出しは非同期的に行うようにしました。アプリの動作には必要なものの、起動時に必要ないデータは、それがなくても起動処理が進むように、ノンブロッキングで呼び出すようにしました。ブロックを伴うネットワーク呼び出しは、安全にバックグラウンドに移動することができました。セッション間でデータをキャッシュするようにしました。