みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

APIの概念について質問です。

最初に断っておきますが、僕はプログラミング初心者なので、分かりやすく且つ本質的にご教示いただけましたら幸いです。身近な具体例とか交えてくださると幸いです。



APIの定義について以下のように書かれていました。

「OS(基本ソフト)やアプリケーションソフト、あるいはウェブアプリケーションが、
自ら持つ機能の一部を外部のアプリケーション(ソフトやウェブサービス)から簡単に利用できるようにするインターフェース。
ここで言うインターフェースとは、機能の呼び出し手順や記述方法などを定めた仕様を指す。」


 


質問1:上記に、「ここで言うインターフェースとは、機能の呼び出し手順や記述方法などを定めた仕様を指す。」と書いてありますが、これは具体的にどういうことですか?呼び出し手順とはなんですか?

質問2:質問1に関連して、インターフェースについて調べていたところ、定義として以下のようなことが書いてありました。

「ソフトウェアインターフェースは、プログラム間でデータをやり取りする手順や形式を定めたもの。特に、OSやコンポーネント(部品化されたソフトウェア)の機能を外部から呼び出して利用するための規約をAPIという。」


以下の定義の文の「プログラム間でデータをやり取りする手順や形式を定めたもの。特に、OSやコンポーネント(部品化されたソフトウェア)の機能を外部から呼び出して利用するための規約をAPIという。」という記述についても全体的によくわかりません。

どういうことでしょうか?

投稿日時 - 2011-04-19 21:46:16

QNo.6680117

すぐに回答ほしいです

質問者が選んだベストアンサー

『インタフェース』
http://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9

つまり、何か(A)と何か(B)の中間にある接続部分がインタフェースです。
例えばWindows OSにはGUI(Graphical User Interface)があります。
GUIがOS(A)と人間(B)の間にあるので、人間はOSの複雑な内部構造を知らなくてもGUIを経由してマウス操作をすることによりコンピュータを操作することができます。
APIはApplication Programming Interfaceですが、この場合APIは、呼び出す側のプログラム(A)と呼び出される側のプログラム(B)の間にあるインタフェースになります。大部分の場合、Aはあなたが作るプログラムで、Bは既存のプログラムになるでしょう。
例えば、地図を使ったアプリケーション(A)を作りたいと思ったとしましょう。
1から地図の機能を作ってもよいですが、Googleに高機能なGoogle Map(B)があるのであの機能が使えたら良いのに、、、と思います。
そこでGoogle MapのAPIを使い、地図機能はGoogle Mapを利用して自分のアプリケーションを作ることにします。
APIの具体的なものはは例えばこれです:
http://code.google.com/intl/ja/apis/maps/documentation/javascript/reference.html#Map

「機能の呼び出し手順や記述方法などを定めた仕様」が書いてあるのが分かるでしょうか。あなたのプログラム(A)内から、APIのどんなメソッドをどういう記述方法で呼び出せばGoogle Map(B)のどの機能を利用できるのかが定義されています。

APIがあるので、あなたはGoogleがどうやってあのような優れた地図アプリケーションを作っているのかを理解しなくても、APIに従って記述することによりその機能の一部をあなたのプログラムから呼び出すことができます。

投稿日時 - 2011-04-20 11:54:00

お礼

お返事遅れてしまい大変申し訳ありませんでした。。

ありがとうございます!
googleのHPの引用ありがとうございます!
わかりやすかった!
説明も抜群によかったです。

ベストアンサー決定!

投稿日時 - 2011-04-25 01:30:51

ANo.4

このQ&Aは役に立ちましたか?

4人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

質問1と2の文章は、順番と表現が違うだけで、まったく同じことを説明しています。
1では
「APIはインターフェース」「インターフェースは(ここでは)プログラム間の規約」
2では
「インターフェースはプログラム間の規約」「APIはインターフェースの一種」

1の文章で理解できてないのですから、同じ事が書いてある2も理解できないでしょう。


