# Slack 向け Tuist インテグレーション {#slack}

Slack 向け Tuist のインテグレーションは、ビルド、テスト、バンドルのインサイトをチャンネルに直接表示します。チームが意識して行う必要があったモニタリングを、自動で発生するものに変えます。たとえば、チームはビルドパフォーマンス、キャッシュヒット率、バンドルサイズの傾向に関する日次サマリーを受け取ったり、主要な指標が悪化したりテストが flaky になった瞬間に即時アラートを受け取ったりできます。

このページでは、インテグレーションの機能、チャンネル単位でのインストール方法、Tuist がデータをどのように扱うかを説明します。Tuist がサードパーティのデータを収集、管理、保存する方法の詳細については、[プライバシーポリシー](https://tuist.dev/privacy)をご覧ください。

## インテグレーションの仕組み {#how-it-works}

Tuist は Slack の [Incoming Webhooks](https://docs.slack.dev/messaging/sending-messages-using-incoming-webhooks) を介して Slack に通知を送信します。このインテグレーションが要求するのは `incoming-webhook` スコープのみです。各通知宛先（プロジェクトレポート、アラートルール、flaky テストアラート、自動化アクション）は、インストール時に選択した単一の Slack チャンネルに対応します。Slack はチャンネルごとに 1 つの Webhook URL を作成し、Tuist はそれを保存してメッセージを配信します。

Tuist はワークスペースからメッセージ、メンバーリスト、その他のデータを読み取ることはありません。このインテグレーションは、明示的に承認したチャンネルにのみ通知を書き込みます。

## セットアップ {#setup}

### プロジェクトレポート {#project-reports}

プロジェクトレポートは、プロジェクトのビルド、テスト、キャッシュ指標の日次サマリーを選択した Slack チャンネルに配信します。

1. Tuist ダッシュボードでプロジェクトの通知設定を開きます。
2. **Select Slack channel** をクリックし、Tuist が投稿するワークスペースとチャンネルを選択します。Slack は `incoming-webhook` スコープの承認を求め、単一のチャンネルを選択させます。
3. 日次レポートを受信したい曜日と時刻を選択します。

![Slack レポート設定を含む通知設定を示す画像](/images/guides/integrations/slack/notifications-settings.png)

設定が完了すると、Tuist は選択したチャンネルに自動的な日次レポートを送信します。

<img src="/images/guides/integrations/slack/report.png" alt="Slack レポートメッセージを示す画像" style="max-width: 500px;" />

> [!NOTE] PRIVATE CHANNELS
> <!-- -->
> プライベートチャンネルに投稿するには、まず Slack 内でチャンネルを開き、認証ステップ中にインテグレーションに表示されるチャンネルのリストに追加してください。
> <!-- -->

### アラートルール {#alert-rules}

アラートルールは、主要な指標が大幅に悪化したときに Slack で通知し、ビルドの遅延、キャッシュの劣化、テストの低速化をできるだけ早く検出できるようにします。

アラートルールを作成するには、プロジェクトの通知設定に移動し、**Add alert rule** をクリックします。次の項目を設定できます。

- **Name**: アラートの説明的な名前
- **Category**: 測定対象（ビルド時間、テスト時間、キャッシュヒット率、またはバンドルサイズ）
- **Metric**: データを集計する方法（p50、p90、p99、または平均）
- **Deviation**: アラートをトリガーする変化率
- **Rolling window**: 比較対象とする直近の実行回数
- **Branch**: キャッシュヒット率のアラートの場合、比較を単一ブランチ上の実行に制限します。空のままにするとすべてのブランチを対象とします。バンドルサイズのアラートは常に単一ブランチを対象とします。
- **Slack channel**: 宛先チャンネル。上記と同じ `incoming-webhook` フローを通じてチャンネルを承認します。

たとえば、p90 ビルド時間が過去 100 回のビルドと比較して 20% 以上増加したときにトリガーされるアラートを作成できます。

キャッシュを投入するのがデフォルトブランチのみである場合、キャッシュヒット率のアラートをそのブランチに限定すると便利です。低レベルモジュールに触れるプルリクエストブランチは正当にキャッシュミスを起こし、それらを含めると期待される悪化に対してアラートが発火してしまいます。

キャッシュヒット率のアラートは、公平に比較できるウィンドウのみを比較します。両方のウィンドウにはローリングウィンドウサイズと同じ数の実行が含まれている必要があり、2 つのウィンドウの片方にしか現れないキャッシュデータソースは両方から除外されます。したがって、実行回数がローリングウィンドウサイズの 2 倍に達していないブランチや、何にも一致しないブランチ名はルールをトリガーしません。トラフィックの少ないブランチにルールを限定する場合は、ブランチが埋まる程度にローリングウィンドウを小さくしてください。

アラートがトリガーされると、Slack チャンネルに次のようなメッセージが届きます。

<img src="/images/guides/integrations/slack/alert.png" alt="Slack アラートメッセージを示す画像" style="max-width: 500px;" />

> [!NOTE] COOLDOWN PERIOD
> <!-- -->
> アラートがトリガーされた後、同じルールでは 24 時間以内に再度発火しません。これにより、指標が高い状態が続いた場合の通知疲れを防ぎます。
> <!-- -->

### Flaky テストアラート {#flaky-test-alerts}

Flaky テストアラートは、Tuist が新しい flaky テストを検出した瞬間にトリガーされ、チームに影響が出る前にテストの不安定さを検出できるようにします。

Flaky テストアラートルールを作成するには、プロジェクトの通知設定に移動し、**Add flaky test alert rule** をクリックします。次の項目を設定できます。

- **Name**: アラートの説明的な名前
- **Trigger threshold**: アラートをトリガーするために必要な過去 30 日間の flaky な実行の最小回数
- **Slack channel**: 宛先チャンネル。`incoming-webhook` フローを通じて承認されます。

テストが flaky になり、しきい値を満たすと、テストケースを調査するための直接リンクを含む通知が届きます。

<img src="/images/guides/integrations/slack/flaky-test-alert.png" alt="Slack の flaky テストアラートメッセージを示す画像" style="max-width: 500px;" />

## インテグレーションの切断 {#disconnect}

通知を停止するには、Tuist ダッシュボードでレポート、アラートルール、または自動化アクションから設定済みの Slack チャンネルを削除してください。Tuist へのアクセスを完全に無効にするには、Slack 内で **Settings & administration → Manage apps** を選択して Webhook インテグレーションを削除します。
