SDK(ソフトウェア開発キット)は、あるプラットフォーム向けの開発に必要な部品をまとめて配布する「開発一式」です。中身を構成するのは、APIやライブラリ、開発ツール、ドキュメントです。スマホアプリでいえば、iOSやAndroidのアプリを作るための公式SDKに加え、アクセス解析・広告・ログイン・決済といった機能を後から足すための第三者SDKも数多く組み込まれます。この記事では、SDK・API・ライブラリ・フレームワークの違いを比較表で示し、アプリに組み込むSDKの種類、実際の導入手順、ストア審査や法令で確認すべき点、どれを選ぶかの判断基準までまとめます。
まとめ:SDK・API・ライブラリの違いとアプリでの選び方の結論
結論から言うと、SDKは「API+ライブラリ+ツール+文書」を束ねた開発キット、APIは「機能を呼び出すための取り決め」、ライブラリは「再利用できるコード部品」、フレームワークは「アプリの骨組み」です。公式SDKが提供されている言語・環境なら、まずSDKを使うのが最短で、導入・認証・エラー処理まで面倒を見てくれます。SDKが無い言語や、依存を増やしたくない軽量な用途では、APIを直接呼び出します。
アプリ開発に限ると、判断の軸がもう1つ増えます。組み込んだSDKはアプリと同じ権限で動き、利用者の情報を外部へ送ることもできるためです。ストアはSDK単位でのプライバシー申告やビルド環境の版を求め、日本では外部送信規律による通知・公表も関わります。SDKは「入れれば終わり」ではなく、入れた時点から更新と説明の責任を負う部品だと考えてください。
SDKの定義と開発キットに含まれるAPI・ツールなどの構成要素
SDKは Software Development Kit の略で、特定のOS・言語・サービス向けにアプリを開発するための道具一式を指します。開発者はゼロから通信処理や認証を書く代わりに、SDKが用意した関数を呼ぶだけで機能を組み込めます。Android SDK でモバイルアプリを作る、AWS SDK でクラウドを操作する、といった場面が典型です。
SDKに含まれる主な4要素(API・ライブラリ・ドキュメント・開発ツール)
SDKが「キット」と呼ばれるのは、次の要素をまとめて同梱しているためです。
- API:サービスや機能を呼び出す窓口。SDKの中核。
- ライブラリ:認証やデータ変換など、よく使う処理を関数化した部品。
- ドキュメント・サンプルコード:使い方を示すリファレンスと動くサンプル。
- 開発ツール:コンパイラ、デバッガ、エミュレータ、テスト環境など。
つまりSDKは、APIやライブラリを「含む」上位の概念です。この包含関係を押さえると、次の比較が一気に整理できます。
アプリ開発で使う「プラットフォームSDK」と「機能SDK」の2種類の違い
アプリの文脈で「SDK」と言うとき、指しているものは大きく2種類あります。1つ目はOSそのものの機能を使うためのプラットフォームSDKです。AndroidならAndroid SDK、iPhoneならXcodeに同梱されるiOS SDKがこれにあたり、画面部品やカメラ・通知・位置情報へのアクセス手段がまとまっています。アプリを作る以上、どちらかは必ず使います。
2つ目は、特定のサービスの機能をアプリに足すための機能SDKです。アクセス解析、クラッシュ収集、広告配信、SNSログイン、決済などがあり、提供企業が配布しています。アプリのプライバシーポリシーに「本アプリは以下のSDKを利用しています」と並んでいるのは、ほとんどがこちらです。プラットフォームSDKは開発の前提、機能SDKは選んで足す部品、と分けて考えると混乱しません。
API・ライブラリ・フレームワークとSDKの違いを比較表で整理
SDK・API・ライブラリ・フレームワークは、粒度と「開発の主導権をどちらが握るか」で区別できます。SDKは中にAPIやライブラリを含み、フレームワークだけは開発者ではなく枠組み側が処理の流れを主導する点が決定的に異なります。
| 種類 | 提供されるもの | 粒度 | 処理の主導権 | 言語依存 | 代表例 |
|---|---|---|---|---|---|
| SDK | API・ライブラリ・ツール・文書の一式 | 大(キット) | 開発者 | 言語・OS別に提供 | Android SDK, AWS SDK |
| API | 機能を呼ぶ取り決め(窓口) | 小〜中 | 開発者 | Web APIは非依存 | REST API, Graph API |
| ライブラリ | 再利用できるコード部品 | 中 | 開発者 | 言語依存 | NumPy, jQuery |
| フレームワーク | アプリの骨組み | 大 | 枠組み側 | 言語・環境依存 | React, Django |
表の「処理の主導権」がフレームワークだけ逆なのは、枠組み側が処理の流れを決めるためです。以下、SDKとの違いを個別に補足します。
APIとの違いは通信の取り決めか、それを包む開発キットかの差
APIは「この形式でリクエストすれば、この結果を返す」という機能の取り決めそのものです。対してSDKは、そのAPIを特定の言語から呼びやすくするラッパーや認証処理、サンプルまで束ねた包み紙にあたります。たとえば決済サービスは、生のREST APIも公開しつつ、Python用・JavaScript用のSDKも配布する形です。SDKを使えば署名やリトライを自前で書かずに済む一方、SDKが無い言語ではAPIを直接叩きます。API仕様の書き方はOpenAPIとは?Swaggerとの違いと仕様書(YAML/JSON)の書き方で詳しく扱っています。
ライブラリとの違いは部品の集合か、部品を含む開発キットかの差
ライブラリは、特定の処理を関数やクラスにまとめた再利用可能なコードの集まりです。SDKはこのライブラリを内包し、さらにドキュメントや開発ツールまで加えた点で範囲が広くなります。「sdk ライブラリ 違い」で検索される疑問の答えは明確で、両者は対等な別物ではなく、ライブラリはSDKを構成する一部品です。単一の処理だけが欲しければライブラリ単体、開発環境ごと整えたいならSDKを選びます。
フレームワークとの違いは骨組みに従うか、道具として呼ぶかの差
ライブラリとフレームワークの決定的な差は「制御の反転(IoC)」です。ライブラリやSDKは開発者が必要なときに呼び出す道具ですが、フレームワークは処理の流れを枠組み側が握り、開発者はその決められた場所にコードを埋め込みます。「ライブラリは呼ぶ、フレームワークは呼ばれる」と表現されるのはこのためです。SDKとフレームワークはどちらも大きな単位ですが、主導権が真逆である点で使い分けます。FlutterやReact Nativeのようなクロスプラットフォームの枠組みは、内部でAndroid SDKやiOS SDKを呼び出す構造になっており、両者は対立するものではなく、重ねて使う関係です。方式ごとの違いはクロスプラットフォームアプリ開発とは?メリット・デメリットと主要フレームワークの選び方で整理しています。
アプリに組み込む主なSDKの種類と役割(分析・広告・ログイン・決済)
スマホアプリに入っている機能SDKは、用途で見ると数種類に収まります。どの種類が、どんな情報を扱うのかを押さえておくと、導入判断やプライバシーポリシーの記載で迷いません。
| 種類 | アプリでの役割 | 扱う情報の例 |
|---|---|---|
| アクセス解析 | 画面遷移や利用回数の計測 | 端末識別子・操作履歴 |
| クラッシュ収集 | 異常終了の記録と通知 | 端末機種・OS版・ログ |
| 広告配信 | 広告の表示と成果計測 | 広告識別子・閲覧履歴 |
| ログイン連携 | SNSアカウントでの認証 | アカウント情報・トークン |
| 決済・課金 | アプリ内購入や外部決済 | 購入履歴・決済トークン |
| プッシュ通知 | お知らせの配信 | 通知用トークン |
どの種類も、自前で作れば数か月かかる機能を数行の設定で足せる点が利点です。その代わり、データの送り先はSDKの提供企業になります。「便利な部品」と「情報の外部送信」が一体になっているのが、アプリにおけるSDKの性質です。
アプリにSDKを組み込む手順とGradle・sdkmanagerの設定例
導入の流れはどのSDKでもほぼ共通です。ここではAndroidアプリに機能SDKを足す例として、Firebase公式のAndroidセットアップ手順に沿って、手順と設定ファイルを示します。
Android SDKの準備と、sdkmanagerでプラットフォームを入れる手順
まず土台となるAndroid SDKを用意します。通常はAndroid Studioとは?できること・インストール手順・使い方で解説しているAndroid StudioのSDK Managerから入れますが、CI環境などではsdkmanagerをコマンドで使います。
android_sdk/cmdline-tools/latest/bin/sdkmanager --list
android_sdk/cmdline-tools/latest/bin/sdkmanager "platform-tools" "platforms;android-36"
android_sdk/cmdline-tools/latest/bin/sdkmanager --licenses
1行目で入手できるパッケージを一覧し、2行目でAPI 36向けのプラットフォームを入れ、3行目でライセンスに同意します。なお公式ページでは、sdkmanagerは非推奨と表示され、Android CLIの android sdk コマンドが案内されています(2026年10月時点)。手順書を新しく書く場合は、新しいコマンドの案内も確認してください。
Gradleに機能SDKを追加する設定例(Firebase BoM 35.0系の場合)
機能SDKは、ビルド設定に依存関係を1〜2行足して取り込みます。Firebaseの場合は、プロジェクト直下とアプリモジュールの2つの build.gradle.kts に次を書きます。
// プロジェクト直下の build.gradle.kts
plugins {
id("com.google.gms.google-services") version "4.5.0" apply false
}
// app/build.gradle.kts
plugins {
id("com.android.application")
id("com.google.gms.google-services")
}
android {
compileSdk = 36
defaultConfig {
targetSdk = 36
}
}
dependencies {
implementation(platform("com.google.firebase:firebase-bom:35.0.0"))
implementation("com.google.firebase:firebase-analytics")
}
BoM(部品表)を1行指定すると、個々のFirebaseライブラリには版番号を書かなくても互換性のある組み合わせが選ばれます。記載の版は2026年10月時点の公式手順に基づくもので、BoMは35.0系、プラグインは4.5系です。最新の版は公式ページで確認してから書き換えてください。あわせてFirebaseのコンソールから設定ファイル google-services.json を取得し、アプリモジュールの直下に置きます。ここまででアプリにアクセス解析SDKが入り、起動するとイベントの送信が始まります。
iOSアプリの場合はXcodeでパッケージを追加して取り込む流れ
iOSでは、Xcodeの「Add Package Dependencies」からSDKのリポジトリを指定し、Swift Package Managerで取り込む方法が中心です。土台となるiOS SDKはXcodeに同梱されているため、Xcodeの版がそのまま使えるSDKの版を決めます。手元のXcodeの版を確かめる方法はXcodeの最新バージョンとバージョン確認・アップデート手順にまとめています。
SDK・API・ライブラリの使い分けとアプリでSDKを選ぶ判断基準
どれを使うかは、開発言語と「どこまで面倒を見てほしいか」で決まります。実務では次の順で判断すると迷いません。
- 公式SDKが対象言語で提供されている:まずSDKを使う。認証・リトライ・型定義まで揃い、開発が最短になる。
- SDKが無い言語、または多言語から使う:Web APIを直接呼ぶ。HTTP通信できれば言語を選ばない。
- 汎用的な処理部品だけが欲しい:ライブラリ単体を導入し、依存を最小に保つ。
SDKを採用すべきでない場面もあります。呼び出す機能がAPIの1〜2エンドポイントだけなら、重いSDKを入れるより直接HTTPで叩くほうが依存が減り、バンドルサイズも小さく保てます。とくにフロントエンドでは、公式SDKが数百KBに達しページ表示を遅くするケースがあり、必要な処理だけを自前で書く判断が有効です。逆に、認証やページネーションが複雑なサービスでは、SDKの省力効果が上回ります。
アプリでは「サーバー経由」か「端末に直接組み込むか」の2択で考える
アプリならではの判断がもう1つあります。外部サービスの機能を端末側のSDKで直接呼ぶか、自社サーバーを経由してAPIで呼ぶかです。端末に直接組み込むと実装は早い反面、SDKの更新にはアプリの再審査と利用者の更新が必要で、送信される情報も端末から直接外へ出ます。サーバー経由にすれば、送る項目を自社で絞れ、提供企業を差し替えるときもアプリを出し直さずに済みます。
目安として、クラッシュ収集やプッシュ通知のように端末でしか取れない情報を扱うものは端末側SDK、決済の確定処理や外部サービスへのデータ連携のように秘密鍵や業務ルールを伴うものはサーバー側で扱う、と分けると事故が起きにくくなります。サーバー側でSDKを使う例はFirebase Admin SDKとは?クライアントSDKとの違いで解説しています。
分野別に見る代表的なSDKの例とモバイル・クラウド・AIでの用途
SDKは対象プラットフォームごとに提供されます。代表的なものを分野別に整理すると、どんな場面でSDKが登場するかがつかめます。
| 分野 | 代表的なSDK | 主な用途 |
|---|---|---|
| モバイル | Android SDK, iOS SDK | スマホアプリ開発 |
| クラウド | AWS SDK, Firebase SDK | クラウド機能の呼び出し |
| AI | OpenAI SDK, Vercel AI SDK | 生成AIの組み込み |
| ゲーム | Unity Ads SDK | ゲームの広告・課金連携 |
クラウド系ではFirebase Admin SDKやAWS SDK for JavaScript v3が定番で、サーバー側からユーザー管理やストレージ操作を行えます。生成AIの組み込みではOpenAI Python SDKやVercel AI SDK v6が広く使われ、モデル呼び出しやツール実行を短いコードで記述できる仕組みです。モバイルではAndroid SDK(Android 17=API 37)やiOS SDKが、それぞれのOS向けアプリ開発の前提になります。
SDK導入前に確認する3つのチェック項目とストア審査・法令の要件
SDKは便利ですが、第三者が作った外部コードを自分のアプリに取り込む行為でもあります。導入前に次の3点を確認し、あわせてストアと法令の要件を押さえます。
ライセンスと利用規約で確かめる商用利用・再配布・表記の3条件
SDKにはオープンソースのものと、提供企業が定める利用規約に従うクローズドなものがあります。商用利用の可否、再配布の条件、クレジット表記の要否はSDKごとに異なるため、導入前にライセンス(MIT、Apache 2.0、独自EULAなど)を必ず確認します。とくに広告SDKやSNS連携SDKで収集するデータの範囲は、規約に定められた内容の確認が必要です。
バージョンと依存関係の管理とストアが求めるAPIレベル・Xcode版
SDKはOSやプラットフォームの更新に追随してバージョンが上がります。古いままだとストアに出せなくなるため、各ストアの要件を定期的に確かめます。
- Google Play:対象APIレベルの要件により、2026年8月31日以降、新規アプリと更新はAndroid 16(API 36)以上を対象にする必要があります(Wear OSなど一部の端末種別は別基準。延長申請は2026年11月1日まで)。
- App Store:Appleの今後の要件では、2026年4月28日以降、App Store Connectに上げるアプリはXcode 26以降とiOS 26などのSDKでビルドする必要があります。
いずれも2026年10月時点の公式ページの記載で、毎年更新されます。複数のSDKを併用すると依存ライブラリのバージョンが衝突することもあるため、依存関係をロックファイルで固定し、更新は段階的に行います。
第三者SDKのセキュリティリスクとプライバシーマニフェスト・外部送信規律
SDKはアプリ本体と同じ権限で動きます。アプリが利用者に許可された位置情報・連絡先・ストレージなどへ、組み込んだSDKも同じようにアクセスでき、その内容を外部サーバーへ送信することが技術的に可能です。つまり脆弱性を抱えた、あるいは信頼できないSDKを1つ入れるだけで、アプリ全体が情報漏えいの経路になり得ます。提供元の信頼性、更新頻度、プライバシーポリシーで宣言された収集データの範囲を確認し、使わない機能のSDKは同梱しないのが安全です。
ストアでも、この点はアプリを審査する際の確認対象です。Appleは第三者SDKの要件で、FirebaseCrashlyticsやAlamofireなど一覧に載ったSDKを含むアプリを新規提出するとき、そのSDKのプライバシーマニフェストを同梱し、バイナリで使う場合は署名も備えることを求めています。GoogleもGoogle Play SDK IndexでSDKごとの情報を公開しており、組み込む前の確認に使えます。
国内では法令の面も関わります。2023年6月16日に施行された電気通信事業法の外部送信規律では、対象となるサービスのアプリが利用者の情報を外部へ送らせる場合、送る情報の内容・送り先の名称・利用目的を通知または公表する必要があり、アプリでは最初に表示される画面などで確認できるようにすることが示されています。分析SDKや広告SDKの送信はこれに当たり得るため、対象判定と表示方法は電気通信事業法とは?外部送信規律の対象判定とタグ管理・同意取得の実装要件で確認してください。
SDKの選定から組み込み、ストア要件への追随、外部送信の表示までを一体で進めたい場合は、一創のスマホアプリ開発でiOS・Androidのネイティブアプリ開発として対応しています。
よくある質問
SDKとアプリ開発について、よく寄せられる疑問に答えます。
SDKとIDEの違いは何ですか?
IDE(統合開発環境)はコードを書く・実行する・デバッグするための編集ツールで、Visual Studio Code や Android Studio が該当します。SDKはそのIDE上で使う開発部品の一式です。Android Studio(IDE)の中にAndroid SDK(部品)を入れて開発する、という関係になり、両者は競合せず組み合わせて使います。iOSでも、XcodeというIDEにiOS SDKが同梱されています。
SDKはプログラミング言語ごとに違いますか?
多くのサービスは言語別にSDKを提供します。同じAPIに対して Python 用、JavaScript 用、PHP 用などが別々に配布され、各言語の書き方に合わせて設計されています。アプリ向けでも、Android向けはKotlin・Java、iOS向けはSwiftで使う形が中心です。使いたい言語のSDKが無い場合は、言語に依存しないWeb APIを直接呼び出して開発します。
オープンソースSDKとクローズドSDKの違いは?
オープンソースSDKはソースコードが公開され、内部の挙動を確認・修正できます。クローズドSDKは提供企業がコードを非公開のまま配布し、利用は規約に縛られます。透明性と自由度ならオープンソース、公式サポートや保証を重視するならクローズド、という選び方が判断の目安です。クローズドの場合は、送信するデータの範囲を公開文書で確かめてから導入します。
スマホアプリ開発にSDKは必須ですか?
ネイティブアプリを作る場合、Android SDK や iOS SDK は事実上必須です。OSの機能(カメラ、通知、位置情報など)へアクセスするための正規の窓口がSDKに含まれているためです。一方、アクセス解析や広告などの機能SDKは必須ではなく、必要な機能だけを選んで足します。Web技術で作るアプリでは、これらのモバイルSDKを直接使わない構成もあります。
SDKとAPIはどちらを覚えるべきですか?
APIの考え方を先に理解するのが近道です。SDKの中核はAPIであり、「リクエストとレスポンスの取り決め」という仕組みが分かれば、どのSDKにも応用が利きます。そのうえで、実際に使うプラットフォームのSDKで具体的な書き方を覚える順序が効率的です。アプリ開発なら、まずAndroid SDKかiOS SDKの基本を押さえ、機能SDKは必要になった時点で追加していけば足ります。
関連記事
- Android Studioとは?できること・インストール手順・使い方:Android SDKを入れる開発環境の準備
- 電気通信事業法とは?外部送信規律の対象判定とタグ管理・同意取得の実装要件:アプリのSDKが送る情報の通知・公表
- Firebase Admin SDKとは?クライアントSDKとの違いと導入・初期化・ユーザー管理:サーバー側でのSDK利用
- AWS SDK for JavaScript v3の使い方|v2からの移行手順とS3・DynamoDBの実装例:クラウドSDKの実装例
- OpenAPIとは?Swaggerとの違いと仕様書(YAML/JSON)の書き方:API仕様の書き方