어플리케이션(앱) 개발을 공부하고 싶은데 뭐가뭔지 하나도 모르겠다~~ 하시는 분들은 참 막막하죠?

참.. 알고나면 별거아닌데 뭐든 첫단추가 젤 어렵고 힘든것 같습니다.

만약 여러분들이 앱 개발을 하고 싶다고 생각을 하셨다면 방법을 찾아보셨을테고 ( 또는 찾고계실테고 )

아래와 같은 질문이 떠오르셨죠?

Q. 앱은 어떻게 만드나요?

A. 각 플랫폼에 맞는 개발언어를 이용해서 소스코드를 작성 후 컴파일 & 빌드하셔서 배포하시면됩니다. ( feat. IDE or 에디터 )

여기서 비전공자분들은… 😭 이런 표정을 지으시겠죠?

하지만!! 알고나면 별거아닙니다. 차근차근 하나씩 알아보시죠.
( 속는셈치고 한번 읽어보세요… 진짜 속으실지도.!? )

플랫폼이니 개발언어니 컴파일이니 빌드니 배포니 IDE니 그게다 뭔가요? 먹는건가요?  🤔
( 아닙니다. )

플랫폼?

우리가 사용하는 ( 어플리케이션이 실행될 ) 기기의 환경을 말합니다.

크게는 PC 와 모바일 세부적으로는 윈도우, 맥, 리눅스, IOS, 안드로이드 등등이 있습니다.

PC는 우리가 책상에 놓고 쓰이는 데스크탑 PC와 노트북과 같은 기기들의 환경을 지칭하는데요.

국내 사용자가 가장 많이 사용하는 게임머신 윈도우,  애플갬성이 녹아있는 맥,  개발자와 해커느낌쓰의 리눅스 등이 있습니다.

모바일은 우리가 핸드폰 또는 스마트폰으로 부르는 기기를 말합니다.

흔히알고계시는 애플의 아이폰은 IOS 라는 플랫폼으로 불리며
구글, 삼성폰은 안드로이드라는 플랫폼으로 불립니다.

+ PC
– 마이크로소프트 : 윈도우 ( Window OS )
– 애플: 맥 ( MacOS )
– 리누스 토르발스: 리눅스 ( LInux OS )

+ 모바일
– 애플 : IOS
– 구글,삼성 : 안드로이드 ( Android OS )

요렇게 정리할 수 있겠네요 👍

개발언어? 소스코드?

우리가 현재 사용하고있는 컴퓨터나 스마트폰으로 사용하는 프로그램들( 인터넷 브라우저, 음악 플레이어, 게임, 문서 작성 프로그램, 메신저 등 )을 만들고 작동시키기 위해
기계(컴퓨터, 스마트폰)가 알아들을 수 있도록 정의한 대화방법(언어)라고 생각하시면 되요.

사람도 한글,영어,중국어등을 통해서 대화를 하고 내 생각을 전달하듯이 기계도 기계만의 언어가 있다고 생각하시면됩니다. 
( 기계랑 대화하고 명령을 내리려면 기계가 알아듣는 언어를 아셔야하는거죠! )

그런데 문제는 컴퓨터는 하나의 언어밖에 모릅니다..
이진수(기계어)라는 언어죠. ( 이진수  밖에 모르는 바보.. ㅠ_ㅠ )

초기의 컴퓨터가 발명된 시절에는 실제로 사람이 이진수( 0101010101010 )로 코드를 만들어 기계에게 명령을 했었다던데요?! ( 실화냐.. )

예를들면 0101 ( 안 ) , 01010100 ( 안녕 ), 0101010001101100000011100110101 ( 안녕? 반가워 ) 이런식인거죠.
( 예시를 위해서 간단하게 표현했을뿐 실제로는 이거보다 훠얼씬~ 복잡할겁니다. ㅎㅎ )

한번 생각해보세요.. 이런식으로 기계에게 복잡하고 다양한 어플리케이션을 만들 수 있을까요?

설마 만든다 해도 소요 시간이…..

이건 외계어로 외계인과 대화하는 거나 마찬가지입니다. ( 빵상빵상.. 깨랑깨랑.. )

그래서 똑똑하신 선구자들께서는 사람이 좀 더 친숙하고 편하게 사용할 수 있으면서
기계와 대화할 수 있는 방법을 만들자! 해서 탄생한게 고차원의 개발 언어들이죠.

현재까지도 C, C++, Java, PHP, Python, Javascript 등등의 수많은 고차원 언어들이 개발되었습니다.
개발하려는 사람에 따라 또는 어떤 프로그램을 개발하느냐에 따라 적절한 언어를 선택하여 개발을 시작하면됩니다.

