전체 글 (165)

01
12

그래서 우리는 큰 초 하나에 10살로 치고 생일 파티를 하기도 하죠. 이것도 UX를 위한겁니다!

1. 정보 구조?

  • '프레임워크'라고 할 수 있다. 사용자가 디자인적인 측면이 아니라 사용에 편리하도록 보여줄 정보들의 위치 등을 정하는 것이다.
  • 사용자의 니즈를 파악하고 쉽고 편하게 누구나 이해할 수 있는 용어를 사용하며, 진행의 플로우를 잘 제공한다. 마치 상품을 판매하는 사람이 상품을 매력적으로 소개하는 것 과 같다.
  • 이때, 우리는 유저가 어떻게 이 서비스를 사용할까? 를 회원가입부터 회원 탈퇴까지 모든 과정을 유저의 입장에서 생각하면서 만들게 된다.

2. 접근법

  • 유저에게 어떤 정보를 어떤 부분에서 보여줘야 더 편하게 서비스를 이용할 수 있을까를 고민한다.
  • 정렬하는 방식이나 시점, 분류방식 등을 이용 할 수 있다.
  • 디자인 레이어 
    표현층(presentation layer) : UI  디자인, 편집 디자인, 특정 컴포넌트
    기능, 인풋과 아웃풋 : 인터랙션 디자인, UI 패턴
    데어터와 내용 : 정보 설계, 내비게이션 패턴
  • 이처럼, 보이는 부분과 데이터를 보여주는 부분을 나눠서 생각한다. 가장 아래에 있는 레이어가 가장 중요한 부분을 차지하고, 아래를 탄탄히 쌓아서 올려나가야 한다.

3. 콘텐츠를 분류하는 법

  • 정보를 필터링하거나 검색결과등을 보여줄 때 데이터를 분류하는 기준으로 쓸만한 것 들이다.
  1. 위치(Location)
    • 국가, 도시 등의 지리적 위치를 이용한다.
    • 사용자에게 자신의 위치를 알려줘야 한다.
  2. 가나다순(Alphabetical)
    • 매우 보편적인 정렬.
    • 어디든지 사용할 수 있어서 편하고 보기 좋다.
  3. 시간(Time)
    • SNS의 피드 등이 해당한다. 가장 최근에 생성된 피드가 가장 최상단으로 올라오게 된다.
    • 이처럼 오름차순, 내림차순으로 정렬이 가능하다.
  4. 카테고리(Category) or 필터(Facet)
    • 콘텐츠를 주제별로 묶은 카테고리를 만들어 이용할 수 있다.
    • 같은 주제로 묶인 항목들이기 때문에 정보를 더 깔끔하게 찾아볼 수 있다.
  5. 위계(Hierarchy)
    • 큰 범주가 그 아래 더 작은 범주를 포함하고 있을 경우 이용할 수 있다.
    • 예를 들어, '아시아의 국가'로 선택하면, '한국', '일본', '중국'등으로 나타낼 수 있다.
    • 따로 주제의 한계는 없다. 어떤 범주가 되었든, 큰 범주가 더 작은 범주를 포함하고 있다면 모두 사용할 수 있다.
  6. 숫자(Number)
    • 가나다순과 비슷하게 숫자로 이루어진 목록이 있을 때 사용 가능하다.
    • 숫자로 이루어져 있으며, 의미가 있는 숫자 데이터의 경우 사용하면 사용하기 가장 편하다.
COMMENT
 
01
11

1. Figma?

  • 실제 업무나 프로젝트를 진행할 때 가장 많이 사용하는 Tool이다.
  • Ui 디자인이나 프레임워크 등을 그려서 팀원들과 서로 공유하고 협업하는 도구이다.

2. 장점

  • 무료다. 이것보다 더 좋을 순 없다.
  • 작업물이 자동으로 저장된다.
  • 실시간으로 팀원들과 화면을 공유할 수 있다.
  • 컴포넌트, 페이지, 프레임 등의 다양한 단위로 작업 중인 부분을 나눌 수 있다. 자유도도 매우 높다. 못 그리는 것이 없다.
  • Flow Chart도 그려줄 수 있다.
  • Figma 링크 자체를 Github wiki등에 공유하면 간단하게 기획단계의 상황을 공유할 수 있다.

