SDKとAPIは、どちらも他社サービスで提供される機能を自社システムやアプリで利用する際に使われます。
どちらもアプリケーション同士を連携させるために利用されます。どちらも同じようなツールだと思われがちですが、両者は基本的に異なるものです。
この記事では、SDKとAPIの基本概要と、それぞれの違いを詳しく解説します。
SDKとは
SDKは正式には「Software Development Kit」といい、日本語に直訳すると「ソフトウェア開発キット」となります。
SDKは、Web上のシステムやスマホアプリなどを開発する際、機能的で汎用性のあるプログラム一式をパッケージ化したもので、「開発キット」や「ツールセット」など、さまざまな言葉で形容されています。
パッケージ内容はプログラム、サンプルコード、API、エミュレーター、解説資料などが一般的です。
SDKが利用される背景
アプリやWebシステムを動かすには、多くのプログラムが必要となります。
ユーザーから見たら大したことのない、ちょっとしたアプリの挙動でも、その裏では何十、何百というプログラムが処理されています。
それらのプログラムをすべてゼロから設計してアプリを作り上げるには、膨大な時間と手間、そして費用が必要となります。
しかし、アプリに必要とされる機能のうち、一定数は他のアプリにも流用できる機能であるケースがあります。
例えば、ネットショッピングができるアプリであれば、商品の検索、並び替え、決済といった機能はどんなショッピングアプリにも必ずついています。
多くのアプリで必ず必要になる機能なら、その機能を実現するプログラム一式をパッケージ化しておけば、似たようなアプリを作る際に手間や時間を大幅に減らすことができます。
決済なら決済機能に特化したプログラムパッケージ(SDK)があれば、新たなショッピングアプリを作る際に決済システムをゼロから作り上げる必要がなくなります。
SDKの種類
SDKには、特定の機能を提供するものや開発環境の構築をするものなど、さまざまな種類があり、「SDKを組み合わせるだけでアプリが作れる」といわれるほどです。
数が多すぎて全体を把握するのは不可能ですが、その中でも知名度の高いものをいくつか紹介します。
Android SDK
Android OSで動くアプリを開発するために必要となるプログラムやライブラリなどがセットになっています。そのため、Androidの細かい仕組みを知らない技術者でもAndroidアプリの開発が可能です。無料で利用できます。
iOS SDK
iPhoneやiPadなどiOSで動くアプリを開発するための開発キットです。開発にはiOS SDKの他にMacのパソコンも必要になってきます。iOS SDK自体は無料で入手できるものの、実際にアプリを動かすには年会費がかかるiOS Developer Programへ加入しなければなりません。
AppsFlyer
アプリのユーザー獲得につながったアクセス経路などの分析が行えるSDKです。世界シェアは65%で、無料コースと有料コースが用意されています。
Stripe モバイル SDK
数百万社が利用しているStripe社が提供する決済SDKで、iOS版とAndroid版があります。決済機能に必要なSDKです。
APIとは
APIとは、「Application Programming Interface(アプリケーション・プログラミング・インタフェース)」の略称で、異なるシステム間でのデータのやり取りを可能にする仕組みのことです。
元々はWindowsなどのOSが提供していた仕組みであり、OSの中で異なるソフトウェア間のデータのやり取りをする際に利用されていました。
今もこのタイプのAPIは広く利用されていますが、それ以上に利用が広まっているのがWeb APIです。
異なるシステム間でデータをやり取りするという点は同じですが、Web APIはデータのやり取りをネットを介して行います。
Web APIの例
Web APIは公開元のヘルプやネットの情報だけで利用できることも多く、ブログなどでもAPIを使ったコンテンツ作りをしているケースをよく見かけます。
利用者数という点ではSDKの比ではないでしょう。以下では、ポピュラーなWeb APIについて、代表的なものをいくつか紹介します。
Amazon Product Advertising API
Amazonが公開しているAPIの一つで、Amazonで販売されている膨大な商品情報を扱うことができます。
また、Amazonアソシエイトというアフィリエイトシステムと紐づいているので、検索キーワードに連動させた商品情報を自サイトに取り込むことも可能になります。
登場した当初、プログラミングスキルがある人なら簡単にアフィリエイトサイトを構築でき、しかも報酬を得る人が続出したため、多くの人がAPIを認知するようになりました。
楽天API
楽天市場、楽天トラベル、楽天レシピなどいろいろなサービスに対応したAPIが用意されています。
AmazonのAPI同様にアフィリエイトと紐づけて利用するケースが多いです。
Twitter API
Twitterのツイートやリツイート、いいねなどを外部アプリから行ったり、Twitterのデータを取得してトレンド分析したりできるようになります。
Twitterが単純明快なサービスであることからAPIを利用したサービスも多く生まれ、結果的にTwitterの普及につながったといわれています。
LNE Messaging API
LINEが提供するAPIの一つです。
自動応答タイプのチャットボットが作れるため、多くの人がマーケティング目的で利用しています。
Google API
Googleが提供するAPIで、Googleカレンダー、Googleマップ、Googleスプレッドシートなど、さまざまなサービスに対応した多種多様なAPIが用意されています。
スマホアプリでも大活躍
APIは、スマホアプリの開発には必須の技術になっています。なぜなら、多くのスマホアプリはメインのプログラムを外部サーバーに置いているからです。
ユーザーは、アプリをダウンロードすると自分のスマホにアプリのすべてのプログラムが保存されていると思いがちですが、実際はスマホにダウンロードされるのはアプリを構成するプログラムの一部だけです。
利用する際には、アプリが外部サーバーにあるプログラムと通信をして外部サーバーがメインの処理をします。
大まかに言うと以下のような感じでやり取りをしています。
- ユーザーがスマホアプリを操作
- アプリが外部サーバーへ操作内容を送信
- 外部サーバーが操作内容を処理
- 外部サーバーが処理済データをアプリに返信
- スマホアプリが結果を表示
このように、多くのスマホアプリはネットを介して外部サーバーとデータのやり取りを頻繁に行っており、そのやりとりの際にはWeb APIを利用しています。
SDKとAPIの違い
SDKとAPIは、どちらも外部の機能やデータを利用するという点では同じですが、SDKは機能を実現するプログラムを含んだ開発キットであり、APIは外部データを引っ張ってくるための仕組みです。
基本的には、SDKは自社サイドのシステムやアプリの中に組み込まれるので、SDKが稼働するのはアプリ内か自社サーバー内となります。
一方、APIはアプリなどからの処理要求を外部サーバーに伝えたり、外部サーバーから処理済みデータを受け取ったりする際の仕組みなので、要求に応じた処理をするべく稼働するのは外部サーバーです。
このように考えると、SDKは何かを処理するもの、APIはデータの中継点ともいえます。
SDKが外部サーバーの機能やデータを利用することも珍しくありませんが、これはSDKのパッケージの中にAPIが含まれてるためです。
外部サーバーに対して全くやり取りしないアプリはそれほど多く存在しないので、SDKの中にAPIを組み込んでしまっていることもよくあります。
SDKを活用するメリット・デメリット
ここからは、SDKを活用する場合のメリットとデメリットを説明します。
SDKを活用するメリット
SDKを活用する最大のメリットは、開発コストを抑えられる点にあります。
既述の通り、SDKには特定の機能が使えるようになるプログラムやサンプルコード、仕様書などがひとまとめにしてパッケージ化されています。
ゼロから開発するとなると、仕様を検討するところから始めなくてはなりませんが、SDKを利用すれば、後付けでもわずかな工程で実装することができます。
工程がわずかであれば時間もかかりませんし、技術者も少なくて済みます。
また、一つのアプリやシステムにはいろいろな機能を実装させることになりますが、それらの機能すべてに精通している技術者を集めるのは容易ではありません。
SDKを利用すれば、特定の機能に精通した技術者が、いろいろなシーンを想定しつつも無駄をそぎ落として作り込んだプログラムを利用できます。
SDKを活用するデメリット
SDKを利用する最大のデメリットは、自社ではどうしようもない不具合に振り回されるリスクがあることです。
例えば、バグがあるような場合、SDKは完成品としてパッケージ化されているので、プログラムの中にバグがあったとしてもそれを修正するのは簡単ではありません。
一か所をいじれば他の箇所で不具合が出る、というようなことが起こりえますし、そもそも、SDKもメインの処理は外部サーバーで行う設計になっているケースもあります。
修正にはSDKの開発元に連絡して対応してもらうのが一番ですが、そうなると他社のペースで修正が行われることになり、開発計画に重大な支障が生じる可能性があります。
SDKのアップデートが入るタイミングでバグが修正されることもあるので、アップデート情報をマメにチェックする必要も出てきます。
また、SDKのプログラムと自社プログラムの相性が悪くて自社プログラムにエラーが出る、というようなケースもあります。
SDKのバグであれば開発元に修正を依頼するという選択肢がありますが、SDKとの接続が原因で自社プログラムにエラーが出る場合はこちらで対応しなければなりません。
まとめ
SDKは機能を実現するプログラムを含んだ開発キットであり、APIは外部データを引っ張ってくるための仕組みなので、両者は全く別物です。
しかし、SDK自体が機能を果たすためにAPIを使って外部サーバーに処理要求を出すこともあるので、両者は混同されやすい状況にあるのかもしれません。
また、SDKはプログラミングをする環境がないと使うことはありませんが、APIの方はブログを運営するくらいの知識があれば積極的に使うことも可能です。
探せば意外なほどあちこちの有名なWebサービスでAPIが公開されているため、興味がある人は直に触ってみるとより違いが分かるでしょう。
『FourM(フォーエム)』では、マーケター必見の最新トレンド情報を無料で読めるニュースレターを配信しています。
移り変わりの激しいIT業界を広くカバーしてキャッチアップしていきますので、是非一度、購読を始めてみてください。