Slack アプリの種別について知る
学習の目的
この単元を完了すると、次のことができるようになります。
- 単一ワークスペース向けアプリ開発の設定とベストプラクティスを説明する。
- 特定の Enterprise OrG 内のワークスペースに限定してアプリを配信する方法を説明する。
- 単一ワークスペースアプリと配信アプリの違いを説明する。
単一ワークスペースアプリと配信アプリ
Slack アプリを作成すると、最初は 1 つのワークスペース内で設定とインストールを行います。多くの社内ツールや特殊なワークフローでは、単一ワークスペースアプリで十分であり、追加のインストール手順や配信は必要ありません。
ただし、オーガナイゼーション内または公開して、複数のワークスペースで利用できるようにするには、アプリを配信する必要があります。そこで登場するのが、配信 (マルチワークスペース) アプリです。この場合、通常 OAuth 2.0 を使用して、追加のワークスペースへのインストールを許可します。
この単元では、単一ワークスペースアプリの作成と管理の基本と、アプリをより広く利用できるように配信する方法を学習します。
単一ワークスペースアプリを作成する
最初にアプリを作成するときに、アプリ名と作成先のワークスペースを選択します。この時点で、アプリは単一ワークスペースアプリです。つまり、作成先のワークスペースのユーザーだけがインストールできます (もちろん、アプリの承認プロセスに従います)。
Free、Pro、Business+、Enterprise+ のいずれのオーガナイゼーションであっても、アプリケーションの機能を 1 つのワークスペースのメンバーのみが使用する場合は、単一ワークスペースアプリが適しています。

