Microsoft Windows SDK

Microsoft Windows SDK（マイクロソフト ウィンドウズ エスディーケー）とは、Microsoft Windowsで動作するアプリケーションソフトウェアを作成するためにマイクロソフトが無料で公開しているソフトウェア開発キット (SDK) である。Windows APIやWindowsランタイムAPIを利用するために必要なヘッダファイル、ライブラリ、ツール、サンプルを含んでいる。 Windows Vistaリリース前はMicrosoft Platform SDKという名称であったが、Platform SDKと.NET Framework SDKを統合し、Windows SDKとなった。 新バージョンのWindowsで提供される新機能を使ったアプリケーションソフトウェア（新しいWindows APIあるいはCOMコンポーネントを使ったソフトウェア）を開発する場合、基本的に対応するC / C++言語用ヘッダファイルやDLLインポートライブラリなどが含まれる新しいWindows SDKを使用することになる。ヘッダファイルをインクルードする前に、WINVERなどのターゲット環境のバージョン番号を表すマクロシンボルを適切に定義することで、新しいWindows API関数や新しい構造体が使用できるようになる。逆に、新しいSDKで古い実行環境をサポートする場合も、同様にマクロシンボルを適切に定義してAPIバージョンを制限する必要がある。古いバージョンのWindowsもターゲットに含めつつ、新しいバージョンのWindows上では新機能を使いたい場合、GetProcAddress()を使ってシステムDLLから新しいAPI関数のエントリポイントを動的に取得するなどの方法を採る。 コンパイラやSDKのバージョンによっては、古いバージョンのWindowsを実行環境としてサポートしない。例えばWindows 10/11 SDKでは、Windows 7 SP1以降を対象としたコードの記述をサポートする。 また、マイクロソフトが提供しているソフトウェア統合開発環境であるVisual Studioには、標準でWindows SDKが含まれているが、VS2010以前にバンドルされているものは基本的に単体で提供されているSDKのサブセットやマイナーチェンジであり、単体版と比較してサンプルやツール類の一部が含まれていないことがある。なお、対応する単体版のSDKを使用するようにVisual Studioを設定することも可能である。VS2015まではVisual Studio本体の新規インストール時や修復インストール時に、バンドルされているWindows SDKをインストールできるが、VS2017以降は独立した専用の管理ツール「Visual Studio Installer」を使ってWindows SDKをインストール・管理することができるようになっている。 バージョン7.1までのPlatform/Windows SDKには、x64とIA-64コードを出力するVisual C++コンパイラがそれぞれ含まれている。コマンドプロンプトから使用するほか、Visual C++ 2010 Express Editionと併せて用いることも可能である。 Visual C++ 2005が公開されるまで、Platform SDKが64ビット用Visual C++コンパイラを入手する唯一の手段であった。また、標準ライブラリの64ビット版も付属し、Visual C++ 6付属ライブラリのIA-64版は2003年2月に公開された版から、x64版はWindows Server 2003に対応したPlatform SDKの版から付属している。なお、両者共にマイクロソフトへ連絡するとVisual C++ .NET 2003付属ライブラリの64ビット版を取り寄せることができる。 Windows 10では64ビット版ARMアーキテクチャ (ARM64) にも対応しており、UWPアプリ/デスクトップアプリともにARM64の命令セットにネイティブ対応している。ARM64アプリケーション開発にはVisual Studio 2017 (15.9) 以降と対応SDKが必要となる。 Windows 7 までは、Windows用マルチメディアAPIセットであるDirectXの開発キット「DirectX SDK」は、Windows SDKとは別に提供されていたが、一部のヘッダやインポートライブラリ（Direct3D、Direct2D、DirectInput、XInputなど）はWindows SDKにも含まれるため、DirectX SDKなしでも一応DirectX APIを利用した開発は可能となっていた。ただし、ファイルのバージョンが最新のDirectX SDKに含まれるものと比べて古く（例えばWindows SDK 7.1のD3DCommon.hはDirectX SDK June 2010のそれよりも古く、定義されていないシンボルが多数ある）、また「D3DX（Direct3D 拡張ライブラリ）」のようなユーティリティライブラリ、および開発用の各種ツール類（スタンドアロンのHLSLコンパイラやテクスチャ編集ツールなど）は含まれていなかった。 2005年4月、DirectShowの開発環境がDirectX SDKからPlatform SDKへ移管された。そのときからDirectShowのサンプルもPlatform SDK（Windows SDK）に収録されているが、これをビルドするには依然としてDirectX SDKが必要である。 Windows 8 および Windows RT 用のWindowsストアアプリ開発もできるようになった Windows SDK バージョン 8.0 以降は、DirectX SDK は Windows SDK に統合された。DirectX 関連ツール類もリニューアルされたものが Visual Studio 2012 以降に統合されているが、D3DX ライブラリは廃止されている。そのほか、かつて DirectX SDK に含まれていた DirectMusic（英語版） や XACT (XACT3) なども、Windows SDK 8.0 には含まれていない。また、以前のバージョンでは種々のサンプルコードがSDKパッケージに含まれていたが、8.0以降はMSDNおよびGitHubに移管されている。 バージョン6.2.6000まで日本語版が提供されていた。 Visual C++ 6.0に対応した最後のPlatform SDKは2003年2月のリリースである。現在はダウンロードでは提供されておらず、CDの注文が必要である。 上記いずれとも、MSDNサブスクリプションの会員ならダウンロード可能である。 [脚注の使い方] ^ 最新版SDKを利用した開発環境としてサポートされるOS。ただし古いOSではすべてのツールがサポートされるとは限らない。なお、SDKを使ってビルドされたバイナリの実行環境はコンパイラおよび設定に左右される。 ^ GetProcAddress | Microsoft Docs ^ Update WINVER and _WIN32_WINNT | Microsoft Docs ^ How to: Use the Windows SDK in a Windows Desktop application | Microsoft Learn ^ Install Visual Studio | Microsoft Learn ^ Windows 10 on ARM - UWP applications | Microsoft Docs ^ Official support for Windows 10 on ARM development - Windows Developer Blog ^ DirectX SDKs of a certain age | Games for Windows and the DirectX SDK blog ^ Windows Vista™ および .NET Framework 3.0 ランタイム コンポーネント用 Microsoft® Windows® Software Development Kit（2016年9月11日時点のアーカイブ） ^ Windows Server 2003 PSDK Full Download with Local Install（2010年2月7日時点のアーカイブ） ^ Windows Server 2003 SP1 Platform SDK ISO InstallのSystem Requirements - Development Toolsの項参照 ^ JAPAN Platform SDK Support Team (2011年4月21日). “入手可能な Windows SDK について”. JAPAN Platform SDK（Windows SDK） Support Team Blog. 2017年5月5日閲覧。[リンク切れ] Windows API ソフトウェア開発キット (SDK) Windows Driver Kit