web-dev-qa-db-ja.com

ライブラリとAPIにはまだ違いがありますか?

APIとライブラリの違いについて人々に尋ねるたびに、私は異なる意見を得る。 APIが仕様であり、ライブラリが実装であると言う、定義の この種類 を与える人もいます...

this type of definition、APIはマップアウトされた関数の束であり、Libraryはコンパイルされた形式の単なるディストリビューションであると言う人もいます。

Webコード、フレームワーク、およびオープンソースの世界では、実際にもう実際の違いがあるのでしょうか? jQueryやcURLなどのライブラリは、APIの定義にクロスオーバーできますか?

また、フレームワークはこのカテゴリにまったく移行しますか? RailsまたはZendには、より「APIライクな」または「libraryesque」になる可能性のある部分がありますか?

いくつかの啓発的な考えを本当に楽しみにしています:)

48
Trafalmadorian

私の見解では、APIについて話すとき、それはプログラマに公開される部分のみを意味するということです。 「ライブラリ」と言えば、「ボンネットの下」で動作しているすべてのものを意味しますが、それでもライブラリの一部です。

55
teukkam

libraryには、再利用可能なコードのチャンク(ソフトウェアプログラム)が含まれています。

ライブラリのこれらの再利用可能なコードは、APIs(アプリケーションプログラミングインターフェイス)を介してプログラムにリンクされます。つまり、APIはライブラリへのインターフェースです。これを介して、再利用可能なコードがアプリケーションプログラムにリンクされます。
簡単に言えば、APIは、2つのソフトウェアプログラム間のインターフェイスであり、それらの間の相互作用を促進すると言えます

enter image description here

たとえば、Cなどの手続き型言語では、ライブラリmath.cには、sqrtexplogなどの数学関数の実装が含まれます。これらすべての機能の定義。

これらの関数は、API math.hを使用して参照できます。このAPIは、 予想される動作を記述および規定します

18
haccks

APIは、外部コードと対話する方法を定義するライブラリの一部です。すべてのライブラリにはAPIがあり、APIはすべてのパブリック/エクスポートされたものの合計です。最近では、APIの意味が広がりました。 APIとしてWebサイト/サービスがコードと対話する方法を呼び出すこともできます。また、一部のデバイスにはAPI(呼び出し可能なコマンドのセット)があることもわかります。

時々、この用語は一緒に混ぜることができます。たとえば、サーバーアプリ(TFSなど)があります。 APIがあり、このAPIはライブラリとして実装されています。ただし、このライブラリは、呼び出しを実行するものではなく、単なる中間層です。ただし、ライブラリ自体にすべてのアクションコードが含まれている場合、このライブラリis APIとは言えません。

15
Andrey

Libraryは、タスクを簡単に実行するためにコードから使用できるすべてのクラスと関数のセットだと思います。ただし、ライブラリには、公開したくない使用法のためのプライベート関数の一部を含めることができます。

APIは、ユーザーに公開されるライブラリの一部です。したがって、ライブラリに関するドキュメントが何であれ、API Documentationアクセスできるクラスと関数のみが含まれているため。

11
Shashwat

最初にインターフェイスを定義する必要があります...

インターフェース:2つの「もの」が互いに話し合い、情報を交換する手段です。 「もの」は、(1)人間または(2)あらゆる種類の実行中のコード(ライブラリ、デスクトップアプリケーション、OS、Webサービスなど)である可能性があります。

人間がプログラムと会話したい場合、グラフィカルユーザーインターフェイス(GUI)またはコマンドラインインターフェイス(CLI)が必要です。どちらも、人間(プログラムではない)が使用したいインターフェースのタイプです。

ただし、(実行中の)実行中のコードが(実行中の)別の実行中のコード(任意の実行中のコード)と通信したい場合は、GUIまたはCLIを必要としないか、必要とせず、むしろApplication Programming Interface(API )。

元のポスターの質問に答えるために:ライブラリは実行中のコードの一種であり、APIはこの実行中のコードが他の実行中のコードと通信する手段です。

3
EKanadily

明確で簡潔な言語で

ライブラリ:再利用のために保存されたすべてのクラスとメソッドのコレクション

API:ユーザーが自分のコードで使用できるlibraryクラスおよびメソッドの一部。

0
Devaarth

私の視点によれば、関数がinvokerにアクセスできるものは何でも、ライブラリファイルのAPIとして呼び出すことができます。

0
nirmal