# Slack でGitHubの通知をカスタマイズする

Slack でGitHubの通知をカスタマイズする方法について説明します。

Slack チャネルに関連するアクティビティをサブスクライブし、プロジェクトにあまり役に立たないアクティビティからサブスクライブを解除することで、通知をカスタマイズできます。

### 既定で有効になっている通知

次の通知は既定で有効になっていますが、 `/github unsubscribe owner/repo [event]` コマンドを使用して無効にできます。

| Event         | Description                                                              |
| ------------- | ------------------------------------------------------------------------ |
| `issues`      | 問題を開いた、閉じた、または再度開いた。                                                     |
| `pulls`       | 新規またはマージ済みの pull request、ready for review としてマークされた draft Pull request 。 |
| `commits`     | 既定ブランチ上の新規コミット。                                                          |
| `releases`    | 公開されたリリース。                                                               |
| `deployments` | 展開の状態の更新。                                                                |

### 既定で無効になっている通知

次の通知は既定で無効になっていますが、 `/github subscribe owner/repo [event]` コマンドを使用して有効にできます。

| Event                 | Description                       |
| --------------------- | --------------------------------- |
| `reviews`             | Pull request のレビュー。               |
| `workflows`           | アクション ワークフローが実行されます。              |
| `branches`            | ブランチを作成または削除しました。                 |
| `comments`            | 問題とプルリクエストに関する新しいコメント。            |
| `commits`             | 任意のブランチへのすべてのコミット。                |
| `discussions`         | ディスカッションが作成または回答されました。            |
| `+label:"your label"` | ラベルに基づいて、イシュー、プルリクエスト、コメントを管理します。 |

一度に複数の設定を登録または解除できます。 例えば次が挙げられます。

* pull request レビューとコメントのアクティビティを有効にするには、 `/github subscribe owner/repo reviews comments`を使用します。
* 問題と pull request のアクティビティをオフにするには、 `/github unsubscribe owner/repo issues pulls`を使用します。

## 通知のフィルター処理

分岐フィルターとラベル フィルターを使用して、通知をさらにカスタマイズできます。 ブランチ フィルターを使用すると、ブランチ名に基づいてコミット通知をフィルター処理できますが、ラベル フィルターを使用すると、問題をフィルター処理したり、それらに適用されたラベルに基づいて要求通知をプルしたりできます。

### コミット通知の分岐フィルター

ブランチ フィルターを使用すると、ブランチ名に基づいてコミット通知をフィルター処理できます。 既定では、 `commits` イベントをサブスクライブすると、既定のブランチの通知が表示されます。 ただし、特定のブランチ、ブランチのパターン、またはすべてのブランチを基準としてフィルター処理を選択できます。

| 構成例                                              | Description            |
| ------------------------------------------------ | ---------------------- |
| `/github subscribe owner/repo commits`           | 既定のブランチのコミット通知を受信します。  |
| `/github subscribe owner/repo commits:main`      |                        |
| `main` ブランチのコミット通知のみを受信します。                      |                        |
| `/github subscribe owner/repo commits:feature/*` |                        |
| `feature/`で始まるすべてのブランチのコミット通知を受け取ります。            |                        |
| `/github subscribe owner/repo commits:*`         | すべてのブランチのコミット通知を受信します。 |

> \[!NOTE] 以前に、 `commits:all` フィルターを使用して、すべてのブランチのコミット通知を受信している可能性があります。 このフィルターは 閉鎖 です。 すべてのブランチのコミット通知を受信するには、代わりに `commits:*` フィルターを使用します。
> `commits:all` フィルターを以前に設定している場合は、`commits:*` フィルターを使用するように構成を更新するまで引き続き動作します。

### 問題とプルリクエストの通知に対するラベルフィルター

ラベル フィルターを使用すると、問題やプル要求に適用されたラベルに基づいて通知をフィルター処理できます。 ラベル フィルターを設定すると、指定したラベルを含むイベントの通知のみが送信されます。 ラベルの詳細については、「 [ラベルを管理する](/ja/enterprise-server@3.22/issues/using-labels-and-milestones-to-track-work/managing-labels) 」と [「AUTOTITLE」を](/ja/enterprise-server@3.22/issues/tracking-your-work-with-issues/using-issues/filtering-and-searching-issues-and-pull-requests)参照してください。

現時点では、リポジトリごとに必要なラベル フィルターを 1 つだけ持つことができます。 次の表は、ラベル フィルターの影響を受けるイベントの種類を示しています。

| イベントの種類      | ラベルでフィルタリングされています                                                                                                                                                                                                                                                                                                                                                                                                            |
| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Pull Request | <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-check" aria-label="Included" role="img"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path></svg>                                                                                                      |
| 問題           | <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-check" aria-label="Included" role="img"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path></svg>                                                                                                      |
| Comments     | <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-check" aria-label="Included" role="img"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path></svg>                                                                                                      |
| Reviews      | <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-check" aria-label="Included" role="img"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path></svg>                                                                                                      |
| コミット/プッシュ    | <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-x" aria-label="x icon" role="img"><path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path></svg> |
| 支店           | <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-x" aria-label="x icon" role="img"><path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path></svg> |

#### ラベル フィルターの作成

