#はじめに
当初個人的にWebアプリケーションを空いている時間に作っていたのですが、SPA作りに挑戦してみようと思い、APIという言葉にたどり着きました。その際、色々とQiita、Youtubeなどで調べてみたのですが、理解するのに思ったより苦労したのでこの記事に残していきたいと思います。今回はAPI(正確にはWeb API)というIT用語について、かなり掘り下げて解説していきます。
#対象読者
APIという単語は聞いたことがあり、実際調べてみたものの難しい用語が多くてイマイチ理解できなかった方。(*今回の記事では分かりやすさを重視しているので、かなり噛み砕いて説明しています。)
#APIとは何か
IT用語辞典によると、
APIとは、あるコンピュータプログラム(ソフトウェア)の機能や管理するデータなどを、外部の他のプログラムから呼び出して利用するための手順やデータ形式などを定めた規約のこと。
ここから読み取れるのはAPIとは何かしらの規約であるというのが読み取れるかと思います。私も初めて説明を読んだときは何かしらの規約があるんだなくらいでした。しかしAPIを略さず読むとApplication Programming Interfaceとなり、APIはインターフェースでもあるのです。何かしらの規約であり、かつインターフェースである。少し分かりづらいですね。
ではまずAPIを少し分かりやすく和訳すると**『アプリケーションをプログラムして出来たインターフェース』となります。つまり何かしらのアプリを加工(プログラミング)することで、何かと何かを繋ぐもの(インターフェイス)を作ることが出来るよ、を表しています。
ではアプリケーションとは何か、上記の図の『なにか』とは何なのか。まずアプリケーションですが皆さんお持ちのスマートフォンに入ってるinstagram**、twitter、ラインなどです。ただ次になにかを理解するためにはアプリケーションの構造を少し理解している必要があります。
通常、アプリケーションを開発するときは大まかに二つのものを作成しなければなりません。フロントエンドとバックエンドです。フロントエンドはアプリケーション内でアプリのデザインを担当します。アプリを開いたときに描画されているものは基本的に全てフロントエンドの部分が作っていると考えて下さい。じゃあバックエンドは?となりますよね笑。バックエンドは大雑把にはアプリで扱うデータを担当しています。instagram、twitterなら自分も含む全ての投稿された写真、文章などです。ユーザーがページを開いたときに表示されるデータの部分は全てバックエンドからフロントエンドを通して画面に描画されているのです。例えばユーザーがアプリで何か投稿したら、フロントエンドからバックエンドにデータが送られ、逆に他人の投稿を見るときはバックエンドからフロントエンドにデータが送られます。下の図で理解してみましょう。
ここで一つ通常のアプリケーションの特徴をまとめておきます。
- フロントエンドとバックエンドの二つとも自分の中に置いている。
- フロントエンドはバックエンドとデータのやり取りをしている。
このようになりますね。それではもう分かっているかもしれませんが、上の図の二つのなにかを考えてみましょう。答えから言いますと二つのなにかはフロントエンドとバックエンドです。つまりAPIとはフロントエンドとバックエンドを繋ぐものなのです!
ここで恐らく『アプリの中でデータのやり取りが出来てるのに、何でわざわざフロントエンドとバックエンドを繋ぐものを作る必要があるの?』という疑問が出てくると思います。ただ下の図を見ると分かりやすいと思いますが、バックエンドをアプリケーションから完璧に切り離します。そして、切り離したバックエンドの部分と正確にはデータのやり取りする部分がAPIと呼ばれます。では何故もともと一つのアプリケーション内でまとめていたフロントエンドとバックエンドを切り離す必要があったのでしょうか?
#APIを使う理由は?
APIを用いて、フロントエンドとバックエンドを分けると、ユーザーにとっても、アプリ開発者にとってもメリットが生じます。まずユーザーに関してはUIを通して必要なデータのみサーバーからロード(Ajaxを用いて)すれば良いのでsnappyな(サクサクな)アプリが作れます。次にアプリ開発者にはフロントエンドとバックエンドを分けて同時に開発することができるのでアプリ開発にかかる時間を大幅に短縮させることができます。またバックエンドがフロントエンドと分離しているので、一つのAPIを準備出来れば、複数のフロントエンドを作れます。つまりPC版、iPhone版、Android版など様々なデバイスに対応するアプリケーションが作れます。(ただこれにはAPIが同じjson形式のデータを吐き出す為という理由もあります。)このようにAPIを用いてアプリケーションを開発すると様々なメリットが得られます。
#最後に
記事の内容はいかがだったでしょうか?APIに関して少しでも理解が深まれば幸いです。間違い、誤字などございましたら、お気軽に指摘していただけると助かります。次回はPythonを用いて実際にAPIを構築していきたいと思います。