あなたはSlackのメンションをきちんと使い分けられていますか？

Slackを使う上で欠かせないのがメンション機能です。
ただ、この場合はどのメンションを使うのが適切だろうか、通知がうるさくならないだろうか、などと迷ったことがある方もいるのではないでしょうか。
本記事では、Slackのメンションについて詳しく解説し、通知の挙動を検証します。

※ 本記事は2024/06/23に検証した結果に基づきます。

# メンションの種類について
Slackでは以下のメンションが使えます。

- `@everyone`
- `@channel`
- `@here`
- 個人宛てのメンション
- ユーザーグループのメンション(有料プランのみ)

このうち、`@everyone`は`#general`チャンネルのメンバー全員に通知するという限られた用途のメンションのため、本記事ではこれ以上取り上げません。
また、ユーザーグループのメンションも有料プランでしか使えないため割愛します。

# まずは知ってほしい情報のまとめ
ここからは挙動の検証が続くので、長い記事を読んでいる時間がない人向けに、まずは知っておいてもらいたい情報を示します。

- `@channel` はチャンネルの**全メンバー**、`@here` はチャンネルの**アクティブなユーザー**に通知される
    - 今見ているユーザーに届けるなら `@here`、全員に必ず届いてほしいなら `@channel` と言える
    - ただし「`@channel` と `@here` も含む」をオフにするなど、通知が来ないように設定しているユーザーがいる可能性はある
        - チャンネルには入っていたいが全体向けの通知は必要ない場合にこの設定は便利
- グループDMもチャンネルと同様の通知設定が可能
- `@channel` や `@here` の付いたメッセージに返信しても**通知は送信されない**
- スレッドの通知はオフにできるため、必ず返信が欲しい場合は**メンションを付けるべき**
- メッセージを編集してメンションを追加しても**通知されない場合がある**ため、別途メンションすべき

# 挙動を検証する
ここからは実際にメンションを使って、通知の挙動を検証していきます。
検証の対象は以下の通りです。

- メンション
    - `@channel`
    - `@here`
    - 個人宛てのメンション
- チャンネルの設定
    - 「通知の送信」が「すべての新規メッセージ」
    - 「通知の送信」が「メンション」かつチャンネルの設定で「`@channel` と `@here` も含む」がオン
    - 「通知の送信」が「メンション」かつチャンネルの設定で「`@channel` と `@here` も含む」がオフ
    - 「通知の送信」が「なし」
    - チャンネルをミュートする
- メッセージの送信場所
    - チャンネル
    - 1対1のDM
    - グループDM
    - スレッド
- 検証デバイス
    - Windowsアプリ
    - Android
    - iPad
- Slackを開いているか
    - YES
    - NO(PCアプリやブラウザでは開いていないと通知が来ないためモバイルのみ)
- ステータス
    - アクティブ
    - 離席中

なお、環境設定の「通知のタイミング」は「ダイレクトメッセージ & メンション & キーワード」としています。
この設定が「すべての新規メッセージ」になっている場合は、メンションがなくても通知が送信されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1796319/dcb06bb7-234a-b70a-0cb3-95dc79c84833.png)


また、『「通知の送信」が「なし」』と「チャンネルをミュートする」については、『「通知の送信」が「メンション」かつチャンネルの設定で「`@channel` と `@here` も含む」がオン』の状態にしてから切り替えています。
理由については後述します。

## チャンネルの場合
### `@channel`
`@channel` を使用すると、チャンネルの全メンバーに通知が送られます。
メンバーがアクティブか離席中かは関係なく通知が届きます。
スレッドでは使うことができないことに注意が必要です。

ここからは挙動を検証していきます。

####  通知の送信が「すべての新規メッセージ」

| Slackを開いている | ステータス | 通知 | バッジ |
| --- | --- | --- | --- |
| YES | アクティブ | ○ | あり |
| YES | 離席中 | ○ | あり |
| NO | - | ○ | あり |

どの場合も通知が送信されます。
また、チャンネル一覧にバッジが表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1796319/447e1934-99e9-882e-0fef-a72b8d2fdb24.png)


#### 「通知の送信」が「メンション」かつチャンネルの設定で「`@channel` と `@here` も含む」がオン

| Slackを開いている | ステータス | 通知 | バッジ |
| --- | --- | --- | --- |
| YES | アクティブ | ○ | あり |
| YES | 離席中 | ○ | あり |
| NO | - | ○ | あり |