単一ワークスペースアプリは便利です。OAuth 2.0 フローを実装するコードを書かなくても、アプリ設定内 ([Install App (アプリをインストール)] ページ) からボットトークンやユーザートークンを直接生成できます。また、単一ワークスペースアプリでもアプリでできるすべての機能を使用できます。
アプリをワークスペースに関連付ける
ここまでで、Slack アプリを作成するときに、ワークスペースに関連付けることを学びました。Slack では、この作業を簡単に行えます。アプリ設定でスコープを追加したり機能を有効にしたりした後、数回のクリックで、関連付けられたワークスペースにアプリをインストールできます。
- アプリ設定で [Install App (アプリをインストール)] を選択し、続いて [Install App to Workspace (ワークスペースへのアプリのインストール)] を選択します。
- インストールが完了すると、アクセストークンが 1 セット生成されます。これを使用してアプリの API コールを認証できます。
すべてのアプリは、デフォルトで単一ワークスペースアプリとして作成されますが、さらにほかのワークスペースに配信することが必要な場合もあります。その最初のステップが、アプリを OrG 対応にすることです。
OrG 対応アプリの利点
Enterprise オーガナイゼーション内のさまざまなユーザーにとって、OrG 対応アプリにどのようなメリットがあるかを見ていきます。
- OrG 管理者は、OrG 対応アプリをすべてのワークスペースに簡単に配信したり、特定のワークスペースからのアクセスを制限したりできます。
- OrG 管理者または開発者は、ワークスペースの作成時に OrG 対応アプリが自動的にインストールされるように設定できます。
- ユーザーは一度アプリを認証するだけで、すべてのワークスペースでアプリにアクセスできます。
オーガナイゼーション対応アプリは、オーガナイゼーションレベルで一度インストールします。インストールが完了すると、アプリは複数のワークスペースでの権限を表す 1 つのトークンを持ち、OAuth フローを使用してオーガナイゼーション全体に対して一度許可されます。その後、OrG 管理者は、さらに許可を得なくても、オーガナイゼーション内のワークスペースへアプリを追加できます。なお、OrG 対応アプリがオーガナイゼーション内のワークスペースに自動的に追加されることはなく、オーガナイゼーションレベルでインストールされることによって追加の権限が付与されることもありません。
配信に向けてアプリを準備する
アプリの配信を有効にする前に、いくつか準備しておくことがあります。
- アプリが OAuth 2.0 のインストールフローをサポートしている必要があります。単一ワークスペースでの利用にとどまらないため、コードからトークンへの交換を処理し、インストールメタデータを (通常はデータベースに) 保存しなければなりません。この作業に慣れていない場合は、こちらの OAuth ガイドとファーストパーティ SDK に含まれている例を参照してください。
- すべての URL で HTTPS を使用する必要があります。配信アプリでは、すべての URL (OAuth 2.0 リダイレクト、イベント購読、インタラクティビティ、オプションのロード、スラッシュコマンド) で安全な HTTP+SSL が必要です。公開配信をアクティブにする前に、すべての URL が https:// で始まっていることを確認します。
公開配信をアクティブにする
準備が完了したら、アプリ設定の [Manage Distribution (配信を管理する)] ページに移動し、[Activate Public Distribution (公開配信をアクティブにする)] を選択します。 これだけです。ただし、この場合の「公開配信」とは、OrG 内での配信を指します。外部のオーガナイゼーションにアプリを配信する場合や Slack Marketplace に掲載する場合は、Slack の公開配信と Marketplace に関するドキュメントを参照してください。
公開配信を有効にすると、埋め込み可能な [Add to Slack (Slack に追加)] ボタンのコード、選択するとインストールプロセスが開始される共有可能な URL、Slack アプリの提案を有効にする HTML メタタグを利用できます。
非公開配信をアクティブにする (Enterprise+ のみ)
Enterprise+ プランのお客様には、もう 1 つの配信方法として非公開配信があります。この社内専用アプリの場合は、まず Enterprise OrG ワークスペースでアプリを作成し、続いてアプリ設定の配信ページから [Org Level Apps (OrG レベルアプリ)] を有効にして、非公開配信を利用できるようにします。ボットトークンの範囲を 1 つ以上追加し、手順に従って OrG レベルでアプリをインストールしてから、必要に応じてワークスペースへのアクセスを許可します。
管理者ダッシュボードからワークスペースにアプリを追加する
アプリを OrG にインストールした後、管理者は次の手順で 1 つ以上のワークスペースにアプリを追加できます。
- OrG の管理者ダッシュボードに移動します。管理者ダッシュボードは、Slack でワークスペース名を選択し、[Organization Settings (オーガナイゼーションの設定)] を選択すると表示されます。URL は app.slack.com/manage/<エンタープライズ ID> のような形式になります。
- サイドバーで [Integrations (インテグレーション)] を選択し、[Installed apps (インストールされたアプリ)] を選択します。
- 追加するアプリを見つけて、その名前の横にある 3 つのドットを選択します。
-
[Add to more workspaces (他のワークスペースにも追加)] を選択します。
- 追加先のワークスペースを選択し、[Next (次へ)] をクリックします。
- アプリに必要な権限を確認し、[Next (次へ)] をクリックします。
- 次のモーダルウィンドウで、[I'm ready to add this app (このアプリを追加する準備ができました)] を選択します。
- 最後に、[Add App (アプリを追加する)] を選択します。
デプロイを自動化する (CI/CD)
配信後、複数の環境 (開発、ステージング、本番) にわたってアプリを維持するには、自動化が必要です。Slack CLI で CI/CD を活用すると、UI での手動設定から、ターミナルや自動化プラットフォームを介した本格的なライフサイクル管理へ移行できます。
Slack CLI のデプロイフックを CI/CD ワークフローに組み込み、設定とコードの同期を維持します。コードを本番にデプロイする前に、アプリ設定が同期され、アプリが再インストールされていることを確認します。自動デプロイのために、テンプレートの .slack/hooks.json ファイルに次のようにデプロイフックを追加します。
{
"hooks": {
"get-hooks": "npx -q --no-install -p @slack/cli-hooks slack-cli-get-hooks",
"deploy": "git push heroku main"
}
}このフックは、デプロイプロセスがトリガーされるたびに Heroku へのデプロイコマンドを実行するよう Slack CLI に指示します。slack deploy コマンドは、次の処理を実行します。
- manifest.json ファイルに変更があった場合に、アプリ設定を更新する。
- アプリ設定の変更に基づいて必要な場合はアプリを再インストールする。
- デプロイフックを実行して、アプリケーションコードを Heroku へプッシュする。
さらに一歩進めて、main ブランチへのマージ時に slack deploy を実行する GitHub Action をテンプレートに追加することもできます。これにより、オーガナイゼーション内のすべての Slack アプリに対して、明確で一貫性のある CI/CD プロセスを構築できます。次に .github/workflows/deploy.yml ファイルの例を示します。
name: Deploy Slack app
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@v4
- name: Install Slack CLI
run: |
curl -fsSL https://downloads.slack-edge.com/slack-cli/install.sh | bash
- name: Install Heroku CLI
run: |
curl https://cli-assets.heroku.com/install.sh | sh
- name: Deploy to Slack and Heroku
env:
SLACK_SERVICE_TOKEN: ${{ secrets.SLACK_SERVICE_TOKEN }}
HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }}
run: slack deploy -s --token $SLACK_SERVICE_TOKEN再インストールが必要になる場合
slack deploy コマンドは、スマートに動作します。まず manifest.json ファイルを確認し、アプリの再インストールが必要な変更がないかをチェックします。権限や基本的な機能を変更した場合、既存のユーザーが新しい条件を承認する必要があるため、再インストールが必要になります。
再インストールが必要になる主な変更は次のとおりです。
-
スコープの変更: スコープを追加または削除する (
canvases:createの追加など)。
-
OrG 全体へのデプロイの有効化:
org_deploy_enabledを true に設定する。
-
イベント購読の追加または変更:
member_joined_channelなどの新しいイベントを購読する。
-
機能の追加または削除: アプリの AI 機能を有効化する。
ユーザーに予期しない影響が出ないよう、この動作を理解しておいてください。
まとめ
Slack アプリは単一ワークスペースへのインストールから始まります。これは、トークンを手動で生成することで設定を簡略化できるため、社内ツールに最適です。ほかのワークスペースにも展開するには、配信を有効にする必要があります。公開配信では、OAuth 2.0 を使用してあらゆるワークスペースに配信できます。一方、Enterprise オーガナイゼーションでは、OrG レベルアプリを使用して非公開で社内に配信できます。
配信アプリには HTTPS URL と OAuth 2.0 の実装が必要ですが、一元的な管理が可能になり、一度の認証で複数のワークスペースで利用できます。アプリの利用拡大に伴い、Slack CLI を CI/CD パイプラインに組み込み、デプロイの自動化、設定の同期、権限変更時の再インストール管理を行い、すべての環境で一貫性のある確実な更新を実現します。
リソース
- Slack 開発者ドキュメント: App distribution (アプリの配信)
- Slack 開発者ドキュメント: Onboarding users to your app (アプリへのユーザーのオンボーディング)
- Slack 開発者ドキュメント: App distribution (アプリの配信)
- Slack 開発者ドキュメント: Managing organization-ready apps (オーガナイゼーション対応アプリの管理)
- Slack 開発者ドキュメント: app_uninstalled event type (app_uninstalled イベント種別)
- Slack Web ページ: 大規模な組織でアプリを安全に管理する 5 つのステップ
