ソフトウェア開発キット

ソフトウェア開発キット（ソフトウェアかいはつキット、、SDK）は一般に、特定のソフトウェアパッケージ、ソフトウェアフレームワーク、ハードウェアプラットフォーム、コンピュータシステム、オペレーティングシステム、ゲーム機などのためのアプリケーションを作成するためにソフトウェア技術者が使用する開発ツールのセットを意味する。

概要 
ソフトウェア開発キットは、APIとして特定のプログラミング言語用のインターフェイスを定義したファイル群という形式のような簡単なものである場合もあるし、何らかの組み込みシステムと通信するための特殊なハードウェアやプロトコル仕様を含む場合もある。一般的なツールとしては、コンパイラやリンカ、デバッガ、その他のユーティリティソフトウェアなどのツール類が含まれる。SDKが統合開発環境にバンドルされていることもある。SDKには、サンプルコードやサポートのための技術ノートなどの何らかの文書が含まれていることが多い。

ソフトウェア技術者は、一般に開発対象としているシステムの開発者からSDKを受け取る。SDKを直接インターネットからダウンロードすることも多い。開発者がそのシステムやプログラミング言語を使うことを促進するため、SDKは無料で配布されることが多い。時にはSDKがマーケティングのツールとして利用されることもある。例えば、ある製品上で動作するプログラムを開発して販売したいと考える人々は、プログラムを開発・テストするために対象製品を買うことになるが、対応するSDKが無料で配布されていれば、製品購入のハードルが下がる可能性が高くなる。

オペレーティングシステムへのアドオン形式のSDK（例えばMac OS用のQuickTime）は、アドオンソフトウェア自身を含んでいることがある（再配布の必要がないにしても、開発目的で使用するために含むことがある）。少なくとも立ち上げ時点でシステム構成をOSに問い合わせてアドオンの有無を調べるようなアプリケーションを作成することも可能であり、そうすると興味深い状況が発生する。通常であれば、アドオンがなければ実行が失敗するだけだが、アドオン無しでも機能を限定してある程度動作するようなアプリケーションをひとつのバイナリで作成することは不可能ではない。すなわち、アドオンをインストールしていない（ライセンスを持っていない）システム上で、そのアドオンのSDKを使ったアプリケーションが（機能を使っていないとは言え）動作しているわけであり、ライセンス上の扱いが焦点になる。

特定のシステムやサブシステムのためのSDK提供者は、「ソフトウェア」という用語の代わりに別の用語を使用することもある。例えば、PalmSourceはPalm OS開発キット（Palm OS Development Kit、PDK）を提供している。

マイクロソフトは以前デバイスドライバ開発のためのSDKをDriver Development Kit (DDK) という名称で提供していたが、これはのちにWindows Driver Kit (WDK) に置き換えられた。

Appleはユーザー空間で動作するデバイスドライバ開発のためにSystem ExtensionとDriverKitを用意している。

上位レベルのウィジェット・ツールキットやアプリケーションフレームワークは、一般的に各プラットフォーム用のSDKに用意されている下位レベルのAPIを利用して実装される。これらは通例SDKには分類されないが、公式にサポートされる上位レベルAPIとしてSDKの中に含まれていることもある。

実例 
 マイクロソフトのWindows SDK、旧DirectX SDK、.NET Framework SDK、.NET Core SDK
 Java
 オラクル（旧サン・マイクロシステムズ）のJDK
 IBMとアップル他が参画したOpenJDK
 Eclipse Foundation の Eclipse SDK
 Unreal Development Kit
 ソニー・コンピュータエンタテインメント (SCE) のPlayStation Mobile SDK
 ソニーの「ネットやろうぜ!」
 グーグルのAndroid SDKとAndroid NDK
 AppleのiOS SDK
 のVulkan SDK
 オートデスクのFBX SDK

脚注

関連項目 
 プログラミングツール

プログラミング
ソフトウェア開発ツール