こちらも、どの場合も通知が送信されます。
また、チャンネル一覧にバッジが表示されます。

#### 「通知の送信」が「メンション」かつチャンネルの設定で「`@channel` と `@here` も含む」がオフ

| Slackを開いている | ステータス | 通知 | バッジ |
| --- | --- | --- | --- |
| YES | アクティブ | × | なし |
| YES | 離席中 | × | なし |
| NO | - | × | なし |

「`@channel` と `@here` も含む」という設定をオフにしているため通知は送信されません。
PCブラウザにおいてバッジは表示されていませんでしたが、AndroidやiPadでは表示されていました。
今後の検証でもバッジの表示は謎な部分が多いので、深く考えないことにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1796319/8877965c-4c37-a7ef-bff6-5e10b3bfd43a.png)


#### 「通知の送信」が「なし」

| Slackを開いている | ステータス | 通知 | バッジ |
| --- | --- | --- | --- | 
| YES | アクティブ | × | あり |
| YES | 離席中 | × | あり |
| NO | - | × | なし |

もちろん通知は送信されません。
バッジは、開いていれば付き、閉じていると付かないようです。

#### チャンネルをミュートする

| Slackを開いている | ステータス | 通知 | バッジ |
| --- | --- | --- | --- |
| YES | アクティブ | × | あり |
| YES | 離席中 | × | あり |
| NO | - | × | なし |

こちらも通知は送信されません。
『「通知の送信」が「なし」』との違いは、チャンネルリストでグレーアウト表示になり、未読タブにもメッセージが表示されないことなどが挙げられます。

バッジの挙動は『「通知の送信」が「なし」』と同様です。
Slackを開いていない時に`@channel`のメッセージがあってもバッジが表示されないようなので、気づくことができなさそうです。
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1796319/e924b621-3b37-24a7-eb29-218df255bc6b.png)

### `@here`

`@here` を使用すると、アクティブなメンバーへのみ通知が送られます。
スレッドでは使うことができないことに注意が必要です。

ここからは挙動を検証していきます。

####  通知の送信が「すべての新規メッセージ」

| Slackを開いている | ステータス | 通知 | バッジ |
| --- | --- | --- | --- | 
| YES | アクティブ | ○ | あり |
| YES | 離席中 | ○ | なし |
| NO | - | △(Androidは開くと来る) | なし |

Slackを開いている場合は通知が送信されました。
また、`@channel`と同様にチャンネル一覧にバッジが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1796319/daaabfa9-8a7c-f2e9-677c-5bf828d3befe.png)

離席中に設定している場合はバッジは表示されませんでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1796319/82af3378-1782-0f45-996f-f9072d3abd13.png)

#### 「通知の送信」が「メンション」かつチャンネルの設定で「`@channel` と `@here` も含む」がオン

| Slackを開いている | ステータス | 通知 | バッジ |
| --- | --- | --- | --- |
| YES | アクティブ | ○ | あり |
| YES | 離席中 | △(PCは×、モバイルは○) | なし |
| NO | - | △(Androidは開くと来る) | なし |

アクティブであれば通知が来ますが、離席中に設定している場合は通知が来ません。
ただ、モバイル端末(Android, iPad)ではSlackを開いていると通知が表示されました。
バグなのか仕様なのか分かりませんが、挙動の違いがありそうです。
また、AndroidではSlackを開いていなかった場合でも開くと通知が来ました。
このあたりはAndroid端末によっても違う可能性が考えられるため、参考程度の結果と言えそうです。

バッジはアクティブな場合は表示され、離席中は表示されないという、『通知の送信が「すべての新規メッセージ」』と同じ結果となりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1796319/3c2e44be-775b-7b33-2a8f-1be75fb0e77d.png)


#### 「通知の送信」が「メンション」かつチャンネルの設定で「`@channel` と `@here` も含む」がオフ

| Slackを開いている | ステータス | 通知 | バッジ |
| --- | --- | --- | --- |
| YES | アクティブ | × | なし |
| YES | 離席中 | × | なし |
| NO | - | × | なし |

どの場合も通知は来ません。
またバッジについては、PCブラウザにおいてバッジは表示されていませんでしたが、AndroidやiPadでは表示されるという`@channel`の時と同じ状況となりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1796319/450312f2-3329-b8c6-3cde-2f70edab7c7d.png)

