Semantic Versioning

2016/04/13

Semantic Versioning というものに出会ったので軽く調べてみました。全貌は日本語訳を見ていただくとして、自分なりの理解をまとめておきます。

Semantic Versioningは主にAPIやライブラリのバージョニングを念頭に入れて考案されたバージョニングのルールです。 どうバージョンが変わったかを見るだけで大よその影響範囲が把握できるという優れもの。

Semanticは「意味的な」「意味論的な」という意味の言葉。Semantic Versioningではセマンティックとは - IT用語辞典 Weblio辞書にある

IT用語としては、コンピュータに文書や情報の持つ意味を正確に解釈させ、文書の関連付けや情報収集などの処理を自動的に行わせる技術について用られる語である。

の意味が当てはまりそうです。バージョンを単なる数字の羅列ではなく意味を持ったものし、人にも機械にも扱いやすいものにしましょう、ということかな。

要点は以下のあたりですかね。

  • バージョン番号の形式は『Major.Minor.Patch』
  • それぞれのバージョンは次のような意味を持つ
    • Major : 外部公開インターフェース(API)の後方互換性が失われた
    • Minor : 後方互換性を維持する形で機能が追加された
    • Patch : 後方互換性を維持する形でバグが修正された
  • Major番号が0の場合は『開発段階』を意味する
  • プレリリースやメタデータといった更なる拡張書式も定義されている

一番大事なのは後方互換性でしょうか。利用者に対して破壊的な変更が加えられたかどうかが分かるようになっています。

Semantic Versioningが広まっていくと、ライブラリやAPIを使うときの判断基準ができるのでハッピーになれそうです。逆にライブラリやAPIを提供する側になるときもSemantic Versioningを意識すると利用者に優しいライブラリ/APIになれる、ってことですね。今後広まっていくかどうか注目していこうと思います。

なお、今回の調査ではt32k、怒られる!セマンティック バージョニングしてますか? | HTML5Experts.jpを参考にさせていただきました。先達に感謝。




おススメ