大ヒット!2020年に注目すべきAndroid開発テクノロジーのトップ5

プログラミング環境は毎日変化しますが、Androidは間違いなく最も頻繁な更新の繰り返しであり、毎年新しいものや毎月新しいものがあります。この記事では、2020年に開発者が注目する必要がある上位5つのAndroid開発テクノロジーを紹介します。

多くのAndroid開発チームが参加したDroidcon London 2019カンファレンスでは、一連の新しいテクノロジーが目を見張らせていました。Joe Birchによって導入されたアクセシブルなスマートギター[1]から次のJetpack Composeライブラリ[2]まで、革新が多すぎます。主流コミュニティは、迷子にならないようにいくつかのコアテクノロジーを見つける必要があります。

この記事では、焦点を当てる必要があるいくつかのコアテクノロジについて説明します。同時に、この記事では、これらのテクノロジを最初に実装する必要がある理由と、それらを実現するためのいくつかの最初の方法について説明します。これらのテクノロジーを実装してもエンドユーザーを驚かせるわけではありませんが、開発者が衝撃的な機能を作成し、開発者をより快適なコードベースにすることができることを強調することが重要です。

1.コトリン

  • Kotlinは通常、GoogleとJetBrains(Android Studio開発者)がスポンサーとなっている次のJavaと見なされています。Javaは当初からAndroidアプリケーションの開発言語として選択されてきましたが、近年Kotlinは急速に人気を博し、現在、10,000のGoogle Playアプリケーションの60%近くがKotlinを使用しています[3]。いくつかのケースでは、基盤となるネイティブコードへのアクセスが必要ですが、C ++は引き続き使用されます;他のケースでは、KotlinがJavaを置き換えることができます。

  • Kotlinの主な利点はJavaとの完全な相互運用性です。つまり、開発者はアプリケーション全体を完全に書き直すことなく、可能な限り古いコードを移行できます。2つの言語は非常に互換性があり、Android StudioはJavaからKotlinに自動的に変換することもできます。

  • この互換性は、より簡潔な構文と何百もの小さな改善と組み合わされて、KotlinをStackOverflowの2019年の開発者調査[4]で4番目に大きな「最も人気のある」そして5番目に大きな「望み」にしました。プログラミング言語は、すべてのモバイルプログラミング言語の中で最高のランクです。

  • 既存のアプリケーションを移行する良い方法は、既存のJavaファイルを変更するときにそれらをKotlinに変換することです。これは、過去に頻繁に編集されたファイルを変換する必要があることを意味しますが、コードレビューの複雑さ(潜在的な競合など)を増加させますが、変換された領域をレビューできるため、問題を見つけることができます。

  • Candyspaceで現在使用されているKotlinコードは86%を占め(さらに増加し​​ています)、残りの14%はユーティリティ/変換コードで、数年間変更されていません。

2.ジェットパック

GoogleのAndroidX / Jetpackライブラリは、一般的なアプリケーション要件を簡素化するために設計された実用的なツールのセットです。たとえば、デバイスのデータベースのルーム[5]、または基になるデータが変更されたときに表示コンテンツを更新するLiveData [6]。

Jetpackライブラリを使用すると、新しいプロジェクトは、ホイールを再発明する手間を省き、他の開発者が実装をオープンソース化するのを待つ必要がなくなり、すべての開発者がこれらの基本的な要素を取得できます。これらのライブラリは頻繁に更新され、新機能は常に導入されており、バグ修正は時間内にリリースされます。これらのライブラリは連携して動作するように構築されているため、より多くのAndroidXライブラリを使用すると、アプリケーションでの事故を最小限に抑えることができます。

開発作業の最初からJetpackライブラリを使用すると、数百時間を節約できますが、既存のアプリケーションをJetpackライブラリに移行することもできます。煩雑に思えるかもしれませんが、これらのライブラリは非常に人気があるため、移行作業のガイドラインを見つけるのは簡単です。少なくとも、基になるAndroid要素(ビュー、フラグメントなど)は自動的に変換できます[7]。

Candyspaceでは、データバインディングとViewModelを使用しましたが、間もなくルームとナビゲーションに参加する可能性があります。

