👨‍💻

DroidKaigi2024のカンファレンスアプリに107個のPRがマージされました(一ヶ月間継続貢献)

に公開

初めに

フリーランスのAndroid開発者とだやま.Rです。

いよいよ明日9/11から9/13迄の三日間DroidKaigi2024が開催されます。今回も開催一ヶ月前に公開されたカンファレンスアプリのプロジェクトへ一ヶ月継続してコントリビュートしましたので、その結果と得られた知見を紹介いたします。去年の取り組みはDroidKaigi2023のカンファレンスアプリに一ヶ月間継続してコントリビュートしましたにまとめています。


今年掲げた目標は次の二つでした。

  1. DroidKaigi開催まで継続して貢献する(PRは一つ以上必ず毎日作成する)
  2. PRのマージ数を開催前日までに100以上にする

いずれも無事達成することが出来ました。

毎日貢献達成

9/6に100PRマージ達成

ここからは前年との貢献数の比較と、今年新しく貢献出来たことを紹介していきます。

前回との貢献の比較

PR作成数(マージされたもののみ)

2023 2024
55件 107件
  • 前年比: 194.55%

コミット数

2023 2024
229件 342件
  • 前年比: 149.34%

Issue消化数

2023 2024
25件(内HighPriority:5件) 43件(内HighPriority:21件)
  • 前年比: 172%

awesomeタグ付与数

2023 2024
4件 6件
  • 前年比: 150%

今回新しく出来た・学べたこと(一部抜粋)

Compose Multiplatform

2023年のカンファレンスアプリではコントリビューター画面にのみCompose Multiplatformが使われていました。一方で今年は大規模に採用されており、iOS側から完全にCompose Multiplatform UIへ切り替える導線まで用意されています。

自分にとってもCompose Multiplatformの知見は少なかったため、ここへ中心的に貢献すれば得られるものは大きいと判断しました。この部分はXcodeの操作とiPhoneシミュレーターでの動作確認が必須になるためか、貢献出来る方が極端に限られていました。そこでDroidKaigi開催日までに動作するよう、欠けている処理を一つずつ追加していきました。

特に苦労したのが、ナビゲーションと指を弾いた後の慣性スクロール(Fling Scroll)が正常に動作しない問題でした。長期に渡り解決出来ずtakahiromさんと共に取り組み、開催数日前にようやく解決出来ました。

Compose Multiplatformはまだ不安定・未完成な部分が多く、現段階でプロダクションコードに使うのは難しいかもしれません。導入前にはYouTrackやリリースノートへ必ず目を通し、どのような未解決問題があるのかを把握しておく必要があるでしょう。

加速度・地磁気センサーを使った実装

先に出されていた別のPRによって、端末の傾きを検知出来るようになっていました。これを使い、カードが輝くだけでなく傾きに連動してUIも傾くようにしたいという思いが有り、PRを出してみました。

カードを傾かせるところまでは、ドキュメントを見ながら自力で実装出来ました。しかしVRT(見た目の差分を検知する自動テスト)の部分で躓いてしまいました。takahiromさんに助けてもらい、ようやくVRTも実装出来ました。この実装を通じて、AndroidとiOSとでは座標系が異なり、傾きの前後方向であるピッチの値を反転させなければならないことも学べました。学びの大きい貢献だったと思います。

Android StudioからCompose Multiplatformのコードをデバッグ実行する

Kotlin Multiplatform Pluginのページでは、紹介ビデオの中でデバッグ実行がデフォルトで可能なように見えます。しかし実際は違いました。プラグインをインストールしただけではデバッグ実行が出来ませんでした。

去年の段階ではCompose Multiplatformのコードがほぼ存在しなかったため、これは大きな問題になりませんでした。しかし今年は大々的に採用されており、デバッグ実行が使えないとデバッグ手段が限定されてしまうため、解決しておきたい問題でした。

調べてみるとこのIssueの書き込みが解決の手掛かりになりました。Kotlin/Nativeのデバッガはまだ実験的機能の扱いです。Kotlin IDEプラグイン1.9.20以降では、設定から明示的に有効化することで使えるようになります。これを有効にしたところ、無事Android StudioからCompose Multiplatformのコードをデバッグ実行出来るようになりました。

最後に

今回はCompose MultiplatformやVRTの部分で、takahiromさんに大いに助力頂きました。助力がなければマージ出来る状態にまで至らなかったPRもいくつか有った事は事実です。改めて感謝いたします。

去年はiOSへの初挑戦が中心でしたが、今年はCompose Multiplatformという、まだ発展途上の領域に深く関われたことが大きな収穫でした。未解決の問題にぶつかっても、コミュニティの知見や運営の方々の丁寧なレビューに支えられて、一つずつ前に進めたのだと感じています。

今年も素晴らしいアプリの骨子・デザインを元に1ヶ月貢献出来、誠に光栄でした。来年もまた、この刺激的な機会に挑戦したいと思います。

Discussion