のほほんエンジニアブログ

雑多に書いていきます

SlackのWebhookはCustom IntegrationsではなくてSlack Appを作成して設定しようというお話

ちょっとしたツールの開発をしようと思ってSlaskにWebhookを入れた時のお話。

いつも通り ツール -> App -> Incoming Webhook で入れようとしたらレガシーだよと言われました。この表示見たことあった気がしたけど今までスルーしてたのでちゃんと確認します。

そのうち廃止になるかもよ。ということで対応をしないとですね。

 

Custom Integrations を使わないで Slackアプリを作るやり方が正しいらしい。機能も増えるので拡張性がとても広がるとのことでした。

とりあえずドキュメントを読んでアプリを作ってみるため https://api.slack.com/apps にアクセス。Create New App から From scratch を選択。

アプリ名を決めて、作成先のワークスペースを指定するとサクッと出来上がる。

そうしたらサイドバーから Incoming Webhooks を選択。あとは Add New Webhook でチャンネルを指定して作成するだけでOK。

Sample curl request を叩くと、指定のチャンネルに投稿されることが確認できた。
Appに追加されたことも確認できた。

「Slack Webhook」で検索すると Custom Integrations を使う記事がたくさん引っかかるので、ちょっと古くなってますよ〜という啓蒙の記事でした。Custom Integrations を設定する方が数段楽なんですけどね。

少しでも検索の役に立てればと思います。

ClaudeCode のMPCサーバーのインストールスコープ

MCPサーバーをインストールして色々と使っています。
ある日、プロジェクトを移動して作業した時にMCPサーバーないじゃん…となり、インストールスコープというのを発見しました。

言うなれば、npm をローカルでインストールするかグローバルでインストールするかみたいな話だったのですが、それに気づかず時間を無駄にしました…

 

Claude のインストールスコープは3つに分かれていました。

ドキュメントはこちら↓です

docs.anthropic.com

Local スコープ(デフォルト)

現在のプロジェクトディレクトリでのみ有効
個人の開発用サーバーや機密情報を含むサーバーに適している
プロジェクト固有のユーザー設定に保存
/Users/yourname/.claude.json の中にディレクトリごとに記載されて保存

Project スコープ

プロジェクトルートの .mcp.json ファイルに保存
バージョン管理にチェックインしてチーム共有が可能
チーム全体で同じMCPツールを使いたい場合に最適
ProjectRoot/.mcp.json に保存

User スコープ

マシン上のすべてのプロジェクトで利用可能
個人のユーティリティサーバーや開発ツールに適している
ユーザーアカウント内でプライベート
/Users/yourname/.claude.json に保存

 

今回MCPサーバーどっかいった…というのは、Localスコープにインストールしてたからということですね。
ちなみに優先順位は Local -> Project -> User の順です。

MCPサーバーを add する時にスコープを指定するには --scope オプションを使用します。

```

  claude mcp add --scope project server-name ...
  claude mcp add --scope user server-name ...

```

何も指定しなければ Local スコープで追加されます。

 

使い道として

GitHub MCP Server -> 
local スコープには private リポジトリが読めるやつ、userスコープに public リポジトリが読めるやつを設定

Playwright MCP Server ->
使いたいタイミングが多いのでuserスコープ

みたいな感じで使い分けていこうと思います。

ClaudeCode から GitHub の MCPサーバーに繋ぐ

とても簡単だった。

github-mpc-serverリポジトリが存在して、READMEにインストールガイドが置いてあったので、それに従って実行するだけでした

ググったら古い方法なのか繋がらなかったので自分用にメモ

claude mcp add --transport http github https://api.githubcopilot.com/mcp -H "Authorization: Bearer YOUR_GITHUB_PAT"

PATは権限をしっかりと設定した上で生成する必要があります。
また、Organization の private repo のPATについてはちゃんとOwnerを指定した上で取得する必要があるので管理者の許可とか必要です(今回は Public Repo オンリーのPATを作った)
設定してClaudeCodeを再起動してから/mcpを叩くと接続できていることが確認できました。

> /mcp 
  ⎿  (no content)
Manage MCP servers 

❯ 1. github  ✔ connected · Enter to view details   

動くのも確認できました

> GitHubのRailsリポジトリから最新のOpen Issue1件取得して内容を簡単に教えて

⏺ GitHubのRailsリポジトリから最新のOpen Issueを取得いたします。

