GitHub は Pull Request とブランチ管理だけでも十分使えるが、他にも実用的な機能が揃っている。知らないまま使っていないものをいくつか整理した。


GitHub CLI(gh コマンド)

gh は GitHub 公式の CLI ツールで、ブラウザを開かずに GitHub の操作ができる。

# インストール(macOS)
brew install gh

# 認証
gh auth login

日常的に使うコマンドはこのあたり。

# PR を作成
gh pr create --title "fix: ログ出力の修正" --body "..."

# PR 一覧を確認
gh pr list

# PR をマージ
gh pr merge 42

# Issue を作成
gh issue create --title "バグ報告" --label bug

# ワークフローを手動実行
gh workflow run deploy.yml

# リリースを作成
gh release create v1.2.0 --generate-notes

特に gh pr create は手元のブランチから直接 PR を出せるので、ブラウザとターミナルを行き来する手間が省ける。AIエージェントにリポジトリ操作を任せるときも、gh を使ったコマンドとして記述しやすい。

インストール方法: cli.github.com


Dependabot

依存パッケージのバージョンアップや脆弱性対応の PR を自動で作ってくれる機能。有効にすると、GitHub が定期的に依存関係をスキャンして更新 PR を送ってくる。

.github/dependabot.yml を置くだけで有効になる。

# .github/dependabot.yml
version: 2
updates:
  - package-ecosystem: "pip"    # pip / npm / bundler / docker など
    directory: "/"
    schedule:
      interval: "weekly"        # daily / weekly / monthly
    labels:
      - "dependencies"

2 種類の機能がある。

Dependabot security updates は、既知の脆弱性(CVE)が登録された依存パッケージを自動的に安全なバージョンへ更新する PR を作成する。パブリックリポジトリでは無料で使える。Settings → Security → Dependabot alerts から有効にできる。

Dependabot version updates は、脆弱性の有無にかかわらず最新バージョンへの更新 PR を定期的に作る。dependabot.yml を置いておくだけで動く。

ライブラリを手動でアップデートし忘れるパターンが減る。PR として来るのでレビューしてマージするかどうかを判断できる。


Branch Protection Rules

main ブランチへの直接 push を防いだり、CI が通らない限りマージできないようにする設定。個人開発でも入れておくと安心できる。

Settings → Branches → Add branch protection rule から設定する。

よく使う設定項目:

設定 内容
Require a pull request before merging direct push を禁止。PR 経由でのみマージ可能にする
Require status checks to pass 指定した CI ジョブが成功しないとマージできない
Require branches to be up to date base ブランチに追いついていないとマージできない
Do not allow bypassing the above settings 管理者でもルールを回避できないようにする

個人リポジトリで CI を走らせている場合は「Require status checks to pass」だけでも入れておくと、テストが落ちたまま main を更新してしまうミスを防げる。


Secret Scanning と Push Protection

コードにトークンや API キーを誤ってコミットしてしまうミスを防ぐ機能。

Secret scanning はコミット済みのコードをスキャンして、既知のシークレットパターン(GitHub トークン・AWS キーなど)を検出したら通知する。パブリックリポジトリではデフォルトで有効になっている。

Push protection は push 時点でシークレットが含まれていないかチェックし、含まれていれば push をブロックする。シークレットがリポジトリへ到達する前に止められる。

Push protection には、ユーザー単位とリポジトリ単位の2種類がある。ユーザー単位のPush ProtectionはGitHub.comでデフォルト有効になっており、そのユーザーがパブリックリポジトリへシークレットをpushする操作を保護する。

リポジトリ単位のPush Protectionはデフォルト無効で、GitHub Secret Protectionを有効にしたリポジトリで利用する。プライベート・内部リポジトリでのSecret scanningやPush Protectionは、Organizationのプランと設定に依存する。個人所有のプライベートリポジトリで、無料のユーザー単位Push Protectionをリポジトリ保護として利用できるわけではない。

GitHub Secrets を使ったシークレット管理については GitHub Secrets で API キーを安全にワークフローへ渡す も参考にしてほしい。


GitHub Actions の便利な使い方

基本的な CI の設定はできていても、以下の機能を使うとさらに柔軟になる。

workflow_dispatch(手動トリガー)

通常の CI は push や PR をトリガーにするが、workflow_dispatch を使うと手動で実行できる。

on:
  workflow_dispatch:
    inputs:
      environment:
        description: "デプロイ先"
        type: choice
        options:
          - staging
          - production
        required: true

gh workflow run deploy.yml -f environment=staging のように CLI から実行できる。GitHub の UI からもパラメータを選んで実行できる。

定期的に手動で実行したいバッチ処理や、環境を選んでデプロイしたい場合に使いやすい。

cache(依存関係のキャッシュ)

CI で毎回 pip installnpm install が走ると時間がかかる。actions/cache を使うと依存関係をキャッシュして次回以降の実行を速くできる。

- uses: actions/cache@v4
  with:
    path: ~/.cache/pip
    key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }}
    restore-keys: |
      ${{ runner.os }}-pip-

keyrequirements.txt のハッシュを含めることで、ファイルが変更されたときに自動的にキャッシュを再作成する。


Issue / PR テンプレート

Issue や PR を作成するときに、あらかじめ定めたフォーマットを表示させる機能。

.github/
  ISSUE_TEMPLATE/
    bug_report.md
    feature_request.md
  PULL_REQUEST_TEMPLATE.md

PR テンプレートの例:

## 変更内容

## 確認事項

- [ ] テストを追加した
- [ ] ドキュメントを更新した

## 関連 Issue

Closes #

チームで運用するとレビューに必要な情報が揃いやすくなる。個人プロジェクトでも、後から見返したときの記録として機能する。


GitHub Releases

タグを切るだけでなく、リリースノートを作成して公開できる機能。gh release create で CLI から作れる。

gh release create v1.2.0 --generate-notes

--generate-notes をつけると、前回のリリースから今回までのマージ済み PR を自動で列挙したリリースノートを生成してくれる。手で変更点をまとめる手間が省ける。

GitHub の Releases ページが生成され、タグに対応するバイナリやソースの zip もアタッチできる。OSS として公開するプロジェクトや、バージョン管理が必要なツールを配布する場合に使いやすい。


まとめ

機能 主な使いどころ 設定場所
GitHub CLI ブラウザ不要で PR・Issue・ワークフロー操作 brew install gh
Dependabot 依存パッケージの自動更新・脆弱性対応 .github/dependabot.yml
Branch Protection main への直接 push 禁止・CI 必須化 Settings → Branches
Secret Scanning コミット済みシークレットの検出 デフォルト有効(public)
Push Protection push 前にシークレット混入をブロック ユーザー単位はpublicでデフォルト有効
workflow_dispatch ワークフローの手動・パラメータ付き実行 YAML に on: workflow_dispatch
cache CI の依存インストールを高速化 actions/cache@v4
Issue/PR テンプレート 記録・レビューのフォーマット統一 .github/ 以下に配置
GitHub Releases タグとリリースノートの公開 gh release create

いずれも GitHub 上で完結する機能で、追加のサービスは不要だ。一度設定すれば自動で動くものが多いので、使っていないものから順に試してみるといい。


参考