Amazonで利用すべきコスパ最高のサービス一覧

APIとはなにか?実際にプログラミングしてAPIを使ってみる!

今井

こんにちは!
今井(@ima_maru)です。

今回は、大学の授業でAPIについて触れたので、アウトプットついでに記事を書こうと思います。

この記事では、「NHK番組表API」を利用し、プログラミングをして情報を取得するところまでやります。

APIを使うための登録から利用までの流れを簡単に解説しようと思います。

この記事はこんな方にオススメ!
  • APIとは何かを知りたい方!
  • APIの使い方を知りたい方!

それでは解説していきます!

API(Application Programming Interface)とは?

APIとは、Application Programming Interfaceの頭文字をとった言葉です。

そのまま意味をとれば「アプリケーションとプログラミングのインターフェース」ということです。

インターフェースとは、何かと何かの「接合部」「つなぎ目」「情報の受け渡し口」など様々なニュアンスでとられる言葉です。

参考 インターフェースとは「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

なので、今回は、アプリケーションとプログラミングの情報の受け渡し口としましょうか。

この受け渡し口には、Webアプリケーションやソフトウェアの一部の機能が用意され使えるようになっています

WebアプリケーションのTwitterでは、APIとして「最新のツイート情報を取得する機能」「任意のツイートを投稿する機能」などが用意されています。

また、OSのWindowsでは、「特定のメモリ領域を読み取る機能」「ミリ秒単位でスリープを挟む機能」などが用意されています。

前者は「Twitter API」と呼ばれ、後者は「Windows API」と呼ばれます。

ほかにも、「YouTube API」「Google Maps API」「LINE Messaging API」といったAPIがいくらでもあげられます。

そしてこれらAPIは、サービスをユーザーやほかのウェブサイトに利用してもらうために、プログラムの機能の一部を公開し利用できるようにしているのです。

「リクエスト」と「レスポンス」

APIを使うのであれば、「リクエスト」と「レスポンス」という言葉を知っていたほうが良いでしょう。

「リクエスト」:何らかの要求
「レスポンス」:リクエストへの返答

詳しく知りたいという方はこちらのサイト様でご確認ください。

参考 「HTTPリクエスト」と「HTTPレスポンス」 | ITSakura取得できませんでした

実際にAPIをプログラミング使う!

APIはこういうものだと言葉で説明するより、どんな感じで使うのかを見ていただいたほうがわかりやすいと思います。

この記事では、私が大学の授業で使った「NHK番組表API」を使います。

また、プログラミング言語「C++」でやりますので、ほかの言語を使っている方のために、いろいろ参考サイトを張っておきますね。

NHKの番組表のAPIを実際に使ってみた!

今回は、NHKの番組表の情報を取得できる「NHK番組表API」を使ってみます。

このAPIに限らず、ほかのAPIでも同様の手順だと思うので、ぜひ参考にしてみてください。

用意されたAPIの使用方法・注意をよく見る

APIアプリケーションの開発者側が用意してくれている機能です。

1日の利用回数や使い方はしっかりと守って使いましょう。

ここでは以下のAPIを使います。

リクエスト制限認証がありますね。

APIを使うためには基本的にAPIの利用者登録が必要です。

次に進みましょう。

APIを使うために利用者登録をする

先ほど見たように、NHK番組表APIを使うためには、新規登録をして「APIキー」を取得する必要があるようです。

なので新規登録をします。

新規登録をして、少し設定をすると、このように表示されました。

これで登録が完了です。

この「APIキー」と呼ばれるものが、APIの利用者を識別するキーであり、ログインキーのようなものになります。

では、APIの機能を確認してみます。

取得したAPIキーを使ってリクエストを投げる

先ほど取得したAPIキーを使って、指定されたURLにリクエストを投げると、APIの機能を確認することができます。

一度プログラミングをする前に、ブラウザで指定されたURLにアクセスしてみましょう。

検索バーにURLを書いてENTERを押せばOKです。APIキーは隠してあります。

