APIとは 定義と実例 : 定義と実例

API(アプリケーションプログラミングインターフェイス)とは、ネットワーク化されたサーバー上で動作するソフトウェアコンポーネント同士の情報をやり取りする際に使用するインターフェイスの仕様です。また、プログラミングコードのコンポーネントでもあります。

テクノロジーに携わる人の多くは、API(アプリケーションプログラミングインターフェイス)とは何かを直感的に理解していますが、それを定義するとなると、言葉で説明するのは難しいかもしれません。

ネットワークにおけるデータのやり取りの標準がプロトコルであるように、APIはアプリケーションにおけるデータのやり取りの標準です。もしAPIがなければ、ソフトウェア開発者はアクセスしたいプラットフォームから情報を取得するために、大変な思いをしてコードを書くことになるでしょう。

今回は、APIの意味、定義、実例を紹介し、APIを使用することでどのようなことが実現できるのかを説明します。

APIの意味、定義

APIとは、サーバー上での実行時に他のプログラムからリクエストを受け取ってレスポンスを返す、一連のルーチンがコード化されたものです。APIの設計者は、対象のプラットフォームへのアクセスに適した関数を公開する、標準化されたプログラミングステートメントを使用してAPIのコードを実装します。

たとえば、自分の店舗までの地図を自社のWebサイトに組み込んだり、最新のツイート一覧を表示したりしたいとします。Google MapsやTwitterのサイトを動かしているコードは、GoogleやTwitterのサーバー上にあるため、直接アクセスすることはできません。しかし、こうしたプラットフォームではAPIが提供されており、認証されたユーザーはサイトからデータを取得できます。

GoogleやTwitterのサービスは非常に有名ですので、Google Maps APIやTwitter APIは最も広く利用されている例かもしれません。しかしサービスとしてのソフトウェア(SaaS)プロバイダーのほとんどは、開発者がプロバイダーのサイトにデータを送信したり、サイトからデータを取得したりするコードを書くことを可能にするAPIを提供しています。

こうしたAPIを構成する各呼び出しには定められた構文があります。APIを提供する各ベンダーはAPIの構文を文書化して、通常は自社のWebサイト、またはGitHubやProgrammableWebなどのサイトで公開しています。

ほとんどのAPIには、開発者がデータを作成、取得、更新、削除することを可能にする、いくつかのメソッドまたは操作が用意されています。これらのメソッドの実装に使用されている動詞は、それぞれPOST、GET、PUT、DELETEです。各メソッドは一般的に、操作対象のデータを含む規定された形式のファイル(通常はJSONまたはXML)の形でペイロードを受け取り、APIが呼び出し元のプログラムとやり取りできるアドレスとして機能するURI(Uniform Resource Identifier)を使用します。


APIの実例

実際のAPIの構造はどうなっているでしょうか? 例としてTalend APIを見てみましょう。Stitch Import APIは、開発者が任意のソースからStitchデータパイプラインにデータを送信することを可能にします。以下のPOST API呼び出しにより、1件のレコードをStitchデータパイプラインにプッシュできます。

<pre> curl -X "POST" " https://api.stitchdata.com/v2/import/batch" \
     -H 'Authorization: Bearer [ACCESS_TOKEN]' \
     -H 'Content-Type: application/json' \
     -d $
'{
    "table_name": "customers",
    "schema": {
      "properties": {
        "id": {
          "type": "integer"
        },
        "name": {
          "type": "string"
        },
        "age": {
          "type": "integer"
        },
        "has_magic": {
          "type": "boolean"
        },
        "modified_at":{
            "type":"string",
            "format":"date-time"
         }
      }
    },
    "messages": [
      {
        "action": "upsert",
        "sequence": 1565880017,
        "data": {
          "id": 1,
          "name": "Finn",
          "age": 15,
          "has_magic": false,
          "modified_at":"2020-12-13T21:25:03+0000"
        }
      }
    ],
    "key_names": [
      "id"
    ]
  }'
</pre>

APIはソフトウェア開発者の生産性を高めるため、非常に有用です。もしAPIがなければ、すべての開発者はリモートのリソースにアクセスするために、自分でコードを記述して保守管理しなければなりません。APIによって、リソースを読み書きする標準の方法がプラットフォームに備わることにより、プラットフォームへのアクセス性が向上し、開発者にとって魅力的なものとなります。その結果、サードパーティがプラットフォームを使用してデータをやり取りする可能性が高くなります。

APIの歴史

