web-dev-qa-db-ja.com

APIとSDKの違い

APIとSDKの違いを開発者以外に説明しようとしています。確かに商用の指紋認証ソフトウェアベンダーがSDKを提供しないのに、SDKを使用した可能性が高い理由を説明する必要があります。

デバイスベンダーとソフトウェアベンダーの両方が、明確に定義されたAPIを公開できます。このAPIにより、他のソフトウェアプログラムがベンダーのソフトウェアコンポーネントまたはハードウェアデバイスと相互運用(書き込み)できるようになります。

誰かがこれを明確に説明するより多くのアイデアを持っているなら、私は提案をとても感謝します。 目標は、開発者の専門用語を知らない非プログラマーに概念を説明することです

具体的には、指紋センサーと登録/検証を行うソフトウェアのコンテキストで、以下に説明を試みました。

私が指紋デバイス/センサーのメーカーであり、ソフトウェアを書くビジネスではない場合、製品をより良く販売する方法は次のとおりです。

  1. さまざまなオペレーティングシステムにデバイスドライバーをインストールできることを確認します
  2. ソフトウェア開発者がデバイスと「対話」または使用するためのプログラムを作成する(登録、検証など)APIを定義および提供する
  3. ソフトウェア開発者が私のデバイスで動作するプログラムを簡単かつ迅速に作成できるように、SDK(APIの一歩先)を開発および提供します。 SDKは、ヘルパーコードライブラリ、参照アプリケーション、ドキュメントなどを提供する場合があります。
176
Sliceoftime

ケーキ:

  • aPIはインターフェイスです。それは電話システムの仕様や家の電気配線のようなものです。インターフェースする方法を知っている限り、何でも使用できます。既製のソフトウェアを購入して特定のAPIを使用することもできます。これは、自宅のAC配線に接続する市販の電話機器やデバイスを購入できるのと同じです。
  • sDKは実装ツールです。これは、電話システムや電気配線に接続するためのカスタムビルドを可能にするキットのようなものです。

*何でもAPIを使用できます。一部のAPIには、特定のインスタンスでのAPIの完全な使用を禁止するライセンスキーや認証などを必要とするセキュリティ条項がありますが、これは特定の認証/承認手順が失敗するためです。適切な資格情報を提示するソフトウェア(必要な場合)は、APIを使用できます。

**技術的に、APIが十分に文書化されている場合、APIを使用するための独自のソフトウェアを構築するためにSDKは必要ありません。ただし、一般的にSDKを使用すると、プロセスがずっと簡単になります。

217
Jason S

APIは、子供がさまざまな形のブロックを結合して考えられる何かを構築するために遊ぶパズルゲームのビルディングブロックのようなものです。

一方、SDKは、事前に整形されたビルディングブロックではなく、すべての開発ツールが利用できる適切なワークショップです。ワークショップには実際のツールがあり、ブロックに限定されないため、独自のブロックを作成したり、ブロックなしで何かを作成したりできます。

SDKまたはAPIなしのコーディングは、ワークショップなしですべてをゼロから作成するようなものです-独自のツールを作成する必要があります

50
Abdul Rehman

会社Cが製品Pを提供し、Pが何らかの方法でソフトウェアに関係しているとします。 Cは、Pのソフトウェアシステムを駆動するソフトウェア開発者にライブラリ/ライブラリのセットを提供できます。

そのライブラリ/ライブラリはSDKです。 Pのシステムの一部です。Pのソフトウェアを変更、構成、修正、改善などするために使用するソフトウェア開発者向けのキットです。

CがPの機能を他の企業/システムに提供したい場合、APIを使用して提供します。

これはPへのインターフェースです。外部システムがPと対話する方法。

実装の観点から考えると、それらは非常に似ているように見えます。特に今では、インターネットは1つの大きな分散オペレーティングシステムのようになっています。

しかし、意図的に、それらは実際には非常に明確です。

SDKで何かを構築し、APIで何かを使用または消費します。

25
Jack Widman

Application Programming Interfaceは、OS X、Android、プロジェクトなどのターゲットプラットフォーム/ソフトウェアと対話する方法を指定する一連のルーチン/データ構造/クラスです。管理アプリケーション、仮想化ソフトウェアなど。

Software Development Kitは、開発者が仕事を簡単にするAPI/sのラッパーです。

たとえば、Android SDKを使用すると、開発者はAndroidプラットフォーム全体と対話できますが、プラットフォーム自体はAPIを介して通信する複合ソフトウェアコンポーネントによって構築されます。

また、特定のプログラミング言語での開発を容易にするためにSDKが作成される場合もあります。たとえば、 Selenium Webドライバー (Javaで構築)は任意のブラウザーをネイティブに駆動するAPIを提供しますが、 capybara はRubyを容易にするSDKと見なすことができますSelenium Webドライバーを使用する開発者。ただし、Selenium Webドライバーは、さまざまなネイティブブラウザードライバーとの対話を1つのパッケージに結合するため、それ自体がSDKでもあります。

10
user3137634

これらの2つの用語の公式の定義があるかどうかはわかりません。 APIは、ドキュメント化されたプログラム可能なライブラリのセットであり、ヘッダーやIDLファイルなどのソースをサポートしていると理解しています。通常、SDKにはAPIが含まれていますが、多くの場合、コンパイラ、ツール、およびサンプルをミックスに追加します。

9
jlew

APIは、「鉄道線路は4フィート離れており、金属製のバーは1インチ幅です」などのインターフェイス、何かを行う方法に関する仕様です。どこに行きたいかを追跡します。 APIは、コードの作成方法に関する情報に過ぎず、何も行いません。

SDKは、仕様についてすでに心配している実際のツールのパッケージです。 「これは列車、石炭、そしてメンテナンスマンです。場所から場所へ行くためにそれを使用してください。」SDKを使用すれば、詳細について心配する必要はありません。 SDKは実際のコードであり、それ自体で何かをするために使用できますが、もちろん、列車は自発的に起動することはなく、列車を制御するために車掌を取得する必要があります。

SDKには独自のAPIもあります。 「電車に電力を供給したい場合は、石炭を入れてください」、「青いレバーを引いて電車を動かしてください。」、「電車がおかしくなり始めたら、保守員に電話してください」など。

7
Funny Geeks

API =利用可能な単語とその意味の辞書(およびそれらを結合するために必要な文法)

SDK = 2歳の赤ちゃん向けのワードプロセッシングシステム…アイデアから直接作成

数年後に学校に行き、あなたの言語の達人になることができますが、SDKを使用すると、意味のある文章をすぐに書くのに役立ちます(この例では、赤ちゃんとしてあなたが少なくともSDKの使用方法を習得するために、他の言語を学習します。)

3
sergio

どうでしょう...あなたの家にホームシアターシステムを設置したいようなものです。 APIを使用することは、すべてのワイヤ、ネジ、ビット、部品を取得するようなものです。可能性は無限にありますが(受け取るピースによってのみ制約されます)、時には圧倒されます。 SDKはキットを取得するようなものです。それでも組み立てる必要がありますが、ネジの箱というよりは、IKEAの本棚のカット済みの部品や説明書を入手するようなものです。

2
user1653667

API = Application Programming Interface SDK =ソフトウェア開発キット

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

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

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

APIの例:Java API、Google Maps API、Flash Player API

SDKの例:JDK、GWT、Flex SDK。

0
Rehmanali Momin

ライブラリの機能にアクセスするにはSDKを使用し、ライブラリを制御するにはAPIを使用します。

0
ixjf