プログラムの話題でAPIとライブラリという言葉が出てくるよな。どちらも便利な機能を呼び出すときに使うらしいが、どう違うんでしょう。Webとかとも関係するらしいが、解説記事を見てもよくわからなかったりしないか。実際どう違うのか、どうやって使い分けるのかをプログラマでもあるライターのwoinaryと一緒に解説していきます。

ライター/woinary

某社で社内向け業務システムの開発、運用を30年近くやっていたシステム屋さん。現在はフリーランス。ガジェットやゲーム、ラノベが大好きなおっさんです。

APIとライブラリ、似ているようで違うのはなぜ?

image by iStockphoto

プログラミングしていると出てくる言葉がライブラリです。よく使う機能をまとめたもので、世の中には有志による様々なライブラリが公開されています。これらを使うと自分で1から作らなくて良いので便利です。

一方、似たようなものでAPIもあります。Webの解説記事でもいくつかAPIやライブラリについて説明しているものもありますが、わかりにくくないでしょうか。実はAPIはとても幅広い内容を含んでいるので、それらを区別しないでざっくり説明しようとすると曖昧だったり、わかりづらいことも。ここではなるべく整理してAPIとライブラリを説明します。

ライブラリ:よく使うものや便利なものを集めたもの

まずはライブラリです。これはプログラムを作る際によく使う機能をまとめたもの。プログラムを書いていると、以前似たようなものを書いたなと思うことがよくあります。そのような時に毎回1から書いていたのでは効率が悪いですよね。そのため、よく使う機能はいろいろなプログラムで使えるように分けておいて、呼び出して使えるようにしておきます

ライブラリは自分で後々使うために用意するものです。それを自分だけでなく誰でも使うことができるようWebで公開しているものもあります。また、プログラミング言語についてくるものが「標準ライブラリ」です。

いずれにせよ、ライブラリを活用するとプログラミングが楽になります。実績のある公開されているライブラリを使うことでバグを避けることもできるので、とても便利なものです。

API:色々なものを呼び出すためのお約束

一方のAPIは「Application Programming Interface」の略です。インターフェイスとは橋渡しするもの。例えば、ユーザー・インターフェイス(UI)といえばキーボードやマウスなどの入力機器やモニタなどの出力機器の総称で、人間がコンピュータとやり取りするものですよね。 APIとは実はプログラムとあるものの間のやり取りをするためのお約束をまとめたものなのです。

こう説明すると思っていたものと違うと感じる方もいるかもしれません。またあるものとは何?と疑問に思うでしょう。そこについてはおいおい説明しますが、まずはそういうものと思ってください。

\次のページで「APIの基本は「お約束」?」を解説!/

APIの基本は「お約束」?

image by iStockphoto

一言でAPIと言っても実は様々な要素が関わっています。それをひとまとめにして考えてしまうので、混乱してしまうのです。そういう時は基本に立ち返ると分かりやすくなります。では、APIの基本とは何でしょう。

その辺りを、まずはAPIの「お約束」とは何なのか、APIはそもそもどういうもので、それが時代によってどう変わっていったのかを、順を追って見ていきます。

世界は「お約束」で動いている

まず一度、プログラミングやライブラリなどは忘れてください。パソコンにUSBメモリを挿すとその中身にアクセスできますよね。外して別の光学ドライブやハードディスク、SSDなどを繋いでも同じようにアクセスできます。違う機器なのに不思議だと思いませんか?

これはUSBで何かの機器を繋いだ際にどういう風にデータをやり取りするかが決まっているからです。これが「お約束」になります。つないだ先の機器の中でどういう風に動くかはパソコン側は知りませんし、知る必要もないのです。

ただ、「ここのデータをください」という信号を送ると、それに対して接続した機器から「これがデータです」と返ってきます。どういう信号を送ったら何が返ってくるかがあらかじめ決まっているわけです。それをここでは「お約束」と呼びます。この「お約束」がAPIです。

元々はOSの機能の呼び出し?システムコールとAPI

ではAPIとは何と何との「お約束」なのでしょう。名前にApplicationとあるので、一方はアプリケーションですよね。では、もう一方は?この相手が様々なので、色々と分かりにくく混乱することになっています。

最初の相手はOSそのものです。大昔のコンピュータではOSがありませんでした。それでは不便なのでOSができましたが、その役割の重要な一つがよく使う機能をOSの上で動くアプリケーションに提供することです。

例えば、キーボードから1文字受け取ることや、画面に1文字出力するという機能をOSが提供しています。それ以前はコンピュータ毎にそれらの使い方はバラバラだったのです。最初の頃のコンピュータにとってのAPIはアプリケーションがOSが提供している機能を呼び出すための「お約束」になります。どういうデータをどうやって渡すと目的の動作をしてくれるかの「お約束」が初期のAPIです。

