APIとSDKの違いは何ですか?


174

さまざまなAPIとSDKを調べていたときに、APIと呼ばれるものとSDKと呼ばれるものの違いを実際に理解できないことに気付きました。

両方とも、概念的には、他のソフトウェアがWebサービス、エンドユーザーアプリ、OSサービスまたはデーモン、またはカーネルであるかどうかに関係なく、プログラムが別のソフトウェアによって提供されるリソースとやり取りし、制御する方法ですデバイスドライバ。

それでは、SDKとAPIのセマンティックの違いは何ですか?


3
SDKは開発キットであり、通常はAPIの使用を容易にするクライアント側ライブラリです。APIは、単なるライブラリ/サービスの定義またはドキュメントです。
-Dietbuddha

回答:


175

むしろ、「すべてのSDKはAPIである/含まれていますが、すべてのAPIがSDKであるわけではありません」のラインに沿っていると思います。

SDKは、アプリケーションの作成に必要なほとんどのアクションを実行できるAPIの完全なセットのようです。さらに、SDKには、対象のプラットフォーム/アイテム用に開発するための他のツールが含まれている場合があります。

一方、APIは、特定の目的に適した関連する一連のメソッドにすぎません。

例として、JDK(Java Development Kit)には、API、コンパイラ、ランタイム、およびその他のさまざまなツールが含まれています。Java APIは、そのまま使用できるコア言語を構成するすべてのライブラリです。


7
SDKは、前述のAPIと対話する方法の単なるサンプルにすぎないことを付け加えます。
マフィンマン

10
そのニックを逆にしたかもしれないと思う。SDKは、ライブラリの(特にライブラリ自体ではなく、ライブラリを使用するコーダーが使用するライブラリへのインターフェイス)と対話するためのAPIを含むもののスーパーセットです。
ダニーステープル

7
SDKには、API、ツール、ドキュメント、サンプル、その他必要なすべてを含めることができます。
グレックマック

4
@gregmacその事実を伝えませんでしたか?

実際には、APIにはクラスが実装する必要があるインターフェイス定義が含まれるだけで、SDKにはほとんどの標準機能が既にプログラミングされた基本クラスが含まれる可能性が高いと言えますか?
ベン

85
  • API =アプリケーションプログラミングインターフェイス
  • SDK =ソフトウェア開発キット

したがって、実際の違いは、APIは「何らかのサービス」へのインターフェースにすぎないか、またはそれ以下であるのに対して、SDKは特定の目的のためのツール/コンポーネント/クラスのセットであるということです。実際、SDKはインターフェイスするAPIを提供します。ただし、たとえば、APIがWebサービスを通じて提供される場合、基礎となるコンポーネントを持たずにAPIを使用する場合があります。

APIの例:

SDKの例:


3
「基礎となるコンポーネントがなくてもAPIを使用できる」場合は+10。ところで、第2のリンクがダウンしている.......
Pacerier

24

API→文書化されたインターフェース(特定の時点で、特定の対象者向け。文書化は不完全であるか、一般大衆が利用できない可能性があり、これは意図的なものかもしれません第三者が使用するために。)

SDK→インターフェイスドキュメント(+サンプルとツール)


4
最後に、ドキュメントについて言及している人!
グレックマック

4
すべてのAPIが文書化されているわけではありません-インターフェースを検査/反映する必要がある場合があります。
JBRウィルキンソン14

「例」はAPIの一部ではありませんか?
Pacerier 14

1
@Pacerier ...絶対にありません。例はAPI ドキュメントの一部であるかもしれませんが、APIのままであっても、完全なインターフェイスは「ドキュメント化されていない」場合があります(つまり、ドキュメントは外部に秘密にされます:think ... idk、microsoft)。それはただのインターフェースです。関数、クラス、呼び出し、プロトコル、ファイル形式などがありますが、それ以上ではありません。
ZJR 14

17

「SDK」は「API」よりも広い意味で集合的です。

通常、プラットフォーム全体をカバーするSDKは1つだけです。たとえば、1つのMacOS X SDKと1つのiOS SDKがあり、それぞれに機能のさまざまな分野のAPIが含まれています。

「API」はもともと集合的な用語としても使用されており、今でも頻繁に使用されています(MAPI、WSAPIなど)が、通常は特定の技術に限定されています。「API」によって暗示される範囲は、長年にわたって縮小しているようです。人々は「Mac Toolbox API」または「Windows API」について話していました。どちらも明らかに多くの機能を含んでいました。最近では、単一のシステム機能を意味する「API」が使用されることは珍しくありません。オペレーティングシステムの新しいバージョンには、何百もの新しいAPIが含まれていると言えますが、その意味は何百もの新しいシステムコールです。

どちらの用語も、文脈がなければ非常に正確ではありません。


11

APIとは何ですか?

APIは、ソフトウェアプログラムが相互にやり取りできるようにするインターフェイスです。相互に通信するためにプログラムが従うべき一連のルールを定義します。通常、APIは、2つのアプリケーションが通信するためにルーチン、データ構造などを定義する方法を指定します。APIは、提供する機能が異なります。Java APIなどのプログラミング言語のライブラリ機能を提供する一般的なAPIがあります。Google Maps APIなどの特定の機能を提供するAPIもあります。特定のプログラミング言語でのみ使用できる言語依存のAPIもあります。さらに、いくつかのプログラミング言語で使用できる言語に依存しないAPIがあります。APIは、必要な機能またはデータのみを外部に公開し、アプリケーションの他の部分にはアクセスできないようにして、非常に慎重に実装する必要があります。APIの使用は、インターネットで非常に一般的になっています。一部の機能とデータをAPIを介してWebの外部に許可することは非常に一般的になっています。この機能を組み合わせて、ユーザーに改善された機能を提供できます。