#### 「通知の送信」が「なし」

| Slackを開いている | ステータス | 通知 | バッジ |
| --- | --- | --- | --- |
| YES | アクティブ | × | あり |
| YES | 離席中 | × | なし |
| NO | - | × | なし |

どの場合も通知は来ません。
バッジは、アクティブな場合は表示され、離席中は表示されないという結果になりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1796319/b6d7ccd3-2c76-2cd9-6e8e-55b235375a25.png)

#### チャンネルをミュートする

| Slackを開いている | ステータス | 通知 | バッジ |
| --- | --- | --- | --- |
| YES | アクティブ | × | あり |
| YES | 離席中 | × | なし |
| NO | - | × | なし |

どの場合も通知は来ません。
バッジは、アクティブな場合は表示され、離席中は表示されないという結果になりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1796319/6e2b333f-4361-53ac-c6bc-10026e538c5a.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1796319/713dc1ab-805a-8e10-687a-421043de3419.png)

### 個人宛てのメンション
ユーザー名を指定するメンションです。
一番使用機会が多いのではないかと思います。

####  通知の送信が「すべての新規メッセージ」

| Slackを開いている | ステータス | 通知 | バッジ |
| --- | --- | --- | --- |
| YES | アクティブ | ○ | あり |
| YES | 離席中 | ○ | あり |
| NO | - | ○ | あり |

どの場合も通知が送信されます。
また、チャンネル一覧にバッジが表示されます。
`@channel`と同じ結果ですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1796319/1c6e95f2-18c5-e111-2c5d-9edbee2120bb.png)

#### 「通知の送信」が「メンション」かつチャンネルの設定で「`@channel` と `@here` も含む」がオン

| Slackを開いている | ステータス | 通知 | バッジ |
| --- | --- | --- | --- |
| YES | アクティブ | ○ | あり |
| YES | 離席中 | ○ | あり |
| NO | - | ○ | あり |

こちらも、どの場合も通知が送信されます。
また、チャンネル一覧にバッジが表示されます。
`@channel`と同じ結果です。

#### 「通知の送信」が「メンション」かつチャンネルの設定で「`@channel` と `@here` も含む」がオフ

| Slackを開いている | ステータス | 通知 | バッジ |
| --- | --- | --- | --- |
| YES | アクティブ | ○ | あり |
| YES | 離席中 | ○ | あり |
| NO | - | ○ | あり |

こちらも、どの場合も通知が送信されます。
また、チャンネル一覧にバッジが表示されます。
「`@channel` と `@here` も含む」をオフにしたところで個人宛てには関係ないため、想定通りの結果です。

#### 「通知の送信」が「なし」

| Slackを開いている | ステータス | 通知 | バッジ |
| --- | --- | --- | --- |
| YES | アクティブ | × | あり |
| YES | 離席中 | × | あり |
| NO | - | × | あり |

どの場合も通知は送信されませんが、バッジは表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1796319/1538f5d3-f80a-8470-cac2-d1fafdf72458.png)


#### チャンネルをミュートする

| Slackを開いている | ステータス | 通知 | バッジ |
| --- | --- | --- | --- |
| YES | アクティブ | × | あり |
| YES | 離席中 | × | あり |
| NO | - | × | あり |

どの場合も通知は送信されませんが、バッジは表示されます。
チャンネルをミュートにしていても、自分宛てのメンションがあれば気づけることが分かります。
ただし、ミュートしているため未読タブには表示されません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1796319/8a514d21-a063-d1b6-d70d-e59789a06e37.png)

#### メンションされた相手がチャンネルに参加していない場合
チャンネルに参加していないユーザーに間違えてメンションしてしまったらどうなるのだろうかと気になったことがある方もいると思います。

そもそも、チャンネルに参加していない場合は「チャンネル未参加」という表記が出るため、この時点で気づくことができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1796319/a4eb310d-fd20-633f-af00-ae1d83f7ef3d.png)
それでも送信しようとすると、チャンネルに追加するかどうか聞かれます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1796319/f33165ba-6d04-cd8a-0326-6c8e25a58eff.png)
「このメッセージを送信する」とすれば、チャンネルに追加せずに送信でき、さらにメッセージが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1796319/70a265b1-c767-cc5a-77db-39b4c47b051c.png)
「メンバーに知らせる」を選択すると、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1796319/437705e8-882e-2aa2-0a55-726e98b928cf.png)
Slackbotから通知が届きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1796319/1393ccab-99c3-c972-3de6-cae1bc58b628.png)

