【ごかんせい】

互換性 とは?

最終更新:
💡 新旧を組み合わせても、使いたいものが使える?

異なるバージョンや製品の間で、期待するデータや機能を使える性質。何をどちらの環境で使えるかを確認し、後方互換と前方互換、通信とアプリの動作を区別します。

📌 このページのポイント
互換性:何を、どの版で使う?後方互換古いデータ新しいソフト前方互換新しいデータ古いソフト「読める」と「全機能を使える」は別!
データを読む場合の例。対象の形式と機能を確認し、すべての組み合わせで使えるとは考えません。
ひよこ ひよこ
後方互換って、どちら向きなの?
ペンギン先生 ペンギン先生
例えば新しいソフトが、古いソフトで作ったデータを読める場合だよ。APIなら、従来の呼び方を新しい版でも使えること。ただし「互換あり」だけで判断せず、どのデータや機能まで対応するかを確かめよう。
ひよこ ひよこ
前方互換は、その逆?
ペンギン先生 ペンギン先生
古い側が新しい形式を扱えることだね。例えばProtocol Buffersのバイナリ形式では、条件を守って追加したフィールドを古いコードが無視して読み込める。でも追加された情報を利用できるわけではなく、JSON形式などにも同じ条件がそのまま当てはまるとは限らないよ。
ひよこ ひよこ
バージョン番号を見れば分かる?
ペンギン先生 ペンギン先生
SemVerに従う公開APIでは、1.0.0以降の互換性を壊す変更はメジャー、互換性を保つ機能追加はマイナー、互換性を保つ不具合修正はパッチを増やす。ただし全製品がこの規則を使うわけではないから、リリースノートと対応範囲も確認しよう。
ひよこ ひよこ
設計を良くするために、壊すこともある?
ペンギン先生 ペンギン先生
あるよ。影響する利用者と移行方法を調べ、変更内容を伝えることが大切。SemVerには公開APIを非推奨にしたときのマイナー更新も定められているけど、必ず次のメジャーで削除するという一律の規則ではないんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「互換性」って出てきたら「バージョンや製品が違っても、期待するデータや機能を使えること」と思えばだいたいOK!
📖 おまけ:英語の意味
「Compatibility」 = 組み合わせて使える性質
💬 どの形式・API・機能に対して互換性があるかを示す言葉です。対象と、新旧どちらで何を使うかを具体的に確認すると理解しやすくなります。

参考資料

← 用語集にもどる