web-dev-qa-db-ja.com

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

[〜#〜] api [〜#〜] と呼ばれるもの [〜#〜] sdk [〜#〜] .

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

では、SDKとAPIの意味上の違いは何ですか?

184
KeithS

「すべてのSDKはAPIを含んでいる/ APIを含んでいるが、すべてのAPIがSDKであるわけではない」という線に沿っていると思います。

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

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

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

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

本当の違いは、SDKは特定の目的のためのツール/コンポーネント/クラスのセットであるのに対し、APIは「一部のサービス」へのインターフェースとほぼ同じです。実際、SDKは、インターフェイスとなるAPIを提供します。ただし、たとえば、APIがWebサービスを介して提供される場合など、基盤となるコンポーネントがなくてもAPIを使用できます。

APIの例:

SDKの例:

88
back2dos

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

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

24
ZJR

「SDK」は「API」よりも大きな意味で集合的です。

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

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

どちらの用語も、いくつかの文脈なしでは正確ではありません。

17
Caleb

APIとは?

APIは、ソフトウェアプログラムが相互にやり取りできるようにするインターフェイスです。これは、プログラムが相互に通信するために従うべき一連のルールを定義します。 APIは通常、2つのアプリケーションが通信するために、ルーチン、データ構造などをどのように定義する必要があるかを指定します。 APIは、それらが提供する機能が異なります。 Java APIなどのプログラミング言語のライブラリ機能を提供する一般的なAPIがあります。GoogleMaps 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と見なすことができます。

12
chiranjib

SDKは、API(別のアプリとのインターフェイスに役立つファイル)にすぎませんが、通常、IDEのデバッグやその他の部分に役立つ他のコードが含まれています。

私はすべて頭字語がなくなった。

7
JeffO

前述の内容はすべて真実ですが、SDKについては、ソフトウェア開発キットが(ほぼ)開発プロセスに必要なすべてのツールを備えた本当に完全なパッケージである(またはそうでなければならない)のですが、APIはインターフェイスにすぎません対話する。

5
Scorchio

他の多くの答えは、SDKがtoolingであることを説明していますが、それらのどれも直接出てくることはなく、APIはspecificationであると述べています。

コンポーネントXのAPIは、Xとやり取りする他のコンポーネントを作成するために必要なすべての情報です。コンポーネントXのSDKには、ライブラリルーチンが含まれている可能性があり、これにより簡単に記述できます。コンポーネントですが、ライブラリはAPIではありません。これらは単なるAPIの実施形態です。

1
Solomon Slow

私の2セント:APIという用語はしばしば誤って使用されていると思います。

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

ちょっと厄介な名前ですが、それはinterfaceであることを意味します。したがって、アプリケーションは、他のアプリケーションがそれと通信できるようにするAPIを持っているかもしれません。また、ソフトウェア(OOシステム内のクラスなど)は、システム内の他のモジュールがそれと通信できるようにするAPIを提供する場合があります。

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

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

1
Aviv Cohn