APIとは?【初心者にもわかりやすく解説】

2018年12月8日土曜日

IT Web技術 プログラミング

クラウド

突然ですが、みなさんは
「今日のお天気を出力するプログラムを作って!」
と言われたら、どうしますでしょうか。。。


「え?天気なんて、プログラムで取得できるの!?」
と思われる方も多いのではないでしょうか。


この、一見不可能とも思える機能を実現するには、APIと呼ばれるものを用いる必要があります。




みなさんは「API」という言葉を聞いたことがありますでしょうか。

「アピ」ではなく、「エー ピー アイ」と読みます。

これは、「Application Programming Interface(アプリケーション・プログラミング・インターフェース)」の頭文字を取ったもので、ソフトウェア同士の境界を表す言葉です。


ただ、初心者の方は
「ソフトウェア同士の境界ってどういうこと!?」
と、思われることでしょう。


本日は、プログラミング初心者の方でも理解できるよう、「API」というものについて説明をしていきたいと思います。


APIとは、ソフトウェアから別のソフトウェアを呼び出すための手順


腕組みする牛

「API」という言葉は、ソフトウェアの開発においてとても広く使われる言葉です。

その考え方の前提として、
「自分でプログラムをすべて書かず、誰かが作ったプログラムを使う」
という発想があります。

以前記事を書いた、「車輪の再発明」という言葉にも関わってくる考え方ですね。





と言うのも、プログラムを書いてソフトウェアを作るとき、すべての機能のプログラムを自分で書いて、ソフトウェアを作ることはできません

「できません」というのは、少し語弊がある言い方ですが、



たとえばPCの中で動く「電卓」プログラムを作ろうと思ったとき、以下のようなことをする人はいないと思います。



  • キーボードから受け取った電気信号によって、どのボタンが押されたのかを判別する。

  • 1という数字が入力された時に、画面上のテキストボックスの中のピクセルの光らせ方を1つずつ制御して、白い部分と黒い部分を作って、1という文字に見えるようにする。

上記は非常に極端、かつ、分かりにくい(笑)例ですが、

上記のようなことは、もともとOSを作った人がプログラムを書いているはずなので、自分たちでプログラムを書こうとする人はいません。


つまり、プログラマーたちは、OS側のプログラムで実現されていることは当たり前の前提として、プログラムを書いています。

なぜそんなことができるのかと言うと、OS側が、OSの機能を使いやすいように、APIというものを用意してくれているのです。



「ファイル出力したいときは、OS側にこんな命令を送ってね!」

とか、

「スピーカーから音を出したいときには、OSにこういう風に命令してね!」

という手順が、あらかじめ決められていて、

その手順を、APIと呼ぶのです。



もしあなたがJavaでプログラムを書いているのであれば、OS側が用意してくれたAPIに従って、JavaさんがOS側の機能を呼び出してくれます。

C言語を用いているのであれば、C言語がOS側のAPIを呼び出して、OSに対する処理を行ってくれます。

そんな風にして、
誰かがあらかじめ用意してくれてある機能を、呼び出して使うことができるのです。


冒頭で「ソフトウェア同士の境界」と申し上げたのは、そういうことです。


あるソフトウェアから、別のソフトウェアを呼び出すための手順が決められているとき、それをAPIと呼ぶのです。



Web APIとは


Web設計

上記では、OSのAPIについてお話ししましたね。

ただ、APIとはすごく広く使われる言葉なので、何もOSだけに使われるものではありません。

たとえば、「Web API」と呼ばれる仕組みを用いると、自分でプログラムを書かなくても、とても高機能なソフトウェアを作ることができます。


たとえば冒頭でお話した、
「お天気取得プログラム」


はっきり言って、プログラムの中の仕組みだけでお天気を取得することは、不可能です。



しかし、世の中には、お天気を公開しているWebサービスが多くあります。

日本気象庁が公開しているデータとか、アメリカ国立気象局も、全世界の気象データを公開しています。


つまり、そこからデータを持ってきて、使わせてもらうのです。



そういった気象データをプログラムから取得できるようにしているWeb上のサービスがあります。

有名なものでは、OpenWeatherMapや、Weather UndergroundForecastと呼ばれるサービスです。


これらのWeb上のサービスは、「どうやってプログラムからデータを取得するか」という手順まで公開してくれているので、インターネットに繋がっているコンピューターからであれば、プログラムによって気象情報の取得が可能になるのです。


このように、Web APIを用いれば、自分でプログラムを書かなくても、簡単に高性能な機能が、Web経由で呼び出せてしまうのです。


お天気以外にも、Web上では、多くの便利なWeb APIが公開されています。

たとえば・・・




  • Twitter API
    • プログラムから、Twitter上のつぶやきを取得したり、つぶやきを投稿できます。

  • Facebook API
    • プログラムから、Facebook上に自動で投稿を行うことができます。

  • 郵便番号検索API
    • 郵便番号の情報を元に、住所の情報を提供してくれるAPIです。

  • NHK番組表API
    • NHKの番組リストを、プログラム上で取得できるAPIです。

  • Watson API
    • IBMが開発している有名な人工知能、Watsonの機能を利用することができます。

  • Google Calendar API
    • プログラムから、Googleカレンダー上の予定の取得、追加、変更、削除などを行うことができます。


これらは世の中のAPIのほんの一部ですが、これを見るだけでも、APIのすごさを多少分かって頂けるのではないでしょうか。

自分でプログラムを書くことなく、誰かが書いたプログラムを呼び出すだけで、その機能を使わせてもらうことができる。。。

人工知能まで借りて使えてしまうのであれば、なんだか自分で頑張ってプログラムを書くのが、ばからしくなってきてしまうかもしれませんね。。。笑




こういった、よそから借りてきた機能をつなぎ合わせてプログラムを作成することを、「マッシュアップ」と呼びます。


高度なプログラミング技術がなくても、アイディア次第で、とても便利なサービスを世の中に発信できるかもしれません。



まとめ(APIを使って開発をしてみよう)


夕日の海

如何でしたでしょうか?
APIというものがいかに便利か、何となく分かって頂けましたでしょうか。

実は私がプログラミングにハマったきっかけは、このWeb APIでございます。


Javaを用いてTwitterやFacebook上で、自動でつぶやくボットを開発していたら、楽しくて没頭してしまいました。

特に初心者の方はそうかもしれませんが、個人のプログラマーが開発できる範囲は、ある程度限られています。

ましてや、何か世の中に価値を提供できるようなサービスや、誰かをアッと驚かせるようなサービスを作るのは、中々難しいものです。



そういったとき、是非このAPIについて調べてみて、

「どこかに使えそうなサービスはないかなぁ」

と、検討してみるのも一つの手ではないでしょうか。



きっと、世界中のスーパープログラマーたちが開発した機能を使えば、あなた自身のサービスも、素晴らしいものになることでしょう。



この記事が、少しでも皆様の学習の助けになれば幸いです。
最後まで読んで下さり、ありがとうございました。