Hike Messenger: Android アーキテクチャ コンポーネントを活用し、スピードアップとシンプル化を実現
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
2012 年に設立された Hike は、インターネットをシンプルにしてインドのネットワーク化を促進することを目指して製品を開発しています。Hike はチャット、メッセージ、フィード、サードパーティの交通機関や決済アプリとの統合機能を備えており、これらの機能を非常に迅速に、さまざまな時点で開発したため、同社では「技術的および設計上の大きな負債」と呼ばれていました。この負債が安定性、保守性、パフォーマンスに対するボトルネックになっていたため、Hike はコードを早急にシンプル化したいと考えていました。
Eyecon の取り組み
Hike は Android アーキテクチャ コンポーネントに目を向けました。CTO の Vishwanath Ramarao 氏は、このコンポーネントが「あらゆる課題に取り組むための万能のツール」となりました。まず、設定変更(画面の回転など)後にデータを引き継ぐ ViewModel、監視可能なデータホルダー クラスである LiveData、Room 永続ライブラリが使用されました。Ramarao 氏は次のように述べています。「Google は最新のリアクティブ アプリであり、Room と LiveData は当社の先進的な設計の原則にとても合致しています。
Hike はページング ライブラリの評価も行っています。これにより、アプリはデバイスの過負荷や大規模なデータベース クエリを長時間待つことなく、必要に応じてデータソースから情報を段階的に読み込むことができます。
Ramarao 氏は次のように述べています。「アーキテクチャ コンポーネント全般については認識しており、もっと知りたいと思っていました。「しかし、Android エコシステムのベスト プラクティスの探求から始まったことが、技術的およびアーキテクチャ上の負債に対処するための重要なツールになりました。最終的には、アーキテクチャと開発プラクティスをモダナイズする方法となりました」
結果
アーキテクチャ コンポーネントのおかげで、Hike はアプリのコードの総行数を大幅に削減できただけでなく、コードの可読性と保守性を高めることもできました。さらに、クラッシュが発生しなかったユーザーの割合が、これまでなかなか達成できなかった 99% を優に超えるようになりました。
始める
Android アーキテクチャ コンポーネントは、Android Jetpack の一部として、全デベロッパーに公開されています。Android アーキテクチャ コンポーネントを使ってみるをご覧ください。
このページのコンテンツやコードサンプルは、コンテンツ ライセンスに記載のライセンスに従います。Java および OpenJDK は Oracle および関連会社の商標または登録商標です。
最終更新日 2018-05-03 UTC。
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"必要な情報がない"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"複雑すぎる / 手順が多すぎる"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"最新ではない"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"翻訳に関する問題"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"サンプル / コードに問題がある"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"その他"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"わかりやすい"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"問題の解決に役立った"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"その他"
}]
{"lastModified": "\u6700\u7d42\u66f4\u65b0\u65e5 2018-05-03 UTC\u3002"}
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2018-05-03 UTC。"]]