Slack CLIでできることと、BoltとDenoの使い分け
slack cliってなに?
はじめに
Salesforceチームの高嶋です。
Slack Enterprise+への切り替えをきっかけに、Slackを改めて学び直しています。
Slackbotなどの新しい機能の深掘りや活用を積極的にやっていきたい気持ちが強いので、整理を兼ねて今回はSlack CLIについてまとめます。
- Slack CLIとは(前提 / 概要 / できること / できないこと・制限・注意点)
- BoltとDenoの使い分け
- 活用案
Slack CLIとは
前提:Slackアプリとは/CLIを使う理由
Slack CLIが扱う「Slackアプリ」は、Slackに機能を追加する仕組みで例えば次のようなものです。
- 特定のチャンネルに通知を投稿するボット
/approveのように呼び出せるスラッシュコマンド- ボタン付きメッセージや入力フォーム
アプリには、何を許可するかという権限や、どのイベントを受け取るかといった設定があり、それらをまとめた設定ファイルをマニフェストと呼びます。
CLIがなくても、ブラウザの管理画面(api.slack.com/apps)でアプリを作って設定できます。CLIを使うと、作成からインストールまでをコマンドでまとめて扱えます。CLIは、Macならターミナル、WindowsならPowerShellで利用します。Windowsへのインストールも、公式手順ではPowerShellが前提です。
概要
Slack CLIは、Slackアプリのライフサイクル(作成・実行・設定・デプロイ)をコマンドラインから扱うツールです。
| 観点 | 内容 |
|---|---|
| 何ができるか | アプリの作成・ローカル実行・インストール・マニフェスト操作・認証など |
| 誰向けか | Slackアプリを開発・検証する人 |
| 認証の単位 | ワークスペース(またはEnterprise組織)ごと |
| 認証情報の保存先 | ローカルの~/.slack/credentials.json(通常のログイン時) |
Slack CLIではないもの
CLIは、アプリを開発・運用するためのツールです。次の代わりにはなりません。
- Slackのチャットクライアント
チャンネル閲覧、ハドル、検索、管理画面そのものは対象外です。後述のslack apiは、開発・検証用のAPI呼び出しです。 - SlackbotやSkill
Slackbot(ワークスペース上のAIエージェント)や、その振る舞いを型にするSkillは、チャット上で質問・要約・定型の依頼をこなす物です。 - Workflow BuilderやSalesforce Flow
SlackのWorkflow Builder(ノーコード自動化)や、SalesforceのFlow「Slackに投稿する」とは別レイヤーです。
CLIと合わせて利用するSDK:BoltとDeno
Slack CLIは単体でアプリを作るのではなく、次のどちらかのSDKと組み合わせて使います。
| SDK | ひとことで | 本番の動かし先 |
|---|---|---|
| Bolt(JavaScript / Pythonなど) | 自分のサーバで動かすアプリ用フレームワーク | 自前ホスト(Heroku / Vercel / AWSなど) |
| Deno Slack SDK(TypeScript) | Slackの基盤上で動かすためのSDK | Slackの管理インフラ(Run on Slack) |
このため、CLIでアプリを動かす経路も大きく2系統に分かれます。
| 系統 | 代表コマンド | イメージ |
|---|---|---|
| ローカルで動かす | slack run | 自分のPC上で開発サーバを起動。ファイル監視・ライブリロードあり |
| Slackに配置する | slack deploy | Slackの管理インフラへデプロイ。主にDeno Slack SDK向け |
どちらを選ぶべきかは、後半の「BoltとDenoの使い分け」で整理します。
できること
1. ログインする
slack login/slack logoutslack auth(ログイン済みチームの一覧など)
別ワークスペースやDeveloper Sandboxに触るときは、その環境向けにログインします。
2. プロジェクトの雛形を作る
slack create… Bolt / Denoなどのテンプレートからプロジェクトを起こすslack create agent… AIエージェント向けの雛形(2026-04 のCLI v4系で強化)
ゼロからディレクトリ構成やマニフェスト周りを手組みしなくてよい、というのが実務上の価値です。
3. ローカルで動かす・インストールする・片付ける
slack run… ローカル開発サーバslack install/slack app… チームへのインストールや一覧slack uninstall/slack delete… 取り外しや削除
4. マニフェストを確認・検証・同期する
slack manifest info/validate/diff/syncなど
スコープやイベント購読について、ローカルの設定と管理画面側の設定を見比べられます。
5. デプロイする
slack deploy… Slackの管理インフラへデプロイ
Boltアプリの場合の注意点は「できないこと・制限事項・注意点」を参照してください。
6. 切り分け・調査する
slack api… Web APIメソッドを直接呼ぶ(例:chat.postMessage)slack docs search… 開発者ドキュメントを端末から検索slack doctor… 環境やアプリ情報の確認
「画面上は動いているのにAPIだけ失敗する」といった切り分けを短くするのに使えます。
7. Deno(Run on Slack)アプリ向けの周辺操作
Slack管理インフラ上で動くアプリ向けに、例えば次があります。
slack trigger… トリガーslack datastore… データストアslack function… 関数slack activity… アクティビティログslack env… 環境変数
Boltの自前ホスト構成では、これらの役割の一部は自分のサーバ側の責務になります。
できないこと・制限事項・注意点
技術的な制約
Bolt アプリは slack deploy では Slack のサーバに配置できない
公式のエラー解説でも、runOnSlackがfalseのアプリはSlackへのデプロイ対象外という記載があります。
Boltはslack runで開発し、本番は自前ホストやdeploy hook(Heroku / Vercelなどへの配置)を用意する前提です。
Deno / Run on Slack固有の制約
公開ドキュメント上、次のような制約・前提が出てきます。
- Slackホストのアプリではuser scopeが使えない
- App Home(アプリ専用のタブ画面)が使えない
- 他ワークスペースへの配布は、相手側でもCLI経由で入れられる必要がある、といった制約がありうる
- 有料プラン、またはDeveloper Sandboxが前提
運用上の注意
Enterprise+では管理者承認が壁になりやすい
Enterprise+ではアプリの管理者承認が既定で有効なことが多く、CLIからインストールを試みると承認リクエストが飛び、Org管理者の承認後に再インストールという流れになります。
また、組織へのログインにはSlack CLI v2.9.0以降が必要という案内があります。
サービストークン(CI用)の扱い
CI/CD向けには、失効しないサービストークンを発行できます。
公式では、個人のトークンをそのままパイプラインに置かず、専用のサービスアカウントを用意する運用が推奨されています。漏洩時の影響が大きいので、保管場所と権限範囲は慎重に。
認証はチーム単位 / 同名コマンドに注意
slack auth listに別チームが出ていても、目的のワークスペースにログイン済みとは限りません- マシン上に別の
slackバイナリがあると紛らわしいです。公式インストーラは~/.slack/bin/slackに置きます
BoltとDenoの使い分け
どちらもslack createから選べます。ホスト先が違うので、最初にどちらで作るかを決めます。公式の比較(Comparing workflows and apps)の要約です。
| 観点 | Bolt | Deno Slack SDK |
|---|---|---|
| ホスト | 自前ホスト。CLIは主に開発・設定用 | Slack管理インフラ。slack deployが本命 |
| 言語 | JS / Python / Javaなど | TypeScript(Denoランタイム) |
| 向く用途 | ボット、外部サイト連携、Salesforce API直叩き、柔軟なイベント処理・スラッシュコマンド | ワークフロー中心の自動化、Workflow Builderから使えるカスタムステップ |
| データ | 任意のDB / 外部API(自分で用意) | SlackホストのDatastore |
| 配布 | Slack Marketplace掲載など、一般的なアプリ配布向き | 制約あり(前述) |
| プラン | Freeプランでも開発しやすい | 有料プラン、またはDeveloper Sandboxが前提になりやすい |
| Salesforce連携 | Web APIや自前ロジックで自由度が高い | 公式比較ではWorkflow Builder / Bolt側の整理。Deno単体では弱い |
迷ったら、ワークフロー中心はDeno、外部APIやボットはBoltです。
Salesforce開発での使い分け
| やりたいこと | 推奨 | 理由 |
|---|---|---|
| 商談更新の通知ボット、承認ボタン付きメッセージ | Bolt | 外部API・状態管理・柔軟なイベント処理向き |
| Slack内だけで完結する業務ワークフロー、Workflow Builderから呼ぶステップ | Deno(またはWorkflow Builder) | Slackホストで運用負荷を抑えやすい |
| Salesforceレコードの参照・更新をSlackから行う(標準寄り) | Workflow BuilderのSalesforceステップ、またはBolt | 公式比較でもSalesforce連携はこちら側の整理 |
Slack上のAIエージェント試作(slack create agent) | Bolt | 雛形はBolt for JavaScriptかPythonが土台で、Claude Agent SDK・OpenAI Agents SDK・Pydantic AIを組み合わせられる |
活用案
Salesforceまわりの検証・開発で使いやすい案を、始めやすい順に挙げます。いずれも 本番ワークスペースに直接試さない前提です。
1. slack apiでチャンネルID・投稿成否を切り分ける
| 項目 | 内容 |
|---|---|
| 何に使うか | Salesforce側からSlack投稿が失敗したとき、Slack API単体で通るかを先に見る |
| CLIのどこを使うか | slack api conversations.listやchat.postMessageなど |
2. Developer Sandboxで通知・承認ボットを作って動かす
| 項目 | 内容 |
|---|---|
| 何に使うか | 商談更新通知や簡易承認ボットのたたき台を作り、本番ユーザーに触れずに挙動を確認する |
| CLIのどこを使うか | slack login(Sandbox向け)→ slack create → slack run |
まとめ
- Slack CLIは、アプリの開発ライフサイクル用ツール。チャットクライアント、Slackbot / Skill、Workflow BuilderやFlowの代替ではない
- Bolt=自前ホスト、Deno=Slackホスト。Salesforce連携や柔軟なボットはBolt、ワークフロー中心ならDeno
- 注意点の要所は、デプロイ経路の違い、Enterprise+の管理者承認、CI用トークンの扱い
- 実務では、まず
slack apiでの切り分けと、Developer Sandboxに閉じたBolt +slack runから始めるとよい
コマンドの詳細は、次で確認するとよいです。
slack help
slack <command> --help
