Android Notification API

自分は Android platform の API をおおむねダメだと思っているが、notification はそんななかよくできているなと思う。

Notification API のよさそのいちは、Android platform のインフラを最大限に活かしているところ。PendingIntent を渡しておくだけでアクションを定義できるのも, RemoteViews で見た目を定義できるのも、Binder や Parceleable といった基盤があってのことだ。普通に View とか Activity とかで UI をつくったりしているだけだと platform の制約ばかりを感じるけれど, notificationn API を使うと platform に助けてもらっている感じがする。

Notification API のよさその 2 は、標準の外観が定義されており、それが毎バージョンよくなっていくこと。Notification の概観は RemoteViews でも定義できるけれど現実にその必要に迫られることは少なく、普通は notification の API 越しにもうしこし高位の情報を指定すると platform が見た目を決めてくれる。おかげで notification drawer には複数のアプリがデータを突っ込んでいるにもかかわらず、割と一貫した UX を提供できている。 毎バージョンその UI がちょっとずつ良くなってるのもえらい. Oreo から入った home screen の notification dot とかも、アプリは特に何もしなくても勝手に表示されるし。まああれが良いアイデアどうかについてはまだ判断できないけれども、platform が空気を読んで色々やってくれるのは良い。

Notification の UI と platform の関係は, Home screen widget のそれと対象的だ。Widget, Android のカスタマイザビリティの象徴みたいに見られていた時期もあるけれど, notification と比べるとそんなに流行ってない。理由は色々あるとおもうけれども、ひとつは Widget アプリと Home アプリ / launcher に UI を任せすぎたせいだと個人的には思う。特に launcher が platform の一部ではないせいで, Widget の UI は OS の進化にあわせて育っていくことができなかった。Home アプリが notification のように platform の一部なら, もっとバンバン API を生やして便利に出来たかもしれないし, UX のいまいちなところも試行錯誤して直せたかもしれない。

たとえば Widget は screen real estate を使いすぎる欠点を克服できてない。Widget のホストが iPhone の dashboard みたいにスクロール可能になっていたらもうちょっと出番があった気がする。まあこの特定のアイデアの是非はともかく、Home アプリが platform の一部になっていないせいで Widget に対して API を提供するのが難しく, fine tuning が進まなかったのは事実だと思う。なんでも customizable にすればいいってもんでもないな、と思うのだった。 Launcher が part of platform だった未来が本当に良いものかといわれるとまったく自信ないけど。

Under the Radar など iOS 系の podcast を聞いていると, アプリ開発者として platform の進化についていく態度について学ぶところがある。Android は fragmentation とかもあっていまいち platform の力を頑張って引き出そうという気が起きにくいけれども, notification をみると少しは platform に bet する人の気持もわかるね。