다만 고차원언어들은 사람의 편의성을 위해 생겨난 언어일뿐 기계는 알아 들을 수 없는 언어입니다.
그래서 사람이 고차원 언어로 작성한 코드를 기계가 유일하게 알아듣는 기계어(이진수)로 번역을 해줘야합니다. ( 이진수밖에 모르는 바보2 ㅠ_ㅠ )
( 이 단계가 조금 후에 설명드릴 컴파일 이라는 작업입니다. )

그리고 이런 개발 언어(기계어,고차원언어)들을 이용해서 작성한 결과물을 소스코드라고 하는거죠.
( 즉, 소스코드는 결국 개발언어로 작성된 문서입니다. )

컴파일? 빌드?

컴파일이란 사람이 작성한 소스코드를 컴퓨터가 알아들을 수 있는 언어인 기계어(이진수)로 변환해주는 작업을 말합니다.
즉 사람이 알아볼 수 있는 언어로 작성한 문장들을 기계가 알아들을 수 있는 언어로 바꿔주는 작업입니다.
( 사람으로치면 영어를 한글로 번역해주는 번역기를 사용한다고 보시면됩니다. )

만약 소스코드가 print “안녕하세요” 라고 작성을 했다고 한다면
컴파일 작업을 통해 기계가 알아들을 수 있는 이진수( 0101010000… ) 로 변환해주고

기계는 변환된 이진수(0101010000…)를 해석해서 화면에 `안녕하세요` 를 출력하라는 말이구나! 로 알아듣고 그 명령을 실행하게되는거죠.

이런 컴파일작업은 간단한 소스코드의 경우에는 눈깜짝할 사이면 가능하지만
복잡한고 방대한 소스코드들은 컴파일 시간이 몇십분~몇시간이 걸리는 경우도 있습니다.

물론 요즘 컴퓨터가 워낙 좋아져서 많이 빨라졌고 앞으로는 더더욱 빨라지게 될겁니다

그러나 컴파일이 완료되었다고 바로 우리가 실행하는 프로그램이 되는것은 아니에요.

컴파일은 단순히 번역을 언어를 이해할 수 있도록 번역해주는것이기 작업이고
이 번역된 코드를 실제 기계가 실행할 수 있는(각 환경에 맞는) 결과물로 만들어줘야하죠.

그게 빌드라는 작업입니다.
영어단어에서부터 어떤 느낌인지 아시겠죠? ㅎㅎ

건물을 짓듯이 컴파일된 소스코드를 모아모아서 각 환경에 맞는 설정과 추가적인 코드들을 살짝~ 추가해서
기계가 실행할 수 있는 최종 결과물인 어플리케이션(프로그램)을 만들어내는 작업을 일컫습니다.

이제 컴파일과 빌드를 통해 만들어진 최종 결과물이 우리에게 어플리케이션이라는 이름으로 배포되고 다운받아서 실행 할 수 있게 되는거죠.

참 쉽죠? 😎

배포?

배포란 누구나 또는 특정 대상의 사람들이 컴파일&빌드의 결과물(어플리케이션)을 다운받고 실행할 수 있도록 제공하는 방법입니다.

대부분이 많이 이용하는 방법으로는 웹사이트나 앱스토어등이 있습니다.
( 개인 메신저나 메일로 전달해도 불편하긴하지만 배포입니다. ㅎㅎ )

물론 내가 만든 어플리케이션은 공개하고싶지 않아! 하시면 배포를 안하시고 혼자쓰시거나
몰래 한두명에게만 메일로 보내주셔도 무방합니다. 😅

그러나 나는 내가 만든 결과물을 많은 사람들이 자유롭게 편하게 널리널리 퍼뜨려서 이용해줬으면 좋겠어! 라고 한다면
웹사이트나 앱스토어등을 이용해 배포하시는게  정신건강에 좋습니다. 😁

웹사이트를 통한 배포는 간단하게는 클라우드서비스(구글드라이브, 드랍박스 등)에 내 어플리케이션 파일을 업로드한 후
클라우드서비스에서 제공하는 다운로드(공유)링크를 웹사이트내에 게재하여 배포하거나, 웹사이트가 실행되는 서버에 어플리케이션을 업로드한 후 다운받을 수 있는 링크로 만들어주는 방법이 있습니다.

