kobakei's blog

たまに書きます

#DroidKaigi 2018で「開発者が知っておきたい通知の歴史」という内容で講演しました

DroidKaigi 2018

今年はセッションが採択されたので、スピーカーとして参加しました。去年までは普通に参加者としてだったので、スピーカーとして参加するのは今年が初です。

発表したぞい

speakerdeck.com

「開発者が知っておきたい通知の歴史」というタイトルで、Androidの通知の機能追加の歴史と、互換性を維持してどう実装していけばいいか?というテーマで話させていただきました。内容はスライドを見ていただくとして、この発表をするに至った動機や、当日の発表、オフィスアワーで頂いた質問などを紹介しようと思います。

なんで通知?

自分は基本iOSよりAndroid好きマンなんですが、何が好きって特に通知が使いやすいのが好きなんですね。ただ、普段使っているアプリでも通知の実装が残念なこともあったりして、もっとAndroid開発者がかっちょいい通知を作って欲しい!という個人的な思いの元で応募したセッションでした。

ちなみに、応募したけどリジェクトされたその他のセッションについてはこちらの記事に内容を書きました。 kobakei.hatenadiary.jp

事前準備

セッションが採択されて、まずはサンプルアプリを作るところからはじめました。

github.com

別に自分は通知マスターでもなんでもないにも関わらず、通知の機能を網羅的に紹介するセッションが通ってしまったので、普段自分の業務では使わない機能も主要な機能では説明しなくてはと思い、ちまちま実装してました。GitHubのコミットログを見ると、最初のコミットは11/9のようです。実に3ヶ月前から始まってますね。

スライドも年末からボチボチ書き始めました。一度勢いに任せてガーッと書いたあと、こまめにアップデートを重ねてました。今年は事前にスライドを公開するビッグウェーブが来てたので、3日くらい前に自分も公開しておきました。そこからソースコードや説明に細かい手直しは入れましたが、大筋は事前公開通りで発表しています。

何度か通しで発表練習して、25分くらいに収まるように調整しました。が、後述するようにギリギリ、むしろちょいオーバーくらいでした。

DroidKaigi当日

自分のセッションは2日目の最後だったので、それまで他のセッションを聞いても全然集中できませんでしたw

自分の発表は正直反省だらけで、

  • マイクが途中で電池切れになる
  • 動画が上手く再生できなかった(再生まで時間がかかってたせいで、発表者モードで再生できないように見えた。実際は動いてたらしい)
  • 序盤にダラダラ喋りすぎて、後半駆け足になった。結局1分ぐらい押した。

といった感じであとで動画を見るのが怖いレベルです。合掌。

30分の長さの発表になると途中途中で今自分の話が早いか・遅いかを確認するマイルストーンが必要だと思い、スライドのセクションごとに発表者ノートに「ここで12分」みたいなメモを足していたんですが、これは後半巻き返す際にとても役に立ちました。

あと、Keynoteに動画埋め込みは大体うまく行かないのでやめましょう。次やるときは動画GIFにします。

強いてよかった点を挙げるとすれば、笑いを取るつもりで喋った小ネタは全部笑いが起きてたのが救いでした。雰囲気の良い会場でよかった。

セッションの反響

#droidkaigi_room1 のツイートをいくつか引用。

昔の通知に懐かしさを感じる人達

更なる闇を持つ人達

通知辛いってなる人達

それなりに好評だった?

ここで引用できなかったツイートもすべて目を通しました。ツイートありがとうございます!

なんか主に通知の辛さが伝わってしまった感が否めないんですが、僕は皆にいい通知を実装してほしくて講演してるので是非諦めずにがんばってください!!!

オフィスアワー

いくつか質問を頂いたのでブログでも紹介しておきます。

通知チャンネルでユーザーが通知を拒否したことは取得できるか?

できます。公式ドキュメントに以下の記述があります。

To find out if a user blocked a notification channel, you can call getImportance(). If the notification channel is blocked, getImportance() returns IMPORTANCE_NONE.

Firebaseでプッシュ通知を実装しているが、アプリの持つ通知設定でON/OFFできるか?

多分カスタマイズしないと厳しいです。どのみち二行以上のテキストを表示するために、BigTextStyleを使うようにカスタマイズすると思うので、諦めて通知の表示部分は自分で実装しましょう。

アプリ内通知設定とOreoの通知チャンネルの関係は?Oreoでは前者はいらない?

僕は部屋の蛍光灯に例えると、以下のような関係だと思っています。

  • アプリ内通知設定 = 電気のスイッチ
  • Oreo通知チャンネル = ブレーカー

より根っこに近いレベルのONOFFがOreoの通知チャンネルだと思うので、引き続きアプリ内で通知設定を提供していてよいと思います。また、通知チャンネルの粒度は、アプリ内通知設定がすでにあるなら大体合わせておけばよいと思います。

See you next DroidKaigi!

ともあれ、この日のために長い間準備してくださったスタッフの皆さん、スピーカーの皆さん、そして参加された皆さんありがとうございました!

それではまた、来年のDroidKaigiの会場でお会いしましょう!