Microsoft Windows SDK(
マイクロソフト ウィンドウズ エスディーケー)は、
Microsoft Windowsオペレーティングシステム上で動作する
アプリケーションソフトウェアを開発するために、
マイクロソフトが無償で提供している
ソフトウェア開発キット(SDK)です。このSDKには、Windowsの基本機能を呼び出すためのAPI(Application Programming Interface)や、モダンなWindowsランタイムAPIを利用する上で必要となる、ヘッダーファイル、
ライブラリ、開発支援ツール、そして各種サンプルコードが含まれています。
かつて、Windows Vistaがリリースされるより前は、「Microsoft Platform SDK」という名称で提供されていました。その後、Platform SDKと
.NET Framework向けのSDKが統合され、現在のWindows SDKへと名称が変更されました。
Windowsバージョンとの関係性
新しいバージョンのWindowsで導入された機能やAPI(例えば、新しい
Windows API関数やCOMコンポーネント)を利用したアプリケーションを開発する際には、原則として、その機能に対応した新しいバージョンのWindows SDKを使用する必要があります。
C言語や
C++言語で開発する場合、SDKに含まれる対応するヘッダーファイルやDLLインポート
ライブラリを利用してコードを記述します。
開発対象とする実行環境(ターゲットOS)のバージョンを指定するには、ソースコード内で`WINVER`などのマクロシンボルを適切に定義します。これにより、新しいSDKであっても、指定したターゲットOSで利用可能なAPIのみを有効にしたり、逆に最新のAPIを利用可能にしたりできます。ただし、コンパイラやSDKのバージョンによっては、古いバージョンのWindowsをサポート対象外とする場合があります。例えば、Windows 10/11に対応するSDKでは、Windows 7 Service Pack 1以降が開発対象としてサポートされています。
古いバージョンのWindowsもサポートしつつ、より新しいWindows環境ではその新機能を利用したいといった場合、システムDLLから目的のAPI関数のエントリポイントを`GetProcAddress()`関数などを用いて動的に取得し、実行時にAPIの存在を確認してから呼び出すといった手法が採られることもあります。
Visual Studioとの連携
マイクロソフトが提供する
統合開発環境であるVisual Studioには、標準でWindows SDKが含まれています。ただし、Visual Studio 2010以前にバンドルされていたSDKは、単体で提供されているSDKの機能限定版であったり、一部ツールやサンプルが省略されていたりすることがありました。この場合、別途入手した単体版のSDKを使用するようにVisual Studioの設定を変更することも可能でした。
Visual Studio 2015までは、Visual Studio本体の新規インストール時や修復時に、バンドルされているWindows SDKをまとめてインストールする形式でした。しかし、Visual Studio 2017以降は、独立した専用の管理ツールである「Visual Studio Installer」を使用して、必要なWindows SDKのバージョンを選択・インストール・管理する方式に変更されています。
Platform SDKおよびWindows SDKのバージョン7.1までは、x64アーキテクチャおよび
IA-64アーキテクチャ向けのVisual
C++コンパイラが同梱されていました。これらはコマンドプロンプトからの利用のほか、Visual
C++ 2010 Express Editionと組み合わせて使用することもできました。特に、Visual
C++ 2005が公開されるまでは、Platform SDKが
64ビット版Visual
C++コンパイラを入手する唯一の手段でした。
標準
ライブラリの
64ビット版もSDKに付属しており、Visual
C++ 6.0付属
ライブラリの
IA-64版は2003年2月版から、x64版はWindows Server 2003に対応したPlatform SDKから付属するようになりました。なお、これら
64ビット版
ライブラリは、Visual
C++ .NET 2003付属のものを含め、
マイクロソフトへの連絡を通じて入手できる時期もありました。
近年では、Windows 10以降で
64ビット版
ARMアーキテクチャ(ARM64)もサポートされており、ユニバーサルWindowsプラットフォーム(UWP)アプリやデスクトップアプリがARM64ネイティブ命令セットに対応しています。ARM64アプリケーションを開発するには、Visual Studio 2017バージョン15.9以降と、対応するWindows SDKが必要となります。
DirectX SDKとの関係
Windows 7までの時代では、Windows向けのマルチメディアAPIセットであるDirectXの開発キット「DirectX SDK」は、Windows SDKとは別に配布されていました。しかし、
Direct3D、Direct2D、
DirectInput、XInputなど、一部のDirectX関連ヘッダーファイルやインポート
ライブラリはWindows SDKにも含まれていたため、DirectX SDKなしでも基本的なDirectX APIを用いた開発は可能でした。ただし、Windows SDKに含まれるこれらのファイルのバージョンは、最新のDirectX SDKのものと比べて古く、一部のシンボルが定義されていないなどの違いがありました。また、
Direct3D拡張
ライブラリ「D3DX」のようなユーティリティや、スタンドアロンのHLSLコンパイラ、テクスチャ編集ツールといった開発用ツール類はWindows SDKには含まれていませんでした。
DirectShowの開発環境は、2005年4月にDirectX SDKからPlatform SDK(後のWindows SDK)へと移管されました。これ以降、
DirectShowのサンプルコードもWindows SDKに収録されるようになりましたが、これらのサンプルをビルドするには依然としてDirectX SDKが必要となる時期がありました。
大きな転換期となったのは、Windows 8およびWindows RT向けのWindowsストアアプリ開発に対応したWindows SDKバージョン8.0以降です。このバージョンから、DirectX SDKがWindows SDKに統合されることになりました。DirectX関連のツール類も刷新され、Visual Studio 2012以降に統合されています。ただし、統合に伴いD3DX
ライブラリは廃止され、DirectMusicや
XACT (
XACT3) など、かつてDirectX SDKに含まれていた一部のコンポーネントはWindows SDK 8.0には含まれなくなりました。また、以前はSDKパッケージ内に収録されていた多岐にわたるサンプルコードは、バージョン8.0以降、MSDN(
Microsoft Developer Network)のウェブサイトや
GitHubなどのオンラインリポジトリへ移管されています。
その他の情報
Windows SDKは、バージョン6.2.6000までは日本語版も提供されていました。
古いバージョンの例として、Visual
C++ 6.0に対応した最後のPlatform SDKは2003年2月にリリースされたものです。このバージョンは現在、Webからの直接ダウンロード提供は終了しており、物理メディア(CD)の注文が必要でした。ただし、これらの古いSDKを含む多くの開発リソースは、MSDNサブスクリプションの加入者であればダウンロードが可能でした。