ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • #1. Flutter Roadmap - Github 자료
    기술/Flutter 2021. 1. 23. 19:14

    들어가며

    친절하게도 대부분의 언어는 `roadmap`이라는 접미사를 가진 Github 레포지토리가 존재합니다.

    제작자가 생각하는 해당 언어, 프레임워크 혹은 경력을 어떻게 마스터할 것인가에 대해 순서대로 적어 둔 곳입니다.

     

    당연하게도 flutter_roadmap의 레포지토리가 있고

    거기서 어떻게 Flutter 를 마스터할 것인가를 레포지토리와 함께 제공해 줍니다.

     

    github.com/olexale/flutter_roadmap

     

    olexale/flutter_roadmap

    Highly Subjective Roadmap to Flutter Development. Contribute to olexale/flutter_roadmap development by creating an account on GitHub.

    github.com

    레포의 이름은 "매우 주관적인 Flutter 개발 로드맵"이라고 되어 있습니다.

    여기에서 왜 이것을 배워야 하는지를 설명하고 참고하면 좋을 링크들을 포함하고 있습니다.

    그래서 여기에 나오는 내용에 대해 순서대로 번역해놓고 참고하려고 합니다.

    영어 해석이 많이 부족하지만, 적어보면서 어떤 걸 공부해야 하는지 파악할 수 있을 것 같습니다.

     

    각 섹션에 대해 어떤 레퍼런스를 참고해야 할지는 github 링크를 따라 들어가면 있습니다.

     

    매우 주관적인 Flutter 개발 로드맵

    들어가기 전 항목에 대해 분류를 하고 있습니다.

    시간이 없다면 반드시 해야할 것만 하고 다른 것들을 아주 나중에 하셔도 좋을 것 같습니다.

     

    - 반드시 해야할 것

    - 하면 좋은 것

    - 하거나 말거나

    개발 기초

    개발 환경

    - Android Studio, Visual Studio Code 중 개발 환경을 선택하세요.

     

    개발 환경을 선택하고 단축키, IDE Plugin 을 배우세요.
    몇 시간을 단축키를 배우는데 시간을 들이면 나중에 개발 시간을 절약할 수 있습니다.

     

    - Flutter CLI

     

    일부 작업은 Command Line에서 수행하는 것이 더 빠르기 때문에 Flutter CLI를 아는 것이 유용합니다.

     

    - Git

     

    버전 관리 시스템을 빨리 사용할수록 좋은 습관을 들일 수 있습니다.
    Command Line 을 통해 Git을 사용하면 멋질 수 있지만
    Git Client 나 Sourcetree 또는 IDE에 통합하여 사용하는 것을 권장합니다.

     

    - DartPad

    Language

    - Dart

     

    - OOP

    - Functional

     

    OOP 와 함수형 프로그래밍에 대해 이야기가 나왔지만 지금은 단순하게 배웁니다. 
    이 단계에서는 Moands 나 복잡한 패턴에 대해 걱정하지 않아도 됩니다.

     

    - Code Style

     

    코드 스타일을 따르는 것도 중요하지만 완전히 새롭게 시작하는 경우 
    좌절감을 받을 수 있으므로 지금은 건너뛰어도 됩니다. 
    그러나 나중에 "Effective Dart" 매뉴얼을 읽어주세요.

     

    Flutter

    Basic Widgets

    - Material Widgets

     

    `Widget of the Week`이라는 Flutter 공식 유튜브 채널을 보세요. 
    Material Design Concepts 을 보며 Flutter에서 사용하는 기본적인 위젯에 익숙해집니다.

     

    - Material Design

    - Cupertino Design

    - Mobile HIG

     

    Core Design Patterns

    디자인 패턴은 미래의 애플리케이션을 위한 방법론입니다.
    이것들은 개발에 도움을 줄 뿐만 아니라 Flutter 프레임워크를 이해하는데도 도움이 됩니다.
    게다가, 이것들은 특정 언어나 프레임워크에 종속적인게 아닙니다. 때문에 미래를 위해서도 도움이 됩니다.
    "Gang of Four book" (GOF) 이라는 책이 도움이 됩니다.

     

    - Observer

    - Command

    - Factory

    - Dependency Injection

    - Builder

    - State

    - Decorator

    - Composite

     

    Core Design Principles

    KISS, DRY 는 소프트웨어 개발을 하면 반드시 사용해야 하는 기술입니다.
    하지만 SOLID 원칙은 전략적 토대입니다.
    "Clean Code by Uncle Bob" 이 도움이 될 것입니다.
    Provider 나 get_it을 통해 시작하세요.

     

    - KISS

    - DRY

    - SOLID

     

    Networking

    네트워크가 어떻게 동작하는지 알고 프런트엔드와 백엔드 사이에 있는 커뮤니케이션을 모두 알아야 합니다.
    Use code generation in proudction

     

    Chopper, json_serializeable를 사용하여 다룰 수 있습니다.

     

    - RESTful API

    - JSON

    - TCP/IP Sockets

     

    Simple Persistence

    대부분의 모든 앱들이 데이터를 저장할 필요가 있습니다.
    대부분의 모든 앱들이 큰 저장소를 필요로 하지 않습니다.
    단순하게 유지하고 필요한 만큼 저장소를 사용할 수 있어야 합니다.
    localstorage 같은 플러그인을 사용해보세요.

    - Serializers

    - Local storage

    - Keychain

    - Keystore

     

    더 깊이

    Database

    데이터 스토리지가 문제가 되는 경우 더 성숙한 설루션이나 클라우드로 전환할 수 있습니다.

    - SQLite

    - Firebase

    - Moor

    - iCloud

     

    Architecture

    Provider 같은 몇몇 아키텍처 패턴을 따르는 것도 괜찮습니다.
    Redux, Mobx, Bloc 등 알고 있다면 아키텍처 패턴으로 전환할 수 있습니다.

    - Redux

    - MVVM

    - MVC

    - Lifting State

     

    Testing

    앱을 빠르게 작성할 수 있는 방법은 한 가지입니다. 올바르게 작성합니다.
    TDD를 먼저 마스터하고 BDD로 변경하는 것을 추천합니다.

    - TDD

    - BDD

     

    Languages

    네이티브 모바일 개발 언어를 배우는 것은 플랫폼에 대한 이해에 도움이 됩니다.
    어느 시점에 서드 파티 라이브러리의 문제를 수정하거나 나만의 플러그인을 개발해야 하는 경우가 있습니다.
    "Udacity course for Android" and "Stanford Course for IOS"로 시작하세요.

    - Swift

    - Kotlin

     

    Dart

    이제 async/await 이 실제로 어떻게 동작하고 monad가 어떤 것이고 stateless 가 어떤 이익이 있는지 이해합니다.
    여기서 freezed 라이브러리를 시도해도 좋습니다.
    더 깊은 이해를 위해 Clousre 나 F# 의 기본 코스를 추천합니다.

    - Concurrent

    - Reactive

    - Functional

     

    Package Manager

    나만의 플러그인을 생성하세요.
    너무 쉽나요? 네이티브 뷰와 함께 플러그인을 생성하세요.
    여전히 쉽나요? 메모리가 누수가 없도록 하세요.

    - Pub

    - Popular Plugins

    - Maven

    - CocoaPods

     

    Profiling

    메모리가 누수를 찾는 방법을 이해하고, 성능 문제를 찾는 것도 가치가 있습니다.
    Flutter Europe youtube의 Filip Hracek의 이야기를 들어보세요.

    - Leaks

    - Allocations

    - Performance

    - Widgets

     

    Flutter Internals

    프레임워크 아키텍처에 더 친숙해집니다. 그리고 실제로 어떻게 레이아웃과 위젯을 그리는지 배웁니다.
    Adam Barth의 Flutters's rendering pipeline와 lan Hickson의 Flutter's architecture로 시작하기 좋습니다.

    - Framework Architecture

    - Dart VM

    - RenderObjects

    - Layouts

     

    거의 다 왔다

    Continuous Integration

    로컬 개발환경에서 프로덕션을 빌드하지 마세요. Github Action, Travis 같은 CI 노드에 등록하세요.
    소프트웨어 개발 환경의 라이프사이클을 구축하고 코드 커버리지와 기타 지표를 수집합니다.
    Danger, SonarQube에 대해 읽어보세요. 하지만 제일 중요한 것은 - FastLane.

    - CI Server

    - FastLane

    - Test Builds Distribution

    - Code metrics

     

    Analytics

    분석 없이 빌드하는 것은 항상 좋지 않은 생각입니다.
    Firebase, MS APP Center 같은 서비스에 익숙해지세요. 이 서비스는 무료로 제공됩니다.

    - User Behavior Analytics

    - Crash Logging

    - A/B Testing

     

    Store

    모바일 개발 경력을 시작하기 전 어떤 앱이 스토리에 적합한지 이해해야 합니다.
    무엇이 가능하고 무엇이 가능하지 않은지에 대해 고객에게 조언하는 것은 당신의 책임입니다.

    - AppStore Guidelines

    - Google Play Guidelines

    - App Store Connect

    - Google Dev Console

    댓글 0

Designed by Tistory.