🗓️

dotnet/runtimeにマージされた最新PRを日本語要約するサイトを作ってみた

に公開

はじめに

dotnet/runtimeにマージされたPull Requestの概要をLLMで日本語に要約した内容をまとめたサイトを自分用として作成しました。
2025年12月下旬頃にリリースしてから特に大きな問題もなくしっかりと動いています。
今回は作成したサイトの内容等について記載しておこうと思います。

https://prozolic.github.io/PRDigest.NET/

ちなみに後にも記載していますが、以下のブログ記事にインスパイアされて作成しました。

https://zenn.dev/gatechnologies/articles/f72a00c771874a

作成した経緯

まず、.NETランタイムの本体であるdotnet/runtimeでは、毎日のように機能追加、パフォーマンス改善対応や不具合修正等のPull Requestが作成、マージがされています。

私も去年後半からコントリビュータとして少しずつですが、小さいパフォーマンス改善やエッジケースの不具合修正などのPull Requestを作成するようになったので、その影響で日々の日課?として最新のマージ内容を確認するようになりました。
しかし、以下の理由からこれが意外に大変ということにも気づきました。

  • 毎日20件から30件のマージが行われている(コミュニティが活発なのは素晴らしい!)
  • あまり理解できていない領域のPull Requestの内容把握が難しい
  • 当たり前ですが、内容がすべて英語

指定日にマージされたPull Request自体は、例えば以下のような条件でフィルタリングすれば確認することができます。

特定日にマージされたPull Requestを抽出する条件
is:pr is:merged merged:2026-02-09 

ただ、約20件は意外に多いのとそもそもクロスプラットフォームのフレームワークということから色々な領域に関する内容が含まれています。そのため、前提知識がないとなぜこのような修正が行われたのか分からないものも少なからずあります。
あとは私自身が英語が得意ではない(とても苦手)なので、そもそも読むだけでも一苦労です。今はブラウザの翻訳機能や各種翻訳サイトなどが大分いい感じに翻訳してくれますが、それでも内容に間違いがないか結局読むことも多いので、ある程度は頑張る必要があります。

上記から少しでも楽できないかなと思っていたところ、2025年12月下旬頃に YuheiNakasakaさんが書かれた上記のブログ記事(Railsにマージされた最新PRを毎日自動要約するサイトを作った)を読んで、「これはdotnet/runtimeでも欲しいな」と思い、二番煎じにはなりますが作成しました。

構成

