로그인하고 있지 않습니다. 편집하면 당신의 IP 주소가 공개적으로 기록됩니다. 계정을 만들고 로그인하면 편집 시 사용자 이름만 보이며, 위키 이용에 여러 가지 편의가 주어집니다.스팸 방지 검사입니다. 이것을 입력하지 마세요!'''A'''pplication '''P'''rogramming '''I'''nterface의 약자. == 소개 == [[파일:API.png|섬네일]] API를 해석하자면 Application Programming Interface, 즉 프로그램을 제작할 때, [[그래픽 카드]]나 네트워크 카드, [[운영체제]], [[컴퓨터 파일]] 같은 프로그램 밖에 있는 것들에 접근하기 위해서 만들어진 함수와 구조체, 혹은 클래스의 집합을 말한다. API는 해당 함수나 클래스가 어떠한 동작을 하는 지를 프로그래머에게 공개한다. 이를 사양(Specification)이라고 한다. 그러면 프로그래머는 이 사양을 보고 프로그램을 제작한다. 해당 함수나 클래스에서 실제로 무슨 일을 하는지는 신경쓰지 않아도 된다. 가령 [[DirectX]]의 경우 [[엔비디아]]의 그래픽 카드든, [[AMD]]의 그래픽 카드든 프로그래머는 (이론상) 신경쓰지 않고 DirectX의 클래스와 함수만을 호출하여 화면에 3D 모델을 그릴 수 있다. 이때 엔비디아와 AMD가 DirectX의 사양에 따라 DirectX의 실제 동작을 만드는 것, 동작을 구현(Implementation)이라고 한다. 대표적인 API는 유닉스의 POSIX 표준, 윈도우의 MFC나 Win32, DirectX, [[OpenGL]], [[C++]]의 Standard Template Library(STL), Java API 등이 있다. == API의 예 == 이렇게 API의 경우 응용프로그램 제작자에게 복잡한 하드웨어나, 소프트웨어의 조작을 함수와 구조체, 혹은 클래스로 제어할 수 있게 하기 때문에 직접 조작하는 것보다 더 편해지고 쉬워지며 프로그램 제작 시간을 단축시키며 노동량을 줄인다. 그리고 프로그램에서 플러그인을 지원하기 위해서 API를 설계하는 경우가 있는데, 이 경우 플러그인이 API에 맞춰 제작되면 프로그램의 별도의 수정 없이 프로그램의 기능을 추가할 수 있다. 대표적으로 웹 브라우저인 [[인터넷 익스플로러]], [[파이어폭스]], [[크롬]]의 [[플러그인]], [[애드온]]이 있다. 또한 단순히 컴퓨터 안에서의 조작을 제공하는 것만이 API가 아니고 원격으로 서버에 접근하여 서버를 조작하거나, 데이터를 요구하는 것 또한 API라고 하는데 SOAP이나 RESTful같은 API을 구현할 때 가이드? 같은 존재가 있다. API의 예를 또하나 들어 보면 C언어에서 터미널·[[명령프롬프트]]에서 '''Hello, World!'''라는 문자열을 출력하는 프로그램을 만든다고 하였을 때, printf함수를 사용하여 출력을 할 것이다. printf함수는 C언어 표준 라이브러리에서 '''문자열을 출력한다'''라는 기능이 정의되고 그것을 본 프로그래머는 윈도우나 리눅스나 맥등 각양각색의 운영체제에서 printf함수의 안을 어떻게 만들었는지는 신경쓰지 않고 printf함수가 문자열을 출력한다는 기능을 사용하는 것이다. == API와 [[라이브러리]], SDK, [[프레임웍]]의 차이 == * API는 인터페이스, "이 클래스는 이런 역할을 하고 이 구조체는 이럴 때 사용해야 하고 함수는 이렇게 동작할 것입니다"라는 것을 규정한 것이다. * 라이브러리는 단순한 함수나 클래스의 집합이다. 따라서 라이브러리는 API에서 규정된 클래스나 함수 내부가 구현된 경우도 있다. * 프레임워크는 라이브러리처럼 함수나 클래스의 집합이라는 점에서는 동일하나 프로그램 전체의 관리가 프로그래머가 아니라 프레임워크에게 있다. 건축으로 비유하자면 라이브러리의 경우, 설계도와 가구와 자재가 있고 직접 집을 지어 안에 가구를 넣고 집을 완성하는 것이지만, 프레임워크는 이미 집의 뼈대가 완성되어 있는 상태에서 내부인테리어를 하여 집을 완성하는 것이다. * SDK는 Software Development Kit의 약자로서 API보다 좀 더 범위가 넓으며, 라이브러리나 프레임워크를 포함하는 경우가 많다. {{각주}} [[분류:API| ]] 요약: 리브레 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-동일조건변경허락 3.0 라이선스로 배포됩니다(자세한 내용에 대해서는 리브레 위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요. 글이 직접 작성되었거나 호환되는 라이선스인지 확인해주세요. 리그베다 위키, 나무위키, 오리위키, 구스위키, 디시위키 및 CCL 미적용 사이트 등에서 글을 가져오실 때는 본인이 문서의 유일한 기여자여야 하고, 만약 본인이 문서의 유일한 기여자라는 증거가 없다면 그 문서는 불시에 삭제될 수 있습니다. 취소 편집 도움말 (새 창에서 열림) | () [] [[]] {{}} {{{}}} · <!-- --> · [[분류:]] · [[파일:]] · [[미디어:]] · #넘겨주기 [[]] · {{ㅊ|}} · <onlyinclude></onlyinclude> · <includeonly></includeonly> · <noinclude></noinclude> · <br /> · <ref></ref> · {{각주}} · {|class="wikitable" · |- · rowspan=""| · colspan=""| · |} {{lang|}} · {{llang||}} · {{인용문|}} · {{인용문2|}} · {{유튜브|}} · {{다음팟|}} · {{니코|}} · {{토막글}} {{삭제|}} · {{특정판삭제|}}(이유를 적지 않을 경우 기각될 가능성이 높습니다. 반드시 이유를 적어주세요.) {{#expr:}} · {{#if:}} · {{#ifeq:}} · {{#iferror:}} · {{#ifexist:}} · {{#switch:}} · {{#time:}} · {{#timel:}} · {{#titleparts:}} __NOTOC__ · __FORCETOC__ · __TOC__ · {{PAGENAME}} · {{SITENAME}} · {{localurl:}} · {{fullurl:}} · {{ns:}} –(대시) ‘’(작은따옴표) “”(큰따옴표) ·(가운뎃점) …(말줄임표) ‽(물음느낌표) 〈〉(홑화살괄호) 《》(겹화살괄호) ± − × ÷ ≈ ≠ ∓ ≤ ≥ ∞ ¬ ¹ ² ³ ⁿ ¼ ½ ¾ § € £ ₩ ¥ ¢ † ‡ • ← → ↔ ‰ °C µ(마이크로) Å °(도) ′(분) ″(초) Α α Β β Γ γ Δ δ Ε ε Ζ ζ Η η Θ θ Ι ι Κ κ Λ λ Μ μ(뮤) Ν ν Ξ ξ Ο ο Π π Ρ ρ Σ σ ς Τ τ Υ υ Φ φ Χ χ Ψ ψ Ω ω · Ά ά Έ έ Ή ή Ί ί Ό ό Ύ ύ Ώ ώ · Ϊ ϊ Ϋ ϋ · ΐ ΰ Æ æ Đ(D with stroke) đ Ð(eth) ð ı Ł ł Ø ø Œ œ ß Þ þ · Á á Ć ć É é Í í Ĺ ĺ Ḿ ḿ Ń ń Ó ó Ŕ ŕ Ś ś Ú ú Ý ý Ź ź · À à È è Ì ì Ǹ ǹ Ò ò Ù ù · İ Ż ż ·  â Ĉ ĉ Ê ê Ĝ ĝ Ĥ ĥ Î î Ĵ ĵ Ô ô Ŝ ŝ Û û · Ä ä Ë ë Ï ï Ö ö Ü ü Ÿ ÿ · ǘ ǜ ǚ ǖ · caron/háček: Ǎ ǎ Č č Ď ď Ě ě Ǐ ǐ Ľ ľ Ň ň Ǒ ǒ Ř ř Š š Ť ť Ǔ ǔ Ž ž · breve: Ă ă Ğ ğ Ŏ ŏ Ŭ ŭ · Ā ā Ē ē Ī ī Ō ō Ū ū · à ã Ñ ñ Õ õ · Å å Ů ů · Ą ą Ę ę · Ç ç Ş ş Ţ ţ · Ő ő Ű ű · Ș ș Ț ț 이 문서에서 사용한 틀: 틀:각주 (원본 보기) (준보호됨)