conference-app-2023へのコントリビューション記録

すっかり書くのを忘れていたので書きます。

昨年度の記録はこっち。

blog.dr1009.com

やってみたもの

今年はFlutterKaigiの準備で時間と余裕があまりなかったので、リリース当日に触って気づいた問題に取り組みました。

github.com

github.com

簡単にまとめると、スポンサー画面のスクロールが遅れている、というものです。 どうやら画像をリサイズせずに保持しており、パフォーマンスに影響が出ていた様子です。


結果的には、Jetpack Compose用のcoilを利用することで問題を解消しました。 これはJetpack Compose用のcoilは、内部で「表示する領域に応じたリサイズ」処理を持っています。

coil/coil-compose-base/src/main/java/coil/compose/AsyncImage.kt at cb6eac058a2cd9757b7a9578185880d71d9e892d · coil-kt/coil · GitHub

ただ、coilはv3系でKotlim Multiplatformのサポートが行われる予定になっており、開発時点では利用できませんでした。 そこで利用されていたのが、Issue上で話題に上がっているcompose-imageloaderになります。 compose-imageloaderはその名の通り、画像をダウンロードしてpaintするライブラリとなります。

v1.7.0でAutoSizeImageが追加されたため、現在では簡単に「表示する領域に応じたリサイズ」が利用できるようになっています。 気になる方は、下記PRを眺めてみてください。

github.com

ただ実装当時(v1.6.5)では選択肢がなかったため、実装者側で任意のサイズを設定する必要がありました。 試しに任意のサイズを設定したのが、次のPRです。ただ、ベターではないがベストではないな、という印象でした。

github.com


conference-app-2023ではAndroidiOSで共通利用している画面AndroidiOSで別々に実装している画面が存在します。 改めてコードを確認してみたところ、スポンサー一覧画面はAndroidiOSで別々に実装している画面になっていました。 このことから、カンファレンスまでの日数などを考えて、coilの利用に戻したのが最初のPRとなります。

まとめ

ライブラリがどれだけKotlin Multiplatformをサポートしているかなど、全く気にしていなかった知識を得ることができたので、とてもありがたかったです。 アプリをPlay Storeから落として、動作させてIssueに気づくことができたのも、良い動きだったなと思っています。

2023年もコントリビューションをすることはできましたが、もうちょっとやりたかったな〜という気持ちです。 ただカンファレンスでは、スポンサーブースに立って紹介をするなど、DroidKaigiにはこれまでと違った関わりをする瞬間もありました。 来年はどうなっているのだろうと思いつつ、まとめを終えます。