개발린생

현업 안드로이드 앱 개발자의 Android와 iOS 동시 공부 도전기! 본문

Dev Lab ✧.·˚/Android & iOS

현업 안드로이드 앱 개발자의 Android와 iOS 동시 공부 도전기!

김블루 2024. 10. 15. 23:53

회사의 어려운 상황이 큰 계기가 되어 해야지, 해야지 했던 iOS 개발 공부를 시작했다.

Android나 iOS나 공부하려고 사둔 서적들을 제쳐두고 ChatGPT와 함께 공부 시작!

 

iOS 개발 시작하며, Android 개발을 동시에 공부하려고 한다.

회사에서 업무를 하다 보면 기능 구현에 급급해져서 제대로 이해하지 않고 넘어가는 경우가 많다.
이런 상황이 반복되면, 같은 기능을 다시 구현할 때에도 복사-붙여넣기로 해결하려 하거나, 오류가 생기면 그때그때 검색하면서 문제를 해결하게 된다.

이로 인해 코드 퀄리티가 떨어지고, 면접에서도 해당 기능을 설명하기 어려울 뿐만 아니라, 내가 직접 구현했지만 내 실력으로 체화되지 않은 느낌이 들어서 매우 찝찝하다. (자신감도 떨어짐

 

이런 부분을 개선하기 위해서 이해를 바탕으로 기능을 구현하고, 코드 퀄리티에 신경쓰며 개발 공부를 진행해보기로 다짐했다!

 

ChatGPT의 도움을 받아 Android, iOS 개발을 하기 위해 알아야하는 필수 개념들을 정리해봤고, 순서대로 공부해보고 하나하나 깊게 공부해보려고 한다.

이미 안드로이드를 알고있기 때문에 Android와 iOS를 비교하며 공통적인 부분과 다른 부분을 정리해보고싶다.

 

공부가 완료된 항목들을 Bold 처리를 하거나.. 포스팅을 한다면 링크를 기재할 예정! 아자자🔥🔥


ChatGPT, Android와 iOS 개발의 필수 개념 알려줘.

 

Android 개발 필수 개념

  1. Activity와 Fragment
    • Activity: Android 앱의 한 화면을 나타내는 기본 단위.
    • Fragment: UI를 구성하는 더 작은 화면 단위로, 하나의 Activity 안에 여러 Fragment가 포함될 수 있음.
  2. View와 ViewGroup
    • View: 화면에 표시되는 기본 UI 요소 (버튼, 텍스트 등).
    • ViewGroup: 여러 View를 담고 있는 컨테이너(LinearLayout, ConstraintLayout 등).
  3. Intent와 Intent Filter
    • Intent: Activity 간의 전환이나 데이터 전달을 위한 객체.
    • Intent Filter: 특정 Activity가 어떤 인텐트를 처리할 수 있는지 정의하는 필터.
  4. Jetpack Compose
    • Android의 최신 UI 프레임워크로, 선언형 프로그래밍을 통해 UI를 쉽게 구성할 수 있음. 기존 XML 방식 대신 코드로 UI를 작성하는 방식.
  5. Lifecycle
    • Activity 및 Fragment의 생명주기를 관리하는 시스템. 생명주기를 이해해야 앱의 상태를 잘 관리할 수 있음.
  6. MVVM (Model-View-ViewModel) 패턴
    • UI(View)와 데이터(Model)를 분리하여 코드의 유지보수성을 높이는 디자인 패턴. ViewModel은 UI 로직을 담당.
  7. Dependency Injection (DI)
    • Hilt나 Dagger 같은 DI 프레임워크를 사용해 객체 의존성을 효율적으로 관리함. 객체 생성과 주입을 프레임워크가 담당해 코드가 더 깔끔해짐.
  8. Coroutines 및 Flow
    • 비동기 작업을 쉽게 처리할 수 있도록 도와주는 Kotlin의 기능. Coroutines는 비동기 처리를 위한 구조화된 동시성을 제공하고, Flow는 데이터 스트림을 처리함.
  9. Room
    • SQLite의 추상화 계층을 제공하는 Jetpack 라이브러리. 데이터베이스 작업을 더 쉽게 수행할 수 있게 도와줌.
  10. Navigation Component
    • 앱 내에서 화면 간의 네비게이션을 관리하는 라이브러리. 특히 Jetpack Compose와 함께 사용하는 경우, 코드가 단순하고 명확해짐.

iOS 개발 필수 개념

  1. UIViewController
    • iOS 앱의 화면을 나타내는 기본 단위. ViewController는 화면 간 전환, 데이터 관리 등의 역할을 담당.
  2. UIView와 UIKit
    • UIView: iOS에서 화면에 표시되는 기본 UI 요소.
    • UIKit: iOS의 주요 UI 프레임워크로, 레이아웃 구성, 애니메이션 등을 처리.
  3. SwiftUI
    • 선언형 프로그래밍을 통해 UI를 쉽게 구성할 수 있는 최신 UI 프레임워크. Swift 언어로 작성하며 UI 상태 변화에 따라 화면이 자동으로 갱신됨.
  4. Storyboard 및 Xcode Interface Builder
    • 스토리보드를 통해 앱의 UI를 시각적으로 설계하고, Xcode의 Interface Builder를 사용해 UI 요소를 배치함.
  5. Auto Layout
    • 다양한 화면 크기에 대응하기 위한 레이아웃 시스템. Constraints를 사용해 UI 요소 간의 관계를 정의.
  6. Delegation 패턴
    • 객체 간의 통신을 위해 사용하는 디자인 패턴. 이벤트나 데이터를 다른 객체에 위임해 처리할 수 있음.
  7. Combine
    • 데이터의 변화와 이벤트를 처리하기 위한 비동기 프레임워크. SwiftUI와 잘 통합되어 데이터 스트림을 다룰 때 사용됨.
  8. Core Data
    • iOS에서 영구 데이터를 관리하는 프레임워크로, SQLite를 추상화하여 사용하기 쉽게 만듦.
  9. MVVM 패턴
    • SwiftUI와 함께 많이 사용하는 디자인 패턴. ViewModel은 UI와 데이터를 연결해주며, UI 상태와 로직을 분리함으로써 코드의 유지보수성을 높여줌.
  10. App Life Cycle
    • iOS 앱의 생명주기는 앱의 상태 변화(실행, 백그라운드 등)에 따라 적절한 처리를 할 수 있게 해줌.

 

공통 필수 개념

  1. API 통신 및 네트워킹
    • Android는 Retrofit, iOS는 URLSession을 주로 사용해 서버와 통신을 처리함.
  2. User Interface (UI) 및 User Experience (UX)
    • 직관적이고 반응성이 좋은 UI/UX를 설계하는 것이 중요하며, 각 플랫폼의 디자인 가이드라인(Material Design, Human Interface Guidelines)을 준수해야 함.
  3. 비동기 처리
    • Android에서는 Coroutines, iOS에서는 Combine이나 Grand Central Dispatch(GCD)를 사용해 비동기 작업을 처리함.

iOS 개발 필수 개념

iOS 개발 필수 개념