API(WebAPI)とは何でしょうか?
APIとはApplication programming interfaceの略で…、というのは他のサイトでよく見る解説です。でも、この記事にたどり着いた方は、そんな解説が正直よく分からなかった方ではないでしょうか?
技術的に詳細を語ればキリがないAPIですが、ここではITに詳しくない方向けにザックリと解説してみます。本記事を読み終わる頃には、APIとは何かについて、ばっちりイメージできていますよ!
APIとは?
APIとは何か、今なら分かる
APIを、簡単に説明すると「決まった方法でアクセスをすれば決まった結果を返してくれるもの」です。
どこからでもアクセスできる口を開けておき、決まった形式でアクセスを受け付けて、仕様通りの結果を返すインターフェースとなるのがAPIです。APIという単語は、Application Programing Interfaceの略なのも、何となく分かる気がしますね。
インターフェースとは、何かしらの「境界面」「接点」のことを指し、異なる2つの事物の間をつなぐという意味を持ちます。たとえばキーボードやマウス、ディスプレイは人間とコンピューターの境界上で使われる「ユーザーインターフェース」の1つとして知られます。また、USBやHDMIといった、機械と機械をつなぐコネクターは「ハードウェアインターフェース」と呼ばれます。
APIは、主にソフトウェアやプログラム同士をつないでいるインターフェースのことなのです。
ユーザーがサービスを使う際にAPIの存在を意識することはあまりありません。しかしその裏では、実はAPIは幅広く使われています。
たとえばニュースサイトにGoogleアカウントでログインする際にはグーグルのAPIによってログイン情報が暗号化して認証されています。また、電子マネーで買い物する際には、決済代行サービスのAPIによって電子マネーの決済情報をやり取りされているのです。
APIを使うメリット
再びケーススタディへと戻り、自前開発する場合のデメリットがAPIによってどのように解消されるかを考えてみます。
< 開発費の問題 >(コストが削減できる)
APIを動かすための実装は必要になりますが、自前でDB内にデータを入れるテーブルを作ったり、データをメンテできる処理を作ったりするほどの工数はかかりません。
< 負荷の問題 >(パフォーマンスの向上)
DBにアクセスする必要はないし、実データは持たないのでディスク容量を圧迫することはありません。結果が返るまでのレスポンスが遅ければ、それはAPIの所有者側の問題となるので対応する必要はありません。
<運用の問題>(利便性)
郵便番号辞書はAPIの所有者側で管理するので、使う側は辞書の変更に対して何もする必要はありません。APIを使う側は、APIの背後にあるインフラを意識する必要はないのです。ただ使う、それだけです。
APIの仕組みとは
APIでソフトウェア同士をつなぐ、「API連携」の仕組みをもう少し掘り下げてみましょう。
APIの基本的なプロセスは「リクエスト(要求)」と「レスポンス(応答)」で構成されます。リクエストをするのがAPI利用者で、レスポンスをするのがAPIの提供者です。リクエストとレスポンスに関するルールはAPIの提供者が定めます。つまり、何のリクエストに対してどんなレスポンスを返すかということを提供者がAPIの設計段階で考え、実装し、利用可能な状態にします。この設計次第でAPIのリクエストとレスポンスの関係は大きく変わるので、「APIは〇〇をしてくれるもの」という決まりはありません。
少し具体的にAPIの利用シーンをイメージしてみましょう。私達はネットショッピングをする際にクレジットカード番号を打ち込みますが、番号・名前・期限・セキュリティコードなどの情報が安全性の低いネットショップのサーバに保管されると第三者に悪用される恐れがあります。そこでネットショップでは、カード会社が提供しているAPIが使われています。
ネットショップはAPIを通して「これからお客さまがカード情報を入力するから確認してくれ」と要求します。顧客によって打ち込まれた情報はネットショップを通さず、直接カード会社のサーバに届き、情報が確認され、ネットショップ宛に「カードを確認した。決済は完了」という連絡だけが送られます。ネットショップはカード情報を管理することなく決済が確認できるので、顧客は安全に買い物ができるようになり、ショップのサーバ管理コストも最低限に抑えられるというわけです。
上記例のネットショップのように、自社サービスでAPIを利用するのは簡単です。ルールに沿ってコードを書いて「この情報をくれ」「こういう動作をしてくれ」と要求するだけです。場合によっては利用者を識別するためのIDなどを送ることもありますが、公開されているAPIの多くが「誰にでも使える」状態になっています。APIを使うこと自体はそこまで難しくないのです 。
APIの利用プロセスは役所や商店の「窓口」と似ています。APIを通して「何をしてほしいか」を仕様(申込用紙)に沿って記述し、APIの提供元にその要求を送信します。ルールに則って必要事項が書かれていれば、APIを提供するサービスやソフトウェアが要求を処理し、その結果を返答します。
APIの仕組み
APIを利用すれば、自分は何もせずにAPIに要求を送るだけで、「ある種の高度な情報処理や分析が実行するプログラム」さえ作れてしまうのです。
ただ、当たり前ですが、APIの定めた仕様で想定されていないことはできません。これは「問い合わせフォームに項目のないもの」「申請書に記入できないもの」「書式に則っていないもの」が受け付けられないのと同じです。
最初の段階でAPIの提供者が、サービスの利用範囲を決めているので、それ以外のことはできないようになっています。もし、APIのルールを破って想定されていない使い方をしたり、バグを利用したりすれば、それは不正利用、ハッキングとなる可能性があります。
一方で、APIを提供するのは簡単ではありません。APIは自社のサービスやプログラムを他人に使わせる仕組みを作るものです。どこまで使わせるか、どうやって使わせるか、どうデータやプログラムの利用に制限をかけ、安全に運用するか。一歩間違えればAPIの不正利用によってデータが流出したり、予期せぬ損害を自他に与えたり、信頼を損なう可能性があります。APIを提供するには慎重なAPIの設計が必要です。
Web APIとは何か
WebAPIとは、ここまで説明してきた、API提供者とAPI利用者とのやりとりをHTTP/HTTPSベースで実現するAPIのことです。「Web」ではないAPIは通常、API利用者が用いるプログラミング言語と同じ言語で提供されることが多いのですが、一方Web APIはHTTP/HTTPSベースのAPIであるため、異なるプログラミング言語で開発されたアプリケーション間を連携させることが可能になります。さらにWebブラウザでも利用できるなど、他のAPIよりも汎用(はんよう)的に利用できるというメリットもあります。
Web APIの代表的な実装方式として、RESTとSOAPが存在します。
APIの種類はさまざま
今までは郵便番号について解説してきましたが、世の中にはまだまだ多くのAPIがあります。今度は楽天APIを使ってみましょう。
楽天WEBAPIを使ってみる
楽天はWEBAPI経由でアクセス可能です。こちら(https://webservice.rakuten.co.jp/document/)のサイトをご覧ください。
(図5_RakutenDevelopers)
楽天ブックスや楽天トラベルもAPI経由でアクセスできますが、ここでは一番オーソドックスな「楽天市場商品検索API」を使ってみましょう。先のURLにアクセスし、さらに楽天市場商品検索APIの「テストフォーム」という青いボタンをクリックしてください。
ここで諸条件を入力し、検索してみましょう。検索条件はキーワードで、検索ワードを「マスク」と設定し検索すると、郵便番号のときと同じようにJSONで結果が返ります。
一方で、ブラウザから普通に楽天へアクセスし、商品検索キーワードを同じく「マスク」として検索してください。普通に商品検索画面が表示されます。
左側がAPIから返ってきた内容、右側がブラウザで表示された内容です。両者とも検索結果が同じことが分かります。
(図6_楽天APIと楽天ウェブサイトの比較)
サービスあるところにAPIあり
今まで郵便番号検索と楽天を見てきましたが、APIはもっとたくさんあります。天気、ニュースなどなどです。ネット上でお気に入りのサービスがあれば、そのサービスを外から使うためのAPIがないか、検索してみても面白いでしょう。
その他の代表的なAPI(API連携で利用できる機能)
Amazon
「商品の最新情報の表示」「1日あたりの販売額・紹介料の推移の把握」「AWS(アマゾン・ウェブ・サービス)」などがあります。これらは、Amazonを通した出品やアフィリエイト運用などに活用できます。
代表的なAPIは「Gmail」「Google Analytics」「Google Cloud 」などがあります。Googleは世界中の情報を整理し、世界中の人がアクセスできて使えるようにするという企業使命を元に、多くのAPIを無料で公開しています。GoogleのAPIを上手く活用することで集客、サイト運営、情報管理などを効率化を実現できます。
LINE
「Lineログイン」「Social API v2.1」「LINE Messaging API」などがあります。これらは、人々のコミュニケーションのツールとしてよく使われていますが、最近ではビジネスの場でも良く使われています。
YouTube
「動画の制御」「動画の効果測定」「チャネルのデータの一括取得」などがあります。API連携により自らのソフトウェアでこのような分析ができるようになると、集客において競合と差をつけやすくなります。
ケーススタディ:あなたはWebサイト担当者
まずAPIそのものではなく、APIの活用シーンから見ていきましょう。
ケーススタディとして、あなたはWebサイトの運用・開発担当者で、かつプログラマとしてではなく管理者としてWebサイトにたずさわる人であると想定します。
ある日、上司からこんなことを言われたらどうしますか?
郵便番号から住所を表示してくれる?(From上司)
「キミが担当しているサイト、ちょっと使ってみたよ。ユーザ登録のときに、郵便番号を入力させるクセに、住所は都道府県から町名まで全部手入力なんだよね。自動で表示できないの?」
一瞬なんやねんと思いますが、よくよく考えてみればそのとおりです。郵便番号が決まれば都道府県から市区町村あたりまで決まるので、むしろユーザに住所を手入力させる方が危険かもしれません。
そこで、郵便番号を入力したら市区町村以降を自動で表示させる仕組みを検討するものの、いろいろと問題が立ちはだかります。
予算に余裕はありません(開発費の問題)
すでに運用が始まっているシステムでは、機能を追加するための予算はそうそう下りません。上司の○○さんが言ったから、ではダメなのです。利益の増収が見込めるか、あるいはユーザにとって何らかのメリットがあるか、それなりの理由とそれに見合った予算承認が必要です。
仮にこの機能を実装するにしても、住所を入力させるところは何箇所もあったりします。どこか1箇所だけ実装を入れるというわけにもいきません。やるとすればサイト内の住所を入力するところすべてです。住所入力の数だけ費用がかかるのはキツいですね。
郵便番号、全部で何件ある?(負荷の問題)
このようなケースでは、必要なデータをマスタ化するのが一般的です。そこであなたはこう思うことでしょう。
「郵便番号ってダウンロードできるのかな?それって容量的にどれくらい?」
そして「郵便番号 ダウンロード」でググってみます。すると見事にピッタリの日本郵便のホームページ(https://www.post.japanpost.jp/zipcode/dl/kogaki-zip.html)がヒットします。
(図1_日本郵便ページ)
CSVファイルをZIP圧縮したものがダウンロードできるので、それを開いて見てみると・・・
(図2_CSVデータを開いてみる)
その数、何と12万件!郵便番号って結構多いですね。これでは、どれだけDBでインデックスを張っても、それなりの検索時間がかかりそうです。
運用できる?(運用の問題)
さらに下を見ると、もう一つの問題があります。更新の頻度の問題です。
(図3_更新の頻度)
意外ですね、毎月日本のどこかで住所が変わっているようです。これでは毎月更新しなくてはなりません。いくらバッチ処理で実装するにしても、毎月だれかがダウンロードして取り込み処理を実行するのは面倒、しかもその人が忘れていたら・・・と考えると何かと大変ですよね。
API使いましょうよ!
悩むあなたに、エンジニアが声をかけます。
「API使いましょうよ、カンタンでメンテはいらないし」
あなたは「APIって何!?」と思い、ブラウザのURLの欄にエンジニアから教えてもらったURLを入力し、恐る恐るEnterキーを叩きます。URLは以下です。
https://zipcloud.ibsnet.co.jp/api/search?zipcode=3306032
すると、文字だけながら以下の結果が返ってきます。
(図4_APIからのレスポンス)
おおっ!!それらしい結果が返ってきました。この結果を取得して、住所の入力欄に入れることができたら…、最高です。
こうしてあなたは、郵便番号から住所を得る方法を知りました。早速明日の会議で提案してみたくなるでしょう!
まとめ
本記事では、APIとは何かを解説しました。実際に手を動かしたり、お気に入りのサイトにAPIがないか調べてみたりして、さらに理解を深めてくださいね!
-----参考情報-----
■TV出演動画:ええじゃない課Biz(2022/05/29 放送 TOKYO MX)
アンタッチャブル柴田さん、アルコ&ピースさんがレギュラーのビジネス情報番組「ええじゃない課Biz」にて、プログラミングスキル判定サービス「TOPSIC」と企業・学校対抗プログラミングコンテスト「PG BATTLE」のご紹介をさせていただきました。5分位の動画ですので、ぜひご覧くださいませ。
- カテゴリ: