[DEV] Framework, Library , API :: κ°œλ… 정리

2021. 1. 12. 00:07γ†πŸ§‘πŸ»‍πŸ’» iOS 개발/iOS

ν•΄λ‹Ή 글은 개인적으둜 κ³΅λΆ€ν•œ 것을 μ •λ¦¬ν•œ κ²ƒμž…λ‹ˆλ‹€. λΆ€μ‘±ν•œ 뢀뢄이 μžˆμ„ 수 μžˆμœΌλ‹ˆ μ°Έκ³ ν•˜μ‹œκΈΈ λ°”λžλ‹ˆλ‹€.


Framework , Library , API ?

λ‹€μŒ ν¬μŠ€νŒ…μ—μ„œ λ‹€λ£° Cocoa Framework에 λŒ€ν•΄μ„œ μ•Œμ•„λ³΄κΈ° 전에 Framework, Library, API κ°œλ…κ³Ό κ·Έ 차이듀을 짚고 λ„˜μ–΄κ°€λ©΄ 쒋을 것 κ°™μŠ΅λ‹ˆλ‹€.

  • Framework (ν”„λ ˆμž„ μ›Œν¬) 

    ν”„λ ˆμž„ μ›Œν¬λŠ” κ°œλ°œμžμ—κ²Œ 일정 μš”μ†Œλ“€κ³Ό ν‹€(κ·œμΉ™, κ·œμ•½)을 μ œκ³΅ν•˜μ—¬ νŠΉμ • ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œν•˜κ²Œλ” ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 단어 뜻 κ·ΈλŒ€λ‘œ (λΌˆλŒ€λ₯Ό 가지고 μΌν•˜λŠ” 것)이죠. κ°œλ°œμžκ°€ 이 μ–΄λŠ μ •λ„μ˜ λΌˆλŒ€λ₯Ό μ œκ³΅λ°›μ•„ κ·Έ μ•ˆμ—μ„œ 일관성, 생산성, 톡합성을 늘릴 수 있게 λ˜λŠ” κ²ƒμž…λ‹ˆλ‹€. μœ„ν‚€μ—μ„œλŠ” ν”„λ ˆμž„ μ›Œν¬λ₯Ό νŠΉμ • ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€κΈ° μœ„ν•΄μ„œ μƒν˜Έ ν˜‘λ ₯ν•˜λŠ” ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€μ˜ μ§‘ν•©μœΌλ‘œ μ •μ˜ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

  • Library (라이브러리)

    λΌμ΄λΈŒλŸ¬λ¦¬λŠ” νŠΉμ • κΈ°λŠ₯에 λŒ€ν•œ ν•¨μˆ˜ λ‚˜ 도ꡬ듀을 λͺ¨μ•„ 놓은 μ§‘ν•©μž…λ‹ˆλ‹€. κ°œλ°œμžλ“€μ΄ λ‹¨μˆœ ν™œμš© κ°€λŠ₯ν•œ λ„κ΅¬λ“€μ˜ 집합을 λœ»ν•©λ‹ˆλ‹€. 

  • ν”„λ ˆμž„μ›Œν¬μ™€ 라이브러리의 차이

    얼핏 λ“€μœΌλ©΄ λ‘˜ λ‹€ κ°œλ°œμžκ°€ ν”„λ‘œκ·Έλž˜λ°ν•˜λŠ”λ° ν•„μš”ν•œ 것을 λͺ¨μ•„λ‘” κ²ƒμ΄κ΅¬λ‚˜ 라고 이해할 수 μžˆμ§€λ§Œ 이 ν”„λ ˆμž„μ›Œν¬μ™€ λΌμ΄λΈŒλŸ¬λ¦¬μ—λŠ” 큰 차이가 μžˆμŠ΅λ‹ˆλ‹€. λ°”λ‘œ 흐름에 λŒ€ν•œ μ œμ–΄μΈλ°μš”. ν”„λ ˆμž„ μ›Œν¬λŠ” 자체적으둜 전체적인 흐름(Flow)을 가지고 μžˆμŠ΅λ‹ˆλ‹€. ν”„λ ˆμž„μ›Œν¬λŠ” κ°œλ°œμžκ°€ κ·Έ μ•ˆμ— ν•„μš”ν•œ μ½”λ“œλ₯Ό μž‘μ„±ν•΄ μ§‘μ–΄λ„£λŠ” 반면 λΌμ΄λΈŒλŸ¬λ¦¬λŠ” κ°œλ°œμžκ°€ 흐름에 λŒ€ν•œ μ œμ–΄λ₯Ό ν•˜λ©° ν•„μš”ν•œ 상황에 κ°€μ Έλ‹€ μ“°λŠ” κ²ƒμž…λ‹ˆλ‹€. 이λ₯Ό ν”„λ ˆμž„μ›Œν¬λŠ” μ œμ–΄μ˜ μ—­μ „ (Inversion Of Control)이 μ μš©λ˜μ–΄μžˆλ‹€κ³  λ§ν•©λ‹ˆλ‹€.  

    μ œμ–΄μ˜ μ—­μ „(Inversion Of Control)μ΄λž€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ‹€ν–‰ 흐름을 ν”„λ ˆμž„μ›Œν¬ μžμ²΄κ°€ 가지고 μžˆμ–΄μ„œ 개발자의 μ½”λ“œκ°€ ν”„λ ˆμž„μ›Œν¬μ— μ˜ν•΄ μ‚¬μš©λ˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 즉, μ–΄λ– ν•œ 일을 ν•˜λ„λ‘ λ§Œλ“€μ–΄μ§„ ν”„λ ˆμž„μ›Œν¬μ— μ œμ–΄μ˜ κΆŒν•œμ„ λ„˜κΉ€μœΌλ‘œμ¨ ν΄λΌμ΄μ–ΈνŠΈ μ½”λ“œκ°€ μ‹ κ²½ 써야 ν•  것을 μ€„μ΄λŠ” μ „λž΅μž…λ‹ˆλ‹€. λΉ„μœ λ₯Ό ν•˜μžλ©΄ 노선이 μ •ν•΄μ Έ μžˆλŠ” 빈 κΈ°μ°¨κ°€ ν”„λ ˆμž„μ›Œν¬μ΄κ³  μ‚¬λžŒμΈ κ°œλ°œμžκ°€ λ§μΉ˜λ‚˜ λͺ» 같은 도ꡬ인 라이브러리λ₯Ό μ‚¬μš©ν•΄ 기차인 ν”„λ‘œκ·Έλž¨μ„ μ™„μ„±ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 그리고 κ°œλ°œμžκ°€ ν”„λ ˆμž„ μ›Œν¬μ•ˆμ—μ„œ μ½”λ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ κΈ°μ°¨λ₯Ό μš΄μ „ν•˜κ±°λ‚˜ μ‘°μ’…ν•˜μ£  κ·Έλ ‡λ‹€κ³  이 κΈ°μ°¨κ°€ κ³ μ†λ„λ‘œλ₯Ό λ‹¬λ¦¬κ±°λ‚˜ λ°”λ‹€ μœ„μ— λ– λ‹€λ‹ˆμ§„ μ•Šμ„ κ²λ‹ˆλ‹€. 무슨 말인지 λŒ€μΆ© 감이 μ˜€μ‹œλ‚˜μš”?

  • API ( Applicaition Programming Interface )

    μœ„ν‚€μ—μ„œλŠ” APIλ₯Ό μ‘μš©ν”„λ‘œκ·Έλž¨μ—μ„œ μ‚¬μš©ν•  수 μžˆλ„λ‘, 운영 μ²΄μ œλ‚˜ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄κ°€ μ œκ³΅ν•˜λŠ” κΈ°λŠ₯을 μ œμ–΄ν•  수 있게 λ§Œλ“  μΈν„°νŽ˜μ΄μŠ€λΌκ³  μ •μ˜ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. μΈν„°νŽ˜μ΄μŠ€λΌλŠ” ν‘œν˜„μ΄ 두 μ–Όκ΅΄ μ‚¬μ΄λΌλŠ” 말이죠? μ–΄λ–€ κΈ°λŠ₯을 μ œκ³΅ν•˜λŠ” 운영체제, ν”„λ‘œκ·Έλž¨λ“€κ³Ό μ†Œν†΅ν•˜λŠ” 방법, κ·œμΉ™μ„ 뜻 ν•©λ‹ˆλ‹€. λΉ„μœ λ₯Ό λ“€μžλ©΄ κΈ°μ°¨λ₯Ό λ§Œλ“€ λ•Œ λ‚˜μ—κ²Œ μ—†λŠ” μ»€λ‹€λž€ ν•©νŒμ΄ ν•„μš”ν•˜λ©΄ μ œμ² μ†Œμ— κ°€μ„œ μš”κ΅¬ν•˜λŠ” 방식을 λœ»ν•˜λŠ” 것이죠. μ–΄λ–€ κΈ°λŠ₯을 μ‚¬μš©ν•˜κ³  μ‹ΆμœΌλ©΄ 이 곳으둜 μ—°κ²°ν•˜μž λΌλŠ” κ³΅ν†΅λœ 약속을 λ§Œλ“€μ–΄ 놓은 것이 APIμž…λ‹ˆλ‹€.

λΌμ΄λΈŒλŸ¬λ¦¬μ™€ ν”„λ ˆμž„μ›Œν¬μ˜ 차이


Reference