Android Kotlin 을 통한 개발

DAY1, SESSION5 Android Kotlin을 통한 개발 전략


  • 개발 전략

    • 기존 코드를 어떻게 전환하고 확장할 것인가?
    • 넌 어느 별에서 왔니? (코틀린 주요기술의 근원)
      • 람다와 함수형
      • 프로퍼티와 함수
      • 연산자 재정의
      • Method Extension
      • Pipe Filter Model
    • 자바에서 코틀린으로 변환 과정
      • 멤버 변수의 초기화
      • @Nullable 처리
      • 중펍 클래스 쪼개기
      • Optional(?.)최적화
    • 코드 효율화를 위한 툴킷 정의와 활용
      • 전역변수와 프로퍼티
      • 연산자 재정의
      • 고차함수 활용
    • 거버넌스의 필요성
    • 맺음말 : 어떤 프로그램이 될 것인가?
  • 기존 코드를 어떻게 전환하고 확장할 것인가?

    • 기존 코드를 어떻게 전환할 것인가?
      • 바뀌는 부분만이라도 변환해 가자?
      • 새로 짜는 부분만?
    • 컴퓨터 언어도 습관이다 -> 잘 안바뀐다
    • 헤어날 수 없는 자바
      • 자바 스타일의 코틀린 코드
      • 기존 자바 코드에서 호출이나 참조가 쉽지 않다.
    • ? 를 이용한 null 처리가 너무 많다.
    • ...........영상을 보자
    • 정적 호출, 클래스 안에 상수 입력 등..

  • 이후 코드 설명 너무 많음...

'공부 > 기본' 카테고리의 다른 글

'머티리얼 디자인' 영상 시청  (0) 2019.04.23
'UX 디자인 시작하기' 영상 시청  (0) 2019.04.23

머티리얼 디자인의 철학과 적용 사례

DAY1, SESSION4 Material Design의 철학과 적용 사례


  • 머티리얼 디자인을 왜 만들었을까?

    • 구글 디자인.. 너무 안좋았다...
    • UX, UI 에 대한 개념이 보편적이지 않았음
    • 2011년 holo 디자인으로 조금씩 개선됨
    • 구글에게 필요했던 것
      • 다양한 폼팩터와 서비스를 아우르는 일관된 디자인 시스템
      • 현대적이고 아름다운 디자인
      • 개발자가 이해하기 쉬운 디자인
  • 머티리얼 디자인의 등장

    • 생산자가 생각한 방식보다도...
    • 사용자는 스스로가 편한 패턴으로 사용한다.
    • 아날로그 고유 속성에 중점
      • 물리적 속성
      • 형태 변환
      • 움직임
      • 높이
      • 음영
      • 객체 간 계층 구조
  • 머티리얼 디자인의 중요 특징

    • 입체적 표면
    • 의미있는 모션
    • 인쇄물 같은
  • 다량의 우수한 머티리얼 디자인 앱이 등장


어려웠던 점

  • 부족한 엔지니어링 리소스

    • 제공되는 라이브러리의 한계
    • 디자인과 개발 프로세스 간의 연결이 자연스럽지 않음
  • 비주얼 표현의 제약

    • 나만의 개성을 표한하기가 어려움
    • 안드로이드 앱을 위한 디자인이라고 착각하기 쉬움(편견)
  • 새로운 머티리얼 디자인 둘러보기

    • 머티리얼 디자인 목표
      • 다양한 플랫폼에서 사용자에게 일관된 경험을 제공한다
      • Create
    • 머티리얼 디자인 주요 특징
      • 기존 3가지
      • 유연한 기반
      • 크로스 플랫폼
  • 머티리얼 디자인

    • 머티리얼 시스템
    • 머티리얼 파운데이션
      • 머티리얼 디자인의 기반
      • 좋은 디자인이란? 질문에 대한 머티리얼 디자인의 제안
        • Environment
        • Layout
        • Navigation
        • Collaboration
        • Typography
        • Iconography
        • Shape
        • Motion
        • Interaction
        • Communication
      • 높이와 그림자
        • Before
          • 너무 까다롭다
        • After
          • 좀더 유연하게 허용해 주자
        • 모든 표면은 높이 값을 갖는다
        • 높이는 계층을 표현할 수 있다
        • 같은 계층에 속한 아이템은 동일한 높이 값을 갖는다
        • 사용자가 서로 다른 높이 값을 구분 할 수 있도록 테두리나 그 회 다른 시각적 요소가 사용되어야 한다.
        • 허용하지 않는 예시
          • 시각적으로 서피스(계층적인 콘텐츠)를 구분할 수 없을 때
    • 머티리얼 가이드라인
  • 머티리얼 디자인 연구 사례 (프로토타이핑 앱)

    • 레시피 앱 - Basil
      • 메뉴 (새롭게 구성한 네비게이션 드로워)
  • 머티리얼 가이드라인

    • 이전보다 훨씬 유연해짐
    • Material Theming (더 큰 우산 - Material Theme)
    • 독창적인 디자인 가능
    • 컬러 테마 (하나의 색을 선택하면 그에 알맞는 계층 색을 맞춰줌?)
      • 컬러 시스템 (색 세트)
      • 컬러 접근성
    • Typography (글자체) : 한글 적용됨
    • Iconography (아이콘)
    • Motion (Animation)
      • 더 과장되고 독창스러운 애니메이션도 허용
    • Tools
      • Theme Editor
        • 디자인 개발
        • Sketch (?)
        • Sticker Sheet (?)
      • Gallery
        • 개발된 디자인 공유 및 협업
        • 검토, 개선, 업데이트, 히스토리
  • 새로운 Components

    • Bottom App Bar
    • Banner
    • Extended FAB (Floating Action Button)
    • Chips : 상단의 메뉴를 끄고 킬수 있도록
    • Image Lists
    • Text Fields
    • Backdrop
  • 안드로이드에서 Material Design Components 사용하기

    • Develop (github)
    • Dependencies
      • com.android.material ~
    • lib
      • Custom View + Custom Style
    • .......... 글로 요약이 힘들다.

