電子書籍の厳選無料作品が豊富!

いつも、ありがとうございます。

コンピュータ関連のAPIという概念がよく解りません。
Wikipedia等でも調べてみたのですが、恥ずかしながら
理解できませんでした…システム開発をするための
ツールなのかなぁ?と、何となく思ってはいるのですが…。

書店でプログラムに関する書籍がありますが、APIという
ものは、C言語やVisualBasicのような開発言語を指すもの
なのでしょうか?

プリンタやマウスなどの周辺機器を制御する「ドライバ」
とは違うような気はするのですが…。

高校生でもイメージしやすい例でご教示頂けると幸いです。
よろしくお願いします。


そもそも、この質問自体がカテゴリエラーであれば、どこが
適切かをアドバイス下さい。

A 回答 (5件)

共通化された部品のイメージで、おおむね合っているでしょう。



現代のプログラム言語や開発ツールは、プログラムを部分ごとに分けて製作し、結合することが可能なよう考慮されています。(コンピュータの黎明期にはそうではありませんでした)

分けて製作できるようになると、便利な機能をあらかじめ作っておいて使い回すこともできます。ただしプログラムは基本的に融通がきかないので、厳密に決められた記法や順序などに従わないと、せっかくの機能を使うことも結合することもできません。このような利用方法は提供される機能ごとに異なり、APIと呼ばれます。

APIの例として、累乗を求めるルーチン(何らかのソフトウェア)を想定します。その名前はpowerで、実数を2つ与える必要があり、1番目が底aで、2番目が指数nです。結果としてaのn乗を返すものとします。

名前を一文字でも間違えれば機能しません。与える数値の順番を間違えれば、機能しても期待した結果は得られません。ここでは与える数値のデータ型は実数と決めているので虚数は指定できません。よって、もし結果として負の数が返ってきたら、APIの規約自体には矛盾がなくても、APIを実現しているルーチンの方には間違いがあるということになるでしょう。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

おかげさまで、だいぶイメージがつかめるようになりました。
ブラックボックス(関数)の集合体という感じでしょうか。

ありがとうございました m(_ _)m

お礼日時:2012/04/30 09:31

http://geoapi.heartrails.com/api.html
には10を越える「サンプルレスポンス」の例が紹介されているのですけれど,
そのリンクをいくつかクリックして試してみた上でそれでもなお,

> 恥ずかしながら、XMLなるものを知らないため、
> パラーメータにどんな情報を入力すると、アウトプットに
> どんなリターンが来るかが理解できません。

とおっしゃっているのですね?
    • good
    • 0
この回答へのお礼

はい…恥ずかしながら。
コンピュータとは縁のない人間なので、ご容赦ください。

お礼日時:2012/05/01 21:29

具体例として,Java言語のMathクラスを挙げてみます。


次のリファレンスマニュアルを参照すると,
http://java.sun.com/javase/ja/6/docs/ja/api/java …

pow(double a, double b) と書けば,
  「1 番目の引数を、2 番目の引数で累乗した値を返します」
sin(double a) と書けば,
  「指定された角度の正弦 (サイン) を返します」
sqrt(double a) と書けば,
  「double 値の正しく丸めた正の平方根を返します」

などと説明されています。これがAPIの例です。

----------------------------------------
>「関数や規約の集合」ですか…。
> 共通化された部品のイメージと考えてもよいのでしょうか?

細かいツッコミですが(でも重要なポイントだと思うのですけれど)。
共通化とはちょっと違いますね。APIというのは,別に他の部品との互換性は必要ではなく,マニュアルに規定されたとおりの動作をすればよいわけですから。

APIが規定するのは中身ではなく,その機能を呼び出すための界面(Interface)です。
累乗やsin/cos/tanや平方根を計算する部分がどんなプログラム言語で書かれどんなアルゴリズムが用いられているかは問わない,中身はブラックボックスでよいわけです。
APIが規定するのは「こういう記法で呼び出せばこういう結果が得られる」という,やり取りのための仕様です。

> 利用するためのプログラム上の手続きを定めた規約の集合(ANo.1)
> 開発者は規約に従ってその機能を「呼び出す」だけ(ANo.1)
> 厳密に決められた記法や順序などに従わないと(ANo.2)

というこれまでの回答はすべて,APIは中身じゃない,機能の呼び出し方を定めた仕様なんだということを強調しています。

----------------------------------------
BASICやC言語といったプログラム言語が必須ということもありません。
例えば,次のページを参照のこと。
http://geoapi.heartrails.com/api.html

このリファレンスマニュアルに指定されている形式でURL文字列をWebサーバに送信すればXML形式で結果を得ることができるという,Web APIの呼び出し方について仕様を定めています。

----------------------------------------
最後に。
ドライバとかライブラリという用語は,ソフトウェアのモジュールそのものを指す概念です。
http://okwave.jp/qa/q7442369.html

実際には,ほぼすべてのドライバ,ほぼすべてのライブラリは,そのドライバ/ライブラリが提示するAPIを通じてアクセスすることになるでしょうが,中身と界面とでは概念が異なりますから,ドライバ=API,ライブラリ=API という対応は変ですね。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

恥ずかしながら、XMLなるものを知らないため、
パラーメータにどんな情報を入力すると、アウトプットに
どんなリターンが来るかが理解できません。

ただ、APIというものの仕様を理解していなくても、
決められた範囲での入力を行えば、求めたい値が
帰ってくる、というイメージでよろしいでしょうか?

皆さまのご回答から、そのような自分なりのイメージが
形成されたのですが・・・。

間違っておりましたら、ご指摘いただけるとありがたいです。

お礼日時:2012/04/30 09:51

すみません。


先程の回答で、間違いの例のところに自分で間違いを入れてしまいました。

「もし結果として負の数が返ってきたら」は「自乗を求めて、もし結果として負の数が返ってきたら」のつもりが、抜け落ちてしまいました。
    • good
    • 0
この回答へのお礼

先のご回答に、正しいリテラルを代入して読み進めました。

補足いただき、ありがとうございます。

お礼日時:2012/04/30 09:32

API(Application Program Interface)とは...



別名Programming Interface
あるプラットフォーム(OSやミドルウェア)向けのソフトウェアを開発する際に使用できる命令や関数の集合のこと、また、それらを利用するためのプログラム上の手続きを定めた規約の集合のことです。

個々のソフトウェアの開発者がソフトウェアの持つすべての機能をプログラミングするのは困難で無駄が多いため、多くのソフトウェアが共通して利用する機能は、OSやミドルウェアなどの形でまとめて提供されています。

個々の開発者は規約に従ってその機能を「呼び出す」だけで、自分でプログラミングすることなくその機能を利用したソフトウェアを作成することができます。

部類的にはプログラマの支援ソフトウェアですね。
ソフトウェアと言う意味ではドライバなどと同類です。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

「関数や規約の集合」ですか…。
共通化された部品のイメージと考えてもよいのでしょうか?
JIS規格(そのものではないと思いますが)のような。

プログラマの支援ソフトというのは、BASICやC言語で
開発をする際に、役に立つ集合体(?)という理解で
よろしいですか?

ご回答に対して、不躾な質問で申し訳ございませんが
補足頂けるとありがたいです。

お礼日時:2012/04/26 22:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!