Cursor + Slackで、ベッドで寝ながら開発

2025年6月21日 | 開発ツール・AI活用

Cursor + Slack = ベッドで寝ながら開発

Cursor+Slack=ベッドで寝ながら開発

🎯 ここがキモ!スレッド内の全やりとりが自動でコンテキストになる

Cursorから衝撃の機能が公開されました。Slackからバックグラウンドエージェントが呼び出せるように!
📄 公式ドキュメントはこちら

実は、これが一番ヤバい機能なんです。Slackのスレッド内でAIと壁打ちしながら「こんな機能作りたいんだけど、どうやったらいいかな?」「認証周り、どのライブラリ使えばいい?」みたいに相談して、設計や実装方法まで詰めていく。

そのやりとり全部がコンテキストとして自動的にCursorのバックグラウンドエージェントに渡されるので、最後に「@Cursor 上記の通りに実装して」って一言言うだけで、それまでの議論内容を完璧に理解した状態で実装が始まるんです。

つまり、思考プロセスから要件定義、技術選定、実装方針まで、すべての文脈を保ったまま開発に入れる。これ、マジで革命的ですよ。

この記事をシェア

はじめに - なぜ「ベッドで寝ながら開発」なのか

開発者なら一度は夢見たことがあるはずです。「ベッドでリラックスしながら、アイデアをAIに伝えるだけで実装が完了する」という理想の働き方を。

2025年6月、この夢がついに現実になりました。Cursorの新しいSlack連携機能「バックグラウンドエージェント」の登場により、物理的な制約から解放された開発スタイルが可能になったのです。

この記事で学べること

  • バックグラウンドエージェントの革新的な仕組み
  • Slackスレッド全体をコンテキストとして活用する方法
  • 完全なセットアップ手順(初心者でも再現可能)
  • アイデア出しから実装完了までの実践ワークフロー

バックグラウンドエージェントとは何か

バックグラウンドエージェントは、Cursorが提供するクラウド上で動作するAI開発者です。従来のAI支援ツールとは根本的に異なる特徴を持っています。

従来のAI開発支援との違い

従来のAI開発支援

  • エディタ内での1対1対話
  • 単発のコード生成・修正
  • 開発環境のセットアップが必要
  • 手動でのブランチ作成・PR管理

バックグラウンドエージェント

  • Slackから直接指示
  • 複数タスクの並行実行
  • クラウド上で独立して動作
  • 自動でブランチ作成・PR生成

バックグラウンドエージェントの3つの革新ポイント

1

スレッド全体をコンテキストとして活用

Slackスレッドでの会話履歴全体を理解し、チームの議論から実装方針を自動で把握します。

2

完全独立したクラウド実行環境

ローカル環境に依存せず、セキュアなクラウド上で実装を完遂。デバイスの制約から完全に解放されます。

3

自動的なGit管理とPR作成

ブランチ作成から実装、PR作成まで完全自動化。レビューのみに集中できます。

前段階:AI Slack Botの構築

Cursorのバックグラウンドエージェントを活用する前に、まずSlackでAIと気軽に壁打ちできる環境を構築しましょう。この基盤があることで、アイデア出しから要件整理までのプロセスが格段にスムーズになります。

@ai-fellowボットの完全セットアップ

Claude 3.5 Sonnetと連携する「@ai-fellow」Slack Botを作成します。このボットがアイデア出しの相談相手となり、その会話履歴がCursorのバックグラウンドエージェントに引き継がれます。

必要な準備

必要なアカウント・環境:

  • Slackワークスペースの管理者権限
  • Anthropic APIキー(console.anthropic.comで取得)
  • Node.js開発環境(ローカル + ngrok、またはクラウドサービス)

