Augmented Usamimi

it { is_expected.to be_blog.written_by(izumin5210) }

#DroidKaigi 2016で登壇してきた

登壇した.ちょととまとまらないのでまとまらないまま公開します🙇

登壇のモチベーション

去年の3月に上京してきて,関西とは比較にならない数の勉強会が開催される中でドキドキしながら参加した初めての大規模な勉強会がng-japan 2015そしてDroidKaigi 2015だった.当時は登壇者を見て「いつもインターネットで見る人だ…!実在したんだ…!!」「なんてレベルの高い環境なんだ…!」と強く感動したのを今でも覚えている.同時に「自分もあそこに立てるようになりたいな」みたいなことを思った.

また,上京してからはコミュニティに還元するという意味も込めて月1回以上はどこかで登壇するのとアウトプットを増やすのは意識していた.この1年の集大成としてDroidKaigi 2016という,ある意味はじまりのイベントで登壇できればこれ以上はないという気持ちで登壇するに至った.

CPFへの応募

いざproposalを出すにあたり,どんなテーマで書くのかについては結構悩んだ.そもそも学生である自分が仕事でAndroidアプリ書いてる人達に共有できる知見というと難しいところもあるので, 公式の採択基準のExpertise: よく知られている情報ではなく、専門性があることに比重をおいてテーマを決めることにした(研究としての専門分野はまったく別になるんだけど).

  1. Android specific: Android 固有であること
  2. Expertise: よく知られている情報ではなく、専門性があること
  3. Innovation: いままでに可能でなかったことを可能にしていること、革新性があること

候補に上げたのは以下の2つ:

夏頃のAndroidオールスターズ@wasabeef_jpさんとfluxいいよねという話をして刺激を受け,reduxAndroid向けimplementation(Droidux)を作り始めていたので,じゃあこれについて話そうということにした(CFP書きあがる頃にはv0.3.0ぐらいになってたような気もする).

実際のproposalを書く作業はesa.ioの個人アカウント上で行った.いま見直すと謎の"""memo"""という節があるので,たぶんこのあたりを意識しながら書いたんだと思う.

内容は、以下の3点を満たしていると採用されやすくなります * Android specific: Android 固有であること * Expertise: よく知られている情報ではなく、専門性があること * Innovation: いままでに可能でなかったことを可能にしていること、革新性があること


4つの文 [Kent Beck]

  1. 問題を述べる
  2. なぜその問題がおもしろいのかを述べる
  3. ソリューションが解決することを述べる
  4. ソリューションが引き起こす影響を述べる

山脈よりも小さな山を

“ コンピュータプログラムにはバグがつきものである。バグを排除することは極めて重要だ [1,2]。多くの研究者たちが尽力している [3,4,5,6]。非常に重要な問題である。”

→ 退屈

“このプログラムには興味深いバグがある。 [簡単な説明]。我々はこうしたバグを自動 的に特定および排除する技法を紹介する。 ”

→ \ すげえ! /

優れた研究論文の書き方―7つの提案

これらが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とポートするにあたって意識すべきJavaScriptJavaの違いについて書いた.

2月に本業(学生やで)でばたばたしててちょっと準備に遅れが出て厳しい気持ちになってたけど,体を犠牲にしてなんとか資料は間に合った. 知見としてC++Javaコンテキストスイッチのオーバーヘッドがかなりでかいので気をつけたほうがいいというのがある.

発表前日深夜〜当日にかけて資料を見なおしているとどうもJSの比重が大きいなということに気づいたので,後半にいま書いてるアプリで採用している「Clean Architecture + Droidux + Dagger 2 + DataBinding」について触れることにした.これについては後述するけど大きな失敗だったと思う.

発表本番・反省

@konifarさんの直後ということもあってわりとプレッシャーがあり若干緊張した.早めにPC繋いじゃったせいで20分ぐらい前でボーっとするハメになったんだけど,その時間のおかげでマインドリセットできて発表自体は思ったよりは緊張することなく楽しくすることができた.

Togetterを見る限り,前半部分については「攻めてる」という好評化を頂いたようだ(togetterの44ページ目の下半分〜).

しかし,発表後半では僕の悪い癖「好きなことについて話しだすと暴走する」が発動してしまい,後半の追加部分で観客の大半を死んだ魚の目にしてしまった.

質疑応答も特になかったので,かなり厳しい感じにしてしまったなという気持ちでいっぱいだった. これについては反省と申し訳無さしかない….直前の資料追加は危険だと改めて認識した.

その後

After Partyでは「JSでの流行りを取り入れるのは参考になった」「Clean Architectureについて聞きたいことある」みたいな感想をいただけたので救われた気持ちになった. 僕の発表内容ですこしでもアプリケーションの設計について意識を高めてくれる人が出てくれると嬉しい.

あと,「うちの設計かわいいだろ〜〜」みたいなことをみんなで自慢しあうタイプのイベントしたいですねっていう話をした. 会場を貸していただけるところあれば教えていただきたいです🙇🙇🙇

感想

@cattaka_netさんの言葉を借りる.

このような素晴らしいイベントを企画開催していただき,登壇の機会もつくっていただいたDroidKaigi Staffの方々には本当に頭が上がりません. 今後もアウトプットをつくり続けAndroidコミュニティに貢献していくことで恩返しになればと思っています.

次回開催もあれば登壇するぞ!

発表の補足資料とか