ちなみに
・APIのIはインターフェースのIなので、「APIはインターフェース」というのは極当り前。
・「インターフェース」は「複数のものを結ぶもの」という非常に大きな概念です。
登場する文脈により、何を表しているかが大きく変わります。

投稿日時 - 2011-04-20 03:53:51

お礼

お返事遅れてしまい大変申し訳ありません、、


まったく同じことでしたか。。すみません。。理解不足でした。。

投稿日時 - 2011-04-25 01:29:38

ANo.2

なにか大学の本でも読んでおられるんでしょうか。
前の引数の質問も似たような感じですね、
概念的な言葉の羅列ばかり読んでいてもなにもわかりませんよ。
学校の課題なら先生に質問しましょう。
っと、これでは冷たいので。

プログラムってのは一から全て作ると大変なので
既に作成されたものを利用する、ということをよくします。

たとえばJavaなら他のJavaで作ったプログラムのクラスからオブジェクトを
作成してメソッドを呼び出したりします。

C言語なら他で定義された関数を呼び出します。

WEBの世界なら他のサイトで作成されたCGIなどの機能を
何らかの方法で呼び出して結果を自分のサイトに埋め込んだりします。
Googleマップの地図が企業やお店のサイトに埋め込まれてるのを
見たことあるでしょう。
ブログなどにGoogleやアマゾンの広告が埋め込まれているのを見たことがあるでしょう。
ああいうのはあらかじめ用意されたAPIを利用して実現しているわけです。

他にはWordのなかにExcelの表を埋め込むというのをやったことをありませんか?

そういうふうに機能を部品として用意して利用してもらうということを
よくやります。

機能を呼び出すとき、どのような順序で呼ぶのか
データを渡すときどのような形式、データの順序で渡すのか
というのがそのAPIを作った人が決めるわけです。

切符の自販機から切符を買うことを考えて見ましょう。
1.まずどこまで行くのか決めます。
2.値段を調べます。
3.自販機にお金を入れます。
4.目的地までの値段のボタンを押します。
5.切符とおつりを受け取ります。
という、データと操作のやり取りがありますよね。
このような切符を買うという機能を利用するための手順や決まりを
プログラムの世界ではAPIとかシステムコールとかいろんな言い方をするわけです。

サブルーチンとかシステムコールなどはプログラムの中から他のプログラムを
呼び出すというイメージが多いのに対して
APIはアプリケーションから他のアプリケーションの機能を呼び出すイメージを
さす事が多いような気がします。
まぁ呼び方やイメージの違いだけといえばそうかもしれません。

本の抽象的な文章ばかり読まずに具体例を見ることをお勧めします。

投稿日時 - 2011-04-20 01:01:49

お礼

お返事遅れてしまい大変申し訳ありません。。


具体例わかりやすかったです!
抽象的な文章ばっかりだとわからなくなりますよね、、ありがとうございます!

投稿日時 - 2011-04-25 01:27:35

ANo.1

OSには機能がありますよね。
例えば画面に何かを表示するには、描画する画面を意味するオブジェクトを取得して、そのオブジェクトに対して「これこれを描画してくれ」と指示を出します。

こういった手順が形式化されていないと、プログラマはどのようにしたら画面に何かを表示することが出来るのか分かりません。
形式化されているから、一定の手順を踏めば目的を達成出来ることが分かるんですね。

例えばスーパーで買い物をするのも、デパートで買い物をするのも同じですよね。
商品を手にして、レジに向かって、そこで店員さんにお金を払うと、目的のものを手に入れることが出来ます。
これが形式化された手続き(仕様や規約)ということです。

投稿日時 - 2011-04-19 23:36:19

お礼

お返事遅れて大変申し訳ありません。。。

具体例があったため、大変わかりやすかったです!
ありがとうございます!

投稿日時 - 2011-04-25 01:27:02

あなたにオススメの質問