SDK入門 - ライブラリ・API・フレームワークとの違い
このドキュメントの目的
SDK(Software Development Kit) の本質を理解し、似た概念との違いを明確にすることが目標です。
目次
SDKとは
一言でいうと
SDKは「特定のサービスやプラットフォームを使うための道具一式」 です。
日常生活での例え
組み立て家具と家電で考えてみましょう:
┌─────────────────────────────────────────────┐
│ 組み立て家具(ライブラリの 例え) │
├─────────────────────────────────────────────┤
│ │
│ ・部品と説明書が届く │
│ ・自分で組み立てる必要がある │
│ ・どう使うかは自分で決める │
│ ・柔軟だが手間がかかる │
│ │
└─────────────────────────────────────────────┘
┌─────────────────────────────────────────────┐
│ 家電(SDKの例え) │
├─────────────── ──────────────────────────────┤
│ │
│ ・電源を入れればすぐ使える │
│ ・複雑な仕組みは内部に隠れている │
│ ・説明書を見れば使い方がわかる │
│ ・特定の目的に最適化されている │
│ │
└─────────────────────────────────────────────┘
SDKは家電のように「すぐ使える」ことを目指しています:
┌─────────────────────────────────────────────┐
│ SDKが提供するもの │
├─────────────────────────────────────────────┤
│ │
│ ├── すぐ動くコード(電源を入れれば動く) │
│ ├── ドキュメント(取扱説明書) │
│ ├── サンプルコード(使用例) │
│ └── 開発ツール(付属品) │
│ │
│ → 開発者がサービスを簡単に使える │
│ │
└─────────────────────────────────────────────┘
SDKの正式名称
SDK = Software Development Kit(ソフトウェア開発キット)
「キット」という言葉がポイントです。単なるライブラリではなく、開発に必要なものがセットになっていることを表しています。
ライブラリとの違い
ライブラリとは
ライブラリは「再利用可能なコードの集まり」です。特定の機能を提供します。
ライブラリの例:
├── 日付操作ライブラリ
├── 文字列処理ライブラリ
├── 数学計算ライブラリ
└── 画像処理ライブラリ
SDKとライブラリの違い
┌─────────────────────────────────────────────┐
│ ライブラリ │
├─────────────────────────────────────────────┤
│ ・特定の機能を提供 │
│ ・汎用的(特定サービスに依存しない) │
│ ・コードのみ │
│ │
│ 例: 日付計算、JSON解析、暗号化 │
└─────────────────────────────────────────────┘
┌─────────────────────────────────────────────┐
│ SDK │
├─────────────────────────────────────────────┤
│ ・特定のサービス/プラットフォーム向け │
│ ・そのサービスを使うことに特化 │
│ ・コード+ドキュメント+ツール+サンプル │
│ │
│ 例: AWS SDK、Stripe SDK、Google Maps SDK │
└─────────────────────────────────────────────┘
関係性
SDKはライブラリを含むことが多いです:
SDK
├── ライブラリ(メインのコード) ← ライブラリはSDKの一部
├── ドキュメント
├── サンプルコード
└── ツール
APIとの違い
APIとは
API(Application Programming Interface)は「ソフトウェア同士が通信するための約束事」です。
銀行で例えると
┌─────────────────────────────────────────────┐
│ API = 銀行の窓口 │
├─────────────────────────────────────────────┤
│ │
│ あなた → 窓口 → 銀行システム │
│ │
│ 窓口(API)が定めるルール: │
│ ・「振込したい」と言えば振込できる │
│ ・「残高照会」と言えば残高がわかる │
│ ・必要な情報(口座番号など)を伝える │
│ │
│ 内部の仕組みは知らなくていい │
│ │
└─────────────────────────────────────────────┘
SDKとAPIの違い
┌─────────────────────────────────────────────┐
│ API = 銀行の窓口 │
├─────────────────────────────────────────────┤
│ ・サービスとの通信方法を定義 │
│ ・「何ができるか」「どう呼ぶか」の仕様 │
│ ・実装は含まない │
└─────────────────────────────────────────────┘
┌─────────────────────────────────────────────┐
│ SDK = 銀行アプリ │
├─────────────────────────────────────────────┤
│ ・窓口(API)を使いやすくしたもの │
│ ・スマホで簡単に操作できる │
│ ・内部でAPIを呼んでいる │
└─────────────────────────────────────────────┘
関係性
SDKは内部でAPIを呼び出します:
あなたのコード
↓
SDK(使いやすいインターフェース)
↓
API(通信の約束事)
↓
サービス(実際の処理)