はじめに
近年のAI技術の発展は、ソフトウェア開発の現場にも大きな変化をもたらしています。これまで手作業で行っていた定型的なタスクをAIに任せることで、開発者はより創造的な業務に集中できるようになりました。本稿では、GitHub ActionsのワークフローにAIモデルを直接統合できる「GitHub Models」という機能について、その具体的な活用方法を解説します。

参考記事
- タイトル: Automate your project with GitHub Models in Actions
- 著者: Kevin Lewis
- 発行元: The GitHub Blog
- 発行日: 2025年8月4日
- URL: https://github.blog/ai-and-ml/generative-ai/automate-your-project-with-github-models-in-actions/
要点
- GitHub Modelsは、GitHub Actionsワークフロー内で直接AIモデルを利用可能にする機能である。
- 利用には、ワークフローファイルにpermissionsブロックを記述し、models: read権限を明示的に付与する必要がある。
- 実装方法には、シンプルなactions/ai-inferenceアクションの利用から、gh-models CLI拡張機能を使ったより高度な連携まで、複数の選択肢が存在する。
- 具体的な活用例として、Issueのトリアージ自動化、リリースノートの自動生成、週次のIssue要約と優先順位付けなどが挙げられる。
- 外部からの入力をプロンプトに含める際は、プロンプトインジェクションのリスクを考慮し、最小権限の原則を適用することが重要である。
詳細解説
そもそもGitHub Modelsとは?
GitHub Modelsは、一言で言えば「GitHubの様々な機能、特にGitHub Actionsから簡単に呼び出せるAIモデルのカタログ」のようなものです。これには、OpenAIのGPTシリーズやMistral AIのモデルなど、業界をリードする様々なAIモデルが含まれています。開発者はこれらのモデルを自分のワークフローに組み込むことで、テキストの生成、要約、分析といったAI機能を活用したプロセス自動化を、GitHubプラットフォーム上で完結させることができます。
準備:ワークフローへの権限付与
GitHub Modelsをワークフローで利用するためには、まずセキュリティ上の設定として、AIモデルへのアクセス許可をワークフローに与える必要があります。これは、ワークフローファイル(.github/workflows/your-workflow.yml)内のpermissionsブロックに一行追加するだけで完了します。
permissions:
contents: read
issues: write
models: read # この行を追加
models: readという権限を追加することで、このワークフローがGitHub Modelsにアクセスできるようになります。これを忘れると、AIモデルを呼び出すステップでエラーが発生するため、必ず設定してください。
セキュリティに関する重要な注意点
AIをワークフローに組み込む際に、プロンプトインジェクションという攻撃手法に注意する必要があります。これは、悪意のあるユーザーがIssueの本文やコメントに特殊な指示を紛れ込ませることで、AIを操り、開発者が意図しない動作(例えば、重要情報の漏洩やリポジトリの破壊など)を引き起こさせる攻撃です。
このリスクを軽減するため、最小権限の原則に従うことが強く推奨されます。例えば、ワークフローがIssueの内容を読み取ることしか必要としないのであれば、issues: write(書き込み権限)ではなくissues: read(読み取り権限)を与えるべきです。これにより、万が一AIが不正に操作されても、被害を最小限に抑えることができます。
活用例1:バグ報告への情報提供依頼を自動化する
開発現場でよくあるのが、情報が不十分なバグ報告です。再現手順や環境情報が欠けていると、開発者は報告者に何度も質問を繰り返す必要があり、時間がかかります。このプロセスをAIで自動化してみましょう。
- 目的: 新しく作成された「bug」ラベル付きのIssueの内容をAIが分析し、再現に必要な情報が不足している場合に、追加情報の提供を依頼するコメントを自動で投稿する。
- 使用技術: actions/ai-inference アクション
このワークフローは、まずIssueが作成されたことをトリガーに起動します。次に、AIに対して「このバグ報告には、再現手順、期待される動作と実際の動作、環境(OSやブラウザ)の詳細が含まれているか?」を判定させます。もし情報が十分であればAIは「pass」という文字列を返し、不足している場合は「〇〇の情報が不足しています。以下の情報を提供してください。」といった丁寧な依頼文を生成します。
ワークフローの最後のステップでは、AIの返答が「pass」でなかった場合にのみ、生成された依頼文をIssueにコメントとして投稿します。このように、AIの出力を条件として後続の処理を分岐させることが、自動化における強力なテクニックとなります。
活用例2:マージされたPRからリリースノートを自動生成する
プロジェクトのバージョンが上がるたびに、変更点をまとめたリリースノートを作成するのは手間のかかる作業です。この作業も、プルリクエスト(PR)がマージされるたびに自動化することが可能です。
- 目的: PRがマージされたら、そのPRの内容(タイトル、本文、コメントなど)をAIが要約し、リリースノートを管理している特定のIssueに1行の変更履歴として追記する。
- 使用技術: gh CLI (GitHubのコマンドラインツール) と gh-models 拡張機能
このワークフローでは、まずgh-modelsという拡張機能をインストールします。そして、マージされたPRの情報をghコマンドで取得し、その内容をパイプ(|)でgh models runコマンドに渡します。プロンプトで「このPRの内容を、ユーザー向けの簡潔な1行の変更履歴にまとめてください」と指示することで、AIが適切な要約を生成します。最後に、その要約をリリースノート用のIssueに追記して完了です。これにより、リリース作業の際には、すでに整理された変更点リストが手に入ります。
活用例3:週次のIssueを要約し、優先順位付けを行う
プロジェクトが活発になると、日々作成される大量のIssueを追いかけるだけでも大変です。AIを使って、1週間の動向をまとめたレポートを自動生成してみましょう。
- 目的: 週に一度、その週に作成された未解決のIssueをすべて集め、AIが内容を要約・テーマ分けし、対応の優先順位を提案するレポートを、新しいIssueとして自動で作成する。
- 使用技術: gh CLI、gh-models 拡張、プロンプトファイル
この例の最大の特徴は、AIへの指示(プロンプト)をワークフローファイルに直接書き込むのではなく、別のYAMLファイル(例:prompts/issue-summary.prompt.yml)として管理する点です。
# prompts/issue-summary.prompt.yml の例
name: Issue summarizer
description: Summarizes weekly issues
model: openai/gpt-4.1
messages:
- role: system
content: あなたは優秀なIssue要約アシスタントです。与えられたIssueの内容をMarkdown形式で応答してください。
- role: user
content: "以下のIssue群を要約し、短い箇条書きでまとめてください。可能であれば、共通のテーマを抽出し、影響度に基づいてチームが優先順位を付けられるように助言してください。Issueリストはこちらです:\n {{input}}"
プロンプトを別ファイルに切り出すことで、再利用性が高まり、管理が容易になります。また、GitHub上ではこのプロンプトファイルを編集するための専用UIも提供されており、チームでプロンプトを改善していく作業がしやすくなります。
ワークフローは、毎週月曜の朝などにスケジュール実行され、過去1週間のIssueを取得してgh models runコマンドに渡します。その際、–fileオプションでこのプロンプトファイルを指定するだけで、AIが要約、テーマ分析、優先順位付けを含む詳細なレポートを生成し、新しいIssueとして起票してくれます。
まとめ
本稿では、GitHub ModelsをGitHub Actionsに統合することで、開発プロセスの様々なタスクをAIの力で自動化する方法を3つの具体的な例と共に解説しました。
これらの例からわかるように、GitHub Modelsは、シンプルなai-inferenceアクションから、gh-models CLIとプロンプトファイルを組み合わせた高度な使い方まで、プロジェクトのニーズに合わせて柔軟に活用できます。AIによる自動化は、開発チームを定型作業から解放し、より価値の高い仕事に集中させてくれる強力な手段です。
