あなたのアプリは大丈夫？！　今すぐプッシュ通知のチャンネルを見直そう！！

# この記事を書いたきっかけ

ある日何気なく某アイスクリーム屋のアプリの通知の設定を確認したら、衝撃的なものを目にした！

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3288957/9e823e3b-d478-bac4-f4ee-7c8cc9373995.png" width="250">

**31club_channel_name**

channel_nameってなんだよ！　クラス名を 31ClassName みたいにしているようなものじゃん！！ 

# そもそもプッシュ通知チャンネルって？

プッシュ通知チャンネルは、Android 8.0（API レベル 26）で割り当てるようになったもので、通知をグループ化するためのもの。
この機能によってユーザーは「このアプリの大事な通知は受け取りたいな　でも広告はいいや」といった設定が可能になる。

[参考: https://developer.android.com/develop/ui/views/notifications/channels?hl=ja ](https://developer.android.com/develop/ui/views/notifications/channels?hl=ja)

# 集計してみた

さて他のアプリはどのように設定されるか気になったので集計してみた。
私のスマホに入っているアプリを集計したので偏りがあることはご容赦願いたい🙏

| アプリ名          |                                                                                                                            チャンネル名 |
|:--------------|----------------------------------------------------------------------------------------------------------------------------------:|
| Chrome        |                                          全般[ブラウザ,完了したダウンロード,アクティブなダウンロード,シークレットモード,再生中のメディア,ログイン認証,共有,全画面表示時のサイトの操作項目,カメラとマイクの使用] |
| Gmail         | (任意のメールアドレス)[メール] その他[その他,添付ファイルのダウンロード,添付ファイル] その他[デバイス間でのメールアカウントの移行,その他の通知,着信,参加リクエスト,不在着信,通話中,進行中の通知に関する変更,データダウンロードの通知チャンネル] |
| LINE          |                            通話[着信,進行状況,アクティビティ] その他[友達リスト,一般通知,グループへの招待,LINE Pay,メッセージ通知,オープンチャットのアクティビティ,LINE Things,LINE VOOM通知] |
| UNIQLO        |                                                                                                                             メッセージ |
| やまなか家         |                                                                                      Miscellaneous, High Importance Notifications |
| クラシル          |                                                                                                     お得な情報,クラシルからのおすすめ,その他,おすすめレシピ |
| モスバーガー        |                                                                                                                 General,モスフードサービス |
| ピッコマ          |                                                                      AudioBook Player,お知らせ通知,￥0+券回復通知,「待てば￥0チャージ完了通知」,ダウンロードの進捗表示 |
| Udemy         |                                                                                 背景ビデオ,学習リマインダー,ダウンロード,特別キャンペーン,ビデオのダウンロード,General |
| Slack         |                                                                                                                             Slack |
| Amazon ショッピング |                                                                                                                     Notifications |
| 薬王堂公式アプリ      |                                                                                                     Miscellaneous,Default channel |
| DCM           |                                                                                                  アプリからの通知,アプリからのすべての通知,アプリからのお知らせ |
| Spotify       |                                                                                                          Spotify,再生,Spotify Music |
| ローソン          |                                                                                                             お知らせ配信, Miscellaneous |
| えきねっと         |                                                                                                                        ご案内情報,予約情報 |
| Bluesky       |                                                                                                                               その他 |
| セブン-イレブン      |                                                                                                        SEJ Notifications,セブン-イレブン |
| ツルハドラッグ       |                                                                                                                      アプリからのすべての通知 |
| 31Club        |                                                                                                 31club_channel_name,Miscellaneous |
| Coke ON       |                                                                                                             Miscellaneous,重要通知,通知 |
| メルカリ          |                                                                                                                      メルカリ,General |
| ジョーシン         |                                                                                                            Default,Silent,Vibrate |
| 吉野家           |                                                                                                                     Miscellaneous |
| 英語の友          |                                                                                                                        eigonotomo |
| 楽天ペイ          |                                                                                                                       Default,その他 |
| ゲオ            |                                                                                                                        ゲオアプリからの通知 |
| ﾏｲﾅﾎﾟｰﾀﾙ      |                                                                                                                                通知 |
| ミニストップ        |                                                                                                                            ミニストップ |
| PRINT         |                                                                                                           Information from Cannon |
| Domino's      |                                                                                                                          Domino's |
| アニメイト         |                                                                                                                              お知らせ |
| マクドナルド        |                                                                                                                             デフォルト |
| ドスパラ          |                                                                                                                     Miscellaneous |
| ココウェブ         |                                                                                                                              お知らせ |
| Kindle        |                                                                                                                            Kindle |
| Notion        |                                                                                                                            Notion |
| PayPay        |                                                                                                                            PayPay |
| 更新情報          |                                                                                                                          その他,更新情報 |
| Steam         |                                                                           Local Notification Received,Remote Notification Receive |


# Miscellaneous ってなに？

調べてみるとFirebaseを使用しているときに自動的に生成されるみたいだ。

> ・android_channel_idがメッセージに含まれてなかった。そのためbackgroundでの通知ではアプリ内設定のデフォルト通知チャネルに通知されていた
> ・Manifestに設定するAndroidデフォルトの通知チャネルID default_notification_channel_idになぜかチャネルIDではなくチャネル名（文字列）が設定されていた
> ・そのため、Firebase側でMiscellaneous（その他）チャネルが自動的に生成されてこのチャネルに通知されていた

[引用元: https://zenn.dev/96mame/articles/4c674704c63578](https://zenn.dev/96mame/articles/4c674704c63578)

私がFirebaseを使って開発したアプリもMiscellaneousになっていた。
ちゃんと設定していないことがバレてしまった。

# 分析

やはりGoogleのアプリは構造化がされていて、チャンネルも細かく設定されていた。
みなさんのお手元のスマホでも確認してもらいたい。

さて、表を見てみるとアプリ名がチャンネル名になっているパターンがよく見られる。

| アプリ名   | チャンネル名 |
|:-------|-------:|
| ミニストップ | ミニストップ |


しかしそのアプリからの通知であることは自明なのだからこれは冗長だと思う。意味のあるチャンネルに分けてそれぞれを適切に使うべきだ。
これはオブジェクト志向のクラスの命名にも言えることだが、 あまりにも範囲の広い名前だと使う側の人間は乱雑に使ってしまう。
このようなことを避けるためにも、あらかじめ設計段階で取り決めを行うべきだろう。
だが非機能要件の中でも地味な部分だから、なかなか取り組む人がいないのかもしれない。

ところでDCMのアプリは地味にひどいことになっていることをお気づきだろうか
| アプリ名          |                                                                                                                       チャンネル名 |
|:--------------|----------------------------------------------------------------------------------------------------------------------------------:|
| DCM           |                                                                                                  アプリからの通知,アプリからのすべての通知,アプリからのお知らせ |

開発チーム内でのコミュニケーションがうまくいっていないのか、重複しまくっている。
これは明らかなアンチパターンだ。

# さいごに

プッシュ通知のチャンネルはあまりユーザーに意識されない部分かもしれないけど、細かい部分が積み重なってユーザーのUXに影響を与えることと思う。神は細部に宿るとも言うし気をつけていきたい。
ここまで読んでいただきありがとうございました。

この記事が面白いと思ったらいいね👍、RTをお願いします！