読者です 読者をやめる 読者になる 読者になる

Konifar's WIP

親方!空からどらえもんが!

DroidKaigi 2017 アプリコード公開してから10日経ちました

DroidKaigi 2017のアプリのコードを公開して10日ほど経ちました。

忘れないうちに今の状況をざっとまとめておこうと思います。

konifar.hatenablog.com

PullRequests、Contributors

こ10日間のPullRequestは200件くらいでした。Contributorsは60人くらいです。すごくたくさんの方々に毎日修正や改善を送っていただいて、本当にありがたいかぎりです。

公開して5日間くらいは1日30件くらいPullRequestが来ていました。あまりに速すぎて、Issueにアサインしても同じPullRequestが30分くらいの差で送られてきたこともありました。迷惑をかけてしまって申し訳なかったです。

コンフリクトしてしまうと申し訳ないので、基本的にPullRequestはすぐに見ています。小さい修正であれば即LGTMを出し、CIが完了したらすぐにマージしています。少し時間がかかりそうな時はとりあえず :eyes: emojiで「見てるよ」と伝えるか、「今はこう思うんだけどちょっと考えさせて。日本時間の22時くらいにコメントするよ」みたいな感じでコメントしています。

スピードを優先しているので正直あまり細かく見てません。何かあったら後で直せばいいですし、もともと小さなアプリなので負債がどうとか気にするほどでもありません。実際、ちょっとでも変なところがあればすぐにPullRequestが飛んでくるのでヒヤッとすることもあります。

Issueの粒度も荒く、まだ仕様が固まってないものも多かったので混乱させてしまうのではと不安でしたが、公開してみるとすごい勢いでPullRequestが飛んできてとても驚きました。ありがとうございます。

Sponsorsページ

公開時、Sponsorsページはまだできていませんでした。Sponsorsページを作るという雑なIssueだけ立てておいたんですよね。そうしたら、ガーナのエンジニアが興味を持ってくれたらしく、速攻で作ってくれました。

Create sponsors page · Issue #76 · DroidKaigi/conference-app-2017 · GitHub

公開してすぐに海外の方が大きいIssueを拾ってくれると思っていなかったので、非常に印象的でした。何がすごいって、自分は雑なペーパーモックでイメージを伝えただけなんですよね。にもかかわらず、少ないコミュニケーションで作りきってくれたのはすごいなと思いました。

Contributorsページ

同じくContributorsページも作っていませんでしたが、これも@shirajiさんが拾って作ってくれました。

Add contributor page (no view yet) by shiraji · Pull Request #122 · DroidKaigi/conference-app-2017 · GitHub

何が印象的だったかというと、Viewとロジックとテストをそれぞれ別の人が作ってくれたんですよね。

@shirajiさんが大枠を作り、@srymさんがViewを作り、@kikuchyさんがRepositoryのテストを書いてくれました。

自分は何もしていないのですが、こんなにうまく連携して仕上がるものかと驚きました。ありがとうございました。

Kotlinの採用見送り

公開当初から、@lvlaさんがkotlinでRepositoryのテストを書いてくれたり、kaptを導入しようとしてくれたりしていました。

そして、@sys1yagiさんからkotlin化のTry PullRequestがきました。

[Try] Attempt to introduce Kotlin... 😎 by sys1yagi · Pull Request #273 · DroidKaigi/conference-app-2017 · GitHub

このPullRequestの中でKotlin化するかどうかの話があったのですが、結局このプロジェクトではKotlinを採用しないことにしました。詳細はPullRequestを見ていただきたいのですが、ざっくり言うとContributeの敷居を下げてたくさんの人に触れてもらうために、今はまだJavaの方がいいと判断したからです。仕事でやるならKotlin化してもよかったかもしれません。

@sys1yagiさんありがとうございました。

Sessionsページの斜めスクロール

Sessionsページはわりと妥協した状態で公開していました。

俺の悩みを聞いてくれ // Speaker Deck

で、LayoutManagerカスタムして斜めにスクロールできたらいいな、みたいなざっくりしたIssueを切っておいたんですよね。

