MENU
なお
じゃぱざむ運営主
20歳 | WEBメディアの会社で部長をやりながら、じゃぱざむ・特化メディア・WEB制作~コンサル・SEOディレクター・投資・就活相談など幅広くやっています。
いまい
エンジニア志望の大学生
21歳 | 理系の大学3年生|Webアプリ開発を勉強中。クラウド系の自社開発企業に内定。じゃぱざむでは、IT系記事の執筆とアイキャッチ画像の作成をしています。
【完全ガイド】大学生でもプログラミングで稼ぎ始めるためのロードマップ

APIとは?具体例を挙げてわかりやすく解説!

記事上バナー
テックキャンプの記事上バナー
レイズテックの記事上バナー
テックブーストの記事上バナー
  • APIとは何か?
  • APIの使い方の具体例
  • NHK番組表APIの使い方(C++)
  • Google Maps APIの使い方(Python)

(2020/10/4 PythonでのAPIの使用例を追記しました。)

いまいのアイコン画像いまい
こんにちは!
今井(@ima_maru)です。

今回は、プログラミングにおいて欠かせない存在の「API」について解説していきます。

まずは、「API」とは何なのかをわかりやすく解説します。

そして、実際にAPIというものを使ってみて、具体的なイメージをつかんでいただけたらと思います。

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

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

また、Google Maps APIの利用例も紹介しています。

それでは見ていきましょう!

タップして好きなところから読めます

API(Application Programming Interface)とは?

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

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

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

インターフェースとは

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

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

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

これらの機能をTwitter APIとして用意されています。

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

これらの機能をWindows APIとして用意されています。

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

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

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

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

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

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

「HTTPリクエスト」と「HTTPレスポンス」 | ITSakura

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

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

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

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

(2020/10/4 プログラミング言語「Python」によるGoogle Maps APIの使用例を追記しました。)

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

今回は、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) – Qiita

C++11でjsonを扱う方法。json11 – Qiita

[codebox title=”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;
}

[/codebox]

[codebox title=”実行結果”]

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:      譌・譛ャ縺ョ隧ア闃ク縲€荳蛾♀莠ュ驕贋ク峨€€關ス隱槭€悟ョソ螻九・蟇後€

...

[/codebox]

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

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

Google Maps APIを実際に使ってみた!(Python)

文字化けが悲しかったので、Pythonで再チャレンジしました。(2020/10/4)

登録の説明などは省きますが、Google Maps APIを使ってみます。

Overview  |  Places API  |  Google Developers

Pythonプログラムはこちらです。

[codebox title=”Python”]

import requests
import json

#APIのベースURL
base = 'https://maps.googleapis.com/maps/api/place/textsearch/json'
#検索したいワード
query = '新宿+マクドナルド'
#自分のAPIキー
key = '自分のAPIキー'

#リクエスト用URL
url = '{}?query={}&key={}&language=ja'.format(base, query, key)
#レスポンス
res = requests.get(url)
#jsonデータを解析
json_data = json.loads(res.content)
#結果だけを抽出
data = json_data['results']

#順位ごとに表示
for i in range(len(data)):    
    print('{}位:{}'.format(i+1, data[i]['name']))

[/codebox]

そして実行結果がこちら。

[codebox title=”実行結果”]

1位:マクドナルド 新宿西口店
2位:マクドナルド JR新宿南口店
3位:マクドナルド 西武新宿駅前店
4位:マクドナルド 西新宿駅前店  
5位:マクドナルド 東新宿駅前店  
6位:マクドナルド 西新宿5丁目店
7位:マクドナルド 南新宿店
8位:マクドナルド 明治通り新宿ステパ店
9位:マクドナルド 新大久保店
10位:マクドナルド 高田馬場駅前店
11位:マクドナルド 落合店
12位:マクドナルド 市ケ谷店
13位:マクドナルド 早稲田駅前店
14位:マクドナルド 落合南長崎店
15位:マクドナルド 代々木店
16位:日本マクドナルド(株) 本社
17位:マクドナルド 中野坂上店
18位:マクドナルド 初台店
19位:日本マクドナルドホールディングス株式会社
20位:マクドナルド 池袋東口店

[/codebox]

いい感じに取れてますね。

やはりAPIを使うときは、C++を使うより、Pythonなどのサクっと書けるプログラミング言語を使ったほうが楽でした。

まとめ

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

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

以上「APIとは?具体例を挙げてわかりやすく解説!」でした!

いまいのアイコン画像いまい
最後までご覧いただきありがとうございます。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
タップして好きなところから読めます
閉じる