앱 개발 기술 정리
1. Native 앱 개발
- 안드로이드 (Android)
- 사용 언어: Java, Kotlin
- iOS
- 사용 언어: Swift, Objective-C
2. Cross Platform (크로스 플랫폼)
- 한 번 개발하여 여러 운영체제(Android, iOS)에서 실행 가능
- React Native
- Flutter (Dart 사용)
3. Hybrid 앱 개발
- 웹 기술을 활용한 앱 개발 방식
- WebView 기반 웹사이트 앱
- 사용 기술: HTML, CSS, JavaScript
- Apache Cordova
4. 기타 기술 및 트렌드
- Stack Overflow 트렌드: Flutter의 인기가 React Native보다 빠르게 증가하는 추세
- Firebase: 실시간 데이터베이스 서비스 제공
- ReactiveX: 비동기 프로그래밍을 위한 API 제공
앱 개발 기술 비교 표
개발 방식대상 플랫폼사용 기술
Native | Android | Java, Kotlin |
Native | iOS | Swift, Objective-C |
Cross Platform | Multi-platform | React Native |
Cross Platform | Multi-platform | Flutter (Dart) |
Hybrid | Web-based | WebView |
Hybrid | Web-based | HTML+CSS+JS |
Hybrid | Web-based | Apache Cordova |
프로그래밍 언어 트렌드 분석 – 어떤 언어가 뜨고, 어떤 언어가 지고 있을까?
프로그래밍 언어의 인기는 계속 변화합니다. 개발자 커뮤니티인 Stack Overflow의 질문 비율 변화를 분석한 그래프를 통해, 최근 몇 년간 어떤 언어가 부상하고, 어떤 언어가 쇠퇴하고 있는지 알아보겠습니다.
🔥 급상승한 프로그래밍 언어
✅ Python – 데이터 과학, AI, 웹 개발 분야에서 강세를 보이며 2010년대 중반 이후 급격히 성장
✅ JavaScript – 웹 개발의 필수 언어로 지속적인 인기를 유지
✅ Swift – iOS 개발에서 Objective-C를 빠르게 대체하며 점유율 상승
📉 감소하는 프로그래밍 언어
❌ Java, C# – 한때 강세였으나 최근 점진적으로 감소하는 추세
❌ Objective-C – Swift 등장 이후 iOS 개발에서 점차 사라지는 중
❌ PHP – 웹 개발 언어로서의 점유율이 낮아지는 경향
🔍 결론
📊 Python과 JavaScript가 가장 강력한 언어로 자리 잡고 있으며, Swift는 iOS 개발에서 필수 언어로 정착 중입니다. 반면, Java, C#, PHP 등은 점점 줄어드는 추세를 보이고 있습니다. 프로그래밍 언어를 배울 때 이러한 트렌드를 참고하면 더욱 경쟁력 있는 개발자가 될 수 있습니다. 🚀
MVC, MVP, MVVM 차이
iOS 개발에서 앱의 코드 구조를 정리하는 방법에는 MVC, MVP, MVVM이라는 패턴이 있어요. 이 패턴들은 코드를 깔끔하게 유지하고, 유지보수를 쉽게 하도록 도와주는 역할을 합니다.
🎭 1. MVC (Model-View-Controller) – 가장 기본적인 구조
🛠 역할
- Model: 데이터 (예: 사용자 정보, 게임 점수)
- View: 화면 UI (버튼, 이미지, 글씨 등)
- Controller: 사용자의 입력을 받아서 Model과 View를 연결
📌 비유: 레스토랑
- Model: 요리 재료 (데이터)
- View: 요리가 완성된 접시 (사용자가 보는 화면)
- Controller: 요리사 (주문을 받아서 요리를 만들고 손님에게 전달)
🛑 문제점:
- Controller가 너무 많은 일을 해서 코드가 복잡해짐
- 앱이 커질수록 유지보수가 어려워짐
🦸 2. MVP (Model-View-Presenter) – Controller를 Presenter로 변경
🛠 역할
- Model: 데이터 저장
- View: 화면 UI
- Presenter: Controller 대신 View와 Model을 중간에서 조율
📌 비유: 레스토랑 (MVP 버전)
- Model: 요리 재료
- View: 손님이 받는 완성된 요리
- Presenter: 웨이터 (손님의 주문을 주방에 전달하고, 요리가 나오면 손님에게 전달)
🛠 장점:
- Controller보다 Presenter가 더 깔끔하게 역할을 분리
- View는 Presenter가 시킨 것만 하기 때문에 코드가 정리됨
🛑 문제점:
- Presenter 코드가 길어질 수도 있음
🤖 3. MVVM (Model-View-ViewModel) – 최신 방식, SwiftUI에서 많이 사용됨
🛠 역할
- Model: 데이터
- View: 화면 UI
- ViewModel: Model에서 데이터를 받아서 가공한 후 View에 전달
📌 비유: 레스토랑 (MVVM 버전)
- Model: 요리 재료
- View: 손님이 받는 완성된 요리
- ViewModel: 요리사가 알아서 맛있게 요리를 만들고, 메뉴판을 업데이트해서 손님이 주문하면 바로 가져다줌
🛠 장점:
- View와 Model이 완전히 분리됨 → 유지보수 편리
- SwiftUI와 잘 맞음 (데이터 변화가 UI에 자동 반영됨)
🛑 문제점:
- 처음 배우면 조금 어려울 수 있음
📢 요약 정리 (가장 큰 차이점)
패턴 | 핵심 개념 | 특징 |
MVC | Controller가 Model과 View를 연결 | 가장 기본적이지만 Controller가 복잡해짐 |
MVP | Presenter가 Model과 View를 조율 | View가 Presenter에게 의존적 |
MVVM | ViewModel이 데이터 변화를 자동 반영 | 최신 방식, SwiftUI에 최적화 |
📊 MVC, MVP, MVVM 비교 (장단점 분석)
패턴 | 장점 | 단점 |
MVC | 가장 기본적인 방식, 이해하기 쉬움 | Controller가 너무 많은 일을 해서 코드가 복잡해짐 |
MVP | View와 로직을 분리하여 코드가 정리됨 | Presenter가 너무 커질 수 있음 (무거워짐) |
MVVM | 최신 방식, SwiftUI와 호환성이 뛰어남 | 초반 학습이 어렵고, 복잡한 앱에서는 관리가 어려울 수도 있음 |
📌 한 줄 정리
- MVC: 가장 기본적인 방식 (Controller가 핵심)
- MVP: Controller 대신 Presenter를 사용하여 더 깔끔하게
- MVVM: 최신 방식, SwiftUI에서 활용, ViewModel이 중간에서 데이터 변화를 관리
이제 어떤 패턴을 써야 할지 이해하기 쉬울 거예요!
SwiftUI를 사용한다면 MVVM이 가장 추천되는 방식입니다. 😊
Swift의 Nil-Coalescing 연산자 (??)란?
?? 연산자는 옵셔널 값이 nil이면 기본값을 반환하고, nil이 아니면 옵셔널 값을 그대로 사용하는 연산자입니다.
✅ 기본 문법
let value: String? = nil
let result = value ?? "기본값"
print(result) // "기본값"
- value가 nil이므로 "기본값"이 출력됨.
let value: String? = "Hello"
let result = value ?? "기본값"
print(result) // "Hello"
- value에 값이 있으므로 "Hello"가 출력됨.
🛠 활용 예시
✅ 딕셔너리에서 기본값 제공
let scores = ["Alice": 90, "Bob": 85]
let score = scores["Charlie"] ?? 0
print(score) // 0 (Charlie가 없으므로 기본값 0)
✅ 함수의 옵셔널 반환값 처리
func getUserName() -> String? {
return nil
}
let userName = getUserName() ?? "Guest"
print(userName) // "Guest"
🚀 정리
- ?? 연산자는 옵셔널이 nil일 때 기본값을 제공하는 간단하고 유용한 기능!
- if let보다 간결하게 옵셔널을 처리할 수 있음! 🎯
- https://bbiguduk.gitbook.io/swift
📌 Swift로 특정 이름을 10번 출력하는 코드
🛠 기본 for문 사용
let name = "John"
for _ in 1...10 {
print(name)
}
🛠 while문 사용
let name = "John"
var count = 0
while count < 10 {
print(name)
count += 1
}
🛠 고차 함수 repeatElement 활용
let name = "John"
for item in repeatElement(name, count: 10) {
print(item)
}
📌 간단한 앱 만들기 – 3가지 방법 (Storyboard, UIView(UIKit), SwiftUI)
iOS에서는 Storyboard, UIView(UIKit 코드 기반), SwiftUI 3가지 방법으로 앱을 개발할 수 있습니다. 각각의 방식으로 "Hello, World!" 버튼을 눌렀을 때 텍스트가 변경되는 간단한 앱을 만들어보겠습니다.
✅ 1. Storyboard 사용 (GUI 기반)
Storyboard는 Xcode의 시각적인 편집기를 활용하여 UI를 만들 수 있는 방식입니다. 초보자가 쉽게 접근할 수 있습니다.
📌 1️⃣ 프로젝트 생성
- Xcode 실행 → "Create a new Xcode project"
- App 선택 → "Next"
- Interface: Storyboard / Language: Swift 선택 후 프로젝트 생성
📌 2️⃣ UI 만들기
- Main.storyboard 파일을 열고, Label과 Button을 추가합니다.
- Label 속성 변경: 기본 텍스트를 "Hello, World!" 로 설정
- Button 속성 변경: 버튼의 제목을 "변경하기"로 설정
- Control + 드래그(⌃ + Drag)하여 ViewController.swift에 연결
- Label → IBOutlet (이름: helloLabel)
- Button → IBAction (이름: changeText)
📌 3️⃣ 코드 추가 (ViewController.swift)
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var helloLabel: UILabel!
@IBAction func changeText(_ sender: UIButton) {
helloLabel.text = "안녕하세요, iOS!"
}
}
📌 4️⃣ 실행 및 테스트
- Command(⌘) + R 키를 눌러 앱 실행
- 버튼을 누르면 Label의 텍스트가 변경됩니다.
✅ 2. UIView (UIKit 코드 기반) 사용
UIKit을 사용하면 스토리보드를 사용하지 않고 코드만으로 UI를 구성할 수 있습니다. 유지보수가 편하고 커스텀 UI를 만들기 쉽습니다.
📌 1️⃣ 프로젝트 생성
- Xcode 실행 → "Create a new Xcode project"
- App 선택 → "Next"
- Interface: Storyboard (사용 안 함) / Language: Swift 선택 후 프로젝트 생성
- SceneDelegate.swift에서 window 설정 추가
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let windowScene = (scene as? UIWindowScene) else { return }
window = UIWindow(windowScene: windowScene)
window?.rootViewController = ViewController()
window?.makeKeyAndVisible()
}
📌 2️⃣ 코드 작성 (ViewController.swift)
import UIKit
class ViewController: UIViewController {
let helloLabel = UILabel()
let changeButton = UIButton(type: .system)
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white
// Label 설정
helloLabel.text = "Hello, World!"
helloLabel.font = UIFont.systemFont(ofSize: 24)
helloLabel.textAlignment = .center
helloLabel.frame = CGRect(x: 50, y: 200, width: 300, height: 50)
view.addSubview(helloLabel)
// Button 설정
changeButton.setTitle("변경하기", for: .normal)
changeButton.frame = CGRect(x: 100, y: 300, width: 200, height: 50)
changeButton.addTarget(self, action: #selector(changeText), for: .touchUpInside)
view.addSubview(changeButton)
}
@objc func changeText() {
helloLabel.text = "안녕하세요, iOS!"
}
}
📌 3️⃣ 실행 및 테스트
- Command(⌘) + R 키를 눌러 앱 실행
- 버튼을 누르면 Label의 텍스트가 변경됩니다.
✅ 3. SwiftUI 사용 (최신 방식)
SwiftUI는 코드만으로 UI를 선언적으로 작성하는 방식입니다. UI가 코드와 동기화되어 변경 사항이 즉시 반영됩니다.
📌 1️⃣ 프로젝트 생성
- Xcode 실행 → "Create a new Xcode project"
- App 선택 → "Next"
- Interface: SwiftUI / Language: Swift 선택 후 프로젝트 생성
📌 2️⃣ ContentView.swift 코드 작성
import SwiftUI
struct ContentView: View {
@State private var text = "Hello, World!"
var body: some View {
VStack {
Text(text)
.font(.largeTitle)
.padding()
Button("변경하기") {
text = "안녕하세요, iOS!"
}
.padding()
.background(Color.blue)
.foregroundColor(.white)
.cornerRadius(10)
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
📌 3️⃣ 실행 및 테스트
- Command(⌘) + R 키를 눌러 앱 실행
- 버튼을 누르면 Label의 텍스트가 변경됩니다.
🚀 3가지 방법 비교 (장단점 분석)
방법 | 장점 | 단점 |
Storyboard | GUI 기반으로 쉽게 UI 구성 가능, 초보자 친화적 | 큰 프로젝트에서 관리가 어려움, 코드 재사용성이 낮음 |
UIView (UIKit 코드 기반) | 커스텀 UI 제작이 자유롭고, 유지보수 용이 | 코드 작성량이 많아짐, UI 변경 시 번거로울 수 있음 |
SwiftUI | 코드가 간결하고 실시간 미리보기 가능, 최신 기술 | iOS 13 이상만 지원, 복잡한 UI에서는 UIKit과 혼용 필요 |
🎯 어떤 방식을 선택할까?
- 초보자 → Storyboard부터 시작하여 기본 개념 익히기
- 커스텀 UI가 많거나 유지보수 중요 → UIView (UIKit 코드 기반) 활용
- 최신 방식, SwiftUI를 배우고 싶다면? → SwiftUI 추천
SwiftUI는 최신 방식이라 앞으로 점점 더 많이 사용될 예정이므로, UIKit과 함께 SwiftUI도 익혀두는 것이 유리합니다.
과제
1. Swift로 자기 이름 10번 출력 후 스크린샷
2. 네이버에서 영화 순위 검색 및 관객 수 확인
3. 영화진흥위원회 API를 이용하여 2025년 3월 XX일(202503XX) 박스오피스 데이터 가져오기
- API 링크에 접속합니다.
- URL에서 targetDt=202503XX 부분을 원하는 날짜로 변경합니다.
예: targetDt=20250301 (2025년 3월 1일 데이터) - 브라우저에서 해당 URL을 열면 JSON 형식의 박스오피스 데이터가 표시됩니다.
- 해당 내용을 스크린샷 찍거나 JSON 파일로 저장합니다.
4. JSON 데이터를 Beautify (가독성 있게 정리) 후 스크린샷
JSON Beautify 작업
- 아래 JSON Beautifier 사이트에 접속합니다.
Code Beautify - JSON Viewer - 3번에서 얻은 JSON 데이터를 복사하여 붙여넣기 합니다.
- "Beautify" 버튼을 클릭하여 데이터 정리합니다.
- 정리된 JSON 데이터를 스크린샷 찍어서 저장합니다.
'Study > iOS' 카테고리의 다른 글
[iOS] iOS 프로그래밍 실무 3주차 정리 (0) | 2025.03.20 |
---|---|
[iOS] iOS 프로그래밍 실무 2주차 정리 (1) | 2025.03.15 |
[iOS] iOS 프로그래밍 기초 14주차 정리 (26) | 2024.12.05 |
[iOS] iOS 프로그래밍 기초 13주차 정리 (2) | 2024.11.28 |
[iOS] iOS 프로그래밍 기초 11주차 정리 (7) | 2024.11.22 |