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



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

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


 


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

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

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


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

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

このQ&Aに関連する最新のQ&A

A 回答 (4件)

『インタフェース』


http://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%B3% …

つまり、何か(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/documen …

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

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

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

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

ベストアンサー決定!

お礼日時:2011/04/25 01:30

質問1と2の文章は、順番と表現が違うだけで、まったく同じことを説明しています。


1では
「APIはインターフェース」「インターフェースは(ここでは)プログラム間の規約」
2では
「インターフェースはプログラム間の規約」「APIはインターフェースの一種」

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


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

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


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

お礼日時:2011/04/25 01:29

なにか大学の本でも読んでおられるんでしょうか。


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

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

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

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

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

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

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

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

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

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

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

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


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

お礼日時:2011/04/25 01:27

OSには機能がありますよね。


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

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

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

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

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

お礼日時:2011/04/25 01:27

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q論理的思考力、問題解決力、分析力。 これらが必要とされ、また活かすことが出来る職業(ex.プログラ

論理的思考力、問題解決力、分析力。

これらが必要とされ、また活かすことが出来る職業(ex.プログラマー、コンサルタント)あるいは職種(ex.営業職、マーケティング職)は何だと思いますか。

漠然とした質問ですが、皆さんの様々なご意見を頂きたいです。宜しくお願いします。

Aベストアンサー

職業で「論理的思考力、問題解決力、分析力」だけですと、顧客満足度と云うものに対して不足します。若い人は嫌がりますが「経験値」と云うものも要求されます。本来的なコンサルタント業務では会社が独自に開発したプログラムや過去実績・経験累積に従って分析し問題点を明確にし、その問題点の解決方法論を提案しますが、その時、相手の置かれている状況に応じて最適解を提示できれば顧客満足度は上がり、目的を達成できます。他方、相手に合わせた最適解を提示出来なければ絵に描いた餅です。典型が地方公共団体が求める地方活性化への提案です。本来ですと活性化の成果が重要ですが、ともすれば予算消化の書類作りと云う方向に走ります。
ここで示したことはある種のコンサルタントのさわりですが、社会活動により何を目的とするかを明確にし、経済的な便益を主眼に据えれば、貴方に「論理的思考力、問題解決力、分析力」と云う能力があれば、大方の社会活動の場面に有意義だと思います。他の皆さんが指摘にするように、すべての職業に向くでしょう。
なお、質問者が学生さんで来年への就職活動の参考を求めているのなら、外資系や伸び盛りの企業の人事は「論理的思考力、問題解決力、分析力」に「経験値」が加味されなければ、その人材は事務的な作業員(StaffとOffice Clarkでの区分)に過ぎないことを知っていますから、早い段階から「経験値」を積むプログラミングを組みます。これは職種においてもコンサル、出版、イベント企画、物販、製品開発、製造、建設などの分野は問いません。自己に自信があれば外資系や伸び盛りの企業で早期に「経験値」を積むことをお勧めします。自信がなけれな「寄らば大樹の陰」をお勧めします。ただ、お若い方なら、40年先、何が大樹となるかは難しいところです。40年前、産業では砂糖・セメント・繊維が旧帝大系の人気産業でした。ただし、早期に「経験値」を積むには、外資コンサルの人や有名なソフト開発者のように、非常なブラックな生活を要求されます。

職業で「論理的思考力、問題解決力、分析力」だけですと、顧客満足度と云うものに対して不足します。若い人は嫌がりますが「経験値」と云うものも要求されます。本来的なコンサルタント業務では会社が独自に開発したプログラムや過去実績・経験累積に従って分析し問題点を明確にし、その問題点の解決方法論を提案しますが、その時、相手の置かれている状況に応じて最適解を提示できれば顧客満足度は上がり、目的を達成できます。他方、相手に合わせた最適解を提示出来なければ絵に描いた餅です。典型が地方公共団...続きを読む

QJAVA初心者(プログラミング初心者)

現在、転職を考えていますがオブジェクト指向の勉強をするにあたって
まず、何から始めればいいでしょうか?
先日面接時にオブジェクト指向の勉強をした方がいいと言われましたので。
プログラミングは全くの初心者です。

Aベストアンサー

方法論や言語間の違いはさておき、私の方は「転職」という観点から。

今だとやっぱしこれかな。

「Sun認定Javaアソシエイツ試験概要」の公式サイト
http://suned.sun.co.jp/JPN/certification/sjcadetails.html

今現在、Javaプログラマーになるためにスクールなどに通うとなると、大抵は「SJC-P」に関する勉強漬けになるかと思われます。もちろん、こちらの方は同じ「Sun Certified」でも『Associate』ではなく『Programmer』の方ですし、それ自体は否定しませんが、実際の所「SJC-P」ってUMLをまったく知らなくても合格できちゃうんですよね~。オブジェクト指向に関する資格試験なのに何故に?って感じです。(一応、私はA[310-019]もP[310-055]も両方、独学にて取得済みですが。)

ちなみに、私がSJC-Aを受験する際に利用した対策本は、これです。

「Sun SJC-A認定ガイドー310-019対応」
■ 株式会社クロノス 山本大、志賀澄人、山野寛、大伴明弘、田中征司、山田信人、芳賀浩司、舩木啓介著
■ 日経BP社
■ 2006年 8月28日 1版1刷
http://bpstore.nikkeibp.co.jp/item/main/148222828210.html

上記の本のp.17の上の方に、次のような記述があります。

「(中略)SJC-P資格試験は、Javaの構文やクラスの作成方法、Javaによるオブジェクト指向プログラミングの実現方法などを問う試験なので、上記のようなニーズに応えられないのも仕方ありません。しかし、エントリーレベルの認定資格であるはずのSJC-Pを取得しても、ソフトウェア開発で必要とされる十分な知識を持ったエンジニアであることを証明できませんでした。このような理由から、Java言語を利用したシステム開発への入門に必要な技術を体系的に学べるようにSJC-A認定資格が作られたのです。」

個人的には、そもそもオブジェクト指向なんて、本を一冊読んだだけではなかなか理解しづらいものがあるでしょうし(私自身、様々なJavaの技術を勉強していくうちに分かってきた、という感じです。)、今はとにかく「クラス図なら何でも聞いてください。」って言えるぐらいまで勉強し、その後からでも全然遅くはないと思います。

最後に、問われる知識をJavaだけに限定した場合、ランク的には以下のようになると思います。

SJC-A → 基本情報技術者(午後:JLS3.0) → SJC-P → ・・・

JITECの秋期試験の方も恐らく、7月の上旬以降に願書の受付が始まると思いますが、国家試験でもベンダー試験でも試験範囲が一部重なっていたりしますので、今のような真ん中の時期に、SJC-Aだけを短期集中でサクッと取得しておくのも手です。

方法論や言語間の違いはさておき、私の方は「転職」という観点から。

今だとやっぱしこれかな。

「Sun認定Javaアソシエイツ試験概要」の公式サイト
http://suned.sun.co.jp/JPN/certification/sjcadetails.html

今現在、Javaプログラマーになるためにスクールなどに通うとなると、大抵は「SJC-P」に関する勉強漬けになるかと思われます。もちろん、こちらの方は同じ「Sun Certified」でも『Associate』ではなく『Programmer』の方ですし、それ自体は否定しませんが、実際の所「SJC-P」ってUMLをまったく...続きを読む

Q「eX.computer」は、なんて読むのでしょう

「eX.computer」は、なんて読むのでしょうか?
何コンピューターでしょうか?

Aベストアンサー

イーエックスコンピュータ ですね。九十九の。

Qjava初心者(プログラミング初心者)です

最近「独習java」を読んだjava初心者です。
文法はだいたい理解したので、このサイトにあるプログラムのソースコードを読もうとしました。

http://www36.atwiki.jp/aial/pages/11.html

正直言って難しいです。手が付けれません。(C#で書かれていますが、文法は似ているので大丈夫だと思います)
しかし、大学での勉強に役に立つのでどうしても読めるようになりたいです。

文法を理解したぐらいではこのレベルのプログラムを理解するには早すぎるのでしょうか?
ではこれからはどういった勉強をすればいいのでしょう。

よろしくお願いします。

Aベストアンサー

Tierra を読みたいということは、人工知能や人工生命について勉強してらっしゃるのでしょうか。
まずはもっと理論的な背景について学ぶべきです。人工生命だけでなく、コンピュータアーキテクチャなど。
その上で、プログラムの実装を知りたいのであれば、もっと簡単な1次元のセルオートマトンや、ライフゲームなどを読まれてみてはいかがかと思います。

Q彼女さんのすっぴんをみて驚いたこと、がっかりしたことを教えてください。 ex.目の大きさがちがう

彼女さんのすっぴんをみて驚いたこと、がっかりしたことを教えてください。

ex.目の大きさがちがう

Aベストアンサー

すごい美人のギャル系の子だったが、メイクをとると眉毛無しでつけまつげもなしで
怪談話に出てくるようなお化けのような幸薄そうな顔だった事。

QGoogle Map APIを使う場合はAPIキーは必要でしょうか

Google Map APIを使う場合はAPIキーは必要でしょうか

と言うのは、APIキーを使わないでも動いている様ですが。
何処がどう違うのかが分からない。

また、この現在のAPIのバージョンはどうやって知る事が出来
るのでしょうか。

Aベストアンサー

V2の時は必要でしたが、V3に切り替わった当初は不要とされていました。
その後、現在は必要とされるように再度変わりました。
https://developers.google.com/maps/documentation/javascript/tutorial

以下より抜粋
https://developers.google.com/maps/documentation/javascript/get-api-key
『All JavaScript API applications require authentication using an API key.』

当初の名残で、今のところはkey無しでも動作するようですが、そのうちにしなくなるかも・・・


>それとも記事が古いのか、分からなかった物ですから。
ネット上の第三者の記事に右往左往しているよりも、配布元のgoogleを調べるのが常道でしょう。

Q例えばフェラーリF430に最も安価なオイル(ex.4L缶780円)でオイル交換

例えばフェラーリF430に最も安価なオイル(ex.4L缶780円)でオイル交換しても、故障・燃費等何の問題も『全く』ありませんか?

Aベストアンサー

所詮オイルです。
油が入っていれば問題無く動きます。
その問題というのはフェラーリに限定したものではなく、
たとえばカローラに入れたとしてもサーキット走行やシビアコンディションで走行したならば当然問題が発生します。
つまり車種を限定するものではなく走行状況による影響のほうが大きいということです。
もちろんハイスペックなオイルよりも性能が劣るのは言うまでもないことです。
付け加えて粗悪なオイルならばどんな車であっても問題です。

Q[Java]プログラミング初心者なため解りません。

はじめまして。
大学でJavaの課題を出されたのですが、プログラミング初心者なため方法がわかりません。どなたか助けていただきたいです。

課題

まず、以下のようなファイル(test.dat)を作成する

1 2
3 4
5 6
7 8
9 10

このファイルを読み込み、次のような結果をファイル(kekka.dat)として出力するプログラムを作成せよ。

1 + 2 = 3
3 + 4 = 7
5 + 6 = 11
7 + 8 = 15
9 + 10 = 19



なんとか自力でファイルの入出力を行うことはできたのですが、文字列を操作して出力する方法がわかりません。
どなたか教えていただけないでしょうか。

よろしくお願いします。

Aベストアンサー

1 2
3 4
5 6
7 8
9 10

ファイルのフォーマットは

数字 半角スペース 数字 改行

と考えればいいのでしょうか?

であるならば読み込んだ文字列を分割し、数値型として計算すればいいでしょう。

public class PGBeginner {

public static void main(String[] args) {
String moto = "1 2";

String[] ary = moto.split(" ");

System.out.println(Integer.parseInt(ary[0]) + Integer.parseInt(ary[1]));
}

}

Q九十九電機  eX.computer B30A / DualCoreモデル

PCを買いたいのですが今までメーカー製しか買ったことありません。
ショップブランドは初めてなのですが九十九電機eX.computer B30A / DualCoreモデルの評判や九十九電機の評判を教えてください
よろしくお願いします

Aベストアンサー

自作経験者としての見方になりますが、九十九の商品ページを見る限りケチをつけられそうなパーツは少ないように思います。光学ドライブが標準だと一世代古い点、HDDのメーカー指定が利かない点くらいでしょうか。
で、パーツさえまともなら組み立て段階でトラブルを起こす方が難しいのが自作の常ですし、完成品としてもおそらく品質的に問題はないものと思います。

あとはサポート体制などの評価になりますが、これについてはちょっとわからないですね。自分が店舗を利用した限りでは九十九の顧客対応に不満を感じたことはありませんが、通販になるとちょっとわからないです。

Q初心者なので教えてほしいです。

下記のコードなんですが、どこか間違っていますか?
テキスト通りに入力したはずなんですが、
『メソッド本体がないか、abstractとして宣言されています』
というエラーが出てしまいます。
どういう意味なのか分らなくて・・・

****************************************************

//車クラス
class Car{
int num;
double gas;
}
//車クラスのオブジェクトを作成する
class Sample1{
public static void main(String[] args);
{
Car car1;
car1 = new Car();

car1.num = 1234;
car1.gas =20.5;

System.out.println("車のナンバーは" +car1.num+ "です。");
System.out.println("ガソリンの量は" +car1.gas+ "です。");
}
}

*************************************************************

下記のコードなんですが、どこか間違っていますか?
テキスト通りに入力したはずなんですが、
『メソッド本体がないか、abstractとして宣言されています』
というエラーが出てしまいます。
どういう意味なのか分らなくて・・・

****************************************************

//車クラス
class Car{
int num;
double gas;
}
//車クラスのオブジェクトを作成する
class Sample1{
public static void main(String[] args);
{
Car car1;
car1 = new Car();

...続きを読む

Aベストアンサー

//車クラス
class Car{
int num;
double gas;
}
//車クラスのオブジェクトを作成する
class Sample1{

//最後のセミコロンはあっては駄目です
//public static void main(String[] args);

public static void main(String[] args)
{
Car car1;
car1 = new Car();

car1.num = 1234;
car1.gas =20.5;

System.out.println("車のナンバーは" +car1.num+ "です。");
System.out.println("ガソリンの量は" +car1.gas+ "です。");
}
}


人気Q&Aランキング

おすすめ情報