そうすると、なにやら番組情報のデータが出てきます↓

私のブラウザにはJSON Viewというプラグインが入っていて、JSON形式のデータをきれいにみることができるのですが、これを外すとこんな感じ。

これが、リクエストを投げた時に返ってくる情報、つまりレスポンスになります。

あとは、ブラウザがやったように、HTTPリクエストを投げるプログラムを組んであげれば、これと同じレスポンスが返ってくるはずです。

実際にAPIをプログラミングで使ってみます。

実際にプログラミングをしてAPIを利用する

今回はプログラミング言語「C++」を用います。またライブラリとして、

「curl」:HTTPのライブラリ
「json11」:jsonデータ用のライブラリ

この二つを用いて処理しています。(ほかの言語のほうが簡単そう)

ライブラリの実装部分は省いているので、詳しく知りたい方は以下のサイト様よりどうぞ。

参考 C++ の http クライアントの使い方 (Get) - QiitaQiita 参考 C++11でjsonを扱う方法。json11 - QiitaQiita
C++
#include <string>
#include <iostream> 
#include <curl/curl.h>
#include "curl.h"
#include "json11.h"

#define API_KEY ここは自分のAPIキー

using namespace std;

int main(int argc, char* argv[])
{
  //HTTPリクエストでAPIを叩く
  char url_target[] =
    "https://api.nhk.or.jp/v2/pg/list/130/g1/2020-03-28.json?key=API_KEY";
  string api_response = url_get_proc(url_target);

  //レスポンスとして返ってきたJSONファイルを処理
  string err;
  auto json = json11::Json::parse(api_response, err);

  //番組情報の表示
  for (auto& info : json["list"]["g1"].array_items()) {
    cout << "id:         " << info["id"].string_value() << endl;
    cout << "event_id:   " << info["event_id"].string_value() << endl;
    cout << "start_time: " << info["start_time"].string_value() << endl;
    cout << "end_time:   " << info["end_time"].string_value() << endl;
    cout << "title:      " << info["title"].string_value() << endl;
    cout << endl;
  }

  return 0;
}
実行結果
id:         2020032830961
event_id:   30961
start_time: 2020-03-28T04:08:00+09:00
end_time:   2020-03-28T04:15:00+09:00
title:      縺ソ繧薙↑縺ョ縺・◆縲鯉シ悶&縺・・縺ー繧峨・縺ゥ縲阪€悟・騾「縺医k縺」縺ヲ縺・>縺ュ縲

id:         2020032830965
event_id:   30965
start_time: 2020-03-28T04:15:00+09:00
end_time:   2020-03-28T04:30:00+09:00
title:      蜈医←繧翫€€縺阪g縺・・蛛・蠎キ縲悟ソ・∮逞・€€譛€譁ー諠・ア縲€蠢・ク榊・縲€遏・縺」縺ヲ縺・∪縺吶°・溘€

id:         2020032830966
event_id:   30966
start_time: 2020-03-28T04:30:00+09:00
end_time:   2020-03-28T04:59:00+09:00
title:      譌・譛ャ縺ョ隧ア闃ク縲€荳蛾♀莠ュ驕贋ク峨€€關ス隱槭€悟ョソ螻九・蟇後€

...

文字化けしてしまいましたが、NHK番組表APIを使用してデータを取得することができました

この情報を使って、見やすい番組表のアプリを作るなり、自分の好きな俳優が出ている番組だけをピックアップしたりといった使い方ができると思います。

まとめ

このように、アプリケーションとプログラムの接合部となるのがAPIであり、APIを用意してくれているとそれを使ってほかの人が外部アプリケーションの開発を行うことができるようになります

今回は「NHK番組表API」を使いましたが、TwitterやYouTubeなどいろんなWebアプリケーションでも用意されているので、興味があればぜひ使ってみてください。

以上「APIとはなにか?実際にプログラミングしてAPIを使ってみる!」でした!

今井

最後までご覧いただきありがとうございます。