3.モジュール設計

  • ずっと、アプリケーションは巨大な「アプリケーション」モジュールとして構築されており、アプリケーション全体に必要なすべてが含まれています。これにより、リソースの共有が容易になりますが、このアプリケーションの一部を他のアプリケーションやオープンソースプロジェクトで再利用できないことも意味します。さらに重要なことに、アプリケーションに変更を加える場合は、コードベース全体を再コンパイルする必要があります。

  • 逆に、アプリケーションが多数の小さなモジュールで構成されている場合は、変更を加えたコードを再コンパイルするだけで済み、ビルド時間が大幅に短縮されます。さらに、モジュール式の設計は、Androidの高度な機能を備えたアプリケーション(インスタントアプリなど、ユーザーは何もインストールしなくてもアプリの機能の一部を使用でき、動的な機能はアプリの一部をオンデマンドでインストールできます)への扉を開きます。

  • 既存のアプリケーションを複数のモジュールに分割することは、以前は隠されていた問題(「DateUtilityとは何ですか?なぜすべてのクラスでそれが必要なのですか?変換が完了すると、コードベースはより健全な状態になります。さらに、新しいアプリケーションで同様の機能が必要な場合は、既存のモジュールをすばやく再利用して時間を節約できます。

モジュール式アプリケーションアーキテクチャの例

モジュール式アーキテクチャの設計は複雑な作業になる可能性がありますが、モジュール化とビルド時間に関するNikits Kozlovの記事[9]に触発されて、以前にいくつかの指針を書きました[8]。Plaidはまた、モジュール設計への移行経験を説明する記事も書きました[10]。

Candyspaceでは、アプリケーションの設計は完全にモジュール化されているため、ビルド時間による開発時間の混乱を最小限に抑えることができます。

4. App Bundle

従来のAPKを使用してアプリをユーザーのデバイスに配布する場合、すべてのデバイス用に準備されたすべてのリソースをインストールする必要があります。つまり、各ビットマップイメージの5つのコピー(異なる画面精度の場合)、さまざまなデバイスアーキテクチャの複数のライブラリバージョン、さらには複数セットのマージンとパディング値さえある可能性があります。

App Bundleを使用してアプリケーションを配布する場合、ユーザーがダウンロードするAPKには、実際に必要なリソースのみが含まれます。このようにして、平均アプリケーションサイズは20%削減され、最適化されていないアプリケーションが形式を変更した後、アプリケーションサイズはさらに大幅に削減されます。

[外部チェーンイメージの転送に失敗しました。ソースサイトに盗難防止チェーンメカ​​ニズムがある可能性があります。イメージを保存して直接アップロードすることをお勧めします(img-jIbYPNYw-1586504613313)(https://upload-images.jianshu.io/upload_images/22459598-77884ffcca0e1012?imageMogr2 /自動方向付け/ strip%7CimageView2 / 2 / w / 1240)]]

アプリケーションのサイズを縮小する例(Google I / O 2018からのデータ)

App Bundleはわずか18か月前に誕生しましたが、25%以上のアプリがすでにこの形式でインストールされています。これはGoogleが推奨する形式[11]であり、ほとんどのアプリケーションはほとんど変更なしでこの形式を使用でき、PlayストアでApp Bundleの署名を処理するだけです。

Candyspaceでは、既存のワークフロー(Slack、QAingビルド、Google Play以外のインストール)を中断させないようにしながら、App Bundleに移行しています。Alistair Sykesの記事は、CIサーバー、Slack、Google Playの内部アプリケーション共有を考慮に入れた優れた移行リファレンス[12]です。

5.テスト

はい、テストします。もちろん、テストは光沢のある新機能でもユーザーが目にするものでもありませんが、特定のユーザーベースがすでに存在するアプリケーションの信頼性を確保するには、アプリケーションを徹底的にテストする必要があります。クラッシュ率はPlayストアの評価に直接影響するため(そして評価を確実に引き下げます!)、低レベルに保つようにしてください。

ピラミッドをテストする

Androidの最も一般的な3つのテストタイプは(降順)です。

  • たとえば、単体テスト:平方根関数は平方根を返しますか?

これらのテストは、テストプロセスのほとんどを構成します。これらは、特定のコードセグメント(関数など)が期待どおりに機能することを確認するために使用されます。パーツに自信がある場合は...

  • 統合テスト。例:数学モジュールは位置モジュールと連携できますか?

これらのテストは、さまざまなコード領域(モジュールまたはレイヤー)が正しく連携できることを確認します。アプリケーションのコンポーネントが互いに正しく通信できることがわかったら、追加できます...

  • たとえば、自動UIテスト:ユーザーはアプリの場所にマークを付けることができますか?

これらのテストのみがデバイスまたはエミュレーターで実行され、アプリケーションが期待どおりの完全なユーザーエクスペリエンスを提供することを確認します。これらのテストは通常​​、他のタイプのテストよりもはるかに遅くなります(そして実行するのがより不便になります)。

テストの分散は、単体テストの70%、統合テストの20%、および大規模テストの10%に設定することをお勧めします。部分が小さいほど、実行時間、メンテナンス時間、および実装時間が長くなります。

最適なテストリソースは公式ドキュメント[13]です。これは、すべてのテストタイプの概要と、プロジェクトへの実装方法に関するチュートリアルを提供するためです。

Candyspaceでは、すべての新しいクラスの動作が予測可能であることを保証するためにGoogleが提案するよりも大きな割合を占めるユニットテストに焦点を当てています。現在、自動UIテストを改善して、手動テストへの依存を減らしています。

プログラミングのどの分野でも、問題を解決する最良の方法については100の異なる意見がありますが、Androidには絶対的な利点があります。Androidには大規模な開発者コミュニティがあるため、非常に優れた新しいテクノロジーがすぐに開発されますそれらの間で人気があります。見知らぬ人にインターネットで助けを求めたときに、「前の開発者がWeb開発者の友人からコピーして変換したライブラリ」ではなく「Jetpack LiveData」を探している場合は、成功する可能性があります。もっともっと!

健全なコードベースを維持するための鍵は、これらの変化する標準に適応し、既存のプロジェクトをリファクタリングできることです。最新のAndroid開発プラクティスとベストプラクティスを理解するために、Android開発者ブログ[14]、/ r / AndroidDev subreddit [15]、および断片化されたポッドキャスト[16]に従うことをお勧めします。

関連リンク:

[1]:https://chordassist.com/

[2]:https://developer.android.com/jetpack/compose

[3]:https://android-developers.googleblog.com/2019/10/android-dev-summit-2019-keynote.html

[4]:https://insights.stackoverflow.com/survey/2019#technology-_-most-loved-dreaded-and-wanted-languages

[5]:https://developer.android.com/topic/libraries/architecture/room

[6]:https://developer.android.com/topic/libraries/architecture/livedata

[7]:https://medium.com/google-developer-experts/converting-your-android-app-to-jetpack-85aecfce34d3

[8]:https://stackoverflow.com/questions/54104312/how-to-share-dependencies-in-a-modularized-android-app/54173703#54173703

[9]:https://www.freecodecamp.org/news/how-modularization-affects-build-time-of-an-android-application-43a984ce9968/

[10]:https://medium.com/androiddevelopers/a-patchwork-plaid-monolith-to-modularized-app-60235d9f212e

[11]:https://developer.android.com/guide/app-bundle/

[12]:https://www.brightec.co.uk/ideas/google-playstore-internal-app-sharing

[13]:https://developer.android.com/training/testing/fundamentals

[14]:https://android-developers.googleblog.com/](https://android-developers.googleblog.com/

[15]:https://www.reddit.com/r/androiddev/](https://www.reddit.com/r/androiddev/

[16]:https://fragmentedpodcast.com/](https://fragmentedpodcast.com/

元のリンク:

https://blog.candyspace.com/5-essential-android-techniques-for-2020

この記事が気に入った場合、または参考になった場合は、どなたでも気に入って、転送して、フォローしていただければ幸いです。記事は継続的に更新されます。絶対ドライグッズ!

元の記事を34件公開 いいね1 訪問数756

おすすめ

転載: blog.csdn.net/Android725/article/details/105435153