もちろん、途中の選択肢で追加や招待を選択すれば、チャンネルに追加することができます。

## 1対1のDM

1対1のDMでは `@channel`, `@here` は使えません。そもそもDMはメンションに関わらず通知されるので、使う機会がないからと思われます。

では、DMがミュートされていたらどうなるのかというと、通知は来ずバッジのみ表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1796319/83dc9344-b824-7754-e2f0-8b3582f75376.png)

個人宛てのメンションも使う機会がなさそうに思えますが、実は必要な場面があります。
それはDM内のスレッドです。
スレッドについては後述しますが、自分がフォローしていないスレッドのメッセージは通知が送信されません。
そのため、その場合は個人宛てのメンションを使うことで、相手にスレッドの存在を知らせることができます。

## グループDM
SlackではチャンネルのほかにグループDMも存在します。
グループDMは、通知の送信が「すべての新規メッセージ」となっているためすべてのメッセージについて通知を受け取っている方が多いと思いますが、チャンネルと同じ通知設定が可能です。
`@channel` と `@here`が使えないため、『「`@channel` と `@here` も含む」』という選択肢がない点のみ違いがあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1796319/380f80d9-aa06-d750-f047-c466965e7469.png)

チャンネル同様に検証したところ、特筆すべき点はなさそうだったので割愛します。

## スレッド
ドキュメントによると、デフォルトでは以下のスレッドに新しい返信があった場合に通知が届きます。

- 自分が開始したスレッド
- 返信したことがあるスレッド
- 自分がメンションされたスレッド

また、スレッドは各メッセージごとに返信を受け取るか設定することができます。

「新しい返信の通知を受け取る」を選択しておくと、スレッドに返信があった際に通知が来ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1796319/d7b1ca73-35b6-c572-05bd-669e46a1765f.png)

また、上記3つのスレッドのうち、「自分が開始したスレッド」と「返信したことがあるスレッド」はメッセージを送った時点で右下の画像の表記になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1796319/33da9fe9-3285-fb7f-04ef-868bc59adbef.png)

つまり、表記と状態をまとめると以下の通りです。
- 「新しい返信の通知を受け取る」：スレッドをフォローしていない状態で、通知が来ない
- 「返信の通知をオフにする」：スレッドをフォローしている状態で通知が来る

### 余談：「自分がメンションされたスレッド」だけ表記が違う...？
「自分がメンションされたスレッド」は「新しい返信の通知を受け取る」表記のままですが、スレッドに返信があると「返信の通知をオフにする」の表記に変化します。
本来、最初から「返信の通知をオフにする」になっているべきな気がしますが、メンションされた時点でスレッドはフォローした状態になっていると思えば良いでしょう。

この表記だと、自分がメンションされたスレッドは最初から返信の通知をオフにできなさそうですが、一度「新しい返信の通知を受け取る」を選択してから「返信の通知をオフにする」を選択することで、通知を受け取らないことができました。


### 「自分がメンションされたスレッド」の範囲

`@channel` も自分がメンションされたと言えそうですが、スレッドへの返信の通知が来るのは以下の通りです。

| メンション | 通知 |
| --- | --- |
| `@channel` | 来ない |
| `@here` | 来ない |
| 個人メンション | 来る |
| グループメンション | 来る |

`@channel`や`@here`といった全体メンションされたメッセージでスレッドも見ておきたい場合は、自分で「新しい返信の通知を受け取る」を選択しておくと良いでしょう。
また、`@channel`の入ったメッセージのスレッドで、「全員に通知が行ってしまうからメッセージを分けなければ！」というやり取りを見かけたことがありますが、この検証からその必要はなさそうなことが分かります。

### 通知が来ない例外ケース

次の場合は通知が来ません。

- 各メッセージの「返信の通知をオフにする」で明示的に通知が来ないようにしている場合
- 「環境設定」→「通知」→「フォロー中のスレッドに返信があった時に通知する」をオフにしている場合
    - スレッドの未読やアクティビティには表示されます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1796319/5eef2fab-0da0-bf3f-1150-5306acf9104d.png)

このように、スレッドの通知は来ないようにできるため、必ず返信が欲しい場合は個人メンションやグループメンションを付けた方が良いでしょう(相手が見てくれていそうな保証がある時などはいちいち付けるのも面倒なのでなくても良いと思いますが)。

