Slack CLIでできることと、BoltとDenoの使い分け

blog, technologies

slack cliってなに?

はじめに

Salesforceチームの高嶋です。

Slack Enterprise+への切り替えをきっかけに、Slackを改めて学び直しています。

Slackbotなどの新しい機能の深掘りや活用を積極的にやっていきたい気持ちが強いので、整理を兼ねて今回はSlack CLIについてまとめます。

  1. Slack CLIとは(前提 / 概要 / できること / できないこと・制限・注意点)
  2. BoltとDenoの使い分け
  3. 活用案

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の基盤上で動かすためのSDKSlackの管理インフラ(Run on Slack)

このため、CLIでアプリを動かす経路も大きく2系統に分かれます。

系統代表コマンドイメージ
ローカルで動かすslack run自分のPC上で開発サーバを起動。ファイル監視・ライブリロードあり
Slackに配置するslack deploySlackの管理インフラへデプロイ。主にDeno Slack SDK向け

どちらを選ぶべきかは、後半の「BoltとDenoの使い分け」で整理します。

できること

1. ログインする

  • slack login / slack logout
  • slack 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)の要約です。

観点BoltDeno 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

参考リンク

Related posts