人々はアプリのクラッシュ、特にアプリの速度が低下したり、数秒間フリーズしたりすることを嫌います。 Dimensional Research の調査によると、ユーザーの 61% がプログラムが 4 秒以内に起動することを期待し、49% が入力が 2 秒以内に応答することを期待しています。アプリがクラッシュ、フリーズ、またはエラーが報告された場合、ユーザーの 53% がアプリをアンインストールします。
ターゲットが消費者であろうと企業であろうと、クラッシュの問題により完全に機能不全に陥る可能性があります。私は何人かのモバイル開発者と話をし、彼らが遭遇した最も一般的なクラッシュの問題は何であるかを尋ねたところ、彼らは 6 つの一般的な理由を挙げました:
1. メモリ管理
i 質問する人は皆、メモリについて話します。ほとんどのアプリは、システム メモリを占有する多くのスレッドを開始します。 OpsClarity のマーケティング担当バイスプレジデントである Sachin Agarwal 氏は、プログラマーは、自分が書いているアプリがそのアプリ内で唯一のものであるかのようにコードを書くことができると述べ、同時に、プログラムを書くときは「善良な市民」であることを考慮する必要があると示唆しました。アプリケーションエコシステムの中で。」
メモリの問題は、すべての開発者にとって同じというわけではありません。 Solstice Mobile のビジネス開発担当バイスプレジデントである Andrew Whiting 氏は、「iOS では、Objective-C を活用して大規模なメモリの問題を処理できます」と述べています。しかし、メリットとデメリットを比較検討する必要があります。 「Android では、[メモリ] をより詳細に制御する必要があり、希望どおりに動作させることができますが、その分複雑さが増します。」
「Java で [Run ] メモリ不足が発生すると、通常は次のような問題が発生します。それは、大きな画像のロードやビットマップの処理などに関連しています」と New Relic のシニア ソフトウェア エンジニアリング マネージャーである Jonathan Karon 氏は述べています。問題の一般的な原因は、Mobile SDK テクニカル パフォーマンス レポートにまとめられています。 「実際、Android では、クラスが見つからない、または未分類リンクと呼ばれる例外が存在するなど、リンカーの問題と思われる問題が驚くほど多く発生しています。」 一方、iOS アプリは、NSInternalInconsistency 例外の影響を受けることがよくあります。これは、開発者が 1 つの場所でデータの配列またはコレクションを変更し、その間に他の何かがそこにあるもののリストを読み取っているためです。
2. ソフトウェア ライフ サイクル
反復的なアプリケーション開発プロセスとそのバージョンの頻繁なリリースにより、実行可能な最小限の製品が市場に投入され、時間をかけて改良されるための扉が開かれます。今とても人気があります。ただし、従来のソフトウェア ライフ サイクルは、オペレーティング システムとサードパーティ API に依存しているため、より複雑になっています。
「最新の Android アップデートを見ると、たくさんのアプリがクラッシュしています」と Agarwal 氏は言いました。 「オペレーティング システム自体が不安定であるか、オペレーティング システムは更新されているが、アプリケーションは更新されていない。」またはユーザーが新しいバージョンをダウンロードしていない。「これらを制御することはできません。これは、中核的な開発プロセスを示しています。」
モバイルとクラウド コンピューティングの成長により、サードパーティ サービスとそれに関連する API の使用が増加し、時間を節約し、アプリケーションをより迅速に市場に投入するのに役立ちますが、これらには独自の問題が伴います。
「多くの図書館には共通の問題があります」とホワイティング氏は言う。 「彼らは、誰かに最適なソリューションを提供するのではなく、全員の問題を解決しようとします。」 たとえば、特定の API には、特定のアプリケーションのパフォーマンス制限がある可能性があります。
API では、iOS メソッドの調整など、トリッキーなテクニックを使用する場合もあります。元のコード (Apple の API など) が利用できない場合、開発者は元のコード (Apple の API など) に基づいて変更を加えます。 「これは iOS アプリ開発の『闇の芸術』の 1 つと言えるでしょう」と、オンライン旅行代理店である Fareportal のモバイル部門責任者である Raman Bhatia 氏は述べています。 「[ただし] アプリケーション コードが特定の方法で記述されている場合、クラッシュが発生する可能性があります。」
API は他の問題も引き起こす可能性があります。 「API レイテンシー、エラー率、データ帯域幅、API バージョン、API リクエストの数はすべて、小さな問題から大きな問題につながる可能性があります」と Agarwal 氏は述べています。さらに API 自体もあり、すべてを追跡するには特殊なツールが必要です。
API は、メモリ エラーなどの他の問題を引き起こす可能性もあります。 「他のオブジェクトを作成する前に、メモリから削除されたオブジェクトを作成する場合、通常は問題ありませんが、後続のオブジェクトが削除されたオブジェクトを参照する必要があるかどうかはわからないことに注意してください。」 「サードパーティのフレームワークを使用すると、問題が発生します。」と共同創設者兼開発者の Long Le 氏は言います。「彼らが何をクリーンアップし、何を作成しているのかは決してわかりません。」
3. テストはテストではありません。適切な
テストの必要性は明らかですが、特に Android のバージョンやデバイスが多い場合、適切な範囲を取得するのは困難な場合があります。エミュレータは存在しますが、サーバー上で動作するソフトウェアのパフォーマンス制限は実機とは異なる場合があります。
たとえば、アプリケーションの 1 つのスレッドがデータベースを読み取っている間に 2 番目のスレッドが同じデータベースを変更しようとしている場合、「それはタイミングの問題です」と Couchbase のモバイル担当チーフ アーキテクトである Wayne Carter 氏は述べています。 「同時に衝突していなければ、問題は発生せず、ログの記述によって隠蔽できたはずです。」 シミュレーターは、多くの場合、本物と同じように動作しません。
異なるデバイス上で異なるシステムを実行することは実現可能な解決策ですが、この方法はエミュレータよりも高価です。これには予算とニーズのバランスが必要です
テストには、コンテンツが開発者とユーザーに受け入れられるものであることを確認するために、業界標準とユーザーの期待のベンチマークを組み込む必要があります。テストも継続的に行う必要があります。パフォーマンスを監視し、ユーザーからのフィードバックを探し、問題をできるだけ早く解決します。
4. ネットワーク管理
データであろうとサードパーティのサービスであろうと、アプリケーションのネットワークへの依存度が高まるにつれて、ネットワーク管理が問題の原因となっています。
クラッシュの主な原因は、データを取得し、何かを送信して回復を待機しようとしているときに、APP が応答するかハングすることです。運用担当副社長の Pravin Vazirani 氏は、開発者は Wi-Fi 接続機能を非常に完璧にしているかもしれないが、ユーザーがネットワークの悪いエリアにいる場合には問題が発生するだろうと述べています。接続が中断されたことをユーザーに通知し、可能であれば、関心のある他の操作を実行する機会を提供します。アプリケーションの制御が及ばない一時的な状態の原因を理解していれば、人々は冷静さを保ち、ソフトウェアにイライラすることはなくなる可能性が高くなります。
5. エラー条件と例外処理
モバイル開発は複雑であるため、予期しない API の変更、以前に検出されたメモリの問題の回避、ネットワーク接続状況など、いくつかのエラーは避けられません。または、画像やビデオなどの大きなファイルを転送するときにデータ転送を遅くするだけでも問題ありません。
この場合、最善のアプローチは、エラーと例外を適切に処理することです。たとえば、ユーザーが間違ったデータを入力したり、値を入力する必要があるときにテキスト ボックスにテキストを入力したりしても、アプリケーションが誤って試行されてエラーが報告されることはありません。
これらの状況のいずれでも、適切にコード化されたアプリケーションは予期せぬ事態に気づき、ユーザーにエラーを通知しながらプロセスまたはアクティビティを正常に終了します。コミュニケーションのラインをオープンに保つことができれば、ユーザーを維持できる可能性が高くなります。
6. コードが多すぎます
最善のアドバイスは、アプリケーションをシンプルに保つことです。特定の目的のためのプラグインを見つけて、そのプラグインを使用し、必要なコードを記述します。 「最もバグのない最良のコードは、自分で書かないコードです」と、エンタープライズ モバイル開発会社 Lextech Global Services のシニア システム エンジニアである Felipe Laso-Marsetti 氏は述べています。
以上がアプリがクラッシュする 6 つの一般的な理由は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。