🧠

GitHub × Dify コードレビューAI 導入マニュアル(完全詳細ガイド)

に公開

Dify × GitHub 自動コードレビュー導入マニュアル(完全版)

🎯 はじめに:目的と全体構成の理解

このステージでは、DifyとGitHubを連携させる自動コードレビュープロセス全体の構造と目的を明確にします。

✅ ゴール

  • GitHub上のコード変更を自動で検出し、DifyのAIエージェントでレビューを実行する
  • レビュー結果をGitHub PRコメントやSlackに通知し、対話的にレビューを継続可能にする

🧱 システム構成概要

コード変更(GitHub Push)
     ↓
GitHub Actions
     ↓
Dify Agent または Workflow へ API 呼び出し
     ↓
レビュー結果を GitHub PRコメント または Slack へ通知
     ↓
ユーザーが Dify 上でチャット形式のフォローアップ

💡 連携のユースケース

機能 利点
自動コードレビュー 手動作業の軽減と品質の標準化
GitHub PRコメント出力 チームレビューへのスムーズな統合
Slack通知 チームメンバーへの即時共有
Difyチャットでの継続質問 AIと対話形式での深堀り学習や指摘の理解支援
ワークフローによる多段階処理 要約→問題点→改善提案など高度なレビュー構成も可能

🛠 ステージ1:Difyの初期設定

このステージでは、コードレビューに使うDifyのエージェントやワークフローを作成し、GitHubからAPI経由で呼び出すための準備を整えます。

1-1. アカウント作成とログイン

  • Dify公式サイト にアクセスし、アカウントを作成します。
  • 作成後、ダッシュボードにログインします。

1-2. エージェントの作成(単一ステップのレビュー用途)

  1. 左メニュー「Agents」から「新規作成」
  2. モード:ChatまたはAPI
  3. プロンプト入力(例):
あなたはプロのコードレビュアーです。渡されたコードに対して以下の観点でレビューを行ってください:
- バグの可能性
- コーディング規約の違反
- セキュリティ上の懸念
- 可読性や保守性の改善点
  1. 入力スキーマ(例):
{
  "code": {"type": "string", "description": "対象コード"},
  "filename": {"type": "string", "description": "ファイル名"}
}
  1. 作成後に表示されるAgent IDをメモしておきます。

1-3. ワークフローの作成(多段階ステップが必要な場合)

  1. 左メニュー「Workflows」から「新規作成」

  2. Step構成(例):

    • Step1:コード要約
    • Step2:問題点の洗い出し
    • Step3:改善提案
  3. 入力スキーマはエージェントと同様

  4. APIモードを有効化し、生成されたWorkflow IDを控えます

1-4. APIキーの取得

  1. 左メニュー「API Keys」から「新規作成」
  2. 任意の名前を付けてキーを生成
  3. 生成されたAPIキーは後でGitHubに登録するため、必ず控えておきましょう

⚙️ ステージ2:GitHub Actionsの構築

このステージでは、GitHubのリポジトリ上にあるコードが変更された際、自動的にDifyに送信してレビューを行うためのワークフローを作成します。

2-1. GitHub Secretsの設定

GitHubリポジトリの Settings > Secrets and variables > Actions に以下を追加してください:

名前 用途
DIFY_API_KEY Difyで発行したAPIキー
DIFY_AGENT_ID 作成したAgentのID(Agent使用時)
DIFY_WORKFLOW_ID 作成したWorkflowのID(Workflow使用時)

2-2. ワークフロー定義ファイルの作成

.github/workflows/dify-review.yml を作成し、以下のように記述します。

name: Dify Review

on:
  push:
    paths:
      - '**.js'
      - '**.ts'
      - '**.py'

jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: Detect changed files
        id: files
        run: |
          echo "files=$(git diff-tree --no-commit-id --name-only -r ${{ github.sha }} | grep -E '\\.(js|ts|py)$' | tr '\n' ' ')" >> $GITHUB_OUTPUT

      - name: Send code to Dify Agent
        env:
          DIFY_API_KEY: ${{ secrets.DIFY_API_KEY }}
          AGENT_ID: ${{ secrets.DIFY_AGENT_ID }}
        run: |
          for file in ${{ steps.files.outputs.files }}; do
            echo "Reviewing $file..."
            content=$(cat "$file" | jq -Rs .)
            curl -X POST https://api.dify.ai/v1/chat-messages \
              -H "Authorization: Bearer $DIFY_API_KEY" \
              -H "Content-Type: application/json" \
              -d '{
                "inputs": {"code": '"$content"', "filename": "'$file'"},
                "response_mode": "blocking",
                "user": "github-bot",
                "agent_id": "'$AGENT_ID'"
              }'
          done

💬 ステージ3:Slack通知とDifyチャット連携

このステージでは、レビュー結果をSlackで即座に通知したり、Difyチャットで継続的な対話を可能にする機能を実装します。

3-1. Slack Webhookの設定

  1. Slack APIのApp管理画面 にアクセス
  2. 新規アプリを作成
  3. 「Incoming Webhooks」を有効化
  4. 通知したいチャンネルを指定してWebhook URLを取得
  5. GitHub Secretsに SLACK_WEBHOOK_URL として追加

3-2. GitHub ActionsにSlack通知を追加