앱스토어를 통한 배포는 각 앱스토어(애플 앱스토어, 구글 플레이스토어)에 일정 금액을 내고 개발자등록을 하신뒤
각 앱스토어에서 안내하는 배포 프로세스를 따라 진행하시면 손쉽게 전국 또는 전세계에 배포를 하실 수 있게됩니다.

에디터? IDE?

우리가 블로그에 글을 쓰든 회사에서 보고서를 쓰든 번뜩이는 아이디어를 기록를 하든 어딘가에는 내 생각을 문장으로 적어야하듯이
어플리케이션을 만들기위해서는 내 머릿속에 떠오른 생각을 실제 문장(코드)으로 적어야합니다.

그렇다면 어디에 어떻게 적어야할까요?

흔히알고 계시는 메모장이나 워드 등으로도 소스코드를 작성 할 수 는 있지만
아무래도 소스코드가 길어지고 복잡해 질 수록  편리한 문명의 도움(?)을 받아야합니다.
( 물론 메모장이나 워드로만 주구장창 작성하셔도 뭐라고할 사람은 없습니다 ^_^;; )

그러나 대부분의 개발자들은 편의성을 위해 주로 에디터 또는 IDE를 활용하는 편인데요.

에디터는 말그대로 소스코드를 작성하고 편집의 편의성을 향상시키는것에 초점이 맞춰서 제공되는 프로그램이고
IDE = Integrated development environment ( 통합 개발 환경 ) 는 소스코드 작성 뿐만이 아니라
컴파일, 빌드. 디버깅도 하나의 프로그램으로 통합해서 제공해주는 프로그램입니다.

즉, 

– 에디터: 소스코드 작성 편리함
– IDE: 소스코드, 컴파일, 빌드, 디버깅 편리함

에디터는 소스코드 작성에 초점이 맞춰져있다보니 기능은 IDE에 비해 적지만 가볍고 심플한편이며

IDE는 반대로 많은 기능을 제공하지만 조금 무겁고 복잡한편입니다. 

에디터나 IDE는 개발언어마다 또는 사용하시는 컴퓨터의 환경(맥,윈도우,리눅스)에 따라 천차만별인데요.

대략적으로 제가 사용해본 또는 많이 알려진 프로그램들 위주로 살펴보겠습니다.


에디터

– Visual Studio Code ( VS Code)

vscode editor

Visual Stuio Code (VS Code) 는 마이스크로스프트(MS)사에서 오픈소스로 만들어진 소스코드 에디터입니다.
( 태생은 에디터이지만 다양한 플러그인등을 활용해 IDE에 버금가는 기능들을 제공합니다. )

일단 믿을 수 있는 회사의 주도와 오픈소스 커뮤니티를 활용해 만들어지는 에디터이다보니

굉장히 완성도가 있을뿐만 아니라 무료로 제공됩니다. ( 무료 조하~ )

왠만한 알만한 개발언어들은 관련 플러그인들이 지원되고

꾸준히 업데이트도 되기 때문에 남녀노소 누구에게나 강추! 드리는 에디터입니다.

웹사이트: https://code.visualstudio.com/


# 지원하는 플랫폼

지원 플랫폼

Icons made by Freepik from www.flaticon.com


– Sublime Text

이미지 출처: https://www.sublimetext.com/

에디터는 가벼운게 최고야! 하시는 분들에게는 Sublime Text 에디터를 추천해드립니다.

제 개인적인 생각으로는 많이 알려진 에디터중에는 가장 빠릿빠릿하고 가볍다고 생각합니다.

거기에다가 다양한 플러그인을 지원해서 IDE 에 버금가는 프로그램으로도 활용가능합니다.

기본적으로 무료로 제공하는데 중간중간 유료로 한번 구매해서 써보시오! 라는 알림이 뜨는게 유일한(?) 단점입니다 ㅎㅎ;;
( 유료와 무료는 기능상의 차이점은 없습니다. 유료라기보단 후원의 개념이라고 보시면 더 좋을듯 싶네요. )

웹사이트: https://www.sublimetext.com/


# 지원하는 플랫폼

지원 플랫폼

Icons made by Freepik from www.flaticon.com


– Atom

이미지 출처: https://github.com/atom/atom

왠지 아톰하면 떠오르는건 일본 애니메이션 우주소년 아톰의 로봇을 떠올리게되는데.. 

발음만 같을뿐 그 아톰과는 전혀 상관없는 (ㅋㅋ) Atom 에디터입니다.

Github 에서 오픈소스로 개발 및 업데이트가 진행되고 있으며 무료이며,

다양한 확장기능들을 제공하여 원하는 목적에 맞게 활용 할 수 있습니다.

웹사이트: https://atom.io/