また、1対1のDMだと、「フォロー中のスレッドに返信があった時に通知する」の設定がないため、自分のメッセージに対して返信をする場合はメンションを入れた方が良いでしょう。

## メッセージを編集した場合
あ、メンション付け忘れた...ということありますよね。
メッセージを編集して付ける場合があると思いますが、その時通知がどうなるのか検証します。

チャンネルの設定は、「メンション」であり、メンションがないと通知されないがメンションがあれば通知される状態とします。

メンションなしでメッセージを送ると当然通知は送られません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1796319/223ccdf7-197b-e07c-43a4-d5f48ba74a0b.png)

メッセージを編集して`@channel`を追加すると、バッジは表示されるようになりましたが、通知は来ませんでした。
ただし、AndroidとiPadでは通知が来ています(もっと古いメッセージを編集しても通知は来なかったので条件は不明)。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1796319/ec8a2514-2cb3-9597-02ac-14d6283730f4.png)

`@here`、個人宛てのメンションでも同様でした。

また、後から個人宛てのメンションを追加したメッセージに返信したところ、通知が来ました。
メッセージをフォローした状態にはなるようです。

通知が送信される場合もありますが、送信されないケースも確認できたため、メンションを付け忘れた場合は編集して追加するのではなく、別のメッセージとして送った方が良いでしょう。
そのメッセージ自体は通知されていなくても良いが、スレッドのメッセージは気づいていてほしいという場合であれば、編集して追加でも問題ないかもしれません。

# 余談：バッジの挙動
文中でも触れましたが、バッジの挙動は謎です。

例えば、ミュートしたチャンネルで `@channel` を使った場合、バッジが表示されると述べました。
実は、表示されない場合があります。

それは、『「通知の送信」が「メンション」かつチャンネルの設定で「`@channel` と `@here` も含む」がオフ』の状態にしてからミュートした場合です。
どうやら、この設定は裏で別に管理されている感じがあり、同じミュート状態でもこの設定が効いていそうな雰囲気があります。
この設定はメンションを選択した際にしか表示されないのですが、他の選択肢を選んでいる状態から、メンションを選択した際に前の選択状態が記憶されていることからも推測できます。
これが、

> 『「通知の送信」が「なし」』と「チャンネルをミュートする」については、『「通知の送信」が「メンション」かつチャンネルの設定で「@channel と @here も含む」がオン』の状態にしてから切り替えています。

と明記していた理由です。

また、デバイスによっても差があります。
例えば `@here` を使った際の挙動です。

「通知の送信」が「メンション」かつチャンネルの設定で「`@channel` と `@here` も含む」がオン、Slackを開いた状態で離席中に設定している場合、Windowsアプリではバッジは表示されないと述べました。
実はこの時、iPadではバッジは表示されており、Androidでは一瞬表示されたあとバッジが消えるという挙動になっていました。
特にモバイル端末は端末によって挙動が変わる場合がありそうなので、これ以上検証するのはやめましたが、バッジにはあまり頼らない方が良いのかもしれません。

# 最後に
ここまでさまざまな環境でのメンションを検証してきました。
ここまでお読みいただいた皆さんは、どのようにメンションを使い分けたら良いか考えるきっかけになったのではないでしょうか。

少しでも参考になっていれば幸いです。

# 参考サイト
https://slack.com/intl/ja-jp/help/articles/205240127-Slack-%E3%81%A7%E3%83%A1%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B

https://slack.com/intl/ja-jp/help/articles/202009646-%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E3%82%84%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9%E3%81%AB%E9%80%9A%E7%9F%A5%E3%81%99%E3%82%8B

https://slack.com/intl/ja-jp/help/articles/204411433-%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E3%81%A8%E3%83%80%E3%82%A4%E3%83%AC%E3%82%AF%E3%83%88%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%82%92%E3%83%9F%E3%83%A5%E3%83%BC%E3%83%88%E3%81%99%E3%82%8B

https://slack.com/intl/ja-jp/help/articles/115000769927-%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E4%BC%9A%E8%A9%B1%E3%82%92%E6%95%B4%E7%90%86%E3%81%99%E3%82%8B-

https://slack.com/intl/ja-jp/help/articles/360025446073-Slack-%E9%80%9A%E7%9F%A5%E3%82%AC%E3%82%A4%E3%83%89