API(WebAPI)とは何でしょうか?
APIとはApplication programming interfaceの略で…、というのは他のサイトでよく見る解説です。でも、この記事にたどり着いた方は、そんな解説が正直よく分からなかった方ではないでしょうか?
技術的に詳細を語ればキリがないAPIですが、ここではITに詳しくない方向けにザックリと解説してみます。本記事を読み終わる頃には、APIとは何かについて、ばっちりイメージできていますよ!
ケーススタディ:あなたはWebサイト担当者
まずAPIそのものではなく、APIの活用シーンから見ていきましょう。
ケーススタディとして、あなたはWebサイトの運用・開発担当者で、かつプログラマとしてではなく管理者としてWebサイトにたずさわる人であると想定します。
ある日、上司からこんなことを言われたらどうしますか?
1-1. 郵便番号から住所を表示してくれる?(From上司)
「キミが担当しているサイト、ちょっと使ってみたよ。ユーザ登録のときに、郵便番号を入力させるクセに、住所は都道府県から町名まで全部手入力なんだよね。自動で表示できないの?」
一瞬なんやねんと思いますが、よくよく考えてみればそのとおりです。郵便番号が決まれば都道府県から市区町村あたりまで決まるので、むしろユーザに住所を手入力させる方が危険かもしれません。
そこで、郵便番号を入力したら市区町村以降を自動で表示させる仕組みを検討するものの、いろいろと問題が立ちはだかります。
1-2. 予算に余裕はありません(開発費の問題)
すでに運用が始まっているシステムでは、機能を追加するための予算はそうそう下りません。上司の○○さんが言ったから、ではダメなのです。利益の増収が見込めるか、あるいはユーザにとって何らかのメリットがあるか、それなりの理由とそれに見合った予算承認が必要です。
仮にこの機能を実装するにしても、住所を入力させるところは何箇所もあったりします。どこか1箇所だけ実装を入れるというわけにもいきません。やるとすればサイト内の住所を入力するところすべてです。住所入力の数だけ費用がかかるのはキツいですね。
1-3. 郵便番号、全部で何件ある?(負荷の問題)
このようなケースでは、必要なデータをマスタ化するのが一般的です。そこであなたはこう思うことでしょう。
「郵便番号ってダウンロードできるのかな?それって容量的にどれくらい?」
そして「郵便番号 ダウンロード」でググってみます。すると見事にピッタリの日本郵便のホームページ(https://www.post.japanpost.jp/zipcode/dl/kogaki-zip.html)がヒットします。
(図1_日本郵便ページ)
CSVファイルをZIP圧縮したものがダウンロードできるので、それを開いて見てみると・・・
(図2_CSVデータを開いてみる)
その数、何と12万件!郵便番号って結構多いですね。これでは、どれだけDBでインデックスを張っても、それなりの検索時間がかかりそうです。
1-4. 運用できる?(運用の問題)
さらに下を見ると、もう一つの問題があります。更新の頻度の問題です。
(図3_更新の頻度)
意外ですね、毎月日本のどこかで住所が変わっているようです。これでは毎月更新しなくてはなりません。いくらバッチ処理で実装するにしても、毎月だれかがダウンロードして取り込み処理を実行するのは面倒、しかもその人が忘れていたら・・・と考えると何かと大変ですよね。
1-5. API使いましょうよ!
悩むあなたに、エンジニアが声をかけます。
「API使いましょうよ、カンタンでメンテはいらないし」
あなたは「APIって何!?」と思い、ブラウザのURLの欄にエンジニアから教えてもらったURLを入力し、恐る恐るEnterキーを叩きます。URLは以下です。
https://zipcloud.ibsnet.co.jp/api/search?zipcode=3306032
すると、文字だけながら以下の結果が返ってきます。
(図4_APIからのレスポンス)
おおっ!!それらしい結果が返ってきました。この結果を取得して、住所の入力欄に入れることができたら…、最高です。
こうしてあなたは、郵便番号から住所を得る方法を知りました。早速明日の会議で提案してみたくなるでしょう!
APIとは何か
ここまでのケーススタディを踏まえて、APIとは何なのかを説明していきます。
2-1. APIとは何か、今なら分かる
APIを、簡単に説明すると「決まった方法でアクセスをすれば決まった結果を返してくれるもの」です。
先のケーススタディでいうと、URLの末尾にzipcode=郵便番号でアクセスすると、住所を決まった形式で返してくれるのです。一般的にはJSONという形式で結果が返ります。郵便番号の例もJSON形式です。
どこからでもアクセスできる口を開けておき、決まった形式でアクセスを受け付けて、仕様通りの結果を返すインターフェースとなるのがAPIです。APIという単語は、Application Programing Interfaceの略なのも、何となく分かる気がしますね。
2-2. APIを使うメリット
再びケーススタディへと戻り、自前開発する場合のデメリットがAPIによってどのように解消されるかを考えてみます。
< 開発費の問題 >
APIを動かすための実装は必要になりますが、自前でDB内にデータを入れるテーブルを作ったり、データをメンテできる処理を作ったりするほどの工数はかかりません。
< 負荷の問題 >
DBにアクセスする必要はないし、実データは持たないのでディスク容量を圧迫することはありません。結果が返るまでのレスポンスが遅ければ、それはAPIの所有者側の問題となるので対応する必要はありません。
<運用の問題>
郵便番号辞書はAPIの所有者側で管理するので、使う側は辞書の変更に対して何もする必要はありません。APIを使う側は、APIの背後にあるインフラを意識する必要はないのです。ただ使う、それだけです。
APIの種類はさまざま
今までは郵便番号について解説してきましたが、世の中にはまだまだ多くのAPIがあります。今度は楽天APIを使ってみましょう。
3-1. 楽天APIを使ってみる
楽天はAPI経由でアクセス可能です。こちら(https://webservice.rakuten.co.jp/document/)のサイトをご覧ください。
(図5_RakutenDevelopers)
楽天ブックスや楽天トラベルもAPI経由でアクセスできますが、ここでは一番オーソドックスな「楽天市場商品検索API」を使ってみましょう。先のURLにアクセスし、さらに楽天市場商品検索APIの「テストフォーム」という青いボタンをクリックしてください。
ここで諸条件を入力し、検索してみましょう。検索条件はキーワードで、検索ワードを「マスク」と設定し検索すると、郵便番号のときと同じようにJSONで結果が返ります。
一方で、ブラウザから普通に楽天へアクセスし、商品検索キーワードを同じく「マスク」として検索してください。普通に商品検索画面が表示されます。
左側がAPIから返ってきた内容、右側がブラウザで表示された内容です。両者とも検索結果が同じことが分かります。
(図6_楽天APIと楽天ウェブサイトの比較)
3-2. サービスあるところにAPIあり
今まで郵便番号検索と楽天を見てきましたが、APIはもっとたくさんあります。天気、ニュースなどなどです。ネット上でお気に入りのサービスがあれば、そのサービスを外から使うためのAPIがないか、検索してみても面白いでしょう。
まとめ
本記事では、APIとは何かを解説しました。実際に手を動かしたり、お気に入りのサイトにAPIがないか調べてみたりして、さらに理解を深めてくださいね!
- カテゴリ:
- プログラミング