そうしたら、@jmatsuさんが「LayoutManagerは使わずにスクロールイベントをハンドリングして斜めにスクロールできるようにしたよ」とPullRequestを送ってくれました。

Enable diagonal scroll on the session list without using custom layoutmanager by jmatsu · Pull Request #111 · DroidKaigi/conference-app-2017 · GitHub

コードを見てみると「たしかにこれでええやん…!」という感じだったのですが、自分だったらもっと時間がかかっていたと思います。そもそもあの重いIssueを拾おうという心意気だけですごいというか。

また、別のPullRequest@takahiromさんがさらにシンプルな実装に修正してくれました。ありがとうございました。

CI職人技

ConstraintLayoutを導入後に、CircleCIがタイムアウトを繰り返し非常に不安定になってしまったのですが、@gfxさんが職人技で修正してくれました。

use sdkmanager(1) instead of downloading compnents with wget(1) by gfx · Pull Request #194 · DroidKaigi/conference-app-2017 · GitHub

skip redundant tests; jacocoTestReportDevelop includes app:testDevelopDebugUnitTest by gfx · Pull Request #195 · DroidKaigi/conference-app-2017 · GitHub

この時は1時間に2〜3件くらいPullRequestが来ていた時期だったので非常に助かりました。ありがとうございました。

クールですね。

Splash画面

CoolなSplash画面がほしいというIssueを上げていて、さすがに誰も拾わないだろうと思っていたら、@roana0229さんが作ってくれました。

https://github.com/DroidKaigi/conference-app-2017/pull/313

Webと同じアニメーションをいい感じに再現されていて、非常に完成度が高かったです。もちろんメモリの問題や画面のカクつきなどを言い出したらキリがないのですが、速攻でここまで作ってPullRequestを送ってくるのはすごいなぁと思いました。ありがとうございました。

余談ですが、嫁氏がすごい反応してくれていて羨ましかったです。

MVVM構成のリファクタリング

中途半端なMVVM構成だったところを、@k-kagurazakaさんががんがんリファクタリングしてくれました。PullRequestを見ていて非常に勉強になりました。ありがとうございました。

github.com

最新のPullRequestは、ViewModelでイベントを受け取った後の画面遷移をCallbackではなくNavigatorクラスに移譲することで、Dagger2でInjectできるようにするという改善でした。

Use injectable Navigator instead of callback of ViewModel by k-kagurazaka · Pull Request #351 · DroidKaigi/conference-app-2017 · GitHub

Navigatorクラスを分けるべきか、どう実装すべきかという話もあって、色々考えるいい機会になりました。

こういうリファクタリングというのは、「これはよくない」「こうした方がいい」と呟く人はたくさんいますが、実際にPullRequestを出して示す人はなかなかいません。自分も迷いながら公開していたところだったので、こうしたPullRequestはとてもありがたかったです。

10日連続PullRequest

@ogapantsさんは、毎日何かしら拾ってPullRequestを送ってきてくれています。 小さい修正だとしても10日続けるというのはすごいですね。気がつけば、夜になると「今日はまだかな」と考えている自分がいました。

今後も何かあれば気軽に送ってもらえると嬉しい限りです。

ちなみに、こんなに小さい修正送って大丈夫かなと思う方もいるみたいなのですが、どんな修正でも圧倒的感謝という気持ちです。細かいところほど目が届かず気づいていないことも多いですし、気軽に指摘してもらえると助かります。


まだ完成していない部分もいくつかあるのですが、近いうちにざっと作る予定です。Issueもまた細かくあげておこうと思います。

Contributorsの皆さんありがとうございました。DroidKaigiで直接お礼を言えるのを楽しみにしています。と言ってもまだ開発が続くので、また気軽に関わってもらえるとうれしいです。PullRequestにコメントしてくれるだけでも非常に助かっています。

他にもたくさんあるのですが、書ききれないのでこのあたりにしておきます。

最後に、仕事はちゃんとしてます。