コンピューター、アプリ、Web サイト間の対話には、メニューとグラフィック要素を備えた画面、キーボード、マウスなどのユーザー インターフェイス (UI) コンポーネントが必要です。一方、ソフトウェアまたはその要素は、相互に通信するためにグラフィカル ユーザー インターフェイスを必要としません。
技術雑誌やブログを読んだことがあれば、おそらく API という略語を見たことがあるでしょう。
これは何なのでしょうか?
この記事では、API とは何か、どのように機能するか、そしてそもそも、このインターフェースに注意する必要がある理由は何かについて説明します。
目次
APIとは何か?
APIとは、アプリケーション・プログラミング・インターフェース(Application Programming Interface)の頭文字であり、2つのアプリケーションが互いに会話できるようにするソフトウェアの仲介役です。このインターフェースで簡単に企業内・企業間でデータを抽出・共有できます。
APIは、ライドシェアのアプリを使ったり、モバイル決済をしたり、携帯電話からサーモスタットの温度を変えたりするたびにAPIが使われているのです。
アプリを使うと、サーバーにデータが送信されます。サーバーはそのデータを取得し、解釈し、必要なアクションを実行し、携帯電話に送り返します。アプリはそのデータを解釈し、求めている情報を読みやすい形で表示します。
特徴
「API」という用語は、一般的にアプリケーションへの接続インターフェースについて表現するために使われてきました。しかし、時間と共に最新のAPIはユニークな特徴を持つようになり、本当に技術空間を変革してきました。第一に、最新版は特定の基準(通常はHTTPとREST)に準拠しています。このため、開発者には使いやすく、自己記述型で、利用しやすいことが広く知られています。
さらに現在、APIはコードというよりも製品のように扱われています。特定の利用者(例えばモバイル開発者)向けに設計され、ユーザーがメンテナンスやライフサイクルを明確に予測できるように文書化およびバージョン管理されています。近年は標準化が進んでいるため、そのパフォーマンスとスケールの両方を監視および管理することができます。そして、最も重要なことは、セキュリティとガバナンスの規定がより強化されている点です。APIの実際の機能について天気予報アプリを例として挙げると、自分の携帯電話のデータがサーバーに完全に公開されることはないということです。
そして最後に、製品化された他のソフトウェアと同じように、最新版には独自のソフトウェア開発ライフサイクル(SDLC)― つまりモックアップから設計、テスト、構築、管理、廃止まで― があります。そのプロセスにおいて、APIは消費やバージョン管理のために十分に文書化されています。
仕組み
APIの仕組みを理解するには、一般的な例であるサードパーティの決済処理を見てみると良いでしょう。ユーザーがオンラインショップで商品を購入すると、「PayPalで支払う」または他の種類のサードパーティシステムを選択するよう促されることがあります。
購入者が決済ボタンをクリックすると、APIが情報を取得するために呼び出しを行います。これはリクエストと言われます。このリクエストによってアプリケーションから統一資源識別子(URI)を介してWebサーバーで処理されます。リクエストには、request.verbやヘッダー、時にはリクエストボディも含まれます。
商品のWebページから有効なリクエストを受信した後、APIは外部プログラムまたはWebサーバ(この場合は第三者支払システム)へ呼び出しを行います。
サーバーは、要求された情報を含むレスポンスを送信します。
APIは、最初の要求アプリケーション(ここでは製品のWebサイト)にデータを転送します。
データ転送は使用するWebサービスによって異なりますが、リクエストとレスポンスはすべてAPIを通じて行われます。これはユーザーインターフェース上では見えません。つまり、APIはコンピューターやアプリケーション内でデータを交換しており、ユーザーにはシームレスな接続として見えるのです。
メリット
APIによって、新しいアプリケーションやサービスの設計や開発、既存のアプリケーションやサービスの統合や管理が簡素化されます。それにより、開発者や組織全体にとって、他にも大きなメリットがもたらされます。
コラボレーションの向上
平均的な企業では、1,200近くのクラウドアプリケーションを使用しており(リンク先はibm.com外)、その多くは分離されています。
APIはそれらを統合し、プラットフォームやアプリが互いにシームレスに通信できるようにします。この統合によって、企業はワークフローを自動化し、職場でのコラボレーションを改善できます。この機能がなければ、多くの企業は接続性を欠き、生産性とパフォーマンスを低下させる情報のサイロ化が起るでしょう。
イノベーションの加速
APIによって柔軟性が得られることで、企業は新たなビジネスパートナーとのコネクションを築き、既存市場に新たなサービスを提供し、最終的には、巨額の収益を生み出しデジタルトランスフォーメーションを推進する新たな市場に参入できます。
例えば、Stripe社の出発点は、わずか7行のコードからなるAPIでした。同社はその後、世界の大企業の多くと提携し、ローンやコーポレートカードの提供など多角化を進め、最近では360億米ドル(約5兆3,000億円)の評価を受けています(リンク先はibm.com外)。
データ収益化
多くの企業は、少なくとも最初は無料でAPIを提供する試みを多く遂行します。
自社ブランドの周りに開発者というオーディエンスを作り、潜在的なビジネスパートナーとの関係を構築することができるからです。APIによって貴重なデジタル資産へのアクセスが許可される場合、企業はアクセスを販売することで収益化につなげます。これはAPIエコノミーと呼ばれています。
AccuWeather(リンク先はibm.com外)が幅広いAPIパッケージの販売を目的にセルフサービスの開発者ポータルを立ち上げたとき、わずか10カ月で24,000人の開発者が集まりました。その結果、11,000ものAPIキーが販売され、その過程で活発なコミュニティが作られました。
システム・セキュリティ
APIは、リクエストを行うアプリケーションとレスポンスを行うサービスのインフラを分離し、両者が通信する際にセキュリティ層を提供します。例えば、APIコールは通常、認証クレデンシャルを必要とします。HTTPヘッダーやクッキー、クエリ文字列はデータ交換中に追加のセキュリティを提供し、APIゲートウェイはさらにセキュリティ脅威を最小限にするためにアクセスを制御できます。
エンドユーザーのセキュリティとプライバシー
APIがネットワーク内の保護を強化するのと同様に、APIは個人ユーザーにもさらなる保護層を提供できます。Webサイトが位置情報APIを介して提供されるユーザー位置情報を要求するとき、ユーザーはこの要求を許可するか拒否するかを決定できます。
多くのWebブラウザやiOSのようなモバイルオペレーティングシステムは、APIがアプリケーションやそのデータへのアクセスを要求する際に、パーミッション構造を組み込んでいます。アプリがAPIを通じてファイルにアクセスしなければならない場合、WindowsやMac、Linuxなどのファイルシステムは、そのアクセスに対してパーミッションを使用します。
種類
現在ほとんどのAPIは、インターネット上でアプリケーションのデータと機能を公開するWeb APIです。Web APIの主な4つの種類を紹介します。
オープンAPIは、HTTPプロトコルでアクセスできるオープンソースのアプリケーション・プログラミング・インターフェースです。パブリックAPIとも呼ばれ、APIエンドポイントやリクエストおよびレスポンス形式を定義しています。
パートナーAPIは、戦略的ビジネスパートナーを接続します。通常、開発者は公開API開発者ポータルを通じてセルフサービスモードでこのAPIにアクセスします。それでも、開発者オンボーディングプロセスを完了し、パートナーAPIにアクセスするためのログイン認証情報を取得する必要があります。
内部APIは、外部ユーザーから隠された状態にあります。これらのプライベートAPIは社外のユーザーは利用できず、代わりに社内の異なる開発チーム間の生産性とコミュニケーションを向上させることを目的としています。
コンポジットAPIは、複数のデータAPIやサービスAPIを組み合わせたものです。これにより、プログラマーは1回の呼び出しで複数のエンドポイントにアクセスできるようになります。コンポジットAPIは、1つのタスクの実行に複数のソースからの情報が必要になる可能性があるマイクロサービスアーキテクチャにおいて有用です。
一般的な動作例
APIを利用することで、企業はセキュリティと制御を維持しながら自社のリソースへのアクセスを開放できるため、APIは現代のビジネスや個人向けアプリケーションの貴重な一部となっています。ここでは、ユーザーがほぼ毎日目にするAPIの一般的な使用例を紹介します。
ユニバーサルログイン
よく使われるAPIの例として、FacebookやTwitter、Googleプロフィールのログイン情報を使ってWebサイトにログインできる機能があります。この便利な機能により、どのようなWebサイトでも人気が高いサービスのAPIを利用した素早い認証が可能になり、Webアプリケーションや新規会員登録のたびに新しいプロフィールを設定する時間と手間を省くことができます。
IoT(Internet of Things:モノのインターネット)
「スマートデバイス」は、APIを通じてインターネット対応のタッチスクリーンやデータ収集などの追加機能を提供します。例えば、スマート冷蔵庫はレシピアプリケーションに接続したり、テキストメッセージで携帯電話にメモを取ったり送ったりできます。内蔵カメラはさまざまなアプリケーションに接続し、ユーザーはどこからでも冷蔵庫の中身を見ることができます。
旅行予約の比較
旅行予約サイトは何千ものフライトを集約し、あらゆる日付と目的地で最も低価格なオプションを紹介しています。
このサービスが可能になるのは、APIがWebブラウザや旅行予約会社独自のアプリケーションを介して、ホテルや航空会社の利用状況に関する最新情報へのアクセスをアプリケーションのユーザーに提供しているからです。APIがデータとリクエストを自動的にやり取りすることで、利用可能なフライトや宿泊施設の確認にかかる時間と労力が劇的に削減されます。
地図アプリ
地図アプリは、静的またはインタラクティブな地図を表示するコアAPIのみでなく、さまざまなAPIや機能を利用することで、道順や制限速度、興味のあるポイント、交通警告などをユーザーに知らせています。ユーザーは、移動ルートを表示したり、配達車両のような移動中のアイテムを追跡したりするときにAPIと通信します。
Twitter
それぞれのツイートには、発言主やユニークID、メッセージ、投稿時のタイムスタンプ、位置情報メタデータなど、記述的なコア属性が含まれています。Twitterでは公開ツイートと返信のコア属性を開発者が利用できるようにしてあり、開発者は同社のAPIを通じて他のWebページにツイートを投稿することができます。
SaaSアプリケーション
APIは、SaaS(Software-as-a-Service)製品の成長に不可欠な要素です。CRM(顧客関係管理ツール)のようなプラットフォームには多くのAPIが組み込まれており、企業はメッセージング、ソーシャルメディア、電子メールアプリなど、すでに使用しているアプリケーションと統合することができます。
これにより、営業やマーケティングタスクのためにアプリケーションを切り替える時間が大幅に削減されます。また、異なるアプリケーションを使用している部門間に存在する可能性があるデータサイロの削減または防止にも役立ちます。
APIプロトコル
Web APIの使用が増えるにつれて特定のプロトコルが開発され、使用されるデータ形式、コマンド、および構文を作成するための定義済みのルール(つまりAPIの仕様)がユーザーに提供されました。実際に、これらのAPIプロトコルによって標準化した情報交換が促進されています。
SOAP(Simple Object Access Protocol):SOAPはXMLで構築されており、エンドポイントがSMTPやHTTPを通じてデータを送受信できるようにしています。SOAP APIは、異なる環境で動作している、または異なる言語で記述されているアプリやソフトウェアコンポーネント間の情報共有を容易にします。
XML-RPC(XML-Remote Procedure Call):XML-RPCプロトコルは、特定のXMLフォーマットに依存してデータを転送します。XML-RPCはSOAPよりも古いのですが、よりシンプルであり、最小限の帯域幅しか使わないため、比較的軽量です。
JSON-RPC:XML-RPCと同様、JSON-RPCはリモートプロシージャコールですが、データ転送にはXMLの代わりにJSON(JavaScript Object Notation)を使用します。
REST(Representational State Transfer):RESTは、Web APIアーキテクチャの原則をセットにしたものです。REST API(RESTful APIとも呼ばれる)は、特定のRESTアーキテクチャ制約に準拠するAPIです。SOAPプロトコルでRESTful APIを構築できますが、この2つの標準は通常、競合する仕様とみなされています。
APIについてのご質問はカオピーズにおまかせください
従来、APIはJavaScriptのような低水準プログラミング言語で作成されたアプリケーションに接続されたインターフェースを指していました。
しかし、アプリケーションが開発されるにつれ、事情は変化しています。最新のAPIはRESTの原則とJSONフォーマットに準拠しています。これらは一般的にHTTP向けに構築されており、Java、Ruby、Python、その他多くの言語で記述されたアプリケーションから容易にアクセスでき、広く理解され、開発者にわかりやすいインターフェースを実現しています。
もし貴社がソフトウェア開発を希望しており、APIに関するアドバイスが必要ですが予算が限られているためオフショア開発を検討したい場合は、カオピーズにご連絡ください。弊社はベトナムを拠点とするソフトウェア開発会社で、費用やスピード、品質においてハイレベルなサービスを提供しております。ソフトウェア開発会社をお探しの方は、お気軽にお問い合わせください。