SDKとは?ソフトウェア開発キットをわかりやすく解説
SDK(ソフトウェア開発キット)は、企業が開発者に提供する既製のツールキットです。開発者は、すべてを一から作らなくても、その企業のサービスやプラットフォームを使えます。通常は、特定のプログラミング言語向けのコードライブラリ、ドキュメント、サンプルが含まれ、テスト用のツールが付いていることもあります。アプリが「Stripe SDKを使っている」と言うとき、それはStripeへのリクエストを一つずつ手で書く代わりに、Stripeが用意した関数をコードから呼び出していることを意味します。
AIでアプリを作るときにSDKが重要な理由
AIビルダーに決済、AIチャット、地図、メール送信などの機能を頼むと、通常はその提供元のSDKをインストールして、それを呼び出す数行のコードを書いてくれます。SDKが何かを知っておくと、次のような場面で役立ちます。
- プロジェクトに何が追加されたのか把握できます。 SDKは依存関係、つまりアプリが頼ることになる外部のコードです。
- 必要な設定がわかります。 ほぼすべてのSDKはAPIキーを必要とします。また、多くのSDKには「サーバー用」と「ブラウザー用」があり、どのキーを使ってよいかのルールが異なります。
- 正しい指示を出せます。 「Stripeの公式SDKをサーバー側で使って」と頼む方が、「Stripeを追加して」と頼むより明確です。
- エラーを読み解けます。 AIで作られたアプリのエラーの多くは、SDKの設定ミス、古いバージョン、誤った場所での使用が原因です。
身近なたとえ
棚を取り付けたい場面を想像してください。
- APIは建物のルールです。どの壁にネジを打てるか、どれくらいの重さに耐えられるか、配管がどこを通っているか。このルールだけを頼りに、すべて自分で測って穴を開けることもできます。
- SDKは、その壁のメーカーが出している組み立てキットです。切り揃えられた部品、適切なネジ、その壁にぴったり合うブラケット、そして説明書が入っています。
棚をどこに付けて、何を置くかはあなたが決めます。キットがあれば、木材を切ったりネジのサイズを推測したりする手間が省けますし、水道管に穴を開けてしまう心配も減ります。
SDK、API、ライブラリ、フレームワークの違い
これらの用語は意味が重なるため、混乱しやすいものです。
| 用語 | 内容 | 例 |
|---|---|---|
| API | サービスと通信するための決まりごと。受け付けるリクエストと返される応答を定めたもの | api.stripe.com にあるStripeのREST API |
| SDK | 提供元が、特定の言語からAPIやプラットフォームを使うために用意したツールキット。ドキュメントやツールを含む | StripeのNode.js向け公式ライブラリ |
| ライブラリ | プロジェクトに追加できる、再利用可能なコード全般 | 日付を整形するパッケージ |
| フレームワーク | アプリ全体がその中で組み立てられる、より大きな土台 | React、Next.js、Django |
SDKは通常、ライブラリを含んでいて、そのライブラリは通常APIを呼び出します。ウェブサービスの場合、「SDK」と「クライアントライブラリ」は同じ意味で使われることがよくあります。
SDKはウェブサービスだけのものではありません。AppleやGoogleは、iOSやAndroidのアプリを作るためのSDKを公開しています。これにはコンパイラー、シミュレーター、プラットフォームのコードが含まれます。考え方は同じで、その基盤向けに作るために必要なものが一つのキットにまとまっています。
SDKが実際にしてくれること
ここでは、決済サービスで顧客を作成するという同じ作業を、2通りの方法で見てみます。
SDKを使わない場合、コードはHTTPリクエストを自分で組み立てる必要があります。URLを設定し、正しいヘッダーに秘密鍵を付け、APIが期待する形式にデータを整え、送信し、ステータスコードを確認し、応答を解析し、通信が一時的に途切れたときには再試行まで行います。
SDKを使う場合、ほぼ1行で済みます。
const customer = await stripe.customers.create({ email: "lena@example.com" });
この1行の裏で、SDKは次の処理を行っています。
- 認証:すべてのリクエストに、キーを正しく付けます。
- データの整形:データをAPIが期待する形式に変換し、応答をオブジェクトに戻します。
- エラー処理:ステータスコードを、コードで捕まえられる分かりやすいエラーの種類に変換します。
- 再試行:一時的な理由でリクエストが失敗したとき、安全な形で再度送信します(多くの公式SDKがこれを行います)。
- 型情報:TypeScriptでは、どの項目が存在するかをエディターに伝えるので、コードを実行する前にミスに気づけます。
具体例:サポートアプリにAIの返信を追加する
AIビルダーに「顧客がサポートチケットを送信したら、AIモデルを使って返信の下書きを生成して」と頼んだとします。
- AIは、モデル提供元の公式SDKをプロジェクトのパッケージとしてインストールします(JavaScriptのプロジェクトなら、npmレジストリから)。
- APIキーをプロジェクトの秘密情報として登録します。SDKはサーバー上の環境変数からキーを読み取ります。
- AIは、チケットの本文と短い指示を添えてSDKを呼び出すサーバーのルートを書き、生成された返信をデータベースに保存します。
- ブラウザーがキーを見ることはありません。ブラウザーが呼び出すのは、あなた自身のサーバーのルートだけです。
提供元がAPIを変更した場合、通常は新しいSDKのバージョンが公開されます。パッケージを更新し、リリースノートで互換性のない変更がないかを確認すれば、それだけで対応できることが多いです。
主な用語
| 用語 | 意味 |
|---|---|
| 依存関係 | プロジェクトが頼っている外部のコード。SDKもその一つです。 |
| パッケージ/パッケージマネージャー | ダウンロードできるコードのまとまりと、それをインストールするツール(JavaScriptならnpm、Pythonならpip)。 |
| クライアントライブラリ | 特定のAPIを呼び出しやすくするコード。ウェブサービスの文脈では、SDKとほぼ同じ意味で使われることが多いです。 |
| サーバー側SDK | バックエンドで動き、秘密鍵を安全に使えます。 |
| クライアント側/ブラウザーSDK | 利用者のブラウザーで動きます。公開用の、いわゆる「公開可能な」キーだけを渡すべきです。 |
| バージョン | SDKの各リリースには番号(4.2.0のようなもの)があります。大きな番号の変更は、互換性のない変更を含むことが多いです。 |
| 互換性のない変更(破壊的変更) | コードの変更が必要になる更新。 |
| 変更履歴/リリースノート | 各バージョンで何が変わったかを、提供元がまとめたもの。 |
よくある誤解
- 「SDKとAPIは同じもの」。 APIはサービスの接続口であり、SDKはその上にある使いやすくするための層です。多くのウェブAPIは、SDKなしでも呼び出せますが、その分手間がかかります。
- 「SDKを入れたら連携は完了」。 提供元のアカウント、正しいキー、そして失敗したときの処理を行うコードが別途必要です。
- 「正しい名前のパッケージなら、それが公式」。 悪意のある人が、よく似た名前のパッケージを公開することがあります。正確なパッケージ名は、提供元のドキュメントで確認してください。
- 「ブラウザーで動くSDKに秘密鍵を入れてもよい」。 ダメです。ブラウザーのコードは、訪問者から見えてしまいます。秘密鍵は必ずサーバー側のコードにだけ置いてください。詳しくはAPIキーを安全に管理する方法をご覧ください。
- 「SDKは更新しなくてよい」。 古いバージョンは修正を受け取れなくなり、提供元が古いAPIのバージョンを廃止すると、動かなくなることがあります。
AIビルダーに頼むときのポイント
- 「サードパーティ製のラッパーではなく、提供元の公式SDKを使って。インストールしたパッケージの正確な名前とバージョンを教えて。」
- 「SDKはサーバー側だけで使い、キーは環境変数から読み込んで。」
- 「このSDKのどの部分がブラウザーで動き、どのキーを使うの?」
- 「SDKの呼び出しが失敗したり、タイムアウトしたりした場合はどうなる?ユーザーに分かりやすいメッセージを表示して、エラーはログに残して。」
- 「このアプリが依存しているSDKとパッケージをすべて挙げて、それぞれの用途も説明して。」
- 「使っているSDKに古いものや、既知のセキュリティ上の問題がないか確認して。」
MythexでのSDK
Mythexのエージェントは、プロジェクトのサンドボックスに、あなたのスタックで一般的なパッケージマネージャーを使ってパッケージをインストールできます。提供元のSDKも含まれます。パッケージ名と、それを使いたい機能を伝えてください。詳しくは、npmパッケージの使い方をご覧ください。Mythexには、アプリ向けの連携機能をまとめたカタログは用意されていません。提供元のキーをプロジェクトの秘密情報として登録し、サーバー側からそのサービスを呼び出すようエージェントに頼んでください。方法は任意のAPIを連携するで説明しています。
SDKの土台になっている部分については、APIとはをご覧ください。SDKを使う代表的な機能として、アプリに決済を追加する方法とLLM APIの使い方もあわせてお読みください。
よくある質問
SDKとは簡単に言うと何ですか?
SDK(ソフトウェア開発キット)は、企業が開発者にサービスやプラットフォームを簡単に使ってもらうために提供する、既製のコード、ドキュメント、ツールのまとまりです。APIへのリクエストを一つずつ手で書く代わりに、SDKが用意している簡単な関数を呼び出すだけで済みます。
SDKとAPIの違いは何ですか?
APIは、サービスと通信するための決まりごとで、受け付けるリクエストと返される応答の形を定めたものです。SDKは、そのAPIの上に作られたツールキットで、通常は特定のプログラミング言語向けです。リクエストを代わりに送り、認証、再試行、データ形式といった細かい処理も引き受けてくれます。
SDKは無料ですか?
ウェブサービス向けのSDKの多くは、ダウンロードも利用も無料で、オープンソースとして公開されています。ただし、接続先のサービスは利用量に応じて料金を請求することがあります。たとえば、StripeやOpenAIのSDKを使うこと自体は無料ですが、そのSDKを通じて行われる決済やAIのリクエストには、提供元から料金がかかります。
SDKは安全に使えますか?
一般的に、提供元の公式SDKは、そのサービスを呼び出す最も安全な方法です。提供元が保守していて、セキュリティに関わる細かい処理も組み込まれているからです。公式のパッケージレジストリからインストールし、常に最新の状態に保ちましょう。名前が似ている非公式のパッケージには注意してください。