[SharePoint Online]ドキュメント ライブラリで、バージョン履歴の上限値を "既に" 超過しているファイルを更新したらどうなるか

# はじめに

SharePoint Online のドキュメント ライブラリやリストに保存されたファイルやアイテムは、バージョンを管理することができます。

https://support.microsoft.com/ja-jp/office/%E3%83%AA%E3%82%B9%E3%83%88%E3%81%BE%E3%81%9F%E3%81%AF%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%AE%A1%E7%90%86%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%97-%E6%A7%8B%E6%88%90%E3%81%99%E3%82%8B-1555d642-23ee-446a-990a-bcab618c7a37

このバージョン管理は、 [ライブラリ(リスト) の設定] の [バージョン設定] から、バージョン数の上限値を設定することが可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/338782f0-675d-123d-0d11-86124846535a.png)


ライブラリ上に保存されたファイルにおいて、上記のバージョンの上限値を超えたバージョン履歴が作成される場合、この上限値に一致するよう古い履歴から削除される動作となります。

例えば、メジャー バージョンの上限値が、500 で設定され、1 ~ 500 までのバージョン履歴が作成されている状態で、該当のファイルを更新すると 501 バージョン目が作成されるタイミングで、1番目のバージョンが削除され 2 ~ 501 のバージョン履歴が保持される動作となります。

公開情報にも以下の通り、本動作の記載があります。

https://support.microsoft.com/ja-jp/office/%E3%83%AA%E3%82%B9%E3%83%88%E3%81%A8%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%A7%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%AE%A1%E7%90%86%E3%81%AE%E3%81%97%E3%81%8F%E3%81%BF-0f6cd105-974f-44a4-aadb-43ac5bdfd247

>リストまたはライブラリでバージョンの数が制限されている場合、制限に達すると最初のバージョンから削除されることを共同作成者が理解していることを確認する必要があります。

# ここからが本題
上記の通り、通常の利用においてバージョンの上限値を超えることは無いのですが、以下のようなケースで、バージョン上限値を超えたファイルが、ライブラリ存在することがあり得ます。

**パターン 1**
バージョンの上限値を変更した場合(例:500→300 にバージョンの上限値を変更)

**パターン2**
バージョンの上限値が多いライブラリから小さいライブラリへファイルを移動した場合

**パターン3**
アイテム保持ポリシーが有効な期間中にファイルに対して上限値を超えた更新が行われた場合
※アイテム保持ポリシーが有効なファイルは、バージョンの上限値を超えてバージョン履歴が作成されます。

他にもあるかもしれませんが、これらの "既に" バージョンの上限値を超えたファイルについて、更新の操作を行った場合にバージョン履歴がどのように変遷するのかを確認するのが本記事の目的です。

# 最初に結論
バージョンの上限値を超えたファイルは、**新たなバージョンが作成されるごと**、または、**ファイル内容の更新が検知されるごと**に **21 バージョンずつ削除される** 動作となります。

例えば、バージョンの上限値が 300 で設定されているライブラリで、1 ~ 500 バージョン履歴が作成されているファイルが存在する場合、そのファイルを更新すると 1 バージョン追加されるとともに古い履歴から 21 バージョン削除され、バージョン履歴は、22 ~ 501 バージョン履歴 (バージョン数は、480) となります。
この動作は、バージョンの上限値に一致するまで続くことを確認しています。

:::note info
2024/6/1 追記
この動作について公開情報にも明記されてました。
https://learn.microsoft.com/ja-jp/sharepoint/library-version-limits
:::

# 動作検証
実際にバージョンの上限が、300 で設定されているライブラリで、1 ~ 500 のバージョン履歴が存在するファイルがある前提で検証します。

**前提1:バージョンの上限値の設定**
----------------------
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/48440d58-df6e-4906-0465-36e4b610a5c5.png)

**前提2:ライブラリ上のファイルの表示**
----------------------
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/8564036f-dae8-e40d-33d6-2d9300d52912.png)


**前提3:上記ファイルのバージョン履歴の情報**
----------------------
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/fc37857d-7825-57e6-a604-e558279a91e7.png)



### ①ファイル名の変更などで、新たなバージョンが作成されるタイミングでの変遷
上記のファイルのファイル名を "バージョンテスト" から "バージョンテスト01" に変更した場合の動作から確認します。

1) 以下の通りファイル名を変更しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/f32d9f16-5339-3a95-b6c2-6039704e8429.png)

2) バージョンを確認すると 22 ～ 501 バージョンが存在します。つまりは、ファイル名の変更において、1 バージョン追加されて、21 バージョン削除されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/7b5f2725-1f5a-c6d4-cb3a-83d56ab5ce0f.png)

### ②ファイル内容を変更したタイミングでの変遷
上記の Excel ファイルを開いて、セルの値を変更した場合の動作から確認します。

1) ファイルを開き、A1 と A2 セルの値を変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/43fa8d61-8f9a-fec6-cfe6-2929c5aab65a.png)

2) ファイルは開いたままバージョン履歴を確認すると1 バージョン追加されて、古い方から 21 バージョン削除されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/bb513c6b-2dd7-e431-d991-b04cd2552f31.png)

3) ファイル上の A列のセルの値をもう少し変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/9f756e29-f08b-dd56-6d41-f33b57c0e40b.png)

4) 引き続きファイルは開いたままバージョン履歴を確認するとさらに 21 バージョン削除されています。(新たなバージョンの追加はなし)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/588a9451-6d4d-8216-7f51-7862805bedb8.png)

5) ファイルを閉じます。

6) 最終的にバージョン履歴を確認すると 64 ~ 501 バージョンが存在します。結果的にファイル内容の更新において、新たなバージョンが1 バージョン追加されて、63 バージョン削除されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/b2e243fc-c211-a117-82e2-f60bf0fb091c.png)

# まとめ
検証結果の通り、バージョンの上限値を超えている場合、バージョンの上限値への一致のため、21 ずつのバージョン履歴の削除が随時発生する動作になることが確認できました。

この状態になるのはレアなケースかもしれませんが、特徴的な動作であるため記録しておきます。