DroidKaigi 2018に登壇してきました

[DroidKaigi](https://droidkaigi.jp/2018/)はエンジニアが主役のAndroidカンファレンスです。
今年は参加者数1000人以上で去年以上の大盛り上がりでした。

DroidKaigiには去年初めて参加して、今年はめでたくCfP通ったのでスピーカーとしての参加です。
せっかくスピーカーとして参加させてもらったので、資料作成や発表などの裏話を書きたいと思います。
発表スライドと同じく、セルフ質問会形式で書いていこうと思います。

# なにを発表したの？

[ピュアJavaだと思った？残念Androidでした～いつからAndroidをJavaだと錯覚していた？～](https://www.slideshare.net/JSUXDesign/javaandroidandroidjava)

JavaでConcurrentModificationExceptionが発生したりしなかったりする話と、
それがAndroidではちょっと違う動作になるぞっていう話をしました。

# なんでこんなタイトルになったの？

以下のようなやりとりの結果、このような煽りタイトルに決まりました。

![title.png](https://qiita-image-store.s3.amazonaws.com/0/97301/a9bc636f-3772-22b6-be14-4139c5a1a06a.png)


今考えれば、この煽りタイトルのおかげで発表がやりやすくなったので感謝してます。

# ところで、なんでこの違いを見つけたの？

昨年から以下のような活動を行っていました。
[AndroidアプリにCrashlyticsを導入してクラッシュフリーユーザー率99.9%を目指す話](https://qiita.com/soranakk/items/ec3b91212f8b386633bb)
[[続]AndroidアプリにCrashlyticsを導入してクラッシュフリーユーザー率99.9%を目指す話](https://qiita.com/soranakk/items/d70dff7619c9789503e8)

いろんなクラッシュを修正していくなかで、あるときAndroid OSコードでConcurrentModificationExceptionが発生しているのを発見しました。
ConcurrentModificationExceptionって見覚えあるけどなんだっけ？って調べてみると、
例外は発生したりしなかったりする、という話を見つけました。
そのとき「へ～、そうなんだ。ちょっと試してみよ」って思ってAndroid上で実行してみたところ
「あれ？なんか調べた内容と違うぞ？」ってなりました。
このとき、もしや？と思ってJUnitで実行してみたところ、調べた通りのことが起こり、これはJVMとARTの違いか！と。
そのときの内容をさらに詳しく調べたり、まとめたりしたのが今回の発表内容です。

# 発表準備とかはどうだったの？

調べた内容をQiita記事にしてみようかな、と思ってまとめていた下書きがありました。
これを元にタイトルや概要を決めて、CfPが通ってからはスライドにしていきました。
せっかく発表するので、もっといろいろ調べて見ようと思ってAOSPのgitコミットログを見て回ったり、
N以降はOpenJDKになってるけどその辺どうなってるんだろ？とか思って調べたりしました。
発表では「なぜこんな違いが発生するのかをコードから理解する」ことを重視して、そのようなスライドになるようにしました。
「List警察」で笑いがとれたのが、一番の満足点です。
仕込んだネタが受けると、素直にうれしい、というのも今回の発表で得られた経験です。

# 発表はどうだった？

## 発表前

発表前はめっちゃ緊張してました。
発表前の講演は @shiraji さんの[How to Kontribute](https://photos.google.com/share/AF1QipMS3b3xBNIha1iDnlBXjBXf1VHJ12KKKAkAsRzQP_Sdgj7s7KjmcrTHeR82ON23og?key=cmNsSVRQM3dvejVwZHg4c1ljOS1FOVRmVXNNYmN3)という発表を聞いていたのですが、すごく面白い発表だったのに緊張していてあまりリアクションがとれなかったです。
発表したあとにわかったのですが、発表中の聴衆の反応ってスピーカーとしてはすごく気になるところで、私ももっと素直に反応できたらなぁって少し後悔しています。
講演で面白いなって思ったら素直に笑うことが大事です！
スピーカーは仕込んだネタで笑いがとれるとすごく喜びます。

## 発表中

発表の開始15分ぐらい前から発表準備を始めるのですが、この時間は前の発表も終わって、席の入れ替えも落ち着いてきて、会場がシーンとなる時間です。
ここの時間が一番緊張するところなのですが、私の場合は少し違いました。
発表10分前や5分前などに司会の方が発表のアナウンスをしてくれるのですが、私の発表タイトルはご覧の有様ですので、タイトルが読み上げられる度に笑ってしまう・・ｗ
司会「この部屋は14時から開始の、Kiyotaka Soranakaさんよる、ピュアJavaだと思った？残念Androidでした～いつからAndroidをJavaだと錯覚していた？～の部屋です。」
しかも、何度も読み上げていくうち、だんだん読み上げ方がうまくなっていくような？
というか、「この司会、ノリノリである」といった感じで、緊張をほぐしてくれてすごく助かりました。
https://twitter.com/soranakk/status/961462873716228096

司会の[@keiji_ariyama](https://twitter.com/keiji_ariyama)さん、本当にありがとうございました。

## 発表後

発表後はずいぶん気が抜けてしまった感じでしたが、気が抜けたところにふわ～っといろんな知見がもりもり入ってきて、吸収できた気がします。
二日目は英語セッションにチャレンジして、前のほうで食い入るように聞いてみたり、空飛ぶ絨毯にのったAndroid端末([複数センサーシミュレーションによる行動認識(ActivityRecognition)解剖、そして実用化](https://speakerdeck.com/kakka/20180209-droidkaigi2018-activityrecognition-simulation))で笑ってみたり。
発表後は純粋にDroidKaigiを楽しんでいました。あ～、おもしろかった。

# 発表してどうだったの？

楽しかった！
この一言に尽きます。


## 発表してよかったところは？

* 発表のための準備でさらに詳しく調べることで、AndroidとJavaの歴史の片鱗に触れられた

コミットログを見たり、OpenJDKに変わったときを見たりで、あ～、こんなふうになってたんだっていうのを発見できました。
これは資料を作成しているときに一番面白かったところです。

* スピーカーの方と話すとき、「何の発表(します/しましたか)？」という話題ができる

共通の話題があるのでスピーカーの方とコミュニケーションを取りやすかったです。
初対面の人と話すときって、最初の一声を掛けるのが結構勇気がいります。
でも今年は共通の話題があったのでたくさんのスピーカーの方と話すことができて、すごくよかったです。
ただ、心残りは@kiriminさんのお兄さんとはお話しできたけれど、本人には会えなかったことですね。
お兄さんに「ネットで会ってください！」と言われてしまいました ><


## じゃあ、逆によくなかったところは？

たぶんスピーカーの方、全員が思うことだと思うのですが、
<b>自分と発表時間が被ってる講演を聞けない</b>
これは自分が登壇するのでどうしようもないですが、後日ビデオを見たりすることで我慢するしかないです。
影分身さえ使えたら・・・

# で、来年は？

今年はスピーカーとして参加できて本当に楽しかったです。
来年もCfP通して登壇するぞー！