API(アプリケーションプログラミングインターフェイス)の歴史はWorld Wide Web(WWW)よりも古く、数十年前から存在しています。ネットワークコンピューティングが発展するにつれて、サーバーベースのアプリケーションベンダーやオペレーティングシステムは、クライアントからサーバーのリソースへの標準的なアクセス方法を必要とするようになり、APIがさらに普及しました。

Webが普遍的な存在となったことで、APIもまたWeb上の開発に移行しました。最初のWeb APIはSalesforceによるもので、同社が創業してすぐの2000年にリリースされました。

APIの設計

初期のAPIの多くは、SOAP(Simple Object Access Protocol)に依存していましたが、「シンプル」という名前は実体とはかけ離れていました。SOAPはXMLドキュメントと、遠隔手続き呼び出し(RPC)に依存しており、開発者はトランスポートバインディングや操作の名称、エンドポイントURIなどを気にする必要がありました。APIの設計に関する標準は定められていなかったため、SOAP APIの保守は困難でした。

もう1つの選択肢として、Object Management Group(OMG)によって定義されたCORBA(Common Object Request Broker Architecture)がありましたが、こちらはさらに複雑でした。

REST API

シンプル化の必要性を認識していたコンピューターサイエンティストのRoy Fielding氏は、自身の博士論文で「分散ハイパーメディアシステム(つまりWorld Wide Web)内のアーキテクチャー要素を抽象化したもの」としてRepresentational State Transfer(REST)を提唱しました。この中では、ユーザーエージェント(一般にWebブラウザー)、Webサービスへのアクセスを提供するオリジンサーバー、そしてリクエストとレスポンスを転送する仲介コンポーネントの役割が定められています。RESTfulなWebサービスは、リクエスト元のシステムが統一された定義済みのステートレスな操作を使用して、Webリソースの表現にアクセスして操作することを可能にします。ステートレスとは、単にWebサービスがリクエスト間でセッション情報を保持しないことを意味します。

eBayは2002年に最初のREST APIを発表し、社外の開発者がeBayのプラットフォームに付加価値を与えることを可能にするという手段の有効性をすぐに証明しました。それ以来、ソフトウェア開発チームは、Webベースのサービスだけでなく、ソーシャルメディアやモバイルアプリケーション、ハードウェアデバイス(IoT)など、多くのプラットフォーム向けにAPIを作成してきました。現在では、ほとんどのベンダーがRESTベースのAPIを採用しています。

APIのほとんどはパブリックAPIです。結局のところ、社外の開発者が使えないAPIには、それほど大きな価値がないからです。しかし、一部の企業では自社のAPIをプライベートに保ち、有料契約を結んだパートナーに対してのみ共有しています。

API統合

またAPI(アプリケーションプログラミングインターフェイス)は、 アプリケーション統合にとっても重要なツールです。アプリケーション統合は、異なるベンダーが提供するアプリケーションやシステム同士を、ワークフロー内で互いに関係させることを可能にする手段です。この機能により、たとえば1つのアプリケーションに入力したデータを、他のプラットフォームでも自動的に利用可能にすることができます。

API統合は2つのアプリケーションを接続して、データの交換を可能にする役割を果たします。APIにより、開発者は複数のプラットフォーム間でデータを同期できます。API統合が動作している例としては、たとえばSalesforceに新しい連絡先を入力したときに、それがMarketoにも自動的に入力されるようなケースがあります。

API統合の主なメリットとしては、安全なプロセスでデータ共有を自動化できるため、プラットフォーム間でデータの整合性を保つことができるという点があります。

APIの管理

APIを作成するにあたり、企業はAPI管理ソフトウェアに目を向け始めています。API管理ツールは、APIの作成と公開、利用ポリシーの施行、アクセスの制御、利用統計情報の収集と分析、そしてパフォーマンスの報告を支援します。API管理ツールには、商用とオープンソースのどちらもあります。こちらから詳細をご確認ください。

Talend API Services

多くの企業が、APIの提供を通じて社外の開発者にプラットフォームを利用してもらうことによる価値を見出しています。しかし、APIの設計と文書化は、数か月間に及ぶ開発者の時間と(多くの場合、実際の開発期間も数か月かかります)、数万ドルもの費用がかかる一大プロジェクトとなりかねません。

企業はゼロからスタートする代わりに、Talend API Servicesを活用して最も困難な作業を行うことができます。開発者は視覚的な設計ツールを使用して、新しいAPIの構築とテストを連携して行うことが可能になります。ぜひデモを体験いただき、Talend API Servicesで何ができるかをご確認ください。

Talendを使う準備はできていますか?