【MFi認証】iPhone SDカードリーダー, Lightning to SD Card Camera Reader for Phone/Pad 写真/ビデオ高速転送 メモリカードリーダー 双方向データ転送 変換アダプター OTG機能SDカードリーダー Phone 14/13/12/11/X/XS/XR/8, プラグアンドプレイ
¥679 (2025年4月30日 13:11 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)
はじめに
最近の 生成 AI トレンドの1つである Devin を弊社も導入しており、積極的に 遊ばせてもらって 業務へ活用しています。
現状は、以下のようなフローで Devin を使用しています。
- 私が GitHub で issue を起票
- 私が Slack で Devin に issue をもとに実装するよう依頼
- Devin がプルリクを作成し、私にレビュー依頼
- 私がプルリクをレビューし、指摘項目があれば Devin に修正を依頼
- 最終的にプルリク内容に問題がなければマージ
ChatGPT や GitHub Copilot などの生成 AI を活用することで、コードを書く時間を大幅に短縮できることは、すでに多くの方が実感されていることと思います。
しかし、Devin の特徴は、ミーティング中や、寝ている間など、自分が直接作業していない間も、実装を進めることができる点にあります。
個人的には、これが ChatGPT や GitHub Copilot ではなく、Devin を使用する最大のメリットだと感じています。
一方で、Devin を活用する上で、最もネックになるポイントが、issue の起票です。
人間のエンジニアに対して issue を起票する場合は、内容をなんとなく汲み取ってくれたり、口頭で補完することができるので、ざっくりとした内容だとしても、あまり気にしなくても良いと思います。
しかし、Devin に対しては、ある程度詳細に issue を起票する必要があります。
そのため、「詳細に issue を起票するくらいなら、自分で実装した方が早いのでは」と感じることもあり、これこそが Devin を活用する上での課題だと感じています。
そこで、この課題を解決するために、GitHub Copilot に issue の作成を依頼し、それを Devin に実装させるという手法を試してみました。
本記事では、このセットアップから実行までの流れをご紹介します。
注意点
環境
本記事で使用する環境は以下のとおりです。
前提
本記事では、以下を前提とします。
準備
GitHub MCP Server のセットアップ
GitHub のトークンを発行する
GitHub の トークン発行ページ にアクセスします。
「Generate new token」>「Generate new token (classic)」をクリックします。
以下の項目を入力します。
- Note:トークンの説明
- Expiration:トークンの有効期限
- Select scopes:トークンのアクセス権限
トークンの設置
Visual Studio Code Insiders の設定ファイルに、以下のようにトークンを設置し、GitHub MCP Server をセットアップします。
settings.json
{
"mcp": {
"servers": {
"github": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-github"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": ""
}
}
}
}
}
Slack MCP Server のセットアップ
Slack のトークンを発行する
Slack の アプリ管理ページ にアクセスします。
「Create New App」>「From a manifest」をクリックします。
MCP Server を使用したいワークスペースを選択し、「Next」>「Next」>「Create」をクリックします。
アプリが作成されたら、次にトークンを発行します。
「Settings」>「Basic Information」>「App-Level Tokens」>「Generate Token and Scopes」をクリックします。
以下の項目を入力します。
- Token Name:トークンの名前
- Scopes to be accessed by this token:トークンのアクセス権限
チームID を確認する
チーム ID を確認するには、以下を参考にしてください。
トークンの設置
Visual Studio Code Insiders の設定ファイルに、以下のようにトークンを設置し、Slack MCP Server をセットアップします。
settings.json
{
"mcp": {
"servers": {
"github": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-github"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": ""
}
},
"slack": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-slack"
],
"env": {
"SLACK_BOT_TOKEN": "",
"SLACK_TEAM_ID": ""
}
}
}
}
}
以上で、GitHub MCP Server と Slack MCP Server のセットアップは完了です。
実行
GitHub Copilot に実装方針をまとめてもらう
まずは、GitHub Copilot に実装方針をまとめてもらいます。
色々試してみましたが、以下のように依頼することで、実装方針をまとめてくれます。
下記の機能を追加したいので、実装方針を考えてください。
実装は他の人に依頼するので、誰が見ても分かるように、実装方針を詳しく記述してください。
「ユーザーのアカウントロック機能を追加する。ログインに10回連続で失敗した場合、アカウントをロックし、ログインできないようにする。1時間後にロックを解除する。」
すると、以下のように実装方針をまとめてくれました。
また、マークダウンファイルで出力するよう依頼することもできます。
実際に出力されたマークダウンファイル
# ユーザーアカウントロック機能 実装方針
## 目的
- ユーザーがログインに10回連続で失敗した場合、アカウントをロックし、ログインできないようにする。
- ロックは1時間後に自動で解除される。
---
## 1. データベース設計の変更
### ユーザーテーブルに以下のカラムを追加
- `failed_login_attempts`(int型, デフォルト0)
連続ログイン失敗回数を記録
- `account_locked_until`(datetime型, NULL許容)
ロック解除日時を記録。NULLの場合はロックされていない状態。
---
## 2. ログイン処理の変更
### ログイン時の処理フロー
1. ユーザー取得時にロック状態を確認
- `account_locked_until`が現在時刻より未来の場合、ログイン処理を中断し「アカウントがロックされています」とエラーを返す。
2. パスワード認証
- 認証失敗時:
- `failed_login_attempts`を+1する。
- 10回目の失敗なら、`account_locked_until`に「現在時刻+1時間」をセットし、`failed_login_attempts`を0にリセット。
- 10回未満なら、`account_locked_until`は変更しない。
- 認証成功時:
- `failed_login_attempts`を0にリセット。
- `account_locked_until`もNULLにリセット。
---
## 3. ユーザーへの通知
- ロック時は「アカウントがロックされました。1時間後に自動で解除されます」と明確なメッセージを返す。
---
## 4. 管理者向け対応(任意)
- 管理画面からロック解除できる機能を追加してもよい。
---
## 5. テストケース例
- 10回連続失敗でロックされるか
- ロック中はログインできないか
- 1時間後に自動解除されるか
- ログイン成功時に失敗回数がリセットされるか
---
## 6. セキュリティ考慮
- ロック状態や失敗回数はログインエラー時に詳細を返しすぎないよう注意(攻撃者へのヒント防止)。
---
## 7. 既存コードへの影響
- ログイン処理、ユーザーモデル、DBマイグレーションの追加が必要。
- テストコードの追加・修正。
---
## まとめ
- DBに失敗回数とロック解除日時を持たせる
- ログイン時にロック状態を判定
- 失敗時にカウントアップ、10回でロック
- 1時間後に自動解除
- 必要に応じて管理機能や通知も検討
この方針に従って実装してください。
GitHub Copilot に issue を起票してもらう
次に、GitHub Copilot に issue を起票してもらいます。
以下のように依頼することで、issue を起票してくれます。
考えた実装方針をもとに、「https://github.com/kumaryoya/test-app」リポジトリにissueを作成してください。
GitHub MCP Server を使用しようとするので、「続行」をクリックします
無事に issue が作成されたようです。
Github で確認したところ、無事に issue が作成されていました。
GitHub Copilot から Devin に実装を依頼する
最後に、GitHub Copilot から Devin に実装を依頼します。
弊社では、#devin_kun
というチャンネルで、Devin とやり取りをしています。
また、@Devin
にメンションしてと依頼するとあまり上手く動作しなかったので、Slack で Devin のメンバーIDを調べて、メンバーIDを指定してメンションするように依頼しました。
以下のように依頼することで、Devin に実装を依頼してくれました。
Slack の #devin_kun チャンネルで、メンバーID XXXXXXXXXXX に正しくメンションをして、作成した issue の対応を依頼してください。
Slack MCP Server を使用しようとするので、「続行」をクリックします。
無事に Devin に実装を依頼することができたようです。
Slack で確認したところ、無事に Devin に実装を依頼することができていました。
まとめ
GitHub Copilot を活用することで、Devin に実装を依頼するための issue を簡単に起票することができました。
効率的に Devin を活用するには、効率的に issue を起票することが重要です。
今後も、GitHub Copilot や Devin を活用して、業務の効率化を図っていきたいと思います。
最後までご覧いただき、ありがとうございました。
Views: 0