Sansan Tech Meetupで「AndroidアプリとWebコンテンツの連携」について話しました

「【Sansan Tech Meetup】Android開発Tipsを3社のエンジニアが語る」でSansan、ZOZOテクノロジーズ、クラスメソッドの3社のエンジニアが集まり、Androidアプリの開発事情について話しました。その登壇レポートです。
2020.12.20

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

2020年12月19日開催の「【Sansan Tech Meetup】Android開発Tipsを3社のエンジニアが語る」で、Sansanの古川真次さん、ZOZOテクノロジーズの堀江亮介さん、弊社クラスメソッドからは私、浜田瑛樹が集まり、Androidの開発事情についてお話してきました。

登壇資料

私はWebView、Custom Tabs、TWAといったAndroidアプリでWebページを表示する技術の使い分けについてお話しました。今回の登壇のために色々と調べる中で知らなかったことも多く、良い機会になりました。

Sansanの古川真次さんのお話について

法人向け名刺管理サービスSansanのAndroidアプリで使用されているJetpackのPaging Libraryのお話でした。

Paging Libraryはページング処理のライブラリです。画面に表示できるデータは限られるため、大量のデータを一度に読み込むとその大半は無駄になる可能性があります。ページング処理はそうした無駄を省くために、一定数ごとにデータを読み込む処理です。Paging Libraryを使用するとページング処理を伴う無限スクロールを手軽に実装できます。

Sansanアプリは名刺の管理が行えますが、「コンタクト」という機能を使用して名刺の人物との電話やメールといったやりとりの履歴を残すこともできます。古川さんのお話では、その履歴を「日付ごと」や「人ごと」でグループにしてリスト表示する場合にPaging Libraryだと困難だったことが解説されています。また、次期メジャーバージョンの3であれば解決するかも(しないかも)といったお話もありました。

私はページング処理の実装経験があまりなく、必要になったらPaging Libraryにまるっと任せてしまうつもりでいたので、ちょっと素振りしといたほうが良いなと気が引き締まりました。

ZOZOテクノロジーズの堀江亮介さんのお話について

ファッション通販サイトZOZOTOWNのAndroidアプリでDIのために使用されているDaggerのHilt対応に関するお話でした。

DaggerはJavaのライブラリとして開発されたため、Javaが使用できるAndroidアプリでも広く使用されてきました。ですが、Androidアプリ特有のライフサイクルなどを考慮して使用する必要があり、そのためのボイラープレートコードが数多く書かれてきました。

Hiltはそうしたボイラープレートコードをアノテーションベースで自動生成してくれる待望のライブラリです。同じ目的を持ったボイラープレートコードがプロジェクトによって微妙に異なるといった問題も自動生成されることで解決し、AndroidアプリにおけるDIの方法が標準化されます。そのため、Android Studio上での依存関係の可視化など、ツールやフレームワークとの統合が期待できます。

堀江さんのお話では、AndroidアプリでDaggerを使用することへの今ままでの課題として、ボイラープレートコードの問題以外にも学習コストや設計上の考慮が増えてしまう問題に触れています。

Daggerを使用する時、「調べた感じだと俺はこのコードを書けば良いらしいが本当にこれでいいのか?」と悶々と考えてしまうことが多々あります。資料でHiltが自動生成してくれるコードが紹介されていますが、私がいつも相対しているコードだったので「いますぐHilt対応したい。。。」という気持ちになりました。ZOZOTOWNのAndroidアプリで実際に行われたHilt対応の流れはまた読み返すことになりそうです。

さいごに

登壇の後は社内の勉強会についてや最近のAndroidの話題が上がりました。最近のAndroidは実装寄りの改善がどんどん進んでいるのでしっかり追いかけていきたいですね!