SDKとライブラリは、同列に語られることが多いですが、実際には別の概念です。
なんとなく違いを理解しているつもりではありますが、改めて整理してみます。
SDKとは
MDNによると下記のように定義されています。
SDK (Software Development Kit) (ソフトウェア開発キット) - 用語集 | MDNSDK(Software Development Kit)とは、開発者が特定のフレームワーク、オペレーティングシステム、その他のプラットフォーム向けのソフトウェアを作成するために使用できる統合されたツール群です。SDK には以下が含まれます:SDK(Software Development Kit)とは、開発者が特定のフレームワーク、オペレーティングシステム、その他のプラットフォーム向けのソフトウェアを作成するために使用できる統合されたツール群です。
仕様書、サンプルコード、デバッガ、エミュレータ、ライブラリなどがパッケージ化されたツールセットのようなものという理解でよいと思っています。
ライブラリとは
KDDIビジネスによると下記のように定義されています。
ライブラリとは?意味・用語説明|IT用語集|KDDI株式会社プログラミングで頻繁に利用される機能やプログラムの部品を、再利用しやすい形でまとめたファイルを指します。ライブラリとは、IT分野では、プログラミングで頻繁に利用される機能やプログラムの部品を、再利用しやすい形でまとめたファイルを指します。 英語の「Library (図書館) 」が語源で、必要な機能を持つ部品を探して利用するという意味合いがあり、さまざまな目的や用途に応じた多様な種類が存在します。
日頃composerやらnpmやらpipでインストールして利用しているものは、ほとんどがライブラリに該当します。
具体例で見る両者の関係
言葉の定義だけだとイメージしづらいので、Laravelアプリ開発を例に具体的に見てみます。
LaravelからS3にファイルをアップロードしたり、SESでメールを送ったりする場合、composer require aws/aws-sdk-phpでAWS SDK for PHPを導入するのが一般的です。
この中には、下記のようなものがまとめて含まれています。
- S3用の
S3Client、SES用のSesClient、DynamoDB用のDynamoDbClientなど、サービスごとのクライアントクラス(=ライブラリ的な部品) - 認証情報の管理やリトライ処理などの共通機能
- 各サービスのAPIリファレンスやサンプルコード
つまり「AWS SDK」という大きな箱の中に、S3用・SES用といった部品としての「ライブラリ」がいくつも入っている、というイメージです。
一方で、HTTP通信をシンプルに行うためのGuzzleのようなライブラリは、AWS SDKには含まれておらず、composerで個別にインストールして使います。
これは単体で「HTTP通信」という1つの機能を提供するだけのもので、認証情報の管理やリトライ処理のようなツール一式を持っているわけではありません。
このように、SDKは「開発に必要なものが一式揃った箱」、ライブラリは「その箱の中身にもなり得るし、単体でも使える部品」と捉えると整理しやすくなります。
比較
SDKとライブラリを比較すると以下のようになります。
| 項目 | SDK | ライブラリ |
|---|---|---|
| 定義 | ソフトウェア開発キット。特定のプラットフォームやサービス向けに開発を支援するツールやライブラリの集合 | 特定の機能を提供する再利用可能なコードの集合 |
| 役割 | 開発環境の提供、APIのラッパー、サンプルコードなどを含む | 特定の機能を呼び出して利用する |
| 依存関係 | SDKがライブラリを含むことが多い | 単体で利用可能なことが多い |
| 例 | Android SDK、iOS SDK、AWS SDK | React、Axios、Zod |
図
簡易的な図ですが、SDKとライブラリの関係を示すと以下のようになります。
SDKの中にはライブラリが含まれることがありますが、すべてのライブラリがSDKに含まれるわけではありません。

理解度チェック(AI生成)
以下の4択問題で、SDKとライブラリの理解度をチェックしてみましょう。答えは折りたたまれているので、クリックして確認してください。
Q1. SDKの説明として最も適切なものはどれか?
- 特定の機能を提供する再利用可能なコードの集合
- 開発に必要なツールや仕様書、ライブラリなどがパッケージ化された統合ツール群
- npmやpipでインストールするパッケージの総称
- プログラムのバグを検出するためのテストツール
答えを見る
正解: 2. 開発に必要なツールや仕様書、ライブラリなどがパッケージ化された統合ツール群 MDNの定義にある通り、SDKは特定のプラットフォーム向けに開発するための仕様書、サンプルコード、デバッガ、エミュレータ、ライブラリなどがまとめられたツールセットです。
Q2. ライブラリの説明として最も適切なものはどれか?
- 特定のプラットフォーム向けの開発環境一式
- プログラミングで頻繁に利用される機能や部品を再利用しやすい形でまとめたもの
- アプリケーションの実行環境をエミュレートするツール
- ソースコードをコンパイルするためのツールチェーン
答えを見る
正解: 2. プログラミングで頻繁に利用される機能や部品を再利用しやすい形でまとめたもの KDDIビジネスの定義にある通り、ライブラリは再利用しやすい形でまとめられたプログラムの部品を指します。
Q3. composerやnpm、pipでインストールするものの多くは、SDKとライブラリのどちらに該当するか?
- SDK
- ライブラリ
- どちらでもない
- 常に両方を同時に含む
答えを見る
正解: 2. ライブラリ composerやnpm、pipで日頃インストールしているものの多くは、特定の機能を提供する再利用可能なコードであるライブラリに該当します。
Q4. SDKとライブラリの関係性として正しいものはどれか?
- すべてのライブラリはSDKに含まれる
- SDKとライブラリは常に排他的で、同時に使われることはない
- SDKの中にはライブラリが含まれることがあるが、すべてのライブラリがSDKに含まれるわけではない
- ライブラリの中にSDKが含まれることが一般的である
答えを見る
正解: 3. SDKの中にはライブラリが含まれることがあるが、すべてのライブラリがSDKに含まれるわけではない SDKはライブラリを含むツールセットであることが多い一方、ライブラリは単体でも利用可能であり、必ずしもSDKの一部とは限りません。
Q5. Android SDKやAWS SDKのような「SDK」と呼ばれるものの特徴として正しいものはどれか?
- 単一の機能を提供するコードの集合のみで構成される
- 開発環境の提供やAPIのラッパー、サンプルコードなどを含む
- ライブラリを一切含まない
- 特定のプラットフォームに依存せず、あらゆる環境で動作する
答えを見る
正解: 2. 開発環境の提供やAPIのラッパー、サンプルコードなどを含む SDKは特定のプラットフォームやサービス向けに開発を支援するため、開発環境の提供、APIのラッパー、サンプルコードなど幅広い要素を含みます。