Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ローカルLLMで自動レビューの仕組み
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Naka Sho
June 17, 2026
10
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ローカルLLMで自動レビューの仕組み
ローカルLLMで自動レビュー
Naka Sho
June 17, 2026
More Decks by Naka Sho
See All by Naka Sho
無料で使える「LM Studio」でローカルLLM入門
shogonakao
0
120
単体テストの精度を高めるための guideline
shogonakao
0
290
Javaはレガシーではない!
shogonakao
0
210
型安全性で考えること
shogonakao
0
26
アプリケーションログをs3に転送するとき個人情報気をつけてますか?
shogonakao
0
49
コーディングエージェントと 筋トレ
shogonakao
0
84
SpringBootでAPI開発
shogonakao
0
170
エキサイトブログ刷新に向けて
shogonakao
0
140
【エキサイトブログリビルド】Spring Boot × MyBatis × FreeMarker を使って、データベースの接続先を安全に変更します。
shogonakao
1
890
Featured
See All Featured
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
160
Embracing the Ebb and Flow
colly
88
5.1k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
65
55k
Thoughts on Productivity
jonyablonski
76
5.2k
A Tale of Four Properties
chriscoyier
163
24k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Are puppies a ranking factor?
jonoalderson
1
3.5k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
250
Being A Developer After 40
akosma
91
590k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.1k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
230
ラッコキーワード サービス紹介資料
rakko
1
3.6M
Transcript
ローカル LLM で PR レビューを自動 化する Pub/Sub × Google Chat
× Spring Boot 1
自己紹介 ブログ : shogo-nakao.hatenablog.com 技術スタック : Spring Boot / Google
Cloud 今日話すこと 1. ローカル LLM をうまく使っていこう 2. Google Chat + Pub/Sub を使ってローカル LLM を安全に使う 3. 例: PR レビューを自動化する実装 2
ローカル LLM をうまく使っていこう。 3
課題:どんどんコストが上がってきている claude, codex, copilot, 値上げラッシュ! いいものにはお金を払うのは当然だけど、辛い。 。 。 4
ローカル LLM の精度が少し上がってきた ローカルで動かせる LLM が充実してきた しかも 無料 or 低コスト
で運用できるものが多い うまく活用できたらコストを大幅に削減できるかも? 活用場所は限定される なぜなら PC 環境に依存するので、ハイスペックな PC を求められる。 普通の人にはハードルが高い。 ただ、限定的な小規模タスクのレビュー程度なら、ローカル LLM で十分な精度が出ること も多い。 問題点 レビューまでのコストが高い。 ローカルに対象リポジトリを入れないと行けない。 5
コスト Pub/Sub: 月 10GB まで無料 LLM 推論 : ローカル実行 =
電気代のみ 個人の Gmail アカウントでほぼ無料で運用可能 6
セットアップ手順 1. Pub/Sub トピック&サブスクリプション作成 # トピック作成 gcloud pubsub topics create
gchat-events # サブスクリプション作成 gcloud pubsub subscriptions create gchat-sub \ --topic=gchat-events \ --ack-deadline=60 2. Google Chat API の設定 Google Cloud Console → Google Chat API を有効化 Bot の接続設定を Pub/Sub に変更 トピック名を指定 7
IAM 設定(ここが落とし穴) よくある間違い # NG: トピックの「権限」タブから設定しようとする # → サービスアカウントが見つからず設定できない 正しい設定方法
# Chat サービスアカウントにトピックへの publish 権限を付与 gcloud pubsub topics add-iam-policy-binding gchat-events \ --member="bot のメールアドレス" \ --role="roles/pubsub.publisher" Google Chat の内部サービスアカウント bot のメールアドレス に権限を付与する 8
batch から自動レビュー 9
全体フロー Google Chat ( メンション / コマンド) ↓ Pub/Sub publish
Pub/Sub サブスクリプション ↑ subscribe (ローカル PC ) Batch Application ↓ LM Studio (ローカル推論) ↓ GitHub / Backlog API (レビュー投稿) 10
起動するだけで自動レビュー task subscribe-reviews \ PROJECT_ID=my-project \ SUBSCRIPTION_ID=gchat-sub 起動後は Pub/Sub を継続
subscribe し、 Google Chat からのイベントを 自動でレビュー投稿 11
直列処理で LM Studio を安定稼働 private static final long MAX_OUTSTANDING_MESSAGES =
1L; private static final int CALLBACK_EXECUTOR_THREADS = 1; private static final int PARALLEL_PULL_COUNT = 1; パラメータ 値 意味 maxOutstandingMessages 1 同時取得は 1 件まで executorThreads 1 処理スレッドは 1 本 parallelPullCount 1 並列 Pull なし ローカル GPU は並列処理が苦手 → 1 件ずつ順番に処理 12
手動実行もできる # PR URL を直接指定してレビュー task review-pr PR_URL=https://github.com/owner/repo/pull/123 # Pub/Sub
ペイロードをローカル再現(デバッグ用) task review-payload PAYLOAD='{"prUrl": "...", ...}' review-pr : PR URL を直接指定してローカル実行 review-payload : 受信ペイロードを再現してデバッグ subscribe-reviews : 本番運用。 Pub/Sub を継続監視 13
web から操作する手動レビュー 14
Spring Boot Web + Thymeleaf task run-web # http://localhost:8080 ブラウザ
→ POST /reviews ↓ ReviewPageController ↓ ReviewWorkflowService (batch と共通) ↓ LM Studio ↓ GitHub / Backlog API 結果を画面に表示 15
ReviewPageController @Controller public class ReviewPageController { @PostMapping("/reviews") public String review(@ModelAttribute
ReviewForm form, Model model) { ReviewExecutionResult result = reviewWorkflowService.processRequest( reviewRequestFactory.createRequest( form.getPrUrl(), parsePublishMode(form.getPublishMode()), form.getInstructions(), form.isDiscardExistingPending())); model.addAttribute("result", result); return "index"; } } 16
フォーム項目 項目 説明 PR URL GitHub / Backlog の PR
URL Publish mode GITHUB_PENDING / BACKLOG_COMMENT / DRAFT_ONLY Instructions LM Studio への追加指示(任意) Discard existing pending 既存 Pending を削除してから投稿 batch の review-pr コマンドと同じ ReviewWorkflowService を共有 17
MCP サーバーとして lmstudio から手動レビュー 18
MCP (Model Context Protocol) とは LLM が 外部ツールを呼び出す ための標準プロトコル LM
Studio (lmstudio が子プロセスとして MCP Server を自動起動) ↓ STDIO (MCP) Spring Boot MCP Server ↓ GitHub API / Backlog API lmstudio の設定に起動コマンドを登録するだけ — 手動起動不要 19
提供ツール一覧 ツール名 説明 fetchPrComments GitHub PR の本文・コメント・インラインコメント取得 getPrDiff GitHub PR
の unified diff 取得 reviewExamToPrPending GitHub に Pending レビューを投稿 fetchBacklogPrComments Backlog PR の情報取得 addBacklogPrComment Backlog PR にコメント投稿 @Tool( name = "fetchPrComments", description = "GitHub PR の本文・コメント・インラインコメントを取得") public FetchPrCommentsService.Result fetchPrComments( @ToolParam(description = "PR URL") String prUrl) { PrRef ref = PrUrlParser.parse(prUrl); return fetchPrCommentsService.fetchPrComments(ref, prUrl); } 20
lmstudio との連携フロー 1. lmstudio の MCP 設定に java -jar mcp.jar
を登録 2. ユーザーが「この PR をレビューして」と指示 3. lmstudio が MCP Server を 自動起動( STDIO ) 4. LLM が 自律的にツールを選択・呼び出す fetchPrComments / getPrDiff → レビュー生成 → reviewExamToPrPending LLM 自身がエージェントとして動作 コードを書かずに LLM が直接 GitHub を操作 21
なぜ OpenClaw を使わなかったのか? 22
OpenClaw とは 自己ホスト型の AI エージェントフレームワーク( MIT ライセンス) LM Studio などローカル
LLM にネイティブ対応 GitHub PR レビュースキルが標準搭載 Pub/Sub 風の Heartbeat / Webhook 通知が組み込み済み MCP サーバー/クライアントの両モードで動作 npm install + 設定ファイル 1 枚で即起動 今回やりたいことがすべて揃っている 23
OpenClaw vs 自作 観点 OpenClaw 自作 導入速度 数時間で動作 遅い LM
Studio 連携 設定 1 コマンドで完了 自前 PR レビューフロー スキル・ MCP 追加だけで即利用 自前 セキュリティ 怪しい 把握 24
OpenClaw を選ばなかった理由 セキュリティリスク ClawHub (スキルマーケット)の 約 12% が悪意あるコードを含む と報告 プロンプトインジェクション・ツールハイジャッキングへの脆弱性
CVE-2026-25253 (クリティカルな脆弱性)が発覚 コントロールの問題 タスクが失敗しても「完了」と報告する事例が多数 過剰な推論ループで 予期しない副作用が発生しうる 高い権限によって攻撃リスクが増大 25
カスタマイズ GitHub PR レビュー以外のタスクも自動化 Backlog など他のツールも同じフローで対応可能 google docs, jira, Redmine
などツールも同様に連携可能 ビジネスロジックを完全制御 レビュー以外のロジックはすべてシステム側で実装 ( 再現性の高いシステム ) 独自フィルターやルールを自由に実装可能。例えば「 PR 以外の URL はレビュー しない」 「特定の PR は別モデルでレビューする」など 26
まとめ 27
3 つのレビュー起動方法 方法 用途 batch 自動 Google Chat から無人実行 Web
UI ブラウザで手軽に手動実行 **MCP ** LLM が自律的にツール選択 28
pub/sub を使うメリット ポート開放・ VPN・ngrok 不要 インバウンド通信ゼロ でローカル LLM をクラウドと接続 Pub/Sub
の 7 日間保持 → オフラインでも安心 ローカル推論 = コスト実質 0 (電気代のみ) まとめると 外部から直接触れないローカルリソースを クラウドのイベントドリブンで活用 できる 29
ご清聴ありがとうございました 30