英語学習

【英文和訳】「APIとWebサービス。何が違うのか?」API vs Web Service: What’s the Difference?

 

 

 

 

APIとWebサービス
1991年8月、ワールド・ワイド・ウェブが誕生しました。それは今日のようなものではありませんでした – 実際、それはゆっくりとしたもので、オンラインのウェブサイトはほとんどありませんでした。もしあなたが自分のウェブサイトを持っていたとしても、あなたは数少ない存在でした。

それは、Googleが登場する前の世界でした。Googleは1998年まで存在しておらず、ほとんどの人がウェブ検索にYahoo!

技術に精通していた人たちがコンピュータ言語をコーディングする方法を知るようになると、私たちは幸運にも、インターネットを介して指先で利用できる最も印象的な革新的な技術を体験することができました。

突然、私たちはグーグルという検索エンジンに遭遇しました。

私たちは電子メールサービスを利用して、機械を介して他の人と話をすることができましたが、後にAIMやMSNのようなインスタントメッセージングサービスを利用するようになりました。やがて、Myspace、そしてFacebookのようなウェブサイトが登場しました。これらのウェブサイトによって、私たちは自分のインターネット版の自分を作り、そうでなければ出会うことのない他の人たちと交流することができるようになりました。

ソーシャルメディアは、私たちがインターネットを使う方法を永遠に変えました。ソーシャルメディアは、私たちが指先にある機械を通して、お互いにコミュニケーションが取れることを人々に示したのです。

それは、オプションが無限であることが明らかになった。ウェブサイトは、それがより速く、より簡単であれば、私たちが実際の生活の中で行うことを置き換えることができます。

APIとWebサービス
api対ウェブサービス
出典:https://testautomationresources.com/

WebサービスとAPIは非常によく似た概念なので、類似点と相違点を理解するのは難しいかもしれません。

用語の定義
WebサービスやAPIの説明をさらに始める前に、まずは他の用語をいくつか定義しておく必要があります。

XML [eXtensible Markup Language]は、データの保存と送信のための標準化されたフォーマットです。XML [eXtensible Markup Language]は、データを保存・送信するための標準化されたフォーマットです。HTMLと同様に、XMLはデータを記述タグで包むことでデータを保存します。
JSON [JavaScript Object Notation] は XML に似ていますが、標準化されたフォーマットでデータを保存し、送信することができます。JSONは、データを体系的に保存するために、異なるオブジェクトベースの方法論を使用しているだけです。
HTTP [HyperText Transfer Protocol]は、インターネット上でデータや通信を転送するための基礎となるものです。
SOAP [Simple Object Access Protocol]は、ネットワーク上で構造化された情報[XMLデータ]を交換するためのメッセージングプロトコルです。
REST [REpresentational State Transfer]は、Web APIを作成する際に使用することができる標準化されたアーキテクチャスタイルです。
Webアプリケーション(Web app)とは、コンピュータのWebブラウザを介してインターネット上でアクセスするコンピュータプログラムのことです。
Webサービスとは何ですか?
Web サービスとは、ネットワークを介して 2 台のマシンが相互に通信するための方法です。

コンピュータ上で実行されているウェブサーバーは、他のコンピュータからの要求を聞きます。他のコンピュータからのリクエストをネットワーク経由で受信すると、Web サービスは要求されたリソースを返します。このリソースは、JSON、XML、HTMLファイル、画像、オーディオファイルなどです。

ここで重要なのは、ネットワークを介してリクエストが行われているという要件に注意することです。

APIとは何ですか?
API(Application Programming Interface)とは、あるアプリケーションが別のアプリケーションと通信するための定義とプロトコルのセットです。

一般的に、APIといえば、Web API [インターネット上でアクセスできるAPI]のことを指していると思われます。しかし、これは常にそうとは限りません。APIはローカルファイル(JavaプログラムのJARファイル、C/C++プログラムの.Hファイルなど)を介して公開され、2つのローカルアプリケーションがお互いに通信できるようにすることができます。2 つのアプリケーションは単一のデバイス内で通信しているため、ネットワークを必要としません。

API の種類についての詳細はこちらをご覧ください。

