API進化の歴史
記録された歴史によると、ウェブAPIは1990年代後半、Salesforceの営業自動化ソリューションの開始により登場しました。当時、このツールは誰もが利用できるオープンなリソースでした。
Salesforceの自動化ツールはXML駆動で、データ交換に用いられたフォーマットは後に標準のSOAP APIとして認識されました。メッセージ形式の仕様や、リクエストの許可・不許可に関するエンコーディングルールが定められていました。
多くの開発者は、API開発でSOAPに取り組み、手動のXML文書やRPCを用いました。その後、APIのエンドポイントを設定し、SOAPスイートをそのエンドポイントにPOSTしました。これはAPIの誕生のみならず、SaaSの始まりでもありました。
2004年、eBay、Amazon、eBayといったプラットフォームがAPIの進化に努め、世界は大きな変革を目の当たりにしました。これらのプラットフォームはウェブや外部との通信を変革し、更新されたAPIは商業的要素から離れ、ビジネスに価値を付加するようになりました。
現代APIの形成に影響を与えた重要な出来事として、FlickerやFacebookのAPIの登場が挙げられます。Flickerはクラウド上でデジタル画像を保存するプラットフォームを、各種プラットフォーム間での画像共有をサポートするAPIを用いて開発しました。
2008年までに、APIは独立して動作し、膨大な連携情報を処理できるようになりました。Twilioは、製品全体を扱うのにAPIだけで十分であることを示し、通話やメッセージのために電話を接続するAPIを提供しました。
初心者向けに、APIとは異なる2つのアプリ間で簡単に通信ができるよう設計されたインターフェースを指します。これが、アプリ間の仲介役と呼ばれる理由です。また、APIを語る際は、利用者が使うアプリの健全性を守るためのAPIセキュリティにも触れる必要があります。
APIの意味を詳しく理解しましょう。現代はIoT、つまりモノのインターネットが推進され、日常の物や業務にコンピュータが組み込まれています。例えば、スマホと冷蔵庫をつなぐアプリを利用すれば、どこからでも操作できます。そのアプリで、遠隔から冷蔵庫を操作したり、中身を確認したり、温度を下げたりできるのです。
開発者にとって、APIはマイクロサービスやコンテナ間で素早く情報をやり取りするための有力なツールです。統合と相互接続がアプリ開発に重要なように、APIは設計を推進し、充実させます。
APIがインターネットを駆け巡る
世界がWWWやインターネットを知る前から、APIは専用プロトコルとして機能していました。限られた領域や目的、組織で分散ネットワークが使われる際、重要な役割を果たしてきました。インターネットの前後を通じ、APIは計算機同士の通信を可能にしてきたのです。
Web 2.0が登場すると、Webベースのツールは単なる補助以上の働きを見せ、独自に多くの処理を遂行するようになりました。この時期、RESTが注目され、後に実際のアプリ設計に用いられるAPIインターフェースの説明に使われるようになりました。
REST(REpresentational State Transfer Framework)を広めたのは、2000年に博士論文でこの手法を提案したRoy Fieldingのおかげです。すぐに開発者の間で標準となり、OpenAPIへの道を切り開きました。
Web 3.0の時代では、APIはIoTやAI搭載デバイス同士の通信で重要な役割を果たしています。従来のリクエストとレスポンスの流れを、イベント駆動型に変更することで、APIの関与が一層強化されました。
APIとは、プログラマーがアプリ同士を連携させるための指示やツールの集合です。APIを利用することで、必要なコード量が削減されます。例えば、Web APIを使えば、複雑なコードを書かずに特定サイトのデータにアクセス可能です。一方、自前のウェブアプリを作る場合は、特定サイトのデータと連携するための独自のコードが必要となります。APIを用いることで、サイトの機能に手軽にアクセスでき、新規アプリの作成や既存アプリの更新に役立ちます。
また、Web APIは認証や許可の処理を代行してくれるため、開発者が個別に対応せずに済み、時間と労力を節約できます。複数の利用者が同時にログインしている場合も、APIを通じて互いのデータにアクセスが可能です。
APIエンドポイントとは、ネットワークやファイルを通じてデータの要求と受信を行う場所を指します。例えば、api.intercom.io/v3/messages?ids=1,479 のようなウェブサイトのURLです。
または、アプリ内の特定の機能がデータを受け取り、特定のAPIエンドポイントへ送信する場合もあります。例えば、アプリ内で利用者が送信したメッセージ数を知りたければ、アプリのAPIの /me/messages エンドポイントへリクエストを送ることになります。
2つのAPIが通信する際の流れは以下の通りです:
まず、第二のアプリのAPIエンドポイントへのアクセス許可を求め、次にそのエンドポイントを使ってデータを送信します。第一のアプリがデータを受け取ると、言語仕様に従って処理し、得た情報で応答を返します。
APIゲートウェイとは、外部アプリと自社アプリの間に位置し、両者間のトラフィックを処理するソフトウェアのことです。例えば、Google MapsやGmailを初めて利用する際、Gmailでのログインや新規Googleアカウントの登録を求められるのは、両アプリがAPIゲートウェイで接続しているためです。
APIはアプリやウェブアプリ開発の現場で広く使われています。情報のやり取りを容易にすることで、アプリの基盤となっているのです。代表的かつ重要なAPIの活用事例は以下の通りです:
REST APIを利用することで、シングルページアプリ(SPA)の開発が加速されます。SPAはウェブサイトのコンテンツを1ページに集約し、優れたユーザー体験を実現します。
その開発には、あらかじめ用意されたCSS、JavaScript、HTMLファイルを使ってサーバと通信を開始します。
ここでは、サーバ側の通信にRESTフレームワークを使用し、クライアント側では専用のフレームワークで情報交換が行われます。
SPA開発でよく使われるREST APIフレームワークには、Jersey、Nancy Fx、Express Js、ASP.Net Web APIなどがあります。REST APIはステートレスなため、ユーザが複数のサーバを利用しても問題なく、スケーリングが容易となり、結果として特定リソースへのアクセスも不要になります。
REST APIのドキュメント以外には、SPAのクライアントとサーバが厳密に結びついておらず、独立して動作するため、柔軟な開発、テスト、デプロイが可能です。
一方、動的ウェブページのフレームワークを使用すると、この自由度は得られません。
長い間、電話、ファックス、メールがB2B取引の主要な通信手段でした。しかし、技術の進歩により、IoTを基盤とした情報交換が促され、RESTful APIが企業間の自動化に重要な役割を果たすようになりました。
顧客の視点では、パブリックAPIを公開することで、外部との連携を最大限に活かす消費者向けアプリが実現します。
パブリックAPIは、ビジネスプロセスの分離を可能にし、機械同士の相互運用性を向上させるため、B2Bプロセスの速度改善に寄与します。必要に応じてユーザー数を拡大しても、企業側のコスト負担を増やさずに済むのです。
プライベートAPIを利用することで、B2B利用者は市場投入までの期間を短縮し、既存のワークフローに支障をきたすことなく新たなアプリやツールを迅速に展開できます。また、内部の業務管理において、再構築や近代化が必要な部分を明らかにし、組織の柔軟化に貢献します。
コンポーザブルなビジネスモデルは、複雑な機能を細かく分割して扱いやすくする革新的な手法で、戦略的なリソース活用を促します。プライベートAPIは全レベルの内部通信を効率化し、連携や情報交換を迅速かつ安全に行えるようにします。
内部APIは、業務に支障をきたす可能性のあるシステムの詳細情報を提供することで、ビジネスインテリジェンスの解析をより正確にし、応答速度の向上にも寄与しています。
サービスメッシュは、構成の自由度が高く低遅延なインフラ層の一部で、大規模なネットワーク内の内部通信を処理します。これにより、コンテナ化された短命なアプリ間での迅速で安全かつ信頼性の高い情報交換が保証されます。
サービスメッシュにおいては、APIが情報交換に利用されます。メッシュのデータプレーンがすべてのパケットやリクエストに接触するため、処理が煩雑になることもありますが、Universal Data PlaneやxDSのようなAPIを用いることで、システムの健康状態の確認、性能監視、リクエストのルーティング、負荷分散、サービス検出、そして不具合防止のためのユーザー認証などが迅速に行えます。
新たなサービス提供モデルとして、モバイルバックエンドはモバイル最適化ソリューションの開発に広く利用されています。MBaaS(Mobile Backend as a Service)として提供されるこのモデルは、サーバや関連ツールの管理負担を軽減します。理想的なMBaaSプラットフォームは、ユーザー管理、プッシュ通知、ソーシャルログインプラグインなど、多彩な機能を提供します。
MBaaSは、柔軟なSDKを用いてAPIのエンドポイント接続を活用し、Flutter、Unity、Iconic、ReactNativeなどの先端技術を利用したAndroidやiOS向けフロントエンドアプリの開発を推進します。
MBaaSプラットフォームのAPIを使えば、ワークフロー管理、通知更新、タスク計画などの自動化が促進され、さらに状況に応じた新たなサービスの設計も可能となります。
IoTは現代で最も急成長している技術の一つで、今後、ツールやソフトの80%以上を支えるとされます。あらかじめ定義された通信ルーチンやプロトコルを提供するAPIを利用することで、IoTデバイスの開発がスムーズになります。
IoTデバイスは、顧客や他のネットワーク利用者のデバイスと連携し情報交換を行う必要があり、APIを用いることで情報が安全に、正確な宛先へ届けられ、他の機器とも円滑に連携します。これにより、開発者はUIを介さずとも、外部と連携する状況に応じたアプリを構築できます。
REST APIは、IoTデバイス向けに最も広く利用されるAPIで、インターネットプロトコル上での情報交換を実現します。インターネットが駆動するIoTにおいて、REST APIは情報交換を促進し、ユーザー認証や権限管理の実装も可能にします。
API作成において最も重要なのは、その安全性を確保することです。どの権限が必要かを明確にし、必要な者だけにアクセスを限定することで、内部の情報が漏れないようにする必要があります。
APIの利用方法を計画し、実行すべきアクション、必要なデータや機能を整理してください。その上で、各段階を計画に盛り込みます。次に、必要な連絡手段(メールアドレスなど)を整え、更新や変更時の通知を受け取れる専用ページをサイトに設けてもよいでしょう。
新たなAPIを利用する最初のステップは、API自体を構築することです。Wallarmが提供するSDKを使うか、自前で構築し、貴社のアプリ向けにAPIを作成してください。ソフトウェア開発に不慣れな場合も、ネット上には学習リソースが豊富にあります。サーバやプログラミング言語(例:Python)なども必要ですので、全て整ったらコード作成を開始できます。
シミュレーターを使用するか、アプリをダウンロードしてAPIのテストを行ってください。テストには、使いやすくオープンソースのシミュレーターが最適であり、Pythonがインストールされた環境(Mac、Linux、Windowsなど)で動作します。
API利用の第一歩は、コード内にしっかりとドキュメントを残すことです。これにより、同じAPIを他のプログラムやプロジェクトで再利用でき、毎回基礎から作り直す必要がなくなります。また、GitHub上でAPIのドキュメントを整備することも重要です。そこには、APIの仕組み、動作、呼び出しに必要なパラメータが記載されます。
APIのマーケティングは比較的容易です。まず、利用したくなる魅力的な製品を作り、その周りにアプリが構築されるようにしてください。次に、どのようにAPIの魅力を伝えるか、必要な資料やプロモーションチャネル、成果の測定方法を盛り込んだマーケティング計画を策定します。
また、イベントやワークショップを開催して需要を喚起することも有効です。開発者の集まりやカンファレンスなどで、API全般や貴社独自のAPIについて学べる機会を提供してください。TwitterやFacebookなどのSNS上での存在感を高めることも検討する価値があります。
REST API利用の多くの利点の一つは統合です。その他、革新、拡張、メンテナンスのしやすさ、そしてコスト効果が挙げられます。
REST APIは革新に優れ、将来の拡張にも適しています。また、実装時にかかるコストを抑えられるのもメリットです。なぜなら、これらのAPIは従来よりも開発に必要な手間やエネルギーが少ないからです。
さらに、REST APIはコードへの統合が容易で、最小限の労力で接続できるため、あとは各自の判断に委ねられます。
REST APIは、クライアント(アプリ)がアクセスし操作するリソースで構成されています。つまり、クライアントはこれらのリソースへアクセスするためのリクエストを送り、操作を行うことが許されているのです。
これにより、APIは利用者が誰で、どのような操作を行っているかを把握できます。認証トークンはデジタルな鍵とも言え、APIキー、OAuthトークン、リフレッシュトークンなどさまざまな形があります。ユーザーの認証情報を何度も要求することなくリソースへアクセスを許可できるため、アプリが迅速に動作できます。
APIキーは、アプリ同士で認証を行うために使用される文字列です。通常、ソフトウェア同士の通信に利用されます。例えば、仮想通貨取引所は、BitcoinやEthereumなどの取引を行うためのAPIを提供しており、アプリ起動時に個別の認証キーを要求することで、取引所との接続や取引の送受信が可能になります。
前節ではAPIの概要を説明しました。用途が広く多様なため、目的によってその働き方は変わります。
バックエンド開発者:
DevOps:
セキュリティ:
最新情報を購読