.NETが4.5になってzipアーカイブに対応した理由


`.NET
Framework`は長い間`zip`アーカイブに対応せず、[4.5になって対応](https://web.archive.org/web/20151011175756/http://blogs.msdn.com:80/b/japan_platform_sdkwindows_sdk_support_team_blog/archive/2012/03/27/net-
zip.aspx)しました。  
[System.IO.Compression](https://docs.microsoft.com/ja-
jp/dotnet/api/system.io.compression?view=netframework-4.5)という名前空間は、[4.0以前](https://docs.microsoft.com/ja-
jp/dotnet/api/system.io.compression?view=netframework-4.0)はさみしい状況でした。

この経緯には何か理由があるのでしょうか。MSにとって、技術的・政治的・特許ほか、大人の事情で実装しない理由があったのであれば、教えて下さい。非公開なのでしょうか。




.NET 4.5はWindows 8と同時期に開発されています。そしてWindows
8からエクスプローラーにてZIPファイルに含まれるファイル名のUnicode対応がされています。（ZIP仕様がUnicodeに対応したのは2006年。Windows
7ではこのフラグを無視してANSIコードと見なす。[KB2704299](https://support.microsoft.com/ja-
jp/kb/2704299)にてHotfixを提供。）

ここからは勝手な推測ですが、.NETではUnicode対応が必須なわけですが、いざUnicodeエンコーディングのZIPファイルを作成してもエクスプローラーで文字化けするので、この問題が解消されるのを待っていたというのも１つの要因かもしれません。

* * *

.NET 4.5以前は

  * J# Runtimeのjava.util.zip.ZipInputStreamを使ったり
  * DeflateStreamクラスに「このクラスは本来、.zip アーカイブとの間でファイルの追加や抽出を行うための機能を提供するものではありません。」と書かれていたり
  * System.IO.Packagingでzipファイルを扱えるのになぜpublicにしてくれないんだ

とかいろいろありましたね。




.NET 4.5はWindows 8と同時期に開発されています。そしてWindows
8からエクスプローラーにてZIPファイルに含まれるファイル名のUnicode対応がされています。（ZIP仕様がUnicodeに対応したのは2006年。Windows
7ではこのフラグを無視してANSIコードと見なす。[KB2704299](https://support.microsoft.com/ja-
jp/kb/2704299)にてHotfixを提供。）

ここからは勝手な推測ですが、.NETではUnicode対応が必須なわけですが、いざUnicodeエンコーディングのZIPファイルを作成してもエクスプローラーで文字化けするので、この問題が解消されるのを待っていたというのも１つの要因かもしれません。

* * *

.NET 4.5以前は

  * J# Runtimeのjava.util.zip.ZipInputStreamを使ったり
  * DeflateStreamクラスに「このクラスは本来、.zip アーカイブとの間でファイルの追加や抽出を行うための機能を提供するものではありません。」と書かれていたり
  * System.IO.Packagingでzipファイルを扱えるのになぜpublicにしてくれないんだ

とかいろいろありましたね。

