【えすでぃーけー】

SDK(ソフトウェア開発キット) とは?

💡 開発に必要な道具がぜんぶ入った「工具セット」
📌 このページのポイント
SDK ― 開発キットの構成 SDK(Software Development Kit) API ライブラリ群 開発ツール コンパイラ/デバッガ ドキュメント 使い方・リファレンス サンプルコード すぐに試せるコード例 エミュレータ テスト用の仮想環境 代表的なSDK Android SDK iOS SDK AWS SDK Firebase SDK
SDKの構成イメージ
ひよこ ひよこ

SDKってAPIと何が違うの?

ペンギン先生 ペンギン先生

APIは「こういうリクエストを送るとこういうデータが返ってくるよ」という通信のルールのこと。SDKはそのAPIを簡単に使えるようにライブラリやツール、サンプルコードをまとめたパッケージだよ。APIが「メニュー表」だとしたら、SDKは「調理器具一式」みたいなイメージだね。

ひよこ ひよこ

SDKを使うと具体的にどんないいことがあるの?

ペンギン先生 ペンギン先生

たとえばAWSのS3にファイルをアップロードしたいとき、SDK無しだとHTTPリクエストの組み立て・認証ヘッダーの計算・エラーハンドリングなどを全部自分で書かないといけない。SDKを使えば数行のコードで済むんだ。「車輪の再発明」をしなくて済むのが最大のメリットだよ。

ひよこ ひよこ

SDKを使うときに注意することってある?

ペンギン先生 ペンギン先生

SDKのバージョン管理が大事だよ。古いバージョンを使い続けるとセキュリティ脆弱性が放置されたり、新しいAPIの機能が使えなかったりする。あとSDKに依存しすぎると、そのサービスから乗り換えるときに書き直しが大変になる「ベンダーロックイン」のリスクもあるから、抽象化レイヤーを挟むことを意識するといいよ。

ひよこ ひよこ

SDKとフレームワークの違いがよくわからないんだけど?

ペンギン先生 ペンギン先生

SDKは「道具箱」で、自分のコードから必要な道具を選んで呼び出す。フレームワークは「設計図付きの家のキット」で、決められた場所に自分のコードを組み込む形になる。SDKは自由度が高い代わりに設計は自分で考える必要がある。フレームワークはルールが厳しい代わりに迷いにくい。制御の主導権がどちらにあるかが本質的な違いだよ。

ひよこ ひよこ

SDKのライセンスって気にしないといけないの?

ペンギン先生 ペンギン先生

絶対に気にすべきだよ。商用利用が制限されているSDKや、使用するとアプリ全体をオープンソースにしなければならないGPLライセンスのSDKもある。特にモバイルアプリ開発では、利用規約の変更で収益モデルが崩れた事例もある。SDKを導入する前にライセンスを確認する習慣は、プロのエンジニアとして必須だよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「SDK」って出てきたら「特定のサービスやプラットフォーム向けに開発ツールをまとめたセットだな」と思えればだいたいOK!
📖 おまけ:英語の意味
「Software Development Kit」 = ソフトウェア開発キット
💬 Kitは「一式・セット」という意味。開発に必要なものをひとまとめにしたものだよ
← 用語集にもどる