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

Konifar's WIP

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

オープンソースでDroidKaigiのカンファレンスアプリ作ってる

DroidKaigi 2016がいよいよ来週開催されます。

ふとした思いつきでDroidKaigiのカンファレンスアプリを作ったところ公式アプリとしてリリースさせていただくことになり、今現在完全オープンソースで色んな人がコミットしてくれています。スピード感あってなかなか面白いので、忘れないうちに経緯をまとめておこうと思います。

github.com

アプリは現在こんな感じです。デモとしてアラビア語表示にも対応しています。

f:id:konifar:20160211020950p:plain

1/11(月)

  • DroidKaigiの発表準備しないとまずいと焦り始めました。
  • 最近は発表の内容に合わせてサンプルアプリを作って公開するようにしているんですが、ただのサンプルコードだと飽きちゃうので何を作ろうかなぁと考え始めました。
  • そこで思いついたのが、DroidKaigiのカンファレンスアプリでした。みんなが使えるアプリなら懇親会の時の話のネタにもなるし、ぼっちにもなりにくくてよさそう最高!と思いました。
  • とりあえずリポジトリを作り、DroidconやGoogle I/Oのカンファレンスアプリを10個くらいインストールしてざっと触ってメモしました。 Issue #1
  • 必要な機能が見えてきたところで、プロジェクトを作ってPushしました。 PR #3

1/18(月)

  • 最初のPush以降何もせず1週間寝かせてしまい、さらに焦り始めました。
  • とりあえずCI動くようにして、モデルをざっと作ってPushしました。 PR #5

1/21(木)

  • タイムテーブルが公開されたので、やる気があがってきました。
  • タイムテーブルを元にjsonファイルを作って、リポジトリ上のjsonRetrofitでロードするところまで実装しました。 PR #7
  • gfxさんの作ったORMライブラリ Ormaがいい感じっぽかったので使ってみたくなり、使うぞと呟いたところ本人に補足されました。わりとやる気が出たので有言実行大事だなぁと感じました。

1/23(土)〜25(月)

  • Ormaを導入してみました。 PR #8
  • とりあえずメインのセッション一覧画面がだいたい完成しました。このあたりから、多言語対応のサンプルを作るというもともとの目的を忘れ、Dagger2やDataBinding、Ormaを色々試すのが楽しくなってきました。

1/31(日)〜2/1(月)

  • 仕事がヤバすぎて手がつけられずさらに1週間寝かせてしまい、また焦り始めました(3度目)。
  • 焦りつつも、ある程度仕組みは揃ったので開発の速度自体は加速していきました。折しもちょうどいい時期にアクセル・ワールドが放映されていました。
  • 1月中にある程度仕上げたいなぁと思っていたので、セッション詳細画面、スポンサー画面、マップ画面、その他画面等を一気に作りました。
  • あとは検索機能だけだな?というところで公開を考えはじめました。公開したらデータのミスがあった時にも登壇者の方がPullRequestで修正できるし、最高なのでは?と思ったわけです。
  • が、もしかして運営の方でアプリ作ってたら迷惑になるのでは…と心配になり、DroidKaigi責任者のmhidakaさんに連絡しました。

f:id:konifar:20160210230405p:plain

  • mhidakaさんからOKをもらい、運営メンバーのhkurokawaさんから公式アプリにしませんかとのありがたい提案をいただきました。運営メンバーの中にはすごい人もたくさんいるので恐縮しながら承諾しました。

2/3(水)

  • 仕事がヤバすぎてまた手をつけられず、とりあえずリポジトリを公開しました。
  • 迷惑にならないように先にパッケージ名を io.github.droidkaigi.confsched に変更しました。 PR #18

2/4(木)

  • 残っていたセッション検索機能を実装しました。 PR #21
  • 自分が思いつくIssuesを洗い出したところ30個くらいになったので、タグとマイルストーンを整理して共有ししました。

f:id:konifar:20160211024916p:plain

2/5(金)

  • READMEを整理しました。
  • ここからは皆さんから怒涛の修正が入っていきました。

2/7(日)

  • α版をDeploygateで公開しました。

deploygate.com

  • 公開したタイミングでIssuesを整理して、waffle.ioでIssueをカンバン化して整理しました。

https://waffle.io/konifar/droidkaigi2016

2/11(木)← 今ココ

  • もともとの目的を思い出してアラビア語対応を入れました。

  • GooglePlayStoreに公開する予定で進んでいます。
  • ひっきりなしにIssueとPRが飛んできて圧倒的感謝という状況です。

まとめてみると、思ったよりタイトに進んでいたんだなぁと思いました。

今まさにリリースに向けてガンガン修正されているので、ウォッチしてみると面白いかもしれません。

KeithYokomaさんがenum技入れてきてくれたり、Orma作者のgfxさんが最高の修正投げてくれたり、他にも色んな人がコミットしてくれて学びしかないという感じです。

皆さんすごいアクティブで、餌を投げ込まれた獣のようにIssueを取っては速攻でPR投げてくるのですごいなぁと思います。完成を優先させてよくない実装になってるところもあるので、突っ込みもらえるのは本当に嬉しい限りです。

全部英語でわりと活発なので気がひけるかもしれないですが、どんなIssuesやPRでも構わないので気づいたことがあったら気軽に投げてもらいたいなぁと思います。例えばREADMEのタイポの修正だけでもすごく助かります。

中のコードの話は、是非DroidKaigiでお話ししましょう。先に書きましたが、もともと知らない人と話したくて話のタネの1つとしてアプリを作ろうと思ったという経緯もあるので、気軽に声をかけてもらえると嬉しいです。

皆さんDroidKaigiではどうぞよろしくお願いします :bow: :bow: :bow:

追記

こういうのを呟いたんですが

こういう事故が起きまして

こういうPRが飛んできてとにかく圧倒的感謝です。

Add tests with Robolectric-Instrumentation for further refactoring by gfx · Pull Request #129 · konifar/droidkaigi2016 · GitHub

他にも全ての人に感謝という感じなので、自分のセッションの準備が落ち着いたらここに追記していこうと思います。