#DroidKaigi 2016で登壇してきた
登壇した.ちょととまとまらないのでまとまらないまま公開します🙇
登壇のモチベーション
去年の3月に上京してきて,関西とは比較にならない数の勉強会が開催される中でドキドキしながら参加した初めての大規模な勉強会がng-japan 2015そしてDroidKaigi 2015だった.当時は登壇者を見て「いつもインターネットで見る人だ…!実在したんだ…!!」「なんてレベルの高い環境なんだ…!」と強く感動したのを今でも覚えている.同時に「自分もあそこに立てるようになりたいな」みたいなことを思った.
また,上京してからはコミュニティに還元するという意味も込めて月1回以上はどこかで登壇するのとアウトプットを増やすのは意識していた.この1年の集大成としてDroidKaigi 2016という,ある意味はじまりのイベントで登壇できればこれ以上はないという気持ちで登壇するに至った.
CPFへの応募
いざproposalを出すにあたり,どんなテーマで書くのかについては結構悩んだ.そもそも学生である自分が仕事でAndroidアプリ書いてる人達に共有できる知見というと難しいところもあるので, 公式の採択基準のExpertise: よく知られている情報ではなく、専門性があることに比重をおいてテーマを決めることにした(研究としての専門分野はまったく別になるんだけど).
候補に上げたのは以下の2つ:
- BLE技術について
- ちょっと前にkonashi SDK for Androidをリリースしていたので,それにまつわる知見
- modern frontend JavaScript界隈の技術をAndroidに取り入れる話
- DmetlabelやWantedlyではRuby on RailsとAngularJSを触っていたので,最新のフロントエンド,とくにアーキテクチャや設計の話には知見があった
- 一番得意な言語はJavaScript,一番嫌いな言語はJavaScriptです
夏頃のAndroidオールスターズで@wasabeef_jpさんとfluxいいよねという話をして刺激を受け,reduxのAndroid向けimplementation(Droidux)を作り始めていたので,じゃあこれについて話そうということにした(CFP書きあがる頃にはv0.3.0ぐらいになってたような気もする).
実際のproposalを書く作業はesa.ioの個人アカウント上で行った.いま見直すと謎の"""memo"""という節があるので,たぶんこのあたりを意識しながら書いたんだと思う.
内容は、以下の3点を満たしていると採用されやすくなります * Android specific: Android 固有であること * Expertise: よく知られている情報ではなく、専門性があること * Innovation: いままでに可能でなかったことを可能にしていること、革新性があること
4つの文 [Kent Beck]
- 問題を述べる
- なぜその問題がおもしろいのかを述べる
- ソリューションが解決することを述べる
- ソリューションが引き起こす影響を述べる
山脈よりも小さな山を
“ コンピュータプログラムにはバグがつきものである。バグを排除することは極めて重要だ [1,2]。多くの研究者たちが尽力している [3,4,5,6]。非常に重要な問題である。”
→ 退屈
“このプログラムには興味深いバグがある。 [簡単な説明]。我々はこうしたバグを自動 的に特定および排除する技法を紹介する。 ”
→ \ すげえ! /
これらがproposalに反映出来てたのか,あまり自身はない.とりあえずターゲットと話すこと・話さないことは明記しておこうと考えていた.
タイトルについて
タイトルはproposalと本発表はともに同じ「What's the difference between JavaScript and Java?」にした. 釣りタイトルにするか真面目タイトルにするかはギリギリまで悩んだけれど,誘惑に負けてインパクト重視の釣りタイトルにしてしまった.反省している.
発表準備
前フリ
proposal〆切直前のpotatotips #23でDroidKaigiで話す内容の前フリをした.この時点ではまだproposal通ってなかったけど,とりあえず背水の陣でも敷いとくか〜wみたいなテンションだったんだと思う.この時点でDroiduxはv0.4.0になっていて,おしごとで作ってるアプリで実際に動いていた(本番リリースはまだ). また,QiitaのAndroid AdventCalendarにも「Droidux: ReduxをAndroidに持ち込んで状態管理から解放されよう! - Qiita」という記事を投稿した.これらがDroidKaigiで話す内容のベースになっていった.
準備
発表資料のドラフトもproposalと同様にesa.io上で管理した.いつもの5分LTとかならいきなりAdobe Illustratorを開くんだけど,25分だし観客も多いかもというのがあったので今回は最初にmarkdownから書いて,直前にIllustratorで視覚資料に起こすというやり方をとった.結果的にこれはやってよかったと思う.むしろ毎回頭のなかのドラフトを直接視覚資料に起こすとか無茶やってたんだなあと反省した.
内容についてはDroidKaigiというイベントの性質上,JavaScriptの知識,とくに流れの早いModern Frontend JavaScriptに関する前提知識を聴衆が持っていない可能性が高かったので,JavaScriptの流行りのライブラリから見る進化の流れから話を始めることにした.その後,どんなアーキテクチャが取られているかに移ったあと,redux ->Droiduxとポートするにあたって意識すべきJavaScriptとJavaの違いについて書いた.
2月に本業(学生やで)でばたばたしててちょっと準備に遅れが出て厳しい気持ちになってたけど,体を犠牲にしてなんとか資料は間に合った. 知見としてC++とJavaはコンテキストスイッチのオーバーヘッドがかなりでかいので気をつけたほうがいいというのがある.
発表前日深夜〜当日にかけて資料を見なおしているとどうもJSの比重が大きいなということに気づいたので,後半にいま書いてるアプリで採用している「Clean Architecture + Droidux + Dagger 2 + DataBinding」について触れることにした.これについては後述するけど大きな失敗だったと思う.
発表本番・反省
@konifarさんの直後ということもあってわりとプレッシャーがあり若干緊張した.早めにPC繋いじゃったせいで20分ぐらい前でボーっとするハメになったんだけど,その時間のおかげでマインドリセットできて発表自体は思ったよりは緊張することなく楽しくすることができた.
会場からの”””圧”””を感じる #droidkaigi #droidkaigiC
— いずみん (@izumin5210) February 19, 2016
Togetterを見る限り,前半部分については「攻めてる」という好評化を頂いたようだ(togetterの44ページ目の下半分〜).
ここまでほぼJSの話ですごいロック。最高 #DroidKaigi #DroidKaigiC
— こにふぁー (@konifar) February 19, 2016
「アノテーションの暴力でダックタイピングに対抗する」という名言が生まれるところを見てきた #DroidKaigi #DroidKaigiC
— KeithYokoma (@KeithYokoma) February 19, 2016
しかし,発表後半では僕の悪い癖「好きなことについて話しだすと暴走する」が発動してしまい,後半の追加部分で観客の大半を死んだ魚の目にしてしまった.
DataBindingとDagger2について前置き無しでぶっこんで観客の目が死ぬところを見た #droidkaigi
— いずみん (@izumin5210) February 19, 2016
質疑応答も特になかったので,かなり厳しい感じにしてしまったなという気持ちでいっぱいだった. これについては反省と申し訳無さしかない….直前の資料追加は危険だと改めて認識した.
その後
After Partyでは「JSでの流行りを取り入れるのは参考になった」「Clean Architectureについて聞きたいことある」みたいな感想をいただけたので救われた気持ちになった. 僕の発表内容ですこしでもアプリケーションの設計について意識を高めてくれる人が出てくれると嬉しい.
.@izumin5210 と「Flux/ReduxサイコーなのにAndroid界隈に理解してくれる人ほとんどいない」という話をしながら盛り上がってた。DataBindingとFluxも上手く繋げば堅牢なアーキテクチャが組めるはず。
— なかざん@DroidKaigi (@Nkzn) February 18, 2016
あと,「うちの設計かわいいだろ〜〜」みたいなことをみんなで自慢しあうタイプのイベントしたいですねっていう話をした. 会場を貸していただけるところあれば教えていただきたいです🙇🙇🙇
感想
@cattaka_netさんの言葉を借りる.
DroidKaigi 2016参加者の方、発表者の方、運営の方ありがとうございました&お疲れ様でした。この手のイベントのたびに自分がエンジニアで良かったと感じます。また次の機会によろしくお願いします〜。 #DroidKaigi
— 住友 孝郎 (@cattaka_net) February 19, 2016
このような素晴らしいイベントを企画開催していただき,登壇の機会もつくっていただいたDroidKaigi Staffの方々には本当に頭が上がりません. 今後もアウトプットをつくり続けAndroidコミュニティに貢献していくことで恩返しになればと思っています.
次回開催もあれば登壇するぞ!
発表の補足資料とか
- Introduction to Redux // Speaker Deck
- 世界で一番わかりやすいReduxの解説だと思ってる
- The Clean Architecture | 8th Light
- 持続可能な開発を目指す ~ ドメイン・ユースケース駆動(クリーンアーキテクチャ) + 単方向に制限した処理 + FRP - Qiita
- Clean Architectureの非常に丁寧な解説記事
- [Butter Knife、今までありがとう。 Data Binding、これからよろしく。 - Qiita]http://qiita.com/izumin5210/items/2784576d86ce6b9b51e6)
- 手前味噌ながら,DataBinding解説記事
- みんなだいすきButterKnifeとの比較です