3. 무작정 사용해 보기

1. 오른쪽 위의 "+" 버튼을 눌러서 파일을 만든다.

2. 상단 중간에 파일 이름을 정해두고, 상단 탭의 3번째를 눌러서 작업물의 사이즈를 정한다. 웹이라면 Desktop, 휴대폰 등 알맞게 지정하면 된다. 반응형 디자인을 생각할 때 도 똑같이 만들 수 있다.

3. 오른쪽 탭에서 폰트나 테두리, 사이즈 등을 조절할 수 있다. 초등학교 때 썼던 그림판처럼 이것저것 그려서 상상력을 표현해 보자!

한동안은 Miro를 사용해서 작업을 했었다. 자유도가 조금 떨어진다고 생각했다. Figma가 조금 더 다루기 어렵긴 하지만 적응하니 훨씬 편하다. 디자이너와 개발자에게 다양한 기능으로 UX가 뛰어난 서비스인 것 같다. 그래도 사용에 연습이 필요하다면, 자신의 포트폴리오 등을 만들어 보면서 연습하면 좋은 경험이 될 것 같다.
COMMENT
 
01
10

유저의 입장에서 생각해 봅시다. 저러시는 이유가 있으실 겁니다...

1. 디자인 프레임워크를 구성하는 기본적인 영역

  • 유저를 공감하여, 서비스를 사용함에 있어서 목적을 쉽고 빠르게 달성하기 위한 수단을 만드는 것이 알맞은 유저 친화적 디자인의 목적이다.
  • 콘텍스트 : 사용자가 누구인지 파악한다.
  • 목표 : 서비스를 이용하여 어떤 목표를 달성하려고 하는 것인지 파악한다.
  • 리서치 : 사용자의 전, 후 사정을 이해한다.
  • 패턴 : 일반적인 인터페이스의 디자인에 대한 일반화된 유저의 인식과 행동을 파악한다.
  • 위의 4가지 영역으로 디자인 프레임워크는 구성되어 있다.

2. 사용자의 주변 환경을 파악하기

  • 인터페이스를 사용할 때 유저가 어떤 의도가 있는지, 혹은 얼마나 이 서비스에 대해 잘 알고 있는지 등이 의사결정에 많은 영향을 미친다.
  • 예를 들어, 어린 시절부터 게임을 즐기던 우리 세대 친구들은 새로운 게임을 접해도 쉽게 적응한다. 사전에 경험도 많고, 어린 시절 다양한 게임을 접하고 좋은 기억도 가지고 있을 수 있기 때문에 적극적으로 사용하려고 할 것이니 말이다. 하지만 이때까지 게임을 해 보지 않은 부모님 새대는 몹시 어렵고 즐기기 힘들 것이다.

3. 유저의 입장에서 생각하기

  • 조금 더 단순하게 생각해야 한다. 사용자의 입장에서 이 서비스를 사용할 때 어디에 눈이 가는가? 혹은, 개발할 때 이미 다 알고 사용할 때 '쉽네!' 하고 생각하는 개발자의 입장이 아닌, 유저의 입장에서 태어나서 처음 보는 서비스인 양 사용해 보는 그런 상황에서 어떻게 서비스가 사용될 것인가? 를 생각해야 한다.

4. 인터랙션 === 대화

  • 인간과 인간의 대화처럼 어떠한 행동이 오면 어느 정도 예측이 가능한 대답이 오고, 그에 따른 행동 등이 오기도 한다.
  • 인터페이스를 통한 컴퓨터 간의 소통도 마찬가지이다. 만약, 기대하는 대답과 전혀 다른 반응이 오면 당황스럽고, 아예 응답이 오지 않는다거나 너무 느리다면 유저는 화가 날 것이다. 마치, 말을 무시당할 때처럼 말이다.