# 지원하는 플랫폼

지원 플랫폼

Icons made by Freepik from www.flaticon.com


IDE

– Jetbrains

jetbrains 사의 에디터들

유료 IDE 중에서는 너무나도 유명하고 강려크한!! 프로그램이죠.

월 구독이긴하지만 가격도 그리 비싼편은 아니고 많은 사용자층과 꾸준한 업데이트 및 지원을 통해 나날이 발전해가는 프로그램입니다.

믿고쓰는 Jetbrains!! 

더 이상의 설명은 생략한다.

웹사이트: https://www.jetbrains.com/


# 지원하는 플랫폼

지원 플랫폼

Icons made by Freepik from www.flaticon.com


– XCODE

 이미지 출처: https://developer.apple.com/xcode

맥, 아이폰에서 작동하는 어플리케이션 개발은 애플에서 공식적으로 제공해주는 XCODE를 사용하는게 진리입니다.
( 애플 생태계의 특성상 거의 선택지가 없기도하구요 😭 )

애플 내부에서 만들어지는 프로그램이다보니 가장 최신기술을 안정적으로 구현할 수 있도록 지원해주고

미리보기, 실시간 디버깅 등 여러 편의성을 제공해줍니다.

가끔 업데이트시에 느려지거나 오류가 생기기도하는편이지만.. 완벽한 프로그램이 어디있겠습니까 ㅎㅎ 

웹사이트: https://developer.apple.com/xcode


# 지원하는 플랫폼

지원 플랫폼

Icons made by Freepik from www.flaticon.com


– 안드로이드 스튜디오

이미지 출처: https://developer.android.com/studio?hl=ko

아이폰에 XCODE가 있다면 안드로이드에는 안드로이드 스튜디오가 있습니다. 🤟

위에서 알려드린 Jetbrains 사의 Intellij IDEA 프로그램을 기반으로 만들어진 안드로이드 전용 IDE입니다.

구글에서 공식적으로 개발 및 업데이트를 진행하다보니 최근 안드로이드 개발자분들은 대부분이 사용하시는 프로그램이 아닐까 한데요.

안정성 및 최적화는 구글(!!)이니까 믿고쓰시면됩니다. ㅎㅎ

웹사이트: https://developer.android.com/studio?hl=ko


# 지원하는 플랫폼

지원 플랫폼

Icons made by Freepik from www.flaticon.com


– Visual Studio IDE

 이미지 출처: https://visualstudio.microsoft.com/ko/vs/

주로 윈도우 PC용 프로그램을 개발하기 위해 프로그램입니다.

마이크로소프트에서 제공하는 프로그램이므로 윈도우에서 작동하는 응용프로그램이나 게임을 개발할때 많이 쓰이는 프로그램입니다.
( 사실 이쪽도 XCODE와 비슷하게 대안이 별로없습니다. 😭) 

최근에는 맥용으로도 출시가되었긴 한데… 아직은 많이 쓰이는것 같지는 않고 추후 업데이트를 기대해 봐야겠습니다.

웹사이트: https://visualstudio.microsoft.com


# 지원하는 플랫폼

Icons made by Freepik from www.flaticon.com


이외에도 vi, emacs, eclipse 등등이 있는데요.

저도 개발 관련 프로그램들을 이것저것 많이 써봤는데

어떤 에디터가 좋으냐 나쁘냐 보다는 목적에 따라서 잘 활용하는게 최고이지 않을까 합니다.

이상으로 플랫폼,개발언어,컴파일,빌드,배포,IDE,에디터등에 대해 알아 보았습니다.

Q. 앱은 어떻게 만드나요?

A. 각 플랫폼에 따른 개발언어를 이용해서 소스코드를 작성한 후 컴파일 & 빌드하셔서  배포하시면됩니다. ( feat. IDE or 에디터 )

위 질문과 답변은 글 시작에 드렸던 질문과 답변인데요.

어떠신가요? 이제 이해가 좀 되시나요.
( 100% 다 하셨길 바라는건 욕심인가요? ㅎㅎ )

아무리 쉽게 쓰려해도 개발자의 입장에서 쓰다보니

제가 알고 있는걸 무의식중에 설명하지 않고 넘어가는 부분도 분명 있을것으로 생각합니다.

이런 부분들이 혹시나 이해가 안되신다하신다면 댓글로 남겨주세요.

그런 부분들은 제가 꼭 답변이나 원글을 업데이트 하여 이해에 도움이 되실 수 있도록 하겠습니다.

긴글 읽어주셔서 매우매우 감사드립니다. 👍