'공부 > 기본' 카테고리의 다른 글

'Android Kotlin 을 통한 개발' 영상 시청  (0) 2019.05.14
'UX 디자인 시작하기' 영상 시청  (0) 2019.04.23

디자인 1도 모르는 개발자, UX디자인 시작하기

DAY1, SESSION3 디자인 1도 모르는 개발자, UX디자인 시작하기


  • 앱스토어에 등록되어 있는 앱 수
    • 앱스토어 : 320만
    • 플레이 스토어 : 290만
  • 잘나가는 앱을 만들려면?
    • 버그가 없어야하나?
    • 기발한 아이디어가 필요한가?
    • 새로운게 필요한가?
    • UX 디자인을 해야한다
  • 사용자에게 중요한건
    • 기술력 X
    • 새로움 X
    • 기발한 X
    • 나에게 어떤 가치를 주는가 O
  • UX 디자인은 디자이너가 하는것이 아닌가?
    • UX 디자인은 하나의 Framework
  • 의자 하나를 바라보는 관점
    • 생산자
      • 이윤이 날을까
      • 어떻게 팔까
      • 어떤 소재를 쓸까
      • 완제품, 조립품
      • 어떻게 만들까
    • 사용자
      • 누가 이 의자를 쓸까
      • 왜 이 의자를 쓸까
      • 이 의자의 장점이 뭘까
  • 모든 인간은 디자이너 일까?
    • 절반의 대답은 디자이너는 직업
    • 절반은 디자인 이라는 행위를 하는 사람은 모두 디자이너
      • '지금의 디자인은 보다 근본적인 삶의 문제를 다루고 있다고 생각한다'
      • '디자인적 사고는 문제를 발견해 해결 방법을 제시하는 것이다. 이러한 면에서 모든 인간은 디자인적 사고가 가능하며 디자이너라고 할 수 있다.'
    • 우리는 모두가 디자인적 사고를 하고 디자이너가 되어야 한다.
  • 하나의 팀에서 각자의 역할
    • 리더, 디자이너, 개발자 모두 UX 디자인이라는 하나의 목적지를 목표로 해야한다.

  • Lean UX Cycle

    • Think -> Make -> Check -> Think -> ...
    • 낭비를 줄이는 것이 최우선 목적
    • 효율을 높이기 위해서는 협업이 가장 중요.
    • 삼성 패밀리 ?
      • 초기 UX 디자인 분석 단계부터 개발팀과 함께 진행
      • 기능 목적과 목표를 이해, 구현 가능한 스펙 정의
      • 완성도 높아짐
      • 개발자랑 친해짐
    • AIR
      • UX 디자인 워크샵
      • 서비스 목표와 전략 수립
      • 핵심 기능 도출
      • 플랫폼 전체를 바라보는 시각 형성
    • 기타 프로젝트 설명...
  • UX 디자인 함께 하면 좋은점

    • 공동의 목표를 세워, 자발적이고 주체적인 의사결정이 가능하다.
    • 시간과 비용 중심이 아닌 사용자 가치 중심의 스펙 정의가 가능하다.
    • 밀접한 협업이 가능하다.
    • 신속하게 결과를 도출하고 검증할 수 있다.
    • 낭비를 줄이고 위험요소를 미리 감지할 수 있다.
    • 서비스의 질이 좋아진다.
  • UX 디자인 팩트 체크

    • (O) UI 와 UX 디자인 다르다
      • UI : 기술적인 부분, 사용성, 일관성, 심미성
      • UX : 감정적인 부분, 어떻게 느끼는가, 사용자의 가치, 사용 환경, 지속 사용 여부
      • 사용자 경험?
        • Organic Experience : 자연적인 경험 (비, 바람, 냄새, 자연 환경)
        • Designed Experience : 설계된 경험 (테마파크, 방탈출)
      • 사용자 경험을 설계하는 일이 UX 디자인
      • 경험 순서
        • 경험(자극) - 관심(사용자 가치) - 긍정적 감정(사용자 만족) - 지속 사용
    • (X) 사용성만이 전부이다
      • 매슬로의 욕구 단계 이론
      • UX 욕구 단계 이론 (하위 -> 상위)
        • 유용성 - 신뢰성 - 사용성 - 편의성 - 즐거움 - 의미부여
      • 카노의 만족 모델
        • 매력적인 기능 (Delighter) : 기대하지 않았던 기능 - 있어도 없어도 그만
        • 일차원적 기능 (Performance) : 성능, 가격 - 있으면 좋음 - 비례하여 올라감
        • 당위적 기능 (Must-be) : 사용성, 편의성 - 반드시 있어야 함 - 한계가 있음
      • 사용성이 부족하더라도 매력적인 기능으로 만족도를 올릴 수 있다.
      • 사용성보다 사용자 가치가 높으면 사람들은 잘 사용한다.
    • (X) 시간이 오래 걸리고 비싸다
      • 효율적인 UX 디자인 프로세스 = Lean UX + Agile UX
      • 시간과 비용을 효율적으로 쓸 수 있다. (애자일)
    • (X) UX 디자인은 창의성에 의존한다
      • UX 는 Data 를 매우 좋아한다.
  • UX 디자인 프로세스

    • UX 의 질을 높이는 과정
    • 사용자의 만족을 궁극적인 목표로 삼는다
    • 어떻게 만들 것인가 -> 무엇을 만들 것인가
    • Collaboration 을 넘어서 Co-Create
  • 공동의 비전과 목표

    • 5Q : 서비싕 존재 이유를 정의한다.
      • 프로젝트의 목표는?
      • 내가 이 프로젝트를 통해 얻고자 하는 것은?
      • 우리의 주요 고객은 누구인가?
      • 프로젝트 진행에 걸림돌이 되는 것은? 위험 요소는?
      • 서비스의 성공적인 완성은 무엇으로 판단할 것인가?
  • 사용자를 이해하고 니즈를 구체화

    • 사용자 환경을 이해하고 필요한 것과 원하는 것을 찾는다.
    • Pain & Gain : 사용자의 힘든점
  • 사용자 경험 전략과 가치를 정의

    • 제품 고유한 특징과 사용자 가치를 정의한다.
    • Elevator Pitch
      • 제품 고유의 특징을 바탕으로 제품이 완성되면 가장 이상적
      • 사용자 들이 앱을 사용한 후 (이득인 부분)을 이야기 하면 좋겟다
      • 이것이 가능하기 위해서 (핵심 기능)이 필요하다
  • 기능 도출 : 카노 모델

  • 핵심 기능 실현 가능성 평가

    • NUF Test
      • 프로젝트 초기에 기능을 평가할 때 사용
      • 새로움(New) : 예전에 시도된 적이 있는가?
      • 유용함(Useful) : 문제를 해결할 수 있는가?
      • 실현 가능성(Feasible) : 실행이 가능한가? 리소스와 비용이 적게 들어가는가
  • 사용자 유효성 평가

    • Userbility Test
      • Userbility Test != Focus Groups Interview
        • Userbility Test : 사용자를 직접 대면하며 서비스 이용 상황을 직접 관찰
        • Focus Groups Interview : 사용자를 모아놓고 서비스에 대해 어떻게 대화하는지
      • 사용자에게 일정한 과제를 중 후 앱을 사용하는 것을 관찰
      • 시급한 문제를 구별하고, 다음 업무를 할당하는 것이 주 목적
      • 모든 문제를 찾을 필요 없다. 가장 심각한 문제에 집중
      • 당신이 옳다고 생각하는 때보다 더 일찍 시작하라
      • 프로젝트 진행 중 반복적으로 계속, 자주 하는 것이 중요
  • UX 디자인을 시작하려는 개발자에게

    • 우리는 팀입니다.
    • 우리는 사용자가 아닙니다. 될 수도 없고 되어서도 안됨 (개인의 취향일 뿐)
    • UX 디자인에 참여하는 것에 주저하지 마세요.

'공부 > 기본' 카테고리의 다른 글

'Android Kotlin 을 통한 개발' 영상 시청  (0) 2019.05.14
'머티리얼 디자인' 영상 시청  (0) 2019.04.23

+ Recent posts