5. 유저의 숙련도를 생각하자

  • 전문가들이 사용할 것이라고 기대되는 서비스(ex: 동영상 편집 프로그램, 코드 편집기 등)라면 이미 숙련도가 어느 정도 있거나 배울 의지가 있는 유저들이 사용할 것이다. 그렇다면 조금 어렵더라도 목적에 따라 다양한 기능들을 넣은 서비스를 만드는 것이 옳다.
  • 하지만, 가끔 사용하거나 숙련도가 높지 않은 사람들이 사용할 것이라고 기대되는 서비스(ex: 노래방 기계, SNS 등 )는 접근성도 높아야 하고 누구나 사용하기 편해야 한다. 그래서 어려운 기능보다는 더 직관적이고 사용하기 쉽게 만들어야 한다.
  • 만약, 그런 서비스가 사용하기 어렵다면 유저는 이탈한다. 그만큼 노력을 들여 배워서 그런 서비스를 이용하려 하지 않을 가능성이 높다.
COMMENT
 
01
08

똑같은 놈들입니다. 일단 한번 츄라이 츄라이

1. 문제의 발단

취업을 위해 이곳저곳 이력서를 쓰고 여기 보고 저기보고 하고 있는데 다들 'TypeScript' 이야기를 엄청 하는 것 같다. 얼마나 좋은 기술이면 이렇게들 사용하려고 할까? 나도 한번 써보자. 발버둥 쳐보자!

2. TypeScript?

  • JavaScript를 이용한 프로그래밍 언어이다. 컴파일 한 후에 JavaScript 코드로 바꿔준다.
  • JavaScript는 숫자나 문자간의 계산 같은 경우, 런타임에서 알아서 계산해서 올바른 답을 준다. 하지만 이러한 결과는 간단한 프로젝트의 경우 편리할 수 있지만, 크기가 크면 클수록 디버깅이 너무 어려워진다. 그래서 이런 경우, 에러 메시지를 준다.
  • 심지어 위의 경우처럼 타입을 잘 못 쓴경우나, 오타까지도 잡아준다!

3. 어떻게 사용할까요?

  • npm install -g typescript
  • 당근 node.js 필수
  • .tsconfig.json 파일을 생성해서 안에 초기 설정을 넣는다. ts 파일을 js 파일로 컴파일할 때 사용할 설정이다.
{   
  "compilerOptions" : {     
    "target": "es5",     
    "module": "commonjs",  
  } 
}
  • ts 파일 자체는 브라우저가 올바르게 읽을 수 없다. 그래서 컴파일 해야한다. tsc -w를 터미널에 입력하면 자동으로 변환된다.

4. 간단한 문법

let name :string = 'hendrix';
name = 111;
// 위의 경우 에러 발생. name은 string 타입으로 설정 되어 있기 때문에 다른 타입은 올 수 없음

let list : string[] = ['a', 'b', 'c'];
list = ['a', 'b', 1]
// 위의 경우 에러 발생. list 안의 요소의 타입은 항상 string 이기 때문!

let name :{ name? : string } = { name: 'hendrix' };
// 위의 경우 ? 로 어떤 타입이 들어갈지 모른다! 라는 것을 표시하였기 때문에 에러는 나지 않는다.
// 마찬가지로 | 연산자나 &도 사용가능하다.

type MyType = string | number;
let hello :MyType = 'world';
// 위 처럼 type을 이용해서 타입 자체를 변수에 할당할 수 도 있다. 대문자로 선언하자.

function func(el: number) :number {
	return el + 1;
}
// 위의 함수처럼 함수의 인자의 타입과 결과물의 타입을 설정할 수 도 있다.

type SetType = [string, string, boolean]
// arr 형태로 각 요소의 순서에 따라도 타입을 설정 할 수 있다.

type ListType = {
	[ket: string] : string
}
// 글자로 된 모든 object 속성 타입은 string

5. create-react-app으로 만든 리액트 앱에 TypeScript 적용하기

  • npm install typescript @types/node @types/react @types/react-dom @types/jest @types/react-router-dom
  • . js 파일들을 .tsx로 바꿔준다. (JSX 문법을 이용하는 react는 tsx로 확장자를 변경하는 것이 옳다. 그냥 자바스크립트라면 .ts다)
  • 이미 진행된 프로젝트라면 TypeScript에 뜨는 에러들을 문법에 맞게 고쳐준다.
  • 당근 컴파일도 해준다.
COMMENT