ソフトウェア開発キット
概要
ソフトウェア開発キットは、APIとして特定のプログラミング言語用のインターフェイスを定義したファイル群という形式のような簡単なものである場合もあるし、何らかの組み込みシステムと通信するための特殊なハードウェアやプロトコル仕様を含む場合もある。一般的なツールとしては、コンパイラやリンカ、デバッガ、その他のユーティリティソフトウェアなどのツール類が含まれる。SDKが統合開発環境にバンドルされていることもある。SDKには、サンプルコードやサポートのための技術ノートなどの何らかの文書が含まれていることが多い。
ソフトウェア技術者は、一般に開発対象としているシステムの開発者からSDKを受け取る。SDKを直接インターネットからダウンロードすることも多い。開発者がそのシステムやプログラミング言語を使うことを促進するため、SDKは無料で配布されることが多い。時にはSDKがマーケティングのツールとして利用されることもある。例えば、ある製品上で動作するプログラムを開発して販売したいと考える人々は、プログラムを開発・テストするために対象製品を買うことになるが、対応するSDKが無料で配布されていれば、製品購入のハードルが下がる可能性が高くなる。
SDKは、何らかのライセンスが設定されており、そのライセンスと非互換なライセンスでソフトウェアを開発しようとした場合に困った事態が発生する。例えば、プロプライエタリなSDKはフリーソフトウェアの開発には不適である。また、GPLのSDKはプロプライエタリなソフトウェア開発に向かない可能性がある。LGPLの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) に置き換えられた。
アップルはユーザー空間で動作するデバイスドライバー開発のためにSystem ExtensionとDriverKitを用意している。
上位レベルのウィジェット・ツールキットやアプリケーションフレームワークは、一般的に各プラットフォーム用のSDKに用意されている下位レベルのAPIを利用して実装される。これらは通例SDKには分類されないが、公式にサポートされる上位レベルAPIとしてSDKの中に含まれていることもある。