違いは何か?
APIとWebサービスは同じもののように聞こえるのではないかと疑問に思うかもしれません。2台のコンピュータがインターネットを介してお互いに通信するための方法ですよね?そうではありません。

APIとは何か」で述べたように、すべてのAPIがインターネット(ネットワーク)を介してアクセスできるわけではありません。そこが違います。

すべてのWebサービスはAPIですが、すべてのAPIがWebサービスというわけではありません。

REST APIはWebサービスなのか?
簡単に言うと?はい、REST API は Web サービス API の一種です。

REST APIは、WebサービスAPIを作成するための標準化されたアーキテクチャスタイルです。REST APIになるための要件の一つは、ネットワークを介してリクエストを行うためにHTTPメソッドを利用することです。

RESTは、コンピュータ科学者のロイ・フィールディングによって2000年に博士論文の中で正式に定義されました。これは、アプリケーションの構築方法を本質的に変えました。フロントエンドの「クライアント」の実装は、バックエンドの「サーバー」から完全に独立して構築することができます。

クライアントからサーバーへのRESTリクエストは、通常、以下のコンポーネントで構成されています。

URL パス [https://api.example.com/user]
HTTPメソッド[GET,PUT,POST,PATCH,DELETE]を使用します。
ヘッダー – (オプション) クライアントがリクエストで渡す必要がある追加情報 (認証資格情報、ボディの Content-Type、リクエストを行うアプリケーションのタイプを定義する User-Agent など)。
パラメータ – (オプション) リソースがどのように返されるかを変更する変数フィールドです。
Body – (オプション) サーバーに送信する必要のあるデータが含まれています。
ここでは、REST API の仕組みを説明します。
親友がInstagramに投稿したものを見たいとしましょう。これを行うには、アプリ上で友達のInstagramページを開く必要があります。

この例では、あなたのInstagramアプリ[クライアント]は、あなたの友人のInstagramのプロフィールを要求するためにInstagramのサーバー[サーバー]にリクエストを行います。このリクエストは/usersエンドポイントへのGETリクエストとなり、リクエストのパラメータには友人のアカウントIDが含まれます。

HTTP メソッド。GET
URL: https://api.instagram.com/v1/users/
パラメータ: user={best_friends_user_id}。
免責事項:これはInstagram APIへのリクエストを非常に簡略化した例です]

GETリクエストを使ってデータを取得するのと同じように、POSTリクエストを使ってプラットフォーム上にデータを作成します。そこで、Instagramに画像を投稿する例を使ってみましょう。このリクエストは、/mediaエンドポイントへのPOSTリクエストとなり、画像のボディとキャプションをパラメータとして指定します。

HTTP メソッド。POST
URL: https://api.instagram.com/v1/media/
パラメータ: caption={my_great_caption}&user={my_user_id}.
ボディ:アップロードする画像
[免責事項: これはInstagram APIへの正確なリクエスト例ではありません。投稿メディアのエンドポイントはプライベートエンドポイントです]

REST APIのメリット
RESTが素晴らしいのは、APIへのリクエストを行うための標準化された方法論を提供しているからです。1つのREST APIを習得すると、他のREST APIも同様の方法で機能するようになります。

APIがインターネット上で利用可能な場合、アプリケーション内に追加のソフトウェアをインストールする必要はありません。APIと同じネットワークに接続されているどのアプリケーションからでもデータにアクセスすることができます。

クライアントとサーバーで開発が分かれていると、クライアントのコードはサーバーに影響を与えずに、サーバーのコードはサーバーに影響を与えずに更新することができます。これは、変更点が下位互換性のある方法で開発されていることを前提としています。

コアとなる違い
API と Web サービスについて読んでいて少し迷ってしまった場合は、上記で取り上げた内容を簡単にまとめてみましょう。

APIはアプリケーションインターフェースであり、あるアプリケーションが標準化された方法で別のアプリケーションと相互作用できることを意味します。
WebサービスはAPIの一種であり、ネットワーク接続を介してアクセスする必要があります。
REST API は、HTTP メソッドを使用して Web API を構築するための標準化されたアーキテクチャです。
この記事が、API と Web サービスの違い、インとアウト、および API と Web サービスについて知っておくべき一般的な情報を整理するのに役立ったことを願っています。