- name: Notify to Slack
  if: always()
  env:
    SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
  run: |
    TEXT="Difyによるコードレビューが完了しました。PRをご確認ください。"
    curl -X POST -H 'Content-type: application/json' \
      --data "{\"text\": \"$TEXT\"}" \
      $SLACK_WEBHOOK_URL

3-3. Difyチャット連携

  • Dify Agent画面で「Share」からチャットリンクを発行し、PRコメントやSlack通知に貼り付け
  • NotionやWiki、社内ポータルに埋め込む活用も可能

🧾 ステージ4:レビュー結果のフォーマット最適化

4-1. PRコメント用テンプレート例

### 🤖 自動レビュー by Dify

📄 ファイル: `src/example.js`

⚠️ 指摘事項:
- 不要な変数 `temp` が定義されています
- 条件分岐が複雑で可読性に課題があります

💡 改善提案:
```js
// Before
let temp = result;
return temp;

// After
return result;

🔍 Difyと対話する


### 4-2. Slack通知用テンプレート例

```json
{
  "text": "🚨 *Difyコードレビュー完了*\n\n*ファイル:* `src/app.py`\n*指摘数:* 2件\n🔗 <https://github.com/org/repo/pull/123|PRを確認する>\n🧠 <https://app.dify.ai/chat/AGENT_ID?conversation_id=xxxxx|Difyと対話する>"
}

4-3. Markdown整形の自動化(Node.js例)

function formatReview({ filename, issues, suggestion }) {
  return `### 🤖 Difyレビュー\n\n📄 ファイル: \`${filename}\`\n\n${issues.map(i => `- ⚠️ ${i}`).join('\n')}\n\n💡 提案:\n\\`\\`\\`js\n${suggestion}\n\\`\\`\\``;
}

🚀 ステージ5:実践的な運用例とベストプラクティス

5-1. 小規模開発チームでの導入パターン

  • Dify Agentで単純レビュー
  • 通知先:GitHub PR+Slack
  • 必要に応じてDifyチャットへ

5-2. 中〜大規模チームの運用パターン

  • Dify Workflowによる多段階レビュー
  • 組織共通プロンプト・通知先チャンネル化
  • 共有チャットリンク運用でレビュー知見の可視化

5-3. ベストプラクティス集

項目 内容
プロンプト設計 観点を5〜7に絞り具体例を添える
セキュリティ管理 APIキー/WebhookはGitHub Secretsで管理
ステージング環境検証 ForkやDraft PRで試験運用を推奨
効果測定 所要時間や指摘数、質の変化をトラッキング

導入ロードマップ例

  1. PoC導入→2.機能拡張→3.全社展開

🚑 ステージ6:トラブルシューティングとFAQ

6-1. トラブル事例と対処法

  • Actionsエラー:Secrets/ファイル/JSON/認証エラーの確認
  • PRコメント非表示:Token権限/スクリプト/パス/バージョン確認
  • Dify実行不可:APIモード/スキーマ一致/エラーログ確認

6-2. FAQ(よくある質問)

  • Q. レビュー精度は?→一般的な検出は高精度、業務特化はプロンプト補強で
  • Q. 継続会話は?→conversation_id入りURLで深掘り
  • Q. 複数ファイル対応?→ループorzipで送信。サイズ/数に注意
  • Q. Slack連携必須?→任意だが可視化・通知活性化には有効

🌱 ステージ7:今後の展望と拡張

7-1. 技術進化と連携強化

  • 複数AIモデル選択、LinterやCIと連携、基準ルール自動アップデート

7-2. 組織展開アイデア

  • 前処理化、ナレッジ化、共通テンプレ整備、ダッシュボード導入

7-3. 今後のロードマップ

フェーズ 予定内容 目的
Q3 2024 カスタムルールのGUI編集機能 非エンジニアでもレビュー方針を設定可能に
Q4 2024 分析レポートの自動生成 定期的な品質分析とチーム全体へのフィードバック
Q1 2025 Dify×他AIツールとの連携 AI同士の役割分担による開発支援の最適化

📘 まとめと次のステップ

🔁 振り返り

ステージ 要点
0. 目的と構成 GitHub→Dify→通知・連携の全体像
1. Dify設定 Agent/Workflow準備
2. Actions 差分検知・API自動化
3. Slack連携 通知+チャット連携
4. レビュー整形 Markdownによる可読性・行動性
5. ベストプラクティス 品質・コスト・運用最適化
6. トラブル対策 実務FAQとその対策
7. 今後の展望 組織的導入・自律成長へ

✅ 導入チェックリスト

  • Dify登録・Agent/Workflow作成
  • GitHub Secrets設定
  • Actionsスクリプト導入・自動化確認
  • Slack/チャットUI連携
  • テンプレート整形・可読性確保
  • ベストプラクティス・ルール共有

🚀 次のアクション

  1. 小規模PoC→2.全社展開→3.効果測定・KPI化→4.フィードバックループ確立

🎯 最後に

コードレビューは品質管理だけでなく、学習と成長の核です。DifyなどAIは“協働者”となりうる──手間を減らし、気づきや改善を促進し、未来のレビュー文化を今日から一歩ずつ作っていきましょう。

関連記事
AIとスパイラルダイナミクスで再設計するレビュー文化

著者プロフィール

  • 名前:山本治信
  • 職種:AI Productivity Engineer
  • 専門:フルスタックエンジニア
  • 経歴:
    • CTO、複数特許取得、技術記事執筆
  • ソーシャルメディア:

Discussion