こんにちは、Reedexエンジニアです。
リーデックスメンバー4人と常駐で、WEBマーケティング関連の業務に日々取り組んでいます。
今回、WEB関連と言わずとも、エンジニアであれば一度は聞く「API」についてお話したいと思います。
また、特に現在多くのWEBサービスで用いられている形式である、「REST API」について触れます。
API(えーぴーあい)とは?
Application Programming Interfaceの略です!
インターフェースというとぴんと来ないかもしれませんが、原始的なもので言うと、糸電話だと思ってもらえればOKです。笑
要は情報の伝達手段という事になります。
機能や仕様は見えていなくても定められたデータを渡せば、定められたデータが返ってくる。というのがAPIです。(厳格な定義は難しいため、分かりやすくかなりざっくりした説明です)
APIは大きくデスクトップアプリケーションとWEBサービスの2パターンがありますが、ここではWEBサービスのAPIについて触れます。
デスクトップアプリケーションのAPI:OSやミドルウェアの機能を簡易的に呼び出す。
WEBサービスのAPI:外部のリソースを使用してマッシュアップし、より充実したサービスを提供。
WEBサービスのAPI?
異なるシステム同士の情報をWEBで連携する仕組みです。
どうやって連携するかというと、SOAPというXML形式のデータをやり取りする場合と、SOAPではなくRESTという概念を
用いて主にJSON形式のデータでやり取りする場合があります。
現在の主流はREST APIなので、今回はREST APIについて触れていきます。
(REST APIの話に入る前に)そもそも、APIを使うと何がいいの?
ここまで読んでいただいた方の中に、こういう素朴な疑問を抱いた方も多いと思います。
WEBサービスの場合で、例を上げたいと思います。
(例)先日、ユーザーからこんな依頼があったとします。
「この店舗の郵便番号の半径10km以内の人にメールを送りたいが、その前に該当する顧客がどのくらいいるのか知りたい。」
店舗の郵便番号はデータにあるが、この10km以内の郵便番号はどうやって求めれば良いか…
こういう時、自前で判定ロジックを組むと多大な労力がかかることは、みなさんも想像に難くないと思います。笑
でももし、、郵便番号と半径○kmという情報だけを渡し、その郵便番号から〇km以内の郵便番号の一覧をくれるものがあるとすればどうでしょう…?
実は、そんなWEBサービスのAPIがあったりします。笑
この例のように、自分たちで一から作り上げなくても、外部の情報を利用することによって、短時間でハイクオリティなものを作る事が可能になるのが、APIの強みです!
REST API(れすと えーぴーあい)?
RESTは、Representational State Transferの略で、WEBシステムにおけるソフトウェアの設計原則の一種です。どのような原則かというと…
◆ステートレスなクライアント/サーバプロトコル
◆すべての情報(リソース)に適用できる「よく定義された操作」のセット
◆リソースを一意に識別する「汎用的な構文」
◆アプリケーションの情報と状態遷移の両方を扱うことができる「ハイパーメディアの使用」(Wikipediaより)
になります。
現在の主流としては、ウェブサイトへアクセスするときと同じ感覚で、簡単に外部の情報(リソース)をデータで取得できるというものです。
例を示した方がわかりやすいのでそうします。笑
(例)LINE Messaging APIにて、LINEでボットから応答メッセージを送る場合、以下のようなHTTP構成になります。
Content-Type:application/jsonAuthorization: Bearer {channel accesstoken}{“replyToken”:”(応答するメッセージと紐づける文字列)”,“messages”:[{“type”:”text”,“text”:”あいうえお”},{“type”:”text”,“text”:”かきくけこ”}]}
言葉に言い換えると、POSTメソッドで「https://api.line.me/v2/bot/message/reply」に問い合わせて、
ヘッダ部では、Content-Typeにてボディ部にはJSON形式のデータがあることを示す「application/json」を指定して、Authorizationにて認可情報を指定しています。(アクセストークンの指定)
ボディ部では、応答するメッセージとして「あいうえお」と「かきくけこ」を返す。
という事になります。
<WEBサイトとの比較。>
★REST APIは多くの場合HTTPでのやり取りを行っており、WEBサイトへアクセスするときと同様に、URLを指定して、GETやPOSTでアクセスしています。
★WEBサイトへアクセスの場合、サーバーからはWEBページのHTMLが返ってきますが、REST APIの場合は、基本的にJSON形式のデータが返ってきます。
上述の場合はHTTPの構成をそのまま書きましたが、実際のアプリケーション開発では、提供者側でSDKが準備されていることが多いため、もっと簡単に(そのプログラミング言語の書き方で)記述が出来ます。
RESTの原則を忠実に則り作られたAPIのことを、特にRESTful APIと呼びます。
まとめ
なんとなくAPI、とりわけREST APIについて概要がわかりましたでしょうか。
基本的には「ウェブサイトへアクセスするときと同じ感覚で、簡単に外部の情報(リソース)をJSONデータで取得できる。」という捉え方で問題ないです。笑
※今回は情報を取得する部分にフォーカスして書きましたが、実際は前段階とて、アクセストークンの取得等のセキュリティを考慮したフローがあります。
(これは取得する情報がパブリックなものかそうでないかの度合いで取得フローの有無や種類も変わってきます。キーワードとしてはAPIキー、OAuth2.0です。)
コメントを残す