地図を出したり、便利なAPI連携

時代が進んでWebの時代になると、相手としてWebが増えます。例えば、WebサービスやスマホのアプリなどでGoogleやAppleの地図が表示されますよね。便利ですがGoogleやApple以外のサービス、アプリでも利用できるのはなぜでしょう。

それはGoogleやAppleが地図表示の機能をWebで公開しているからです。そして、その時にどこのURLにアクセスして、どういうデータを送ると何が返ってくるかの「お約束」があります。このお約束が APIです。Webで使うAPIなので「Web API」と呼びます。

しかし、Web APIで提供している地図表示の機能などのことを「Web API」や単に「API」と呼ぶようになりました。そのため、APIが何を指しているのかが曖昧で分かりにくくなってしまったのです。

ライブラリとAPIは中か外か?

では話を戻してAPIとライブラリの違いとは何か。元々の意味はライブラリは機能そのもので、APIはアプリケーションがOSやWebの便利な機能を呼び出すための「お約束」です。ですが、今はAPIのことを指してWebで公開されている機能のことも指しているので違いが分かりづらいですよね。

そこでざっくりと分けると相手がアプリケーションの中にあるか外にあるかになります。ライブラリは原則としてアプリケーションの中に組み込んで使うものです。中にある機能を呼び出すものがライブラリになります。一方、APIで呼び出す機能はアプリケーションの中ではなく、外です。

例えばOSだったり、Web上のサービスだったりします。どちらも便利な機能を提供してくれるものです。しかし、ライブラリはアプリケーションの中に組み込んで使うもの、APIはアプリケーションの外にあるものを使わせてもらうものという違いがあります。

\次のページで「実際どうなる?ライブラリやAPIの使い分け」を解説!/

実際どうなる?ライブラリやAPIの使い分け

image by iStockphoto

ここまでAPIとライブラリの違いを見てきました。では、実際に使った場合にはどのようなメリットがあるのでしょう。例を取り上げながら、それぞれのケースでのメリットやデメリットを確認していきます。

例えばWebで住所を登録するときに郵便番号を入力するだけで住所を出してくれると便利ですよね。あの機能を自分で作るアプリケーションで実現する時を想定して特徴を確認していきます。

1.何も使わない場合は?

まずは自力で作る場合。郵便番号と住所のデータは郵便局の公式Webページからダウンロードできます。そのため自分でデータを作らなくてすみそうです。

ただ、郵便番号を元に住所を検索する機能は自分で作らなければなりません。プログラムを作ることは慣れればそう難しくはなさそうです。ただ、そんなに頻繁ではないとは思いますが、郵便番号や住所が変わる場合もあるでしょう。郵便番号と住所のデータに変更があったのか確認し、変更があれば更新するのはなかなか面倒そうです。できれば変更されたらすぐに更新したいですよね。そのためには、頻繁に確認に行かなければならなくなってしまいます。

2.ライブラリを使うとどうなる?

では、ライブラリを使うとどうでしょう。Webで各種のライブラリが公開されているので、郵便番号を変換するためのライブラリもあるかもしれません。それをどうやって探すかは問題ですが、プログラミング言語によっては公開されているものを集めて公開しているところもあります検索機能がついているので、そういうサービスを利用すれば探すのは簡単そうです。

見つかった場合は、それを自分のプログラムに組み込みます。組み込み方はそのライブラリのドキュメントで説明されているはず。ただ、あくまでプログラムがあるだけなので、データは自分で用意する必要があります。これは自作の場合と同じです。

3.APIはすべてお任せできる?

APIを使う場合はどうなるでしょう。何かの方法で郵便番号の変換機能を提供しているサービスを見つけてくる必要があります。見つけた後は、説明を見ながらそのAPIサービスを利用する部分が必要です。これは自分で書いてください。

問題のデータですが、郵便番号の変換サービスをAPIで提供している場合、そのデータの管理も多くはそのサービスの提供側でやってくれるはずです。自分でデータの更新を追いかけなくても、サービス提供側で変更されいれば更新してくれます。自分でやらなくてよいので便利ですよね。

ただし、サービス側でどういう間隔で監視して更新するかは違います。サービスの利用説明の中で説明されていることが多いので、使うサービスでデータをどう扱うのかは確認が必要です。また、利用回数が制限されていたり、利用できない時間帯があることも。自分の用途や使い方に合わせて選択する必要があります。

ライブラリの中身はAPI?組み合わせて使うことも

