ちょっと前にClaude CodeとSlackがインテグレーションされて、Slackから直接Claude Codeを呼び出せるようになったというニュースを見た。
実は僕はずっとこれを待ち望んでいた。
Devinでの体験
というのも、以前はDevinを使っていて、僕的にはDevinに対する最大の魅力がまさにこれだったのだ。Slackから特定のIssue番号を指定して実装させたり、Pull Requestを指定してレビューさせたりできたので、それを活用していた。Slackのモバイルアプリでポチポチっと指示するだけで、PCの前にいなくてもプロダクト開発を進められるのだ。つまりオフィスに行く間の電車に乗ってるときとか、休日に家族と外出しているときの外出先のちょっとした隙間時間など昼夜問わず自分の好きなタイミングで指示できるのだ。人間相手ではこうはいかない。これが最高に魅力的だった。
ただし、Devinはコスト的に結構高い。500ドル/月である。まあ人を一人雇うよりは全然安いんだけど。後から出てきたPay as you goのプランだと20ドル/月から使えるがそれでも高いのには変わらない。気にせず払えよって話もあるがそうは言ってもね…という。そして何より、この手のコーディングエージェントは最終的にモデルプロバイダー自身が提供するものが生き残るだろうという予感もあった。そんなこんなでDevinは使わなくなっていき、代わりにCursorで手元で実装することが増えていった。
ただ、最近また時間がなくなってきて、Cursorで手元でやるのではなく非同期で処理させたいという思いが強くなっていた。GitHubのモバイルアプリや普通にスマホのブラウザからGitHubにアクセスして、Claude Code Actionsに指示するのもいいがやり取りをIssueに残したくないという意識が働いていたのであまり使わず。また、聞くところによるとClaude CodeとSlackをインテグレーションしてくれるOSSの何かがあるらしいんだが、僕はデフォルト厨かつオフィシャル厨なのでそういうのを入れてまで使う気もしてなかった。
そんなこんなで悶々としていたところにこのニュースである。まだプレビューではあるが。
しかも単に指示できるだけではなく、Slack内に存在するコンテキスト情報の共有もできるらしい。本当なら最高じゃないか。
前提条件とセットアップ
というわけで早速試していくが、まず使うにあたっての前提条件を整理しておく。
必要な要件
| 要件 | 詳細 |
|---|---|
| Claudeプラン | Pro、Max、Team、またはEnterprise |
| Claude Code on the web | 事前にアクセス権を持っていること |
| GitHubリポジトリ | Claude Code on the webで事前に接続済みのもの |
| Slackプラン | 有料プランいずれか |
注意点として、Slackも有料プランが必要だということかな。あと、Claude CodeをSlackから利用するにはClaude Code on the webも使えるようになっている必要がある。つまりFreeプランではダメということ。
セットアップ手順
さて、セットアップは以下の通り。
1. ClaudeアプリをSlackにインストール
ワークスペース管理者がSlack App MarketplaceからClaudeアプリをインストール。管理者権限を持っている場合は、Marketplaceにアクセスして「Add to Slack」をクリックするだけ。
2. Claudeアカウントに接続
アプリをインストールしたら、Claudeアカウントで認証する。これ多分Slackにいるユーザーそれぞれで個別に認証が必要。
3. 動作モードの設定
認証後、SlackでのClaudeの動作モードを設定する。SlackのClaude App Homeにアクセスすると「Routing Mode」という設定項目が見つかる。
ここで「Code + Chat mode」を選択しておくと、Claudeがメッセージを自動的に判定してコーディングタスクかどうかを判断してくれる。もしClaudeが誤判定した場合でも、「Retry as Code」または「Retry as Chat」ボタンで手動で切り替えられるので安心らしい。「Code only」の場合はすべてをClaude Codeセッションとしてルーティングするらしい。
claude.com/codeにアクセスして、対象のGitHubリポジトリを認証しておく。
5. Slackでコーディングタスクを依頼
準備が整ったら、Slackチャンネルまたはスレッドで@Claudeをメンションしてコーディングタスクを依頼するだけである。
なお、Claude Code in Slackはチャンネル(パブリックまたはプライベート)でのみ動作する。ダイレクトメッセージ(DM)では使えないらしい。
自動検知とルーティング
Slackで@Claudeをメンションすると、Claudeはメッセージを分析してコーディングタスクかどうかを自動判定する。メッセージにコーディングの意図を検出した場合、通常のチャットアシスタントとして応答するのではなく、Claude Code on the webにルーティングしてセッションを自動的に開始する。
このルーティング判定は、動作モードが「Code + Chat mode」の場合に行われる。判定結果が間違っている場合などは「Retry as Code」または「Retry as Chat」から手動で適切なモードに切り替えられる。また、最初から明示的に「これはコーディングタスクとして処理して」と指示することも可能っぽい。
一度Claude Codeセッションが開始されると、Claudeは作業の進捗をSlackスレッドに投稿してくれて、作業が完了するプルリクエストを作成するためのリンクが共有される。なお、このときClaude Code on the web上でもセッションの進行状況をリアルタイムに確認できる。
実際に試してみる
まずはお試しでこんな感じの指示を出してみた。こんなに雑でもいけるのかどうか。人間ならいける。xxxxxは実際のリポジトリ名。
@Claude xxxxxxのIssue#55に対応して。対応が完了したら新しいプルリクエストを作成して。
ところがこのリポジトリはプライベートだ。そうすると以下のように言ってきた。
申し訳ございませんが、Issue #55の内容を直接取得できませんでした(リポジトリがプライベートのようです)。Issue #55の具体的な内容を教えていただけますか?または、対応すべき問題の詳細を教えてください。 その間、コードベースの構造を把握します。
おい、Issueの内容を転記しろというのか?いや、そうだった、プライベートリポジトリの場合、そっちにClaude GitHubアプリをインストールしなければいけないんだった。というわけで追加。
さて、その上で同じプロンプトを投げてみる。結果変わらず…。
試しにそのIssueに記載している内容をコピペしてSlackからClaudeに指示してみたところ、それは普通に対応してくれた。でもPRを自動では作ってくれない。PR作成ボタンを押さなければいけない。
僕がやりたい、「Slack上からIssueを指定してコーディングしてもらう」という行為に暗雲が立ち込める。いろいろWeb上の情報なども見たがやはりIssueを直接参照しての実装はやはり難しそうだ。Slackインテグレーションだから難しいというよりClaude Code自体ができないっぽい。Claude on the webでもできなかった。プライベートだからといってもコードは普通に書けるのにね。
ちなみにもしかしたらこれは周知の事実なんだろうけど、言い訳をすると僕はClaude Codeをこれまであまり使っておらず、一時期Claude Code ActionsでIssueから直接呼び出すのを使ってただけだったので知らなかったのである。
Slackコンテキストの活用について
公式ドキュメントによると、Slackでの会話コンテキストをClaude Codeセッションに引き継げるというのが大きな売りの1つだ。チャンネル内の会話履歴、バグレポート、機能リクエストなどの情報を自動的に読み取って、それをもとにコーディングタスクを実行してくれるという。
ただし実際に使ってみた感じだと、Claude Codeが参照できるのはあくまでSlackの会話内容だけで、GitHubのIssueやPRといった外部の情報ソースにはやはり直接アクセスできないようでこれはちょっと残念。
結論: 現時点では少し期待外れ
期待していた「モバイルからサクッとIssue番号を指定して対応を依頼する」というユースケースは、現状だと実現できていない。Claude CodeがGitHub上のIssue情報を直接参照できないためだ。
とはいえ、Slack上での会話をコンテキストとして活用できるのは確かに便利だし、今後のアップデートで機能が拡充される可能性もある。現時点では「Slackでの議論内容をもとに簡単なコーディングタスクを依頼する」という用途であれば十分実用的だと言える。
個人的にはもう少し様子を見て、機能が充実してきたらまた本格的に使ってみようと思う。