一般社団法人 全国個人事業主支援協会

COLUMN コラム

こんにちは
あっという間に年度末で、また今年も桜の季節がやってまいりました

Gitにおけるリリースのバージョン、SemVerの復習で今回blogにメモしようと思います

# Semantic Releaseを支える「SemVer(セマンティックバージョニング)」

## はじめにSemantic Releaseを理解するうえで、最も重要な前提となるのが
**SemVer(セマンティックバージョニング)**です。

むしろ、

> 「Semantic Release = SemVerを自動で運用する仕組み」

と言っても過言ではありません。

本記事では、SemVerにフォーカスして、

– バージョン番号の意味
– なぜ重要なのか
– Semantic Releaseとの関係

を整理していきます。

## SemVerとは?

SemVer(Semantic Versioning)は、ソフトウェアのバージョン番号に意味を持たせるルールです。

基本構造は以下の通りです。

MAJOR.MINOR.PATCH

例:

1.4.2

—## 各バージョンの意味

| 要素 | 役割 | 具体例 |
|——–|——|——–|
| MAJOR | 破壊的変更 | APIの互換性が壊れる |
| MINOR | 機能追加 | 新機能追加(後方互換あり) |
| PATCH | バグ修正 | 不具合修正 |

## 具体例で理解するSemVer

### 例1:バグ修正

1.4.2 → 1.4.3

– ログインバグ修正
– UIの軽微な修正👉 **PATCHがインクリメント**

### 例2:機能追加

1.4.2 → 1.5.0

– 新しいAPI追加
– 新画面追加👉 **MINORがインクリメント**

### 例3:破壊的変更

1.4.2 → 2.0.0

– API仕様変更
– レスポンス形式変更👉 **MAJORがインクリメント**

## なぜSemVerが重要なのか?

### 1. 利用者が安心できる

ユーザーはバージョン番号を見るだけで、

– 安全なアップデートか
– 影響があるか

を判断できます。

### 2. 依存関係管理がしやすい

例えばnpmでは以下のように指定できます。

“`json
“library”: “^1.4.0”

これは、

「1.x系ならOK(ただし破壊的変更はNG)」

という意味になります。


### 3. チーム開発での共通言語になる

  • 「これはMINORアップだね」
  • 「これはMAJOR変更だよ」

といった形で、変更の重さを共通認識できます。


## Semantic Releaseとの関係

Semantic Releaseは、SemVerのルールを自動適用するツールです。

流れ

  1. コミットメッセージを解析
  2. 変更内容を判定
  3. SemVerに従ってバージョン決定

## Conventional Commitsとの連携

Semantic Releaseは、以下のようなコミットからSemVerを判断します。

feat: ユーザー登録機能を追加
fix: ログインバグ修正

判定ルール

コミット バージョン
feat MINOR
fix PATCH
BREAKING CHANGE MAJOR

## 実際のバージョン決定フロー

現在のバージョン: 1.4.2

コミット:
– fix: バグ修正
– feat: 新機能追加

→ 次のバージョン: 1.5.0

※ 複数ある場合は「最も大きい変更」が優先されます


## よくある誤解

誤解1:とりあえずバージョン上げればいい

👉 NG

SemVerは「意味を持たせる」ことが重要です。


誤解2:MAJORはめったに使わない

👉 半分正解・半分間違い

  • ライブラリ → 慎重に使う
  • アプリ → 意外と頻繁でもOK

誤解3:PATCHでも何でも入れていい

👉 NG

PATCHはあくまで「バグ修正のみ」


## 運用のコツ

### 1. 破壊的変更は明示する

feat!: APIレスポンス形式を変更

または

BREAKING CHANGE: レスポンス形式変更

### 2. コミット粒度を揃える

  • 小さすぎる → ノイズ増加
  • 大きすぎる → 意味が不明

### 3. 「利用者視点」で判断

  • ユーザーに影響ある? → MAJOR
  • 機能増える? → MINOR
  • 直すだけ? → PATCH

## まとめ

SemVerは単なるバージョン番号ではなく、

「変更の意味を伝えるための言語」

です。

そしてSemantic Releaseは、

その言語を自動で運用する仕組み

です。

この2つを組み合わせることで、

  • 安全なリリース
  • 自動化された運用
  • チーム内の認識統一

が実現できます。

The following two tabs change content below.

Kenneth Ozeki

インフラ周りを担当するITエンジニアです。 経験はオンプレ5年、クラウド7年ほど python, go などで簡単な運用ツールも作成してます

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア