APIとは?
APIとは何でしょうか?APIは、現在のデジタル世界において、毎分数十億のデジタル処理を可能にする重要なコンポーネント(要素)です。
APIとは「アプリケーションプログラミングインターフェイス」の略で、2つのアプリケーション間でデータを仲介するソフトウェアです。サービスを提供するアプリケーションにユーザからの要求を伝え、アプリケーションからの応答をユーザに戻すメッセンジャーともいえるでしょう。
APIにはそれぞれの実装から独立した機能の定義をします。実装と定義が互いに干渉しないため、さまざまなバリエーションを作成できます。つまり、APIから提供される構成要素(組み立てブロックをイメージして下さい)によって、プログラムの開発がより簡単にできます。
これらのAPIの再利用性のおかげで、開発者はゼロからコーディングする必要が無くなります。APIを使うと、繰り返しの複雑なプロセスが、わずかなコードだけで簡単に再利用できるようになります。API の 再利用により、開発者は反復的で複雑なプロセスを減らし、アプリケーション開発を飛躍的にスピードアップできるのです。
ビジネスリーダーがITチームに求める成果と実際にできることとのギャップは広がり続けています。MuleSoftでは、この差を『ITデリバリのギャップ』と呼んでいます。APIの再利用によって開発者は、デリバリの拡充や品質向上を実現させ、ITデリバリのギャップを埋め、ビジネスニーズを満たすことができるようになります。
APIを再利用すれば、開発者は新しいプログラムの作成やプロジェクトのたびにゼロからコーディングする必要が無くなるのです。
APIの抽象化によりスピードと俊敏性を実現する
主なAPIのメリットの1つは、異なるシステム間で機能を抽象化できることです。APIのエンドポイントは、サービスを提供するインフラストラクチャから、そのサービスを利用するアプリケーションを分離します。サービスプロバイダがエンドポイントに提供する機能の仕様が変わらなければ、エンドポイントの後ろにあるインフラが変わったとしても、そのAPIを使用するアプリケーションに影響を与えることはありません。
そのため、サービスプロバイダはサービスを柔軟に提供できます。たとえば、APIの向こう側にデータセンターの物理サーバがある場合でも、サービスプロバイダはこれをクラウド上の仮想サーバに簡単に切り替えることが可能です。
たとえば、ソフトウェア(クレジットカード処理ソフトウェアなど)がJavaなどで記述され、OracleベースのJava System Applicatin Server上に実装されている場合、サービスプロバイダはこれをWindows Azure上に実装されるNode.js(サーバーサイドのJavascript)に移行できます。
多くの時間とリソースを必要とする、煩雑なポイント・ツー・ポイントのインテグレーションによって、エンタープライズソリューションを接続する時代は終わりました。API主導の接続性を活用すれば、コンセントにプラグを差すように手軽にシステムを変更できるため、組織は『コンポーザブルエンタープライズ(構成可能な企業)』の構築に注力できます。
APIの仕組み
レストランのウェイターをAPIに例えてみます。あなたはそのレストランの客で、テーブルでメニューを見ています。厨房は注文した料理を用意するプロバイダです。
あなたの注文を厨房に伝え、料理をテーブルに届けてくれる仲介役が必要です。シェフは厨房で調理しているため、この役目を務めることはできません。料理を注文する客とそれを用意するシェフをつなぐものが必要になります。ウェイター、つまりAPIが登場します。
ウェイターはあなたの注文を厨房に届け、料理のリクエスト(ステーキの焼き具合やアレルギーの有無、など)を伝えます。そして応答(つまり料理)をあなたに届けます。APIが正しく設計されていれば、間違った料理が届くことはありません。
APIの使用例
実際にAPIはどのように使われているのでしょうか?APIエコノミーの簡単な使用例として、フライトの予約を紹介します。
オンラインで航空券を検索する際、さまざまなオプションを選択しなければなりません。利用者は出発地や出発日、帰りの出発地や出発日、座席クラスのほか、機内食、座席、手荷物のリクエストなどさまざまなオプションが存在しています。
フライトを予約するときには、一般的に、航空会社のwebサイトからそのデータベースにアクセスし、希望日に空席があるか?日付、出発時刻、路線によって運賃がどのくらいかかるかを調べていることでしょう。
航空会社のwebサイト経由であっても、(楽天トラベルやじゃらんなどの)オンライン旅行サービス経由であっても、これらの情報を参照するには、航空会社のデータベースにアクセスする必要があります。ユーザからは、スマホ経由での閲覧のほうが多いかもしれません。いずれにしても、それら情報を取得するためにはアプリケーションが航空会社のAPIとやり取りし、航空会社のデータにアクセスする許可を得なければなりません。
有能なウェイターのように、APIとは、ユーザが使っているアプリケーションから航空会社のシステムにインターネット経由でデータを届けるインタフェースです。リクエストに対する航空会社の応答を受け取り、ユーザが使っている旅行アプリに届けます。さらに、APIは座席の選択から支払い、予約に至るまでプロセスの各段階でアプリケーションと航空会社のシステムのやり取りを円滑にしてくれます。
APIはアプリケーションだけでなく、データ、デバイス、プラットフォーム間のあらゆるやり取りで利用できます。システム間のデータ送信を可能にし、一貫性のある体験を生み出します。APIはSalesforceのようなクラウドアプリケーションへのアクセスでも、スマホからのショッピングでも、アプリケーションデータやデバイスにアクセスするための基本的な方法の提供が可能です。
APIの種類
知っておいていただきたいAPIの種類がいくつかあります。たとえば、Java APIやJavaプログラミング言語によるオブジェクト間の対話を可能にするクラス内のインタフェースについては聞いたことがあるかもしれません。プログラム指向のAPIのほかに、SOAP(Simple Object Access Protocol)、RPC(Remote Procedure Call)、そして(少なくとも名前だけは)最も浸透しているREST(Representational State Transfer)などのWeb APIもあります。また、GraphQLやAsyncAPIなど、新しいAPIの技術やスタイルも続々と登場しています。ProgrammableWebによれば、公開されているAPIは15,000個を超えています。他にも企業が自社内外の機能を拡張するために使用する非公開のAPIが数多く存在します。
その他のAPIリソース
本記事では、APIとその仕組みの基本について紹介しましたが、知っていただきたいことは沢山あります。是非、MulesoftのAPIリソースを確認して、戦略や設計、運用、管理のベストプラクティスについて知識を深めてください。
APIについてもっと知りたい場合は、APIの戦略や設計、運用、管理に関するAPIのリソースをご覧ください。