DroidKaigi 2017で登壇してきた

2日目の16:00から「Error Handling in RxJava」というタイトルで、RxJavaにおけるエラーハンドリングについて発表してきました。

スライド

概要

  • RxJavaのおさらい

    • Reactive Extensions for Java
    • マーブルダイアグラム
  • RxJavaにおけるエラーハンドリング

    • Catch(エラー発生時にリカバリーを行う)
      • onError: エラーをキャッチする
      • onErrorReturn: エラーをキャッチして代わりのデータを返す
      • onErrorResumeNext: エラーをキャッチして代わりのObservableを返す
    • Retry(エラー発生時にresubscibeを行う)
      • retry: エラーをキャッシュしてresubscribeする
      • retryWhen: resubscribeする条件を細かく制御する
  • 基礎編

    • エラーをトーストで表示する:onError
    • 代わりのデータを表示する:onErrorReturn
    • エラーの種類で処理を分岐する:onErrorResumeNext
    • リトライする:retry
    • リトライするかをユーザーに尋ねる:retryWhen
  • 応用編

    • リトライ&キャッシュ:retry, onErrorReturn
    • リトライ&キャッシュ&トースト:retry, onErrorReturn, onError
  • 実践編

    • Retrofitのエラーハンドリング
      • RxJavaCallAdapterの拡張

振り返り・感想

資料

1日目の終了後に自分の資料を改めて見直して、後から資料単体で見た場合に情報量が少なく分かりにくいのでは、ということに気が付き資料を修正した。修正後に一度だけ通しで練習をしたものの、基本的には情報量を増やす方向で修正を行ったので、当日は少し急ぎで喋った。結果として、中盤を過ぎた辺りで早すぎることに気が付き、後半は少しゆっくりと喋った。

直前に資料修正は良くないし、発表練習では話す内容だけでなく、タイムマネジメントも含めて練習すべきという当然の学びを得た。

登壇直前

ありがたいことに自分のセッションは立ち見が出た。

セッション前の静かな会場の雰囲気に耐えられず、登壇者席からiPhoneでパノラマで写真を撮るということをやってみた。

登壇中

前回のDroidKaigiでも同じような規模の部屋で登壇していたこともあり、今回は過度に緊張せずに喋れたと思う。発表中に聞いている人の表情や頷き具合とかを観察しながら説明の仕方を調整する余裕もあった。具体的には「RxJavaにおけるエラーハンドリング」のところでretryまでは頷きながら聞いてくれる人がかなりいたので練習のときよりも説明を軽めにして、retryWhenに入った辺りから今まで頷いてくれていた人の表情が曇り始めたのでより詳細に説明するようにした。

登壇後

登壇後はオフィスアワーとして質問を受けていましたが、その場で分かりやすかったです!と言っていただけたり、Twitterでもいくつか反響をいただけたりして素直に嬉しかった。

retryWhenは説明不足なところもあった模様。反省。

まとめ

プロポーザルを出す前はこんなネタで登壇していいのか悩んだが、結果的には登壇して本当に良かったと思います。同僚のlvla0805がオープニングトークでも言っていましたが、自分の当たり前は必ず誰かに需要があるので、悩んだらとりあえずプロポーザルを出せばいいんじゃないかなと思います。僕は来年も絶対プロポーザルを出します。