DroidKaigi 2017のアプリのコードを公開して10日ほど経ちました。
忘れないうちに今の状況をざっとまとめておこうと思います。
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さんが拾って作ってくれました。
何が印象的だったかというと、Viewとロジックとテストをそれぞれ別の人が作ってくれたんですよね。
@shirajiさんが大枠を作り、@srymさんがViewを作り、@kikuchyさんがRepositoryのテストを書いてくれました。
自分は何もしていないのですが、こんなにうまく連携して仕上がるものかと驚きました。ありがとうございました。
Kotlinの採用見送り
公開当初から、@lvlaさんがkotlinでRepositoryのテストを書いてくれたり、kaptを導入しようとしてくれたりしていました。
そして、@sys1yagiさんからkotlin化のTry PullRequestがきました。
このPullRequestの中でKotlin化するかどうかの話があったのですが、結局このプロジェクトではKotlinを採用しないことにしました。詳細はPullRequestを見ていただきたいのですが、ざっくり言うとContributeの敷居を下げてたくさんの人に触れてもらうために、今はまだJavaの方がいいと判断したからです。仕事でやるならKotlin化してもよかったかもしれません。
@sys1yagiさんありがとうございました。
Sessionsページの斜めスクロール
Sessionsページはわりと妥協した状態で公開していました。
で、LayoutManagerカスタムして斜めにスクロールできたらいいな、みたいなざっくりしたIssueを切っておいたんですよね。
そうしたら、@jmatsuさんが「LayoutManagerは使わずにスクロールイベントをハンドリングして斜めにスクロールできるようにしたよ」とPullRequestを送ってくれました。
コードを見てみると「たしかにこれでええやん…!」という感じだったのですが、自分だったらもっと時間がかかっていたと思います。そもそもあの重いIssueを拾おうという心意気だけですごいというか。
また、別のPullRequestで@takahiromさんがさらにシンプルな実装に修正してくれました。ありがとうございました。
CI職人技
ConstraintLayoutを導入後に、CircleCIがタイムアウトを繰り返し非常に不安定になってしまったのですが、@gfxさんが職人技で修正してくれました。
この時は1時間に2〜3件くらいPullRequestが来ていた時期だったので非常に助かりました。ありがとうございました。
ひとくちにCircle CIを使うといってもリポジトリごとに独特のクセがあるんじゃよ…。それぞれのビルドをじっくりと吟味して最適なcircle.ymlを練り上げる、それが職人技なのじゃ。
— FUJI Goro (@__gfx__) 2017年2月8日
クールですね。
Splash画面
CoolなSplash画面がほしいというIssueを上げていて、さすがに誰も拾わないだろうと思っていたら、@roana0229さんが作ってくれました。
https://github.com/DroidKaigi/conference-app-2017/pull/313
Webと同じアニメーションをいい感じに再現されていて、非常に完成度が高かったです。もちろんメモリの問題や画面のカクつきなどを言い出したらキリがないのですが、速攻でここまで作ってPullRequestを送ってくるのはすごいなぁと思いました。ありがとうございました。
余談ですが、嫁氏がすごい反応してくれていて羨ましかったです。
嫁氏にSplash画面見せたら「すごーい」「なにこれー」などと言っていて、俺もこれくらい褒められたいなと思った
— こにふぁー (@konifar) 2017年2月12日
MVVM構成のリファクタリング
中途半端なMVVM構成だったところを、@k-kagurazakaさんががんがんリファクタリングしてくれました。PullRequestを見ていて非常に勉強になりました。ありがとうございました。
最新のPullRequestは、ViewModelでイベントを受け取った後の画面遷移をCallbackではなくNavigatorクラスに移譲することで、Dagger2でInjectできるようにするという改善でした。
Navigatorクラスを分けるべきか、どう実装すべきかという話もあって、色々考えるいい機会になりました。
こういうリファクタリングというのは、「これはよくない」「こうした方がいい」と呟く人はたくさんいますが、実際にPullRequestを出して示す人はなかなかいません。自分も迷いながら公開していたところだったので、こうしたPullRequestはとてもありがたかったです。
10日連続PullRequest
@ogapantsさんは、毎日何かしら拾ってPullRequestを送ってきてくれています。 小さい修正だとしても10日続けるというのはすごいですね。気がつけば、夜になると「今日はまだかな」と考えている自分がいました。
この時間になると @ogapants さんのPRそろそろかなと思う身体になってしまった
— こにふぁー (@konifar) 2017年2月16日
今後も何かあれば気軽に送ってもらえると嬉しい限りです。
ちなみに、こんなに小さい修正送って大丈夫かなと思う方もいるみたいなのですが、どんな修正でも圧倒的感謝という気持ちです。細かいところほど目が届かず気づいていないことも多いですし、気軽に指摘してもらえると助かります。
まだ完成していない部分もいくつかあるのですが、近いうちにざっと作る予定です。Issueもまた細かくあげておこうと思います。
Contributorsの皆さんありがとうございました。DroidKaigiで直接お礼を言えるのを楽しみにしています。と言ってもまだ開発が続くので、また気軽に関わってもらえるとうれしいです。PullRequestにコメントしてくれるだけでも非常に助かっています。
他にもたくさんあるのですが、書ききれないのでこのあたりにしておきます。
最後に、仕事はちゃんとしてます。