Web APIとは?
APIとはApplication Programming Interfaceの略であり、「ソフトウェアコンポーネントが互いにやり取りするのに使用するインターフェースの仕様である」と定義されています。最近使われているAPIとは、Web APIの意味で使われていることが多く、Web APIとは「HTTP要求メッセージ群とXMLまたはJSON形式などの応答メッセージの構造定義で構成される」と説明されます(Wikipedia「アプリケーションプログラミングインタフェース」から抜粋)。
図1のように、人がウェブページを参照する時には、ブラウザのURLから、もしくは、ページ内のリンクをクリックすることでWebサーバーにHTTPリクエストが発行され、HTTPレスポンスとして人が解読可能なHTMLや画像・動画などのハイパーメディアをウェブページとして返します。同様に、アプリケーションからHTTPでリクエストを発行し、WebサーバーがHTTPでJSONもしくはXML形式でアプリケーションが解読可能なフォーマットでデータだけを返すことがWeb APIの仕組みです。
Web APIは私たちの生活のさまざまなところで利用されています。身近な利用例では、いろいろなアプリケーションやウェブサイトに組み込まれているGoogleマップAPIや、ウェブサイト上からFacebookアプリケーションを開かなくても「いいね」や投稿できるFacebook APIなどがあります。
企業内の業務アプリケーションでも、顧客管理のためのサービスとしてSalesforceやDynamics CRM、スケジューラやメールなどのコラボレーションのためのサービスとしてG Suite(旧Google Apps)やOffice 365をはじめ、誠に多くのSaaSと呼ばれるクラウド上のウェブサービスが普及しています。
ユーザー(人)がブラウザからSaaSを利用する場合には、図2のようにブラウザに表示されたウェブページをユーザーインターフェース(以下、UI)としてアプリケーション操作(データの入力や参照)を行います。人がUIを通じてアプリケーション操作を行うという点では、社内設置型(オンプレ)のカスタムアプリケーションと方法に変わりはありません。
一方、人ではなく他のアプリケーションからSaaSデータを連携利用するためには、図3のWeb APIを使った連携を行う必要があります。設置型のカスタムアプリケーションに他のシステムからアクセスする場合には、アプリケーションのデータベース(Oracle、MySQL、SQL Server、PostgreSQLなどのRDBMS)からCSV形式などのファイルに出力する、もしくは直接データベースにODBC、JDBC、ADO.NETといったデータベース接続の標準規格でアクセスを行うことでデータを連携する方法があります。この場合、主要なRDBMSと標準規格によって多くのツール、エンジニアがデータ連携を簡単に行うことができます。
一方、SaaSに他システムからアクセスする場合には、SaaS内のデータベースに外部からアクセスすることは当然できません。そのため、Web APIがSaaSを運営するサービス事業者から提供されておりWeb APIを通じてデータ連携を行います。冒頭の「API」というキーワードは、この「SaaS・Webサービスのデータをアプリケーション間で利用するためのWeb API」の利用のことを指しています。Web APIは大変便利な反面、個々のSaaS、Webサービスごとに異なるAPI仕様が発生してしまうこと、JDBC、ODBCのような業界標準ができていないという困難を生んでいます。