ラベル フィルターを作成するには、次のコマンド形式を使用します。

```text copy
/github subscribe [owner/repo] +label:"your label"
```

これにより、 `your label`値を持つ必須ラベル フィルターが作成されます。 フィルターをサポートする受信イベントは、そのラベルがない限り破棄されます。

#### ラベル フィルターの更新

新しいラベル値を指定することで、既存のラベル フィルターを更新できます。

```text copy
/github subscribe [owner/repo] +label:"new label"
```

これにより、「あなたのラベル」フィルターが「新しいラベル」フィルターに置き換わります。

#### ラベル フィルターの削除

`+label` オプションを指定して unsubscribe コマンドを使用して、既存のラベル フィルターを削除できます。

```text copy
/github unsubscribe [owner/repo] +label:"new label"
```

これにより、"新しいラベル" フィルターが削除され、チャネルは、ラベルのフィルター処理なしでサブスクライブされたイベントのすべての通知を受け取ります。

#### アクティブなラベル フィルターの表示

チャネルの現在アクティブなラベル フィルターを表示するには、次のコマンドを使用します。

```text copy
/github subscribe list features
```

#### 有効なフィルター

Slack の GitHub アプリは、Slack と GitHub が標準として提供するすべての絵文字を含む、ラベル フィルターの最も一般的な特殊文字をサポートしています。 サポートされていない特殊文字を含むラベルが表示されることはほとんどありません。 たとえば、 `:foo:`としてエンコードされていないマルチバイト文字や、 `,` 文字を使用するラベルが期待どおりに機能しない場合があります。

## アクションワークフロー通知

"workflows" 機能を使用すると、チャンネルまたは個人アプリから GitHub Actions のワークフロー実行通知を購読できます。形式は `/github subscribe owner/repo workflows` を使用します。

"ワークフロー" をサブスクライブしている場合は、次の機能を使用できます。

* 新しいワークフロー実行がトリガーされると、通知が表示されます。

* スレッドで承認通知を返信として追跡でき、チャネル/個人用アプリから直接通知を承認できます。

* ワークフローが完了すると、スレッドでワークフローの実行に関するコンテキストと履歴を確認できるように、新しい情報が届きます。

* 何かが失敗した場合は、ワークフローを再実行することを選択できます。また、必要に応じてデバッグ ログを有効にすることもできます。

> \[!NOTE] 2025-03-10 (GHES バージョン 3.17) 以降、個々のワークフロー ジョブの進行状況は通知されなくなります。 詳細については、 [GitHub の変更ログ](https://github.blog/changelog/2025-02-03-deprecation-of-real-time-github-actions-workflow-job-events-in-slack-and-microsoft-teams-apps/) を参照してください。

### ワークフロー通知フィルター

ワークフロー通知をフィルター処理するには、次のオプションを使用します。

| Filter                                                       | Description                                           |
| ------------------------------------------------------------ | ----------------------------------------------------- |
| `name`                                                       | ワークフローの名前でフィルター処理します。                                 |
| `actor`                                                      | ワークフローを開始したユーザーによってフィルタリングします。                        |
| `branch`                                                     | ワークフローが実行されているブランチでフィルター処理します。                        |
| `pull_request` イベントが含まれている場合、ブランチはプル要求が作成されるターゲット ブランチになります。 |                                                       |
| `event`                                                      | ワークフローをトリガーしたイベント (プッシュ、pull\_requestなど) でフィルター処理します。 |

ワークフロー通知フィルターは、次の形式で構成できます。

```text copy
/github subscribe owner/repo workflows:{name:"your workflow name" event:"workflow event" branch:"branch name" actor:"username"}
```

コンマで区切って、フィルターごとに複数の値を渡すこともできます。 例えば次が挙げられます。

```text copy
/github subscribe owner/repo workflows:{name:"your workflow name","another workflow name" event:"workflow event","another workflow event" branch:"branch name","another branch name" actor:"username","another-username"}
```

既定では、フィルターを渡さずにワークフロー通知を構成すると、既定のブランチを対象とするプル要求によってトリガーされるワークフロー用に構成されます。 1 つまたは複数のエントリを渡すことができます。

ワークフロー通知の登録を解除するには、`/github unsubscribe owner/repo workflows` コマンドを使用します。

> \[!NOTE] SlackでGitHub Actionsの通知を受け取るには、GitHubアプリに追加の権限が必要です。 ワークフローを初めてサブスクライブしようとすると、これらのアクセス許可を付与するように求められます。

## デプロイ通知

個別のデプロイ通知を構成することもできます。 これらのデプロイは、GitHub Actions から、またはデプロイ API を使用して外部ソースから行うことができます。 「[デプロイ用の REST API エンドポイント](/ja/enterprise-server@3.22/rest/deployments/deployments?apiVersion=2022-11-28)」を参照してください。

`/github subscribe/unsubscribe owner/repo deployments`コマンドを使用して、デプロイ通知のサブスクライブ/サブスクライブ解除を行うことができます。

> \[!NOTE] GitHub Actions を使用していて、環境へのデプロイを追跡する場合は、 `workflows` 機能をお勧めします。これは、より完全な画像と、Slack から直接デプロイを承認する機能を提供するためです。