基本的にはYuheiNakasakaさんのブログ記事で紹介されている構成に近い形で作成しました。
主な違う部分としては、以下の通りです。

  • GitHub APIによるPull Request取得からHTML出力までを.NET(C#)で実行
  • LLMには Claude を使用
  • 静的サイトジェネレータは自前

実行フロー

毎日UTC時間で00:00時にGitHub Actionsが実行されて、以下のJOBが実行されます。
実行フロー

GitHub APIからPull Request取得

GitHub APIとしてはoctokit.netを使用しています。個人的にはAPIに少し思うところがあるのですが、今回はすぐに実装できるものとして採用しました。

LLMによる日本語要約

Anthropic REST APIで、Pull Requestごとに日本語要約をリクエストしています。
実装としては、公式SDKであるanthropic-sdk-csharpを用いています。モデルについては、ある程度性能がありつつ値段を考えた結果、Claude Haiku 4.5を選択しました。

要約の精度向上や出力形式をできる限り崩さないように、Claude公式ガイドにも記載されているシステムプロンプトに、以下の出力フォーマットや日本語要約のガイドライン等を与えています。

システムテンプレート
あなたは.NET開発者向けのPull Request要約アシスタントです。
以下の形式で要約を出力してください:

=================================
出力形式:
        
#### 概要
1行から5行ぐらいで簡潔に記述してください。
またサンプルコードなどもあれば記載してください。
        
#### 変更内容
変更されたファイルと主な変更内容をリストアップしてください。
        
#### パフォーマンスへの影響
パフォーマンスに関連する変更があれば具体的に記載してください。(なければ"影響なし")
改善点や懸念点を明記してください。
        
#### 関連Issue
関連するIssueあれば記載してください。(なければ"なし")
        
#### その他
それ以外に記載した方が良い特記事項があれば記載してください。(なければ"なし")

#### サンプルコードを記載時の注意点
C#のコードブロックを使用してください:
```csharp
// ソースコードを記載
```
=================================

.NET開発者にとって有益な情報を含める形で、最大1000文字までで要約してください。
タイトルは不要です。markdown形式で出力してください。

【追加の詳細ガイドライン】
要約を作成する際は、以下の点に特に注意を払ってください:

1. **コード変更の技術的影響**
   - 変更がランタイム、コンパイラ、ライブラリのどの部分に影響するか明記
   - API の変更がある場合は、公開APIか内部実装かを区別
   - 互換性への影響(破壊的変更、非推奨化など)を明確に記載

2. **パフォーマンスに関する分析**
   - メモリ使用量、実行速度、スループットへの影響を具体的に記載
   - ベンチマーク結果や計測値がある場合は必ず含める
   - パフォーマンス改善の場合は、改善率や具体的な数値を記載

3. **セキュリティとバグ修正**
   - セキュリティ上の脆弱性修正の場合は、その重要度を明記
   - バグ修正の場合、修正前の問題の再現条件と修正後の動作を対比
   - CVE番号などのセキュリティ識別子がある場合は記載

https://platform.claude.com/docs/ja/build-with-claude/prompt-engineering/system-prompts

そして、Claudeへリクエストする際に渡すPull Requestの情報は、以下の通りです。

  • タイトル、作成者、レビュワー
  • 概要
  • GitHub Copilotによる概要
  • 変更ファイル情報(最大30ファイル)
  • これらを1000文字以内(出力トークン数対策)

dotnet/runtimeでPull Requestを作成すると、GitHub CopilotによるPull requestの概要(変更の内容等)をまとめてくれます。この情報が良い感じにまとまっているので、こちらも含めることである程度精度が出るようにしています。
例えば、最近私が作成したPull Requestだと以下の内容を作成し、Claudeへリクエストします。

https://github.com/dotnet/runtime/pull/124042

Claudeへリクエストする際に渡すメッセージ
以下のdotnet/runtimeのPull Requestを要約してください。
またできる限り、以下の情報以外の内容を推測して含めないようにしてください。

Pull Request:
- Fix integer overflow in ImmutableArray range validation #124042
- 作成者: prozolic
- レビュワー: copilot-pull-request-reviewer[bot], copilot-pull-request-reviewer[bot], copilot-pull-request-reviewer[bot], eiriktsarpalis

作成者による概要:
#124043
Prevent OutOfMemoryException by detecting integer overflow when validating start + length parameters. Previously, when start=1 and length=int.MaxValue, the addition would overflow to a negative value, incorrectly passing validation and causing OutOfMemoryException during array allocation.

Copilotによる概要:
## Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.

変更ファイル:
- src/libraries/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableArray.cs (+4/-4, total: 8)
- src/libraries/System.Collections.Immutable/tests/ImmutableArrayTest.cs (+13/-0, total: 13)

Markdownファイルとして作成

Pull Requestの日本語要約された情報に、付加情報(タイトル、URL、作成者、作成日時、マージ日時、ラベル)を追加したものを、以下のようなディレクトリ構成に基づいてMarkdownファイルとして作成します。

Markdownファイルのディレクトリ構成
├─ archives/
│   └─ 2026
│      └─ 01
│         ├─ 01.md
│         └─ 02.md
│         ...

このファイルを日本語要約のアーカイブとして使うため、あとの工程にはなりますが、GitHub Actions bot 経由でコミットしています。

HTMLファイル出力

自前の簡易HTMLコンバーターを用いて、Markdownファイルにまとめた要約情報等をHTML化して、ファイル保存を行っています。自前といっても実際の処理は、いつもお世話になっているmarkdigの機能を用いて実装しているため、実装工数もそこまでかかっていません。

デザイン等は、ベースとなる部分を私が軽く実装した後、Claude Code(実装当時はOpus 4.5)で詳細内容を含めて実装してもらいました。(デザインの良し悪しはまあいいでしょう笑)
シンタックスハイライトには、こちらもいつもお世話になっているPrism.jsが手軽に使えて、かつ入れるだけでcsharpコードブロックを良い感じに表示してくれるため、利用しています。

HTMLファイルは、Markdownファイルと違いコミットしていません。
Markdownファイルさえあれば、HTML出力処理を再度実行すれば、手元でも出力できるので不要だと判断しました。
HTMLのデザインの調整などを行った場合には、再度HTML出力とGitHub Pageへデプロイを実行するだけでいつでもデザインが変更可能です。

GitHub Pagesへデプロイ

出力したHTMLファイルをGitHub Pagesへデプロイします。
これで最新のマージされたPull Requestの日本語要約が追加、更新されます。

大事な事項/機能

コスト面

使用しているモデル(Claude Haiku 4.5)、Pull Request数や入力トークン数によって変動しますが、平均すると一日にかかる料金は0.1USD超えるか超えないかぐらいになっています。
これを高いか安いかは人によりけりですが、私としては外出中やちょっとした時間に見るときなど意外に使っているので、有りだと判断しました。

表示するPull Requestの情報

タイトル等、概要、変更内容、パフォーマンスへの影響、関連Issue、その他の形式で日本語要約した情報が表示されます。
その中でも個人的に重要な部分としては、Pull Requestに付与されているラベル情報を表示しています。

pull request 124042

dotnet/runtimeは、自動もしくは手動で修正内容に該当する領域のラベルが付与されます。上記の場合だと、System.Collections.Immutable.ImmutableArrayクラスの調整のため、area-System.Collectionsラベルが付与されています。
このラベルを見るだけでも、どの部分の修正か判断できますのでとても便利です。

ラベル別表示

日本語要約を表示するページでは、単純な一覧表示とラベル別の一覧表示をできるようにしています。
ラベル別の一覧表示は、直近で急遽ほしいと思い、Claude Code(Claude Opus 4.6)のPlanモードからの自動承認モードで実装してもらいました。
Markdownファイルからラベル抽出処理などは私が実装しましたが、デザイン周りやラベル抽出処理を使ったHTML出力の調整等はClaude Codeにお任せ実装になります。
HTML周りは、LLMによる自動実装で行った箇所のほうが多く、慣れていない言語等を扱う際には改めて便利ですね。

ラベル別一覧

カテゴリ別表示(2026年2月23日追記)

コミュニティ、AI Agent(GitHub Copilot)、Botのどこから作成されたPRをわかりやすくするために、カテゴリ別表示も追加しました。
これにより、それぞれどれくらいの比率でPull Requestが作成、マージされているわかるようになりました。

カテゴリ別表示

RSS フィード 対応(2026年2月23日追記)

Issueにて要望があった機能として、最新日を含めた三日間の各Pull Request情報(概要のみ)について、RSS フィード 対応を行いました。
以下のURLをRSS フィードに追加することで、RSSリーダーでPull Request情報の一覧を取得することができます。
こちらも基本的に毎日UTC時間で00:00に追加、更新されるようになっています。

まとめ

GitHub Actions、GitHub REST API、Claudeなど今ではメジャーとなる技術等でPull Requestの日本語要約サイトを構築したという内容でした。実際に作成してから毎朝やちょっとした時間に見るなどちゃんと使うものとして活用できるので非常に満足しています。
あとラベルにarea-skillsが追加されているなど、ここにもAgent Skillの波が来ているとしみじみ感じているところです。

それでは今回はこのへんで。

Discussion