APIとは何か?をできる限りわかりやすく説明したい | 瀬戸内の雲のように

APIとは何か?をできる限りわかりやすく説明したい

Posted: 2019-01-15


スポンサーリンク

目次

はじめに

本ブログでも何度もAPIについて触れてきましたが、改めてAPIとはなんぞや?ということを説明したいと思います。
本記事の対象は初心者エンジニアです。基本的な技術の用語がわかる方向けになっています。
関連記事: REST APIとは何か?をできる限りわかりやすく説明したい
 

読み方

まず超基本から。APIと書いて エーピーアイ と読みます。
なお、これは Application Programming Interface の頭文字を取ったものです。

 

広義のAPI

ウィキペディア様によると、広義の意味では

アプリケーションプログラミングインタフェース(API、英: Application Programming Interface)とは、広義の意味ではソフトウェアコンポーネントが互いにやりとりするのに使用するインタフェースの仕様である。

ということです。平たく言うと、プログラミングをする際に使う各コンポーネント同士でやり取りする仕様 のような意味かと思います。
具体的な例で言えば、関数の入力値/出力値の仕様 のようなものでしょうか。

さて、この説明であなたが知りたかったAPIのことがわかりましたでしょうか。

恐らく2019年現在に「API」と言った時、上記の説明では理解できないかと思います。

なぜなら、現在の「API」が意味するところは ウェブAPI が多いからです。

 

ウェブAPIとは

ではウェブAPIとはなんでしょうか。私の理解を端的に説明すると、

ウェブAPI = HTTP(S)を使って製品やサービスを操作するインターフェイス

だと思います。

 

(補足)インターフェイスとは

ついでと言ってはあれですが、先程から出ているインターフェイスという言葉も説明しておきましょう。(ウィキペディアの引用)

英語で界面や接触面、中間面などといった意味を持ち、転じてコンピュータと周辺機器の接続部分を表すようになった。さらに、ユーザーインターフェースなどのように、人間と自動機械との間の複雑な操作をする手順・規則との意味にも使われる。

引用元: wikipedia

これはつまり、ある製品やサービス に対して この情報をくれればこういう情報を返しますよ という 規則(仕様) のことです。

 
具体例で言うと、例えば最近多い保険の相談窓口などでは、年齢や収入、既存の保険の情報・家族の状況・ライフイベントなどを伝えると最適な保険を教えてくれます。

なので、保険相談窓口のインターフェイス仕様を表すと

項目
サービス 保険相談窓口サービス
言語 日本語
インプット 年齢・収入・既存の保険の情報・家族の状況・ライフイベント
アウトプット 最適な保険

のように表現できるかと思います。

 

ウェブAPIとは(続き)

話がそれましたが、ウェブAPIを一言で言うと、

サービスや製品を操作するインターフェイスウェブ上で かつ プログラミングしやすい形式 で提供するもの

と言えるかと思います。

 
この中で最も重要なのは、 プログラミングしやすい形式 と言う点です。

 

プログラミングしやすいとは

実は、ウェブAPIの特徴のうちの前2つ、つまり サービスや製品を操作するインターフェイスウェブ上で と言う部分だけであればAPIではなくても提供されています。いわゆる GUI (Graphical User Interface) と言うものです。

先ほど例に上げた保険相談窓口サービスであれば、ネット保険などではウェブ画面上で必要な情報を入力すれば簡易な見積もりを行なってくれると言うサービスはたくさんあるかと思います。

 

GUIとウェブAPIの違い

このGUIは人間が操作する場合には直感的でわかりやすいですが、機械が操作する場合、つまりプログラミングする場合にはあまり向いていません。そもそも人間が使いやすいことを目的としているので当然ですが。
(なぜプログラミングしづらいかは後ほど説明します)

プログラミングしやすい とは つまり機械的に処理しやすいと言うことなのですが、一般的なウェブAPIでは json もしくは XML と言う方式でデータを表現しています。