ここまでAPIとライブラリが別のもののように説明してきました。しかし、実際には組み合わせて使うこともあります。例えば、ライブラリの中身が実はAPIを呼び出しているということもあるでしょう。また、APIの内部で既存の公開されているライブラリを利用していることも。APIを簡単に使うためのライブラリ、というものもあります。

このようにライブラリとAPIはまったく違うものではありません。両者の細かい違いを知ることも大事ですが単なる用語の問題です。

大切なのはすべてを自分で1から書かなくてもアプリケーションを作ることができるということ。そのために使うのがライブラリやAPIです。そして、ライブラリはアプリケーションに直接組み込むもの、APIはWebを経由して外部にあるものを呼び出すもの、とざっくりつかんでおけば問題ありません

\次のページで「ライブラリは機能。APIは取り決め、ただし現在はWebで提供される便利機能」を解説!/

ライブラリは機能。APIは取り決め、ただし現在はWebで提供される便利機能

ライブラリとAPIについて見てきましたが違いが理解できたでしょうか。ライブラリとはアプリケーションを毎回1から作らなくても済むように、流用できる部分を切り分けたもの自分で作ることもあれば、Webなどで公開されているものを利用させてもらうこともあります。

APIは元々はアプリケーションから便利な機能を呼び出す時の呼び出し方やどんなデータが必要になるかの「お約束」です。ただ、Webの時代になって便利な機能を提供するWebサービス(Web API)が広まることで、これらをAPIと呼ぶようになりました。今ではAPIといえば後者を指すことも多いです。ただし、どういう文脈で使われているかを理解する必要があります。いずれにしろ、アプリケーションをつくるときにはこれらを活用することが重要です。

" /> APIとライブラリの違いとは?プログラムの中と外?特徴から使い分けまでプログラマーがわかりやすく解説 – Study-Z
雑学

APIとライブラリの違いとは?プログラムの中と外?特徴から使い分けまでプログラマーがわかりやすく解説

プログラムの話題でAPIとライブラリという言葉が出てくるよな。どちらも便利な機能を呼び出すときに使うらしいが、どう違うんでしょう。Webとかとも関係するらしいが、解説記事を見てもよくわからなかったりしないか。実際どう違うのか、どうやって使い分けるのかをプログラマでもあるライターのwoinaryと一緒に解説していきます。

ライター/woinary

某社で社内向け業務システムの開発、運用を30年近くやっていたシステム屋さん。現在はフリーランス。ガジェットやゲーム、ラノベが大好きなおっさんです。

APIとライブラリ、似ているようで違うのはなぜ?

image by iStockphoto

プログラミングしていると出てくる言葉がライブラリです。よく使う機能をまとめたもので、世の中には有志による様々なライブラリが公開されています。これらを使うと自分で1から作らなくて良いので便利です。

一方、似たようなものでAPIもあります。Webの解説記事でもいくつかAPIやライブラリについて説明しているものもありますが、わかりにくくないでしょうか。実はAPIはとても幅広い内容を含んでいるので、それらを区別しないでざっくり説明しようとすると曖昧だったり、わかりづらいことも。ここではなるべく整理してAPIとライブラリを説明します。

ライブラリ:よく使うものや便利なものを集めたもの

まずはライブラリです。これはプログラムを作る際によく使う機能をまとめたもの。プログラムを書いていると、以前似たようなものを書いたなと思うことがよくあります。そのような時に毎回1から書いていたのでは効率が悪いですよね。そのため、よく使う機能はいろいろなプログラムで使えるように分けておいて、呼び出して使えるようにしておきます

ライブラリは自分で後々使うために用意するものです。それを自分だけでなく誰でも使うことができるようWebで公開しているものもあります。また、プログラミング言語についてくるものが「標準ライブラリ」です。

いずれにせよ、ライブラリを活用するとプログラミングが楽になります。実績のある公開されているライブラリを使うことでバグを避けることもできるので、とても便利なものです。

API:色々なものを呼び出すためのお約束

一方のAPIは「Application Programming Interface」の略です。インターフェイスとは橋渡しするもの。例えば、ユーザー・インターフェイス(UI)といえばキーボードやマウスなどの入力機器やモニタなどの出力機器の総称で、人間がコンピュータとやり取りするものですよね。 APIとは実はプログラムとあるものの間のやり取りをするためのお約束をまとめたものなのです。

こう説明すると思っていたものと違うと感じる方もいるかもしれません。またあるものとは何?と疑問に思うでしょう。そこについてはおいおい説明しますが、まずはそういうものと思ってください。

\次のページで「APIの基本は「お約束」?」を解説!/

次のページを読む
1 2 3 4
Share: