• ベストアンサー

APIって何でしょうか?

APIって何でしょうか? こんばんわ。 無知ですみませんが、APIって何ですか? Wikiなどで説明を読みましたが、分かりませんでした。 ・APIの役割って何でしょう? ・APIがなぜあるのか? ・関数コールと違うのか? ・APIが無いとどうなるのか? ご存知の方、教えてください。 (お礼が遅くなるかもしれませんがお願い致します)

noname#150259
noname#150259

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

  • ベストアンサー
noname#211378
noname#211378
回答No.2

APIとはApplication Program Interfaceの略で、あるプログラム(一般的にはOSやミドルウェア)が、その機能を公開し外部のプログラムから呼び出せるようにしたものです。 ・APIがなぜあるのか? あるプログラムが別のプログラムの機能を使用できるようにするため。 ・関数コールと違うのか? 基本的には同じ。 自分のプログラム内の関数も外部プログラムの関数も関数は関数。 しかし、内部の関数を呼ぶ場合はAPIとは言わない。 外部に公開している関数をAPIと言う。 ・APIが無いとどうなるのか? 外部の機能が使えないことになるので、自分で全部を実装することになる。 OSなどの機能を自分で実装するなどありえないので、APIがなければソフトは組めないことになる。

その他の回答 (1)

  • Hoyat
  • ベストアンサー率52% (4897/9300)
回答No.1

・APIの役割って何でしょう? ・APIがなぜあるのか? ・APIが無いとどうなるのか? 「役割」と「何故あるか?」と「無いとどうなるか?」は同義ですよ^^; アプリケーションプログラム(ソフトウェア)を動かす為の物。 例えば3Dゲームを例に話せばDrectX(特にDirect3D)がそれにあたりますが、3D描画をゲームプログラム側が負担せずに済みます。 そうするとプログラム自体の肥大化を防ぐ事が出来スムーズな動作(プレイ)が行えるようになります。 無ければ「プログラム自体が肥大化せざるをえない」です。先の3Dゲームで言えば3D描画そのものも負担する事になりますからどれだけ肥大するかは見当も付かないとなります。 ・関数コールと違うのか? 違うと言えば違います。同じと言えば同じ。 と言うか関数コールそのものがプログラミングに不可欠なものですから、APIもプログラムですから同じとも言えます。ですが「関数コール」は「関数を呼び出すこと」ですので「それだけじゃプログラムとしては成り立たない」ので「違う」とも言えます。