Step 1: Slack Appの作成

  1. Slack App作成
    • api.slack.com/appsにアクセス
    • 「Create New App」→「From scratch」を選択
    • App Name: ai-fellow
    • ワークスペースを選択して「Create App」
  2. Bot Token Scopesの設定
    「OAuth & Permissions」ページで以下を追加:
    app_mentions:read
    chat:write
    im:read
    im:write
    channels:read
    groups:read
    mpim:read
  3. Event Subscriptionsの設定
    • 「Enable Events」をON
    • Request URLは後で設定(例:https://your-domain.com/slack/events
    • 「Subscribe to bot events」に追加:
      • app_mention
      • message.im

Step 2: Anthropic API設定

  1. console.anthropic.comでアカウント作成
  2. APIキーを生成してコピー(安全に保管)

Step 3: Node.js アプリケーション作成

プロジェクト作成と依存関係のインストール:

# プロジェクト作成

mkdir slack-claude-bot

cd slack-claude-bot

npm init -y


# 依存関係インストール

npm install @slack/bolt @anthropic-ai/sdk dotenv express

npm install -D nodemon

環境変数ファイル(.env)の作成:

# .env

SLACK_BOT_TOKEN=xoxb-your-bot-token

SLACK_SIGNING_SECRET=your-signing-secret

ANTHROPIC_API_KEY=your-anthropic-api-key

PORT=3000

メインアプリケーション(app.js)の完全実装:

require('dotenv').config();
const { App } = require('@slack/bolt');
const Anthropic = require('@anthropic-ai/sdk');

// Slack Boltアプリ初期化
const app = new App({
  token: process.env.SLACK_BOT_TOKEN,
  signingSecret: process.env.SLACK_SIGNING_SECRET,
  socketMode: false,
  port: process.env.PORT || 3000
});

// Anthropic Claude初期化
const anthropic = new Anthropic({
  apiKey: process.env.ANTHROPIC_API_KEY,
});

// メンション時の応答
app.event('app_mention', async ({ event, client, say }) => {
  try {
    console.log('App mention received:', event.text);
    
    // メンション部分を除去してテキストを取得
    const userMessage = event.text.replace(/<@[^>]+>/g, '').trim();
    
    if (!userMessage) {
      await say({
        channel: event.channel,
        thread_ts: event.ts,
        text: "何かご質問はありますか?技術的なことなら何でもお答えします!"
      });
      return;
    }

    // Claude APIに送信
    const message = await anthropic.messages.create({
      model: "claude-3-5-sonnet-20241022",
      max_tokens: 1000,
      temperature: 0.7,
      system: `あなたは、駆けだしのエンジニアから中級者に、技術的なアドバイスを出したり、その中の趨勢を代弁するスーパーバイザーです。
ユーザーはまだ初級か中級のエンジニアで、常にアドバイスや助言、まれに実装そのものを求めてくることがあります。
そういった層からの質問や投稿に真摯に向き合って回答してあげてください。`,
      messages: [
        {
          role: "user",
          content: userMessage
        }
      ]
    });

    const response = message.content[0].text;

    // Slackに応答を送信(スレッドで返信)
    await say({
      channel: event.channel,
      thread_ts: event.ts,
      text: response
    });

  } catch (error) {
    console.error('Error handling app mention:', error);
    await say({
      channel: event.channel,
      thread_ts: event.ts,
      text: "申し訳ございません。エラーが発生しました。もう一度お試しください。"
    });
  }
});

// DMでの応答
app.event('message', async ({ event, client, say }) => {
  try {
    // ボット自身のメッセージは無視
    if (event.subtype === 'bot_message' || event.bot_id) {
      return;
    }

    // チャンネルでの投稿は無視(メンションのみ対応)
    if (event.channel_type !== 'im') {
      return;
    }

    console.log('DM received:', event.text);

    // Claude APIに送信
    const message = await anthropic.messages.create({
      model: "claude-3-5-sonnet-20241022",
      max_tokens: 1000,
      temperature: 0.7,
      system: `あなたは、駆けだしのエンジニアから中級者に、技術的なアドバイスを出したり、その中の趨勢を代弁するスーパーバイザーです。
ユーザーはまだ初級か中級のエンジニアで、常にアドバイスや助言、まれに実装そのものを求めてくることがあります。
そういった層からの質問や投稿に真摯に向き合って回答してあげてください。`,
      messages: [
        {
          role: "user",
          content: event.text
        }
      ]
    });

    const response = message.content[0].text;

    await say({
      channel: event.channel,
      text: response
    });

  } catch (error) {
    console.error('Error handling DM:', error);
    await say({
      channel: event.channel,
      text: "申し訳ございません。エラーが発生しました。もう一度お試しください。"
    });
  }
});

// アプリ起動
(async () => {
  try {
    await app.start();
    console.log('⚡ Slack bot is running!');
    console.log('🤖 @ai-fellow bot is ready to help engineers!');
  } catch (error) {
    console.error('Failed to start app:', error);
  }
})();

package.jsonのスクリプト追加:

# package.jsonに追加

{

"scripts": {

"start": "node app.js",

"dev": "nodemon app.js"

}

}

Step 4: ローカル開発環境のセットアップ

ngrokを使用した外部アクセスの設定:

# ngrokインストール(まだの場合)

npm install -g ngrok


# 別ターミナルでngrok起動

ngrok http 3000

SlackアプリのURL設定:

  1. Slack App設定の「Event Subscriptions」に戻る
  2. Request URLにngrokのURL + /slack/eventsを設定
    例:https://abc123.ngrok.io/slack/events
  3. 「Save Changes」をクリック

Step 5: 起動とテスト

# アプリケーション起動

npm run dev

Slackでのテスト:

  1. Slackで @ai-fellow こんにちは とメンション
  2. DMで直接メッセージ送信
  3. スレッドでの返信を確認

✅ 成功例

あなた: @ai-fellow React Hook Formの使い方を教えて

@ai-fellow: React Hook Formは、Reactでフォーム処理を簡潔に行うための優れたライブラリです。主な特徴は...

Cursor Slack Integrationの設定手順

@ai-fellowボットでアイデア出しと要件整理ができるようになったら、いよいよCursorのバックグラウンドエージェント機能を追加します。

Step 1: 前提条件の確認

必要なもの:

  • Cursorのアカウント(Pro版推奨、バックグラウンドエージェントはMax Modeを使用するため)
  • Slackワークスペースの管理者権限
  • GitHubアカウント(リポジトリへのアクセス権限)

Step 2: Cursorでのセットアップ

1. Cursor Dashboardへのアクセス

  1. cursor.com/dashboard にアクセス
  2. 「Integrations」セクションを選択
  3. 「Slack」の「Connect」ボタンをクリック

2. Slackアプリのインストール

  1. Slackワークスペースの選択画面が表示される
  2. 対象のワークスペースを選択し「許可する」をクリック
  3. Cursorアプリがワークスペースにインストールされる

3. GitHub連携の設定

  1. Cursorに戻り、GitHub連携を設定
  2. デフォルトリポジトリを選択
  3. 「Usage-based pricing」を有効化
  4. プライバシー設定を確認

Step 3: 権限設定の詳細

Cursorが要求するSlack権限とその用途を理解しておくことが重要です:

権限 用途
app_mentions:read @Cursorメンションの検知
channels:history スレッド履歴の読み取り
chat:write ステータス更新・完了通知
files:read/write ファイル共有・画像アップロード

基本的な使用方法

基本コマンド一覧

# 基本的なエージェント起動

@Cursor ログイン機能のバグを修正して


# オプション付きコマンド

@Cursor [repo=owner/project, model=o3, branch=develop] 新しいAPI実装


# ヘルプコマンド

@Cursor help

高度なオプション設定

オプション 説明
repo 対象リポジトリを指定 repo=owner/project
branch ベースブランチを指定 branch=develop
model 使用するAIモデル model=o3
autopr 自動PR作成の有効/無効 autopr=false

実践ワークフロー:アイデアから実装まで

実際の開発フローを、Slackでの会話例を通して紹介します。

🛏️ 理想の開発スタイル:思考から実装まで、全てベッドの上で

Slackでアイデアを練って、Cursorのバックグラウンドエージェントに実装を任せる。開発者の新しい働き方を提案します。

シナリオ:ユーザー認証機能の改善

👨‍💼 Product Manager

「最近ログインエラーの報告が増えています。認証周りを強化したいです。」

👩‍💻 Developer

「ログを確認しました。トークン検証のロジックに問題がありそうです。JWT の有効期限チェックが正しく動作していないようです。」

🔧 Lead Engineer

「auth.js の247行目あたりの正規表現も古い形式のままです。新旧両方のトークン形式に対応させる必要があります。」

📋 Project Manager

「後方互換性を保ちつつ、セキュリティを強化する方向で進めましょう。@Cursor この課題を解決してください」

🤖 Cursor Agent

「⏳ バックグラウンドエージェントを開始しました。スレッドの内容を分析し、認証機能の改善に取り組みます。」

バックグラウンドエージェントの動作フロー

1
コンテキスト分析 - スレッド全体を読み取り、問題点を特定
2
コードベース解析 - auth.js の現状を把握、関連ファイルをスキャン
3
実装計画立案 - JWT検証ロジックの改善、正規表現の更新
4
コード実装 - 新しいブランチで安全に修正を実行
5
PR作成 - テスト結果と変更内容をまとめてプルリクエスト作成

完了通知の例

🤖 Cursor Agent

✅ 認証機能の改善が完了しました!

実装内容:
• JWT有効期限チェックの修正
• 新旧トークン形式対応の正規表現更新
• 単体テストの追加

📋 プルリクエスト: #247 Fix authentication token validation
🔗 ブランチ: feature/auth-token-validation-fix

チーム運用のベストプラクティス

効果的なチャンネル設計

推奨チャンネル構成:

  • #dev-ai-agents - バックグラウンドエージェント専用
  • #project-brainstorm - アイデア出し・要件整理
  • #code-review - PR レビュー・議論

設定コマンドでの効率化

# チャンネル固有の設定

@Cursor settings


# 実行中エージェントの確認

@Cursor list my agents


# エージェントに追加指示

@Cursor agent [prompt] # 新規エージェント強制作成

コスト管理と注意点

⚠️ 重要:コスト管理

バックグラウンドエージェントはMax Modeを使用するため、従来のチャット機能より高コストです。以下の点にご注意ください:

  • 大規模なコードベースでは特にトークン消費が多い
  • 複数エージェント同時実行時は費用が累積
  • 定期的に実行中エージェントをチェック(@Cursor list my agents

今後の展望と発展可能性

Cursor Slack Integrationは、開発ワークフローを根本的に変える可能性を秘めています。

期待される機能拡張

  • Cursor内でのPR自動マージ - GitHubページへの遷移なし
  • コンフリクト自動解決 - 複数ブランチ間の競合自動調整
  • タスク依存関係の自動管理 - 関連タスクの順序制御
  • 継続的インテグレーション連携 - CI/CDパイプラインとの自動連動

組織レベルでの活用シーン

スタートアップ

少数精鋭チームでの高速プロトタイピング、アイデアの即座な検証と実装

エンタープライズ

大規模開発での並行タスク管理、レガシーシステムの段階的改善

まとめ:開発者の新しい働き方

Cursor + Slackによる「ベッドで寝ながら開発」は、単なる利便性の向上を超えて、開発プロセス全体のパラダイムシフトを意味します。

🚀 この新しいワークフローで実現できること

💭 思考の連続性

アイデア出しから実装まで、思考プロセスが途切れることなくAIに引き継がれます

🌍 物理的制約の解放

場所やデバイスに縛られず、最適な環境で創造的な作業に集中できます

⚡ 開発速度の飛躍的向上

複数タスクの並行実行により、従来の数倍のスピードで開発が進行します

🎯 本質的な価値創造への集中

実装作業はAIに任せ、アーキテクチャ設計や要件定義に時間を使えます

この記事で紹介した手順に従って、あなたも今日から「ベッドで寝ながら開発」を始めることができます。重要なのは、AIを単なるツールとして使うのではなく、開発チームの一員として迎え入れることです。

Slackでの自然な会話から始まり、思考プロセスを共有し、最終的にはプルリクエストとして形になる。このシームレスな体験こそが、次世代の開発スタイルなのです。

💡 次のステップ

  1. Cursor Dashboardでの Slack 連携設定
  2. チーム用チャンネルの作成とルール策定
  3. 小さなタスクでの実証実験
  4. ワークフロー改善と組織展開

著者について: 野口真一は30年の経験を持つベテランITコンサルタント・AIエンジニアとして、最新のAI技術を活用した開発効率化の支援を行っています。このような革新的な開発手法の導入支援についても、ぜひお気軽にご相談ください。

この記事が役に立ったらシェアしてください

他の開発者にも「ベッドで寝ながら開発」の革新的なワークフローを伝えましょう

カテゴリ

開発ツール・AI活用

公開日

2025年6月21日

お気軽にご相談ください

記事に関するご質問や、AI・IT技術導入のご相談など、お気軽にお問い合わせください。

お問い合わせ サービス一覧