これに対してGUIでは HTML と言う方式で情報を表現します。端的に言えば、GUIとウェブAPIの違いは、この 情報(データ)の表現方法 だけと言えます。

 

データの表現方法の例

具体的にどのように違うのかを例に示します。内容は先ほどもあった保険相談窓口サービスです。
(なお最近のウェブAPIではjsonが使われることがほとんどなのでXMLは割愛します)

HTML(GUI)の表現方法
※GUIで表示するウェブページのソースコードの例です

<h1>保険診断結果</h1>
<p>あなたに最適な保険は以下の通りです。</p>
<h2>××生命保険</h2>
<a href="https://marumaruhoken.co.jp/batsubatsu">詳細はこちら</a>
<h3>特徴<h3>
<br>
この保険は30代のサラリーマンにぴったりの保険です
<h3>価格</h3>
<br>
月々3000円

 
jsonの表現方法

{"insurance": 
  {
    "name": "××生命保険",
    "price": "3000円"
    "detail": "https://marumaruhoken.co.jp/batsubatsu"
  }
}

 
上記のようにjsonはデータの表現方法がシンプルで、必要な情報を取得しやすいのが特徴です。

それに対してHTMLは人間が見やすいことを目的としているので、データの表現方法に幅を持たせることができるため機械的に処理するのが逆に難しいと言う違いがあります。

 

他のインターフェイスとの比較

ここまで色々説明してきた通り、APIとはインターフェイスの一種であり、プログラミングのしやすさを重視したものです。
ここで理解を深めるために、他のインターフェイスとの比較をしてみます。

 

他のインターフェイスの種類

いろいろありますが、エンジニアが主に触るのは以下の3つでしょう。

略称 読み方 特徴 用途
CLI Command Line Interface テキストベースであること。基本的にシステムへのログインが必要 システム管理者向け
GUI Graphical User Interface グラフィカルな表示であること ユーザー向け
API Application Proggraming Interface プログラミングしやすいようデータの取得が容易 機械(プログラム)向け

ざっくり分類すると、このようになるかと思います。
次にそれぞれの具体例を示します。例は先程と同様 保険相談窓口サービス です。

 

CLIの場合

例えばデータベースに保険の情報が入っている場合を想定すると、こんな感じで表現できるかと思います。

SQL> select name,price from insurance where target_age = 30 and salary = 5000000 and families = 4;
| name  | price  |
------------------
| ××保険 | 3000  |

SQLを扱ったことがある方はこのような表示を見たことがあるかと思います。
このようにあるシステムにログインし、情報をテキストベースで表示するものがCLIです

 

GUIの場合

これは先程も例を示しましたが、以下のようなウェブ画面になるかと思います。
 
picture

このように情報を人間に見やすく表示させたものがGUIです。

 

APIの場合

これも先程示した通りなのですが、

{"insurance": 
  {
    "name": "××生命保険",
    "price": "3000円"
    "detail": "https://marumaruhoken.co.jp/batsubatsu"
  }
}

このようにjsonやXMLなど機械に処理しやすい形式で表示するものがAPIです。

 

まとめ

3つの例を見ておわかり頂けるかと思いますが、どれも 情報の中身(保険名・価格等の情報)はほぼ同じ であることがわかるかと思います。

このように、各インターフェイスの違いは 情報の表現方法 だけであり、実際に伝える中身は同じなのです。
各インターフェイスの違いというのは、用途や目的から来ており、APIの場合は機械に対してわかりやすいことを目的としている というわけです。

 

全体まとめ

内容をまとめますと、

  • APIはインターフェイスの一種であり、機械(プログラミング)に向いている情報の表現方法
  • 2019年現在では、より狭義にウェブAPIのことを指す場合が多い

また、ウェブAPIとは

  • json(もしくはXML)という機械にわかりやすい形式で表現されたデータを
  • HTTPという通信のルールでやり取りされる
  • インターフェイスの仕様のこと

となります。


スポンサーリンク




コメント一覧


コメントを投稿する


お名前


コメント内容





TOP back