関連するQ&A

  • APIについて

    文字列をsjisからjisに変換して、 byte型に格納しているのですが dim data() as byte data()をapi関数に渡しているのですが、 apiに渡すときに、apiでの定義は bdata as byte となっていて、バッファを送信するとあります。 この場合、渡す方法としては、data()の配列数分のloopを 行い、1つずつ渡していく方法になるのでしょうか? よくわからない質問かも知れませんが、ご存知の方がいらっしゃいましたらよろしくお願いします。

  • コールすると呼び出す

    「API関数をコールする」と「API関数を呼び出す」とはどちらが一番相応しいのか、詳しく教えていただきますようお願い致します。

  • Win32APIのメッセージループについて。

    Win32API用のラッパーを作ろうとしているのですが、現在、前提条件としていることが正しいかどうかの判断がつきかねるため、質問させていただきます。 CreateWindow関数で返されるHWndは、どのような状況においても、メッセージループのコールバック関数であるWndProc関数の第一引数HWndと同一でしょうか? また、この値が一致しないときがあるとすれば、どういったときでしょうか? (たとえばhook関数を適用されたら値が変わってしまうのか?) 分かる方がいらっしゃいましたら、お願いいたします。

  • GraphicsクラスとAPIの関係???

    プリンタに線を描くのに (1)APIのLineTo関数 (2)GraphicsのDrawLineメソッド の何れかを使用しております これに関連して常々疑問に思っていることは、LineTo関数とDrawLineメソッドの関係です 描画初心者の駆出しである私としては『DrawLineメソッドは結局の所、APIのLineTo関数を呼出して線を描いている』と思っておりますが間違えでしょうか? 質問を更に簡潔に表現するならばGraphicsクラスは公開されているAPI描画関数を組合わせて使用することにより出来上がっているか? との質問です それともGraphicsクラスは一般のAPIを使用せず独自の機能で描画しているのでしょうか? ご存知したら教えてください、また関連資料等がありましたらお願い致します

    • ベストアンサー
    • CGI
  • コールすると呼び出す

    「API関数をコールする」と「API関数を呼び出す」とは違いがありますか?二つの使う方法がどうですか。ご回答をお願い致します。

  • Cygwin の API について

    Cygwin の APIが載っているホームページや参考書を探しています。 各APIの機能や引数、戻り値の説明が書かれているものです。 ご存知でしたら、URLや参考書名を教えてください。 よろしく御願いします。

  • お猫さまに API Hooking を教わるには?

    粂井康孝氏の『猫でもわかる』シリーズには大変お世話になっております ところが不思議なことに同氏のWebでも著書にも API Hooking の解説が見当たりません ⇒ 私の探し方が悪いのでしょうが・・・ 粂井家の猫が API Hooking を説明している資料をご存知でしたらお教えください、お願い申し上げます

  • APIのページ

    お世話になります。 Javaには「Java 2 Platform Standard Edition 5.0 API 仕様(http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/index.html)」 PHPには「PHPマニュアル(http://jp.php.net/manual/ja/index.php)」というように、公式(?)のようなAPIのページがありますが、 perlにはそのようなオンラインで参照できるページはないのでしょうか。 関数を探す際等に利用できるページを探しているのですが、見つかりません。 ご存知の方がいらっしゃったらどうかお教えいただけないでしょうか。

    • ベストアンサー
    • Perl
  • Win32APIでのメモリ管理について

    C→malloc関数 C++→new演算子 Win32API→GlobalAlloc関数 とWin32APIでのメモリ管理の方法にはいろいろありますが、どれを使うのが一番実用的なのか、どれが一番効率的なのかが知りたいです。 あとWin32APIにはHeapAllocという関数もあるようですが、上記の3つは使わずにこの関数を使用したほうがよいのでしょうか。

  • VB.NET DLL【API関数(コールバック関数)】の呼び出し方法について

    目的は下記(3)のAPI関数をVB.NETで呼び出したいのですが、そこにいきつくまでにいろいろと壁にぶちあたっております。 (1)API関数をVB.NETから利用するにあたって どのような手順および調査・学習すればVB.NETからWin32 APIを独力で呼び出せるようになるのでしょうか?ネット上に情報が乏しく、いきずまっております。 (2)API関数の調査方法、またコールバック関数について 下記(a),(b)のようにWin32 API関数を宣言して、あとは呼び出し側の関数で(a),(b)で宣言したAPI関数を記述するだけで基本的には使用できるようになるという大まかなイメージはつかめております。 このあとでAPI関数をMSDNで調べると引数がHWNDやPCTSTRなど見慣れないものが出てきて、次のURL(http://www.atmarkit.co.jp/fdotnet/dotnettips/024w32api/w32api.html)を見ると、APIの型とVB.NETの型は違うので型変換をしなければならないとあります。またさらに私が呼び出したい関数はコールバック関数なるものでこれまた?な状態です。 そこでAPIとVB.NETの型変換の調査方法およびコールバック関数の利用方法などを教えていただけないでしょうか? (a)DllImport属性を利用する方法 <System.Runtime.InteropServices.DllImport("DLL名")> _ Function API関数名(仮引数) End Function (b)Declareステートメントを利用する方法 Declare Function API関数名 Lib "DLL名" (仮引数) (3)InstallHinfSection関数(http://msdn2.microsoft.com/en-us/library/aa376957.aspx)について 下記のコードを実行したのですが、実行時エラーにはならないのですが、APIの関数が動作してくれません。どこが悪いのかがまったく見当がつかないのですがどなたかアドバイスいただけると助かります。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click InstallHinfSection(Nothing, Nothing, "DefaultInstall 132 C:\INF_TEST\Original.inf", 0) End Sub   Declare Function InstallHinfSection Lib "setupapi" Alias "InstallHinfSection" (ByVal hwnd As String, ByVal ModuleHandle As String, ByVal CmdLineBuffer As String, ByVal nCmdShow As Integer) As Long APIが難しすぎていろいろとおかしなことを書いているかもしれませんが、どうぞよろしくお願いいたします。