依存パッケージの脆弱性、放置してませんか？

## GitHub Dependabot セキュリティアップデートの設定ガイド

Node.js / Python / Ruby など、ライブラリ依存が多い現代の開発において、**「知らない間に脆弱なバージョンを使っていた」** というのは、よくある話です。

そんなときに便利なのが、GitHub が提供している **[Dependabot セキュリティアップデート](https://docs.github.com/ja/code-security/dependabot/dependabot-security-updates/configuring-dependabot-security-updates)** 機能です。

---

## Dependabotって何？

GitHub に組み込まれている Dependabot は、**依存関係にセキュリティ脆弱性があった場合に、自動で修正PRを送ってくれる機能**です。

```txt
脆弱性発見 → 該当ライブラリ検出 → 修正版に更新PRを作成
```

✅ 放置してたパッケージに気付ける  
✅ 修正PRは自動生成される  
✅ GitHub上でレビュー＆マージできる  

---

## セキュリティアップデートとバージョンアップの違い

GitHub Dependabot には2つの用途があります：

| 機能                      | 目的                             |
|---------------------------|----------------------------------|
| **セキュリティアップデート** | 脆弱性を含むパッケージの修正     |
| **バージョンアップデート**   | パッケージの通常のアップデート   |

今回はセキュリティアップデートの方に焦点を当てます。

---

## 設定方法（`.github/dependabot.yml`）

セキュリティアップデートを使うには、リポジトリに以下のファイルを追加します：

```
.github/dependabot.yml
```

### ✅ 最小構成（セキュリティアップデートのみ）

```yaml
version: 2
updates:
  - package-ecosystem: npm
    directory: "/"
    schedule:
      interval: weekly
    allow:
      - dependency-type: "direct"
    open-pull-requests-limit: 5
    security-updates: true
```

### 項目の説明

| 項目 | 説明 |
|------|------|
| `package-ecosystem` | 使用しているパッケージマネージャー（例：npm, pip, bundler） |
| `directory` | パッケージファイルのディレクトリ（通常は `/`） |
| `schedule.interval` | チェック頻度（`daily`, `weekly`, `monthly`） |
| `security-updates: true` | セキュリティ脆弱性が見つかったときに自動PRを出す |

---

## 実際のPR例（イメージ）

Dependabot は以下のような PR を作成します：

```
fix: bump axios from 0.21.1 to 0.21.4 (security fix)
```

PRには CVE（Common Vulnerabilities and Exposures）番号付きで、どんな脆弱性が解消されるかも説明されているので安心してレビュー可能です。

---

## 注意点・ベストプラクティス

### 1. CI が通るようにしておく
→ Dependabot PRが出たとき、**自動テストでマージ可否がすぐ分かる**ようにしておくと効率的。

### 2. マージフローを整備しておく
→ セキュリティアップデートはなるべく速やかにマージしたい。  
`auto-merge` ラベルを設定して GitHub Actions で自動マージも可能。

### 3. monorepo / 複数パッケージも対応可能
→ `directory` を指定すれば `apps/` や `packages/` の下にも対応。

---

## 補足：エコシステムごとの対応一覧

| エコシステム  | 説明              |
|--------------|------------------|
| `npm`        | JavaScript / TypeScript 用 |
| `pip`        | Python 用         |
| `bundler`    | Ruby 用           |
| `composer`   | PHP 用            |
| `cargo`      | Rust 用           |
| `docker`     | Dockerfile のベースイメージ |
| `github-actions` | GitHub Actions の依存バージョン |

---

## 今すぐ入れたい最小限のセキュリティ対策

- Dependabot のセキュリティアップデートは **0コストで始められる安心機能**
- `.github/dependabot.yml` に数十行追加するだけ
- セキュリティリスクの「知らなかった」をなくせる

---

## Next.jsプロジェクトに追加するならこの形

```yaml
version: 2
updates:
  - package-ecosystem: npm
    directory: "/"
    schedule:
      interval: weekly
    open-pull-requests-limit: 5
    security-updates: true
```

> ✅ `.env.local`などに依存せずPR作成可能  
> ✅ CIにGitHub Actionsを使っていれば、即テストが走る

---

## リンク集

- [公式ドキュメント（日本語）](https://docs.github.com/ja/code-security/dependabot/dependabot-security-updates/configuring-dependabot-security-updates)
- [npmエコシステムの設定ガイド（英語）](https://docs.github.com/en/code-security/dependabot/working-with-dependabot/keeping-your-dependencies-updated-automatically)

---

## おわりに

セキュリティ対策は、「やらないとまずい」と分かっていても、後回しにしがち。でも、Dependabotのセキュリティアップデートは**GitHub上で数分でセットアップできて、あとは放置でOK**です。
「いつかやろう」じゃなくて、**今 `.github/dependabot.yml` を作ってみることから始めてみてください**。

---

記事を気に入っていただけたら、いいねやシェアしてもらえると嬉しいです！  
ご質問・追加Tipsなどはコメント欄へどうぞ！