【非エンジニア向け】Claude CodeをSlackで遠隔操作!タバコ部屋を司令塔に変える完全構築ガイド

こんにちは、がありっくです。
Claude Code、使っていますか?
非常に優秀で、お願いしたタスクへのレスポンスも早く、提案力も高い。まさに「こんなに実務能力が高いメンバーばかりだったらなぁ…」と思わせてくれる最高の相棒です。
しかし、彼には決定的な弱点がありました。「PCのターミナル画面(黒い画面)に張り付いていなければならない」ということです。
タスクを投げてタバコを吸いに行き、「そろそろ終わったかな?」と席に戻ると、確認画面でピタッと止まっている……。このもどかしさ、実務家なら分かっていただけるはずです。
「思い立ったらすぐ指示を出して、完了通知をスマホ(Slack)で受け取りたい」
プログラミング未経験、非エンジニアの私(FP&A・経営企画担当)が、この私利私欲のためにAI(Gemini)を「探偵」として雇い、Claude CodeをSlackで完全リモート操作できる環境を構築した全記録を公開します。
公式機能が実装されるのを待つ必要はありません。技術がわからなくても、AIを「部下」として指揮できれば、自分専用のツールは作れる時代です。
1. 全体像:PCとSlackを繋ぐ「同時通訳者」の仕組み
技術的な細かい話の前に、まずは「何を作ったのか」を非エンジニア向けに分かりやすく解説します。
今回構築したシステムは、PC(Claude Code)とスマホ(Slack)の間に立つ「同時通訳者」のようなものです。
- PC → Slack(完了通知)
AIの画面を監視する「監視カメラ(Pythonスクリプト)」が、「AIが話し終えた(待機状態になった)」瞬間を検知。通訳者がその内容を抜き出し、Slackチャンネルにメガホンで伝えます。 - Slack → PC(リモート指示)
私たちがSlackで返信すると、通訳者が「インターホン」を通じてメッセージを受け取り、PC上で待機しているAIの画面にキーボード入力として伝達します。
【システムの構成要素】
- tmux: PCを閉じてもAIを裏側で走らせ続ける「仮想の部屋」。
- Flask (Python): Slackからのメッセージを受け取る「受付窓口」。
- Ngrok: 外部(Slack)からローカルPCへ安全にアクセスするための「秘密のトンネル」。
- watcher.py (Python): AIの画面を監視し、終わったら通知を飛ばす「監視役」。
2. 【FP&Aの視点】リスク管理とセキュリティの最適解
「非エンジニアがローカルPCをインターネットに繋ぐなんて、セキュリティ的に大丈夫なの?」
経営企画というガバナンスを重視する職務柄、私も最初は情報漏洩のリスクが怖く、構築前にGeminiを徹底的に問い詰めました。
ここでは、なぜこの構成が「許容できるリスク」であり、実務に耐えうるのかを解説します。
- Q. Ngrokを使って社内データは漏洩しないのか?
A. 用途と制限を明確にすれば安全です。
Ngrokは起動するたびに「一時的で予測不能なURL」を発行します。さらに、トンネルは特定のポート(今回は受付窓口であるFlaskサーバー)のみを開放しており、PC全体のファイルやシステムにアクセスできるわけではありません。 - Q. 悪意のある第三者がAIを勝手に操作しないか?
A. Slackからの通信以外はすべて遮断しています。
Slack APIの「Signing Secret」を用いた検証を実装し、事前に登録した私のワークスペース・特定のBotからの通信以外は、サーバー側で全て弾く(無視する)強固な設定にしています。 - Q. なぜ公式機能を待たずに自作したのか?
A. 圧倒的なROI(投資対効果)のためです。
公式機能が出るまでの間、PCの前に縛り付けられる「私の時間単価(機会損失)」と、AIと数時間で暫定システムを作る「開発コスト」を天秤にかけました。結果、「タバコ部屋でも意思決定できる環境」を今すぐ手に入れる方がリターンが大きいと判断しました。
3. 実録・泥沼のデバッグと「探偵モード」の軌跡
システムの構想は完璧でも、実装には必ずエラー(沼)が待っています。私がこれを完成できたのは、技術力があったからではなく、「Geminiと一緒にエラーを探す対話力(探偵モード)」があったからです。
特にハマった3つの沼と、その突破口を共有します。
【沼1】沈黙のサーバーとSlack権限の壁
- 症状: Slackで指示を出しても、ローカルのサーバーが一切反応しない。
- 原因と解決: テストに使っていたのが「プライベートチャンネル」だったため、Botに付与していたパブリック用の権限では弾かれていました。Slack APIの設定で
groups:historyとgroups:readを追加することで、無事に通信が開通しました。
【沼2】通知が来ない!からの「コレジャナイ感」
通信は繋がったものの、AIが処理を終えてもSlackに通知が来ません。Geminiの提案で「証拠記録モード」を実装し、AIの画面変化をすべてログに出力して監視しました。
- 原因(インタビューモードの罠): Claude Codeは通常、末尾に
❯を出して待機しますが、選択肢を提示する時はEnter to select...という全く別の記号で待機していたのです。この条件分岐を追加しました。
💡 タバコ部屋での歓喜と調整
検知ロジックを修正し、タバコを吸いに行った数分後。スマホに「実装完了」の通知が飛んできた瞬間は「おおおおお!!」と声が出ました。
しかし、届いた通知にはAIの「長大な思考プロセス(ファイルの読み込みログなど)」が全て垂れ流しになっていました。報告は結論ファーストであるべきです。すぐさまGeminiと「最終回答だけを抽出する正規表現」を組み込み、完璧なスマート通知を完成させました。
【沼3】自動化の罠(環境変数の消失)
- 症状: 起動を楽にするためにシェルスクリプト(
start.sh)を作ったが、自動化するとサーバーが起動しない。手動なら動くのに。 - 原因と解決: スクリプトからtmuxへコマンドを送る際、パスワードなどの「環境変数(.env)」が引き継がれていませんでした。
cd ... && source venv/bin/activate && source .env && python3 ...のように、コマンドを1行に繋いで仮想空間に送り込むことで解決しました。エンジニアなら常識かもしれませんが、非エンジニアには盲点でした。
4. まとめ:AIを「ツール」から「相棒」へ
「技術がないからできない」と諦める必要はもうありません。
私のようなプログラミング未経験の非エンジニアでも、「やりたいこと」の要件さえ明確に持っていれば、AIに「分かりやすく説明して」「一緒にエラーを探して」と頼むことで、自分専用のシステムを構築できます。
PCに縛られる時間をなくし、人間の本来の仕事である「意思決定」に集中する。
この記事が、皆さんの業務効率化のヒントになれば幸いです。
▼ AIを「優秀な右腕」としてマネジメントする秘訣とは?
「仕組みはわかったけど、実際にAIへどう指示を出せばいいの?」という方向けに、私が実際に使った『思考ログをカットさせる魔法のプロンプト』や、非エンジニアがAIを使いこなすためのマネジメント論をnoteで公開しています。こちらもぜひ合わせてご覧ください!
👉 【実録】PCに縛られるな。非エンジニアがClaude CodeをSlackで遠隔操作し、タバコ部屋を「司令塔」に変えた全記録
以上、がありっくでした!






ディスカッション
コメント一覧
まだ、コメントがありません