⏺ github - List issues (MCP)(owner: "rails", repo: "rails", perPage: 1, state:
                            "OPEN", orderBy: "CREATED_AT", direction: "DESC")
  ⎿  {                             
       "issues": [
         {
     … +41 lines (ctrl+r to expand)

⏺ Railsリポジトリの最新Open Issue(#55532)の概要:

  タイトル: Old rails db:migrate vs rails db:migrate:reset behaviour differences

  作成者: george-ayris

  内容の要約:
  Rails 8において、rails 
  db:migrate:resetコマンドをHeroku上で実行した際の動作の変更に関する問題です。

  - 問題: Rails 7ではrails 
  db:migrateは全てのマイグレーションをスクラッチから実行していましたが、Rails
  8ではrails db:migrate:resetでデータベースを削除しようとして権限エラーが発生
  - エラー内容:
  PostgreSQLデータベースへの接続権限がなく、データベースを削除できない
  - 環境: Herokuのレビュー環境で発生(本番環境では問題なし)
  - 要望: データベースを削除しようとしない、古い動作を保持するrails 
  db:migrateのバリアントが欲しい

  Rails 8でのマイグレーション動作の変更により、Heroku上での既存のワークフローが機能
  しなくなった問題のようです。

リポジトリも直接みましたが、あっているようでした。素敵。
これで業務のRepoを読めるようにして、Issueベースで開発進めてもらうのができそうですね

AIを育てるというお話(ClaudeCode / Devin)

AIには大いに期待しています

直近はAIを使って仕事の補助をお願いすることが多くなってきました。ただ、いつも思うのは「AIが思った通りに動いてくれない」ということ。

「AIはジュニアエンジニアだと思え」とか「簡単なタスクで成功体験を積ませろ」などと言われますが、お金も払っているわけで、「とりあえずいい感じに進めてくれる」期待も少なからずあるわけです。

そこで、サクッと成長させたいがために色々調べてみることにしました。AIに聞きつつ…

 

ちなみにAIツールは ClaudeCode / Devin / ChatGPT / Gemini とか使ってます。ClaudeCode を昨日契約したので色々調べてみようという動機です。

ClaudeCode

ClaudeCode については、CLAUDE.md を用意してプロジェクトに配備しておくだけで、プロジェクト固有の知識として学習してもらうことができるとのこと。

 

アーキテクチャ、コーディング規則、ドメイン知識などさまざまなことを書いておくことで、それらに準じて開発を行ってくれます。
また、人格・対話スタイルについても指定できるので「です・ます調」「曖昧な回答は避ける」「日本語で回答する」などを指示することができます。

「CLAUDE.md」でそのまま検索すると先駆者のさまざまな指示が見られるので、これらを参考に作っていきたいと思います。

 

Devin

Devin は CLAUDE.md のように、自動で何かを読んでくれるという機能はありません。ただし、メモリ的な機能は存在しており、KnowledgeやPlaybookといった形で保存をしておくことができます。

Knowledgeは「背景知識」や「コンテキスト」を与えるためのものです。GitHub の README や設計ドキュメントなどを登録しておけば、会話やタスク実行の際に参照してくれます。

Playbookは「手順」をまとめたものであり、テスト実行などを指示する際に「docker compose up -d -> bundle exec rspec」で起動するなど、具体的なコマンドを登録しておくことができます。

Playbookは置いておくとして、コンテキストを与えたい場合は Knowledge に Devin UI から書いておく必要がありそうです。

 

ということで、CLAUDE.md を作る予定ですので、これを Devin の Knowledge に登録し、AI全般の取り扱い説明書見たいな形で読ませようと思います。

 

 

 

これでかなりマシになるといいなぁ。

今日は ClaudeCode と Devin についてでした。育てるというよりは「ちゃんと指示できるようにする」という文脈の方が強そうですが…

 

初投稿。WEBエンジニアです。

はてなブログ初投稿です。
WEBエンジニアをやっています。
のほほんとブログをやっていこうかと思います。

主に投稿ジャンルは Ruby / Rails / AWS とかになっていくのかなと。
AIもずっと触っているけど移り変わりが激しくて、なかなかついていくのに必死です。

普段はPM職だったり、ガリガリ実装したり、インフラ整えおじさんになったり。とにかく便利屋みたいなことをしています。

ブログは Qiita や Zenn にまとめるほどでもない情報をこっちに日々流していく備忘録のような使い方をできればと思っています。
なんでもAIに聞くのが早い時代ですが、自分が何をAIに質問してどう対応したかは残らないので…

 

アウトプットするぞ!と意気込まず続けられるよう努力しない努力をしようと思います。
どうぞよろしくお願いします。