DroidKaigi 2018で登壇してきたので振り返りとか補足とか

DroidKaigi 2018で登壇してきたよ!

 

資料はこれ。

speakerdeck.com

ハンズオンのサンプルプロジェクトと課題はこれ。

github.com

 

良かった点

前日こんなツイートしてかつDroidKaigi公式アカウントがそれをRTしてくれたせいか、ハンズオンなのに立ち見/地べた座り参加者が出るほどの盛況だった。

それから参加者の半分はUnit Testが初めてかそれに近い状況で、資料もハンズオン課題(の前半部分)もまさにそういった方に向けて一生懸命作ったのでそれに関しては満足している。

 

反省点

いっぱいある…

  • Robolectricが初回実行時にダウンロードするライブラリの差分が会場ネットワークの詰まりで進まず、ハンズオンがストップした。これは運営さんやインフラを責めているのでまったくなく、そのような可能性に思い至らなかった自分が悔しい。
  • GitHub APIが同一IPからの単位時間あたりの接続数上限に達してしまい会場でサンプルアプリが動かなくなった。これも事前の調査不足というか、実際にそういう目に遭ってみないと考えつきもしなかった。
  • サンプルアプリをAndroid-CleanArchitecture風に設計し、その各レイヤごとにUnit Testを書けるようになるとめちゃくちゃ有意義なのでは?という想定のもとすべてを準備したが、会場の参加者がそれを求めていたように感じられなかった。完全に自分の独りよがりになった。
  • ハンズオンとして参加者に書いてもらう部分の調整の甘さ。僕はUnit Testを書くことそのものは大好きだが、ハンズオンをそれほど主催したことがなく、課題として空欄にして埋めてもらう部分の難易度設定に難があったように思う。
  • ハンズオン課題を英語対応しなかった。会場には日本語を解さない海外からの参加者の方もいて、その方には個別に対応したが、そもそもこれだけの規模のイベントでそういう参加者が当然に来てくださることをもっと真剣に考慮すべきだった。

とまあこれらはすべてもし次回があったときの糧としたい。まだ初日が終わったところで、2日目の早朝にぐずる赤ん坊を抱っこしながらこのエントリを書いているので、最終的なフィードバックの集計を待ちたいところだ。

 

サンプルアプリに関する補足

今回はスライドで座学をしたあと、前述のハンズオン課題をもくもく解いてもらった。

これはGitHubアカウントを入力したらその人のレポジトリ一覧を表示するという人類が一体どれだけ同じものを作ったのか想像もつかないほどありふれたアプリだが、設計には慎重な考慮を重ねてUnit Testもできるだけ「明日から仕事で使える感」を目指した。

 

個人的に課した縛りは次の2点。

理由は単純で、それぞれこのライブラリのことを説明するだけで50分のセッションができるほど習熟が大変だからだ。RxやDaggerが出てくることで今回の設計やUnit Testの本質がブレてしまうことを避けたかったのだ。

したがって非同期処理基盤には古き良きThreadPoolExecutorを用いDIはシンプルなコンストラクタインジェクションとFactoryパターンという古典に則った。

しかしながらシンプルで理解しやすさを求めて敢えてこれらの込み入ったライブラリを用いなかったことで却ってこれらのライブラリの恩恵でスマートに解決できている問題を自分で処理せねばならないという皮肉な結果となった。

このときには資料づくりは佳境でなかなか方向転換もままならなかった。参加者のみなさんの感想が楽しみでもあり怖くもあるが、なんとかこれらのライブラリを使わずありふれたJavaコンポーネントだけで書いたことによる可読性の方がわずかでも勝っていると信じたい🙏

 

で、サンプルアプリで特に注目して欲しいのはやはり各レイヤのテストコードだ。

前述のレポジトリはハンズオン向けにcloneしたらデフォルトでtasksというブランチがチェックアウトされるようになっている。こちらはUnit Testが空欄になっている。これをmasterブランチに切り替えると僕が普段書いているようなUnit Testをひととおり書いてある。興味のあるひとは是非見てみて欲しい。

Repositoryより下のビジネスロジックの部分はみんなも関心が高いしテストコードも結構書いてると思うんだけど、ちょうど同期と非同期が混じり合うUseCaseの部分はどうやってテスト書いていいか苦慮すると思うし、Presenterなんかもテスト書きづらいんじゃないかな。Presenterはちゃんと書くとViewとのインタラクションを検証できるので是非プロジェクトをcloneしてみてフィードバックが欲しい。

 

DroidKaigiの感想

とにかく最高のひと言。

After Partyでスピーカーには風船を付けさせるアイディアは最高で、これのお陰もあって「白山さんですよね?」と数え切れないほどの人に話しかけてもらって本当に光栄だった。

 

それからAndroid 設計パターン入門という本の著者陣がほとんど居るという豪華な状況が嬉しくて子供のようにサインを求めて回った。

 

返す返す、これほど素晴らしいAndroid関連イベントは世界でも早々ないであろう。代表の日高さん、スタッフのみなさん、登壇者のみなさん、そして参加者のみなさん全員に深く感謝したい。

まだ2日目が控えているが、こういうのは早ければ早いほどその時の熱気が文章に乗ると思ったので赤ん坊に3回目の授乳をして抱っこしたまま早朝の暗い部屋の片隅でこれを書いている。

今日もまたみなさん楽しみましょう。じゃあの。