スポンサーリンク
本ブログでも何度もAPIについて触れてきましたが、改めてAPIとはなんぞや?ということを説明したいと思います。
本記事の対象は初心者エンジニアです。基本的な技術の用語がわかる方向けになっています。
関連記事: REST APIとは何か?をできる限りわかりやすく説明したい
まず超基本から。APIと書いて エーピーアイ
と読みます。
なお、これは Application Programming Interface
の頭文字を取ったものです。
ウィキペディア様によると、広義の意味では
アプリケーションプログラミングインタフェース(API、英: Application Programming Interface)とは、広義の意味ではソフトウェアコンポーネントが互いにやりとりするのに使用するインタフェースの仕様である。
ということです。平たく言うと、プログラミングをする際に使う各コンポーネント同士でやり取りする仕様
のような意味かと思います。
具体的な例で言えば、関数の入力値/出力値の仕様
のようなものでしょうか。
さて、この説明であなたが知りたかったAPIのことがわかりましたでしょうか。
恐らく2019年現在に「API」と言った時、上記の説明では理解できないかと思います。
なぜなら、現在の「API」が意味するところは ウェブAPI
が多いからです。
ではウェブAPIとはなんでしょうか。私の理解を端的に説明すると、
ウェブAPI = HTTP(S)を使って製品やサービスを操作するインターフェイス
だと思います。
ついでと言ってはあれですが、先程から出ているインターフェイスという言葉も説明しておきましょう。(ウィキペディアの引用)
英語で界面や接触面、中間面などといった意味を持ち、転じてコンピュータと周辺機器の接続部分を表すようになった。さらに、ユーザーインターフェースなどのように、人間と自動機械との間の複雑な操作をする手順・規則との意味にも使われる。
これはつまり、ある製品やサービス
に対して この情報をくれればこういう情報を返しますよ
という 規則(仕様)
のことです。
具体例で言うと、例えば最近多い保険の相談窓口などでは、年齢や収入、既存の保険の情報・家族の状況・ライフイベントなどを伝えると最適な保険を教えてくれます。
なので、保険相談窓口のインターフェイス仕様を表すと
項目 | 値 |
---|---|
サービス | 保険相談窓口サービス |
言語 | 日本語 |
インプット | 年齢・収入・既存の保険の情報・家族の状況・ライフイベント |
アウトプット | 最適な保険 |
のように表現できるかと思います。
話がそれましたが、ウェブAPIを一言で言うと、
サービスや製品を操作するインターフェイス
を ウェブ上で
かつ プログラミングしやすい形式
で提供するもの
と言えるかと思います。
この中で最も重要なのは、 プログラミングしやすい形式
と言う点です。
実は、ウェブAPIの特徴のうちの前2つ、つまり サービスや製品を操作するインターフェイス
を ウェブ上で
と言う部分だけであればAPIではなくても提供されています。いわゆる GUI (Graphical User Interface)
と言うものです。
先ほど例に上げた保険相談窓口サービスであれば、ネット保険などではウェブ画面上で必要な情報を入力すれば簡易な見積もりを行なってくれると言うサービスはたくさんあるかと思います。
この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 | プログラミングしやすいようデータの取得が容易 | 機械(プログラム)向け |
ざっくり分類すると、このようになるかと思います。
次にそれぞれの具体例を示します。例は先程と同様 保険相談窓口サービス です。
例えばデータベースに保険の情報が入っている場合を想定すると、こんな感じで表現できるかと思います。
SQL> select name,price from insurance where target_age = 30 and salary = 5000000 and families = 4;
| name | price |
------------------
| ××保険 | 3000 |
SQLを扱ったことがある方はこのような表示を見たことがあるかと思います。
このようにあるシステムにログインし、情報をテキストベースで表示するものがCLIです
これは先程も例を示しましたが、以下のようなウェブ画面になるかと思います。
このように情報を人間に見やすく表示させたものがGUIです。
これも先程示した通りなのですが、
{"insurance":
{
"name": "××生命保険",
"price": "3000円"
"detail": "https://marumaruhoken.co.jp/batsubatsu"
}
}
このようにjsonやXMLなど機械に処理しやすい形式で表示するものがAPIです。
3つの例を見ておわかり頂けるかと思いますが、どれも 情報の中身(保険名・価格等の情報)はほぼ同じ であることがわかるかと思います。
このように、各インターフェイスの違いは 情報の表現方法
だけであり、実際に伝える中身は同じなのです。
各インターフェイスの違いというのは、用途や目的から来ており、APIの場合は機械に対してわかりやすいことを目的としている というわけです。
内容をまとめますと、
また、ウェブAPIとは
となります。
スポンサーリンク
2020/12/09 14:23:58
inexpensive cialis usacybes best cialis online glicky for sale isotretinoin acutane pills pharmacy with free shipping