SDKとAPIの関係とは?
ソフトウェア開発において、システムの規模が拡大するにつれて、複雑なシステムをより小さな構成要素に分解することが不可欠になります。その中で、プログラミングインターフェースの設計が特に重要です。インターフェース設計の最初のタスクは、ソフトウェアシステムの責任を適切に割り当てることです。優れたインターフェース設計は、システム内の各部分間の依存関係を減らし、モジュールの凝集性を高め、同時にモジュール間の結合度を下げ、システムの保守性と拡張性を向上させます。APIはインターフェースの一つの形態として、プログラム間の相互作用において重要な役割を果たしており、SDKとAPIの間には密接な関係があります。
01 API
(1) APIの概念
APIは、「アプリケーションプログラミングインターフェース」の略で、2つの異なるものを「インターフェース」として接続するための定義済みの関数のセットです。これにより、アプリケーションと開発者は、ソースコードに触れたり、内部動作の詳細は理解しなくても、特定のソフトウェアまたはハードウェアのルーチンにアクセスできるようになります。
実際には、APIは他の人が事前に作成した、特定の機能を実行できる関数です。提供されたインターフェースに従ってそのメソッドを呼び出し、指定されたパラメータを渡すだけで、その関数がこれらの機能を実行してくれます。

「インターフェース」という概念から言えば、コンピュータの分野では、これは2つの異なるエンティティ間の相互作用の場所を指し、2つの完全に異なるシステムでも、2つのプログラムでも構いません。したがって、インターフェースの「I」は次のように理解できます。この基盤の上に、人とプログラムの相互作用の場所はUI(ユーザーインターフェース)と呼ばれ、人が入力するすべての形式(マウス、キーボード、タッチスクリーン、音声入力など)が含まれます。プログラム間の相互作用はAPIと呼ばれ、人間以外の相互作用はすべてAPIを介して行われ、いわゆる相互作用の本質はデータ転送と機能のトリガーです。
(2) APIの分類
APIは、システムレベルAPI(Windows、Linux、Unixなど)と、オペレーティングシステムレベル以外のカスタムAPIに分類されます。効果的なコードカプセル化パターンとして、Microsoft WindowsのAPI開発モデルは多くの商用アプリケーション開発企業によって採用され、特定の商用アプリケーションシステムのAPI関数を公開して、サードパーティによる機能拡張を容易にしています。たとえば、Google、Apple Computer、およびNokiaなどの携帯電話で開発されたAPIなどがあります。
APIは、オープンAPIとプライベートAPIに分類されます。その名の通り、オープンAPIは誰でも利用できるインターフェースであり、誰でも呼び出してその背後にあるデータにアクセスできます。場合によっては、企業はAPIをパブリックオープンシステムとして公開し、企業が独自のシステムインターフェース標準を定義し、システム統合、カスタマイズ、およびプログラムアプリケーションなどの操作を実行する必要がある場合、すべてのメンバーがこのインターフェース標準を通じてソースコードを呼び出すことができます。このインターフェース標準はオープンAPIと呼ばれます。プライベートAPIは外部に公開されていないインターフェースです。
02 SDK
(1) SDKの概念
SDKは、「ソフトウェア開発キット」の略で、通常はソフトウェアエンジニアが特定のソフトウェアパッケージ、ソフトウェアフレームワーク、ハードウェアプラットフォーム、オペレーティングシステムなどのアプリケーションソフトウェアを構築するために使用する開発ツールのコレクションです。平たく言うと、SDKはサードパーティのプロバイダーが提供する、ソフトウェア製品の特定機能を実装するためのツールキットです。
通常、SDKは専門的な企業によって提供される専門的なサービスコレクションであり、たとえば、Android開発ツールやハードウェアベースの開発サービスなどが提供されます。また、特定のソフトウェア機能向けのSDKもあり、たとえば、プッシュ技術、画像認識技術、モバイル決済技術、音声認識分析技術などがあります。インターネットのオープン化という大勢の流れの中で、一部の機能的なSDKは製品として運営されるようになっています。
開発者は、製品のすべての機能を開発する必要がなくなり、適切な安定したSDKサービスを選択し、短時間で製品に特定の機能を統合できます。
(2) SDKとAPIの違い
SDKは開発統合ツール環境に相当し、APIはデータインターフェースです。SDK環境でAPIデータを呼び出します。
実際には、SDKにはAPIの定義が含まれており、APIは機能の一種、インターフェースの仕様を定義します。SDKは、この機能、この仕様を含むことができます。ただし、SDKにはAPIとその実装だけでなく、多くの他の補助機能も含まれています。
SDKにはAPIを使用するために必要な資料が含まれているため、APIのみを使用してWindowsアプリケーションを記述する開発方法も「SDKプログラミング」と呼ばれます。





