【Laravel】はじめてのAPI構築(第1回) 座学編
APIって何?いつ使うの?
「API」とは、「Application Programming Interface」の略です。
言葉の意味としては、アプリケーション、プログラム、サービスをつなぐインタフェースということになりますが、触れたことがない方にとってはイメージしづらいと思うので、少し具体的に話します。
あなたの会社で、ショッピングのWEBサービスを持っているとします。当然存在するのが「ログイン機能」です。さて別のアプリとして電子BOOKのアプリを作りたいとします。(Amazon、Rakutenなどがイメージしやすいでしょう。) 連携サービスなので、同じ会員情報を扱いたいとします。ここで、それぞれのサービスが独自で「ログイン機能」を実装することももちろん可能です。ですが、効率的ではありません。そもそも開発コストの面でもそうですが、ログイン機能になにか修正が入るたびに2個のアプリを修正しなければなりません。
更に言うと、サービス数が2個だから良いものの10、20と増えた場合はどうでしょう。想像するのも恐怖です。いつかとんでもないトラブルが発生することでしょう。
ここで登場するのがAPI。ログインAPIとして独立した1個のアプリとして作成すると、各サービスはそれを利用するだけでよくなるわけです。
もっと具体的には?
具体的には、ある情報を送ると情報を返してくれるというものです。
ログイン機能を例にすると、「ID」と「パスワード」という情報を送信すると、「ログイン成功」「ログイン失敗」を返してくれる。商品検索を例にすると、「検索ワード」「値段の上限」を送信すると、それに対応した「商品のリスト」が返ってくる。
そのようなデータのやりとりをイメージできましたでしょうか。
どんな種類があるの?
イメージしやすい例として、自サービスにおけるログイン機能をあげましたが、もうお気づきの通り、機能として独立させたいのであれば何でもAPIになりえます。用途は無限大です。
その中でも敢えて大きな括りで分けるとするならば、主要機能をAPI化するものと、情報収集(提供)をAPI化するものにわかれると考えて良いでしょう。(※筆者の勝手なイメージです)
機能をAPI化するというのは、先程例にあげた「ログイン機能」であったり、「ユーザー管理機能(登録/編集など)」、「お買い物機能」、「送金機能」なサービスの機能の一部分を担うものです。このタイプはAPIのレスポンスとして、処理が成功したかどうかがレスポンスに含まれることになります。このレスポンス次第で次の画面に遷移させたり、エラーが画面を表示したりするわけです。
次に情報収集(提供)をAPI化するというのは、検索機能をAPI化するものです。商品を検索する、旅館を検索する、航空便の検索をする、レシピを検索する、動画を検索するなどの事です。このタイプのAPIのレスポンスには、情報のリストが含まれることになります。検索条件に合う「商品のリスト」「レシピのリスト」が返却されるわけです。(もちろん、検索結果ゼロということもあるでしょう)このレスポンスを使って、検索結果画面を表示するということになります。
APIって作るの?外部サービスじゃないの?
世の中でよく使用されているメジャーなサービスの多くはAPIを提供していることが多いです。そのようなAPIを利用して自前のサービスに利用することもできます。(※利用規約はしっかり読む必要があります)
またもちろんAPIを作成することも難しいことではありません。APIにまだ触れたことがない方は、自分には関係ないものと思っているかもしれませんが、ある程度のWEBアプリやスマホアプリに携わる事があれば、ほぼ間違いなく利用します。以下のような例をあげてみました。思ったより身近ですね。
【例1】WEBサイトで画面遷移なしで情報を更新しようとする場合
画面遷移する場合は検索結果の2ページ目、3ページ目と移動すればアプリのみの処理でデータ更新できます。
一方で、みなさんもよく見るであろう「あと10件みる」ボタンのような、画面遷移をせずに画面を更新する場合には、APIを利用して情報を取得することになります。
【例2】ネイティブアプリ(iOS/android)で通信が必要な処理をする場合
ネイティブアプリでは、端末の中にログイン用のDBがあるわけでもなく、検索結果の商品情報が保存されてるわけでもありません。ログインする場合には別途APIを用意してログイン処理を行いますし、検索結果を表示したければ商品検索のAPIを用意することになります。
例えば、「電卓」アプリのようなインストール時にインストールされた材料のみで動作するアプリは、APIを利用しないこともあるでしょうが、少しでも通信があるアプリであれば、APIが必須となります。
まとめ(座学編)
そんなこんなで、APIがどんなものかはイメージがつきましたか?
次回からAPI構築の実践をしていきましょう。