SDKとは何ですか?

SDKは、特定のプラットフォームを対象としたソフトウェアアプリケーションの開発に使用できるツールのセットです。SDKには、プログラマがアプリケーションを開発するのに役立つツール、ライブラリ、ドキュメント、およびサンプルコードが含まれています。ほとんどのSDKはインターネットからダウンロードでき、多くのSDKは無料で提供されており、プログラマがSDKのプログラミング言語を使用することを奨励しています。広く使用されているSDKには、すべてのライブラリ、デバッグユーティリティなどを含むJava SDK(JDK)があります。これにより、Javaでのプログラムの作成がはるかに簡単になります。SDKを使用すると、相互に互換性のあるコンポーネント/ツールを探す必要がなく、すべてがインストールしやすい単一のパッケージに統合されているため、ソフトウェア開発者の生活が楽になります。

APIとSDKの違いは何ですか?

APIは、ソフトウェアプログラムが相互にやり取りできるようにするインターフェイスです。一方、SDKは、特定のプラットフォームを対象としたソフトウェアアプリケーションの開発に使用できるツールのセットです。SDKの最も単純なバージョンは、特定のプログラミング言語と対話するために必要ないくつかのファイルを含むAPIです。したがって、APIは、すべてのデバッグサポートなどのない単純なSDKとして見ることができます。


7

SDKはAPI(他のアプリとのインターフェイスを支援するファイル)以外の何物でもありませんが、通常はIDEのデバッグやその他の部分を支援する他のコードを含んでいます。

私はすべて頭字語ではありません。


8
早速、TLAを入手してください!
メイソンウィーラー

4
EIEIOの準備が整いました。
ジェフ

5

前述したことはすべて真実ですが、SDKについては、ソフトウェア開発キットは、開発プロセスに必要な(ほぼ)すべてのツールを備えた本当に完全なパッケージである(またはそうあるべきです)一方で、APIは「単なる」インターフェースであると付け加えたいと思いますと対話する。


1

私の2セント:APIという用語はよく間違って使用されると思います。

APIは、アプリケーションプログラミングインターフェイスです。

ちょっと厄介な名前ですが、それはインターフェースであることを意味します。そのため、アプリケーションに、他のアプリケーションとの通信を可能にするAPI が含まれている場合があります。また、ソフトウェアの一部(オブジェクト指向システムのクラスなど)は、システム内の他のモジュールと通信できるようにするAPIを提供する場合があります。

ただし、多くの場合、APIという用語は「ライブラリ」の同義語として使用されます。私はそれが言葉の正しい使い方だとは思わない。ライブラリの一部は、コードが使用できるようにするためのAPIですが、ライブラリ APIではありません

また、SDKは一種のライブラリであるため、混乱が生じる可能性があります。


1
同意する。おそらく「間違っている」と言うのはもうやめましょう。この船は航海し、「API」の使用が変更されました。しかし、私は「ライブラリ」が人々が「API」と呼んでいるもののより良い言葉であることにしばしば同意します
ハリーウッド

0

他の多くの回答は、SDKがツールであると説明していますが、直接出てくるものはなく、APIは仕様であると述べています。

コンポーネントXのAPIは、Xと対話する他のコンポーネントを作成するために必要なすべての情報です。コンポーネントXのSDKには、そのコンポーネントを簡単に作成できるライブラリルーチンが含まれている場合がありますが、 API:それらは単にAPIの実施形態です。


これは単にあなたの意見ですか、それとも何らかの形でバックアップできますか?
-gnat

「ライブラリはルールのこのセットの実際の実装である一方、APIは、予想される動作を記述し、規定」en.wikipedia.org/wiki/...
ソロモンが遅い

私の読書によると、これはあなたがしようとしている点に関係していません:「APIは仕様である」
-gnat

-3

このように比較したいと思います。

Microsoftツールを使用する開発者の場合:

API = Microsoft.Net Framework Vs SDK = Visual Studio

Javaを使用する開発者の場合:

API = Java RunTime Vs SDK = Development Kit(JDK)を提供するツール

SDKは必ず対応するAPIに依存する必要があると思います-APIのないSDKはありません。


Visual Studioに関して言えば、1つまたは複数のSDKやAPIへのアクセスを提供できるIDEであると思います。
キース

1
Visual StudioはSDKではありませんが、VSを使用して開発する可能性が高いため、一部のエディションにはWindowsまたは.NET SDKが含まれています。
JBRウィルキンソン14

-3

ここに簡単な例えがあります... APIはあなたが使える言葉のようなもので、SDKはあなたのためにまとめられた文章のようなものです。


-4

アプリケーションは、他のアプリケーションとのインターフェイスによって開発および強化されるため、他のアプリケーション(ロジック)がコアロジックとインターフェイスできるようにする必要があります-これは、定義済みのAPIセットを介して行われます。SDKは、APIを使用して他のアプリケーションと対話するコードを作成/作成するために使用されます。


1
ポイントが作られ、前11件の答えで説明した上で、これはかなりのものを提供していないようだ
ブヨ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.