주요 내용

OOUI의 목적

  • OOUI(Object-Oriented User Interface)의 목적은 사용자를 실재적 대상(Object)에 직접 연결하는 것이다.
  • 이 글은 World IA Day 2019 Tokyo에서 발표된 내용을 바탕으로 한다.

Object

  • 'Object'는 'ob-' (그쪽으로)와 '-ject' (던져진)의 합성어로, '그쪽으로 던지다'는 뉘앙스를 가진다.
  • Subject(주체)와 Verb(동사)를 통해 Object가 관념적, 객관적, 이상적인 위치에 있다는 구도를 설명한다.
  • 플라톤의 '동굴의 비유'를 통해 실재론적 관점에서 이데아와 객체의 관계를 조명한다.

Oriented

  • 'Oriented'는 '방향'을 뜻하며, Object-Oriented는 '객체 지향'이라는 동어반복적 재귀성을 가진다.

Object-Oriented

  • 객체 지향 프로그래밍(OOP)은 1960년대에 시작되어, 데이터와 코드를 패키지화한 객체 간 상호작용으로 소프트웨어를 구성한다.
  • 아란 케이는 "객체 자신이 자신이 무엇을 할 수 있는지 알고 있다"고 정의한다.
  • 클래스(개념)에서 인스턴스(구체)를 생성하는 방식은 플라톤의 실재론과 유사하다.
  • 객체 지향 프로그래밍에서는 Object → Verb 순서로 구문을 작성하며, 이는 UI 조작 순서와 일치한다.
  • 객체 지향 존재론(Object-Oriented Ontology)은 하이데거의 도구 분석을 발전시켜, 모든 것을 객체로 보는 세계관을 제시한다.
    • 하이데거는 도구가 잘 작동할 때는 '손에 닿는 존재'가 되어 보이지 않지만, 고장나면 '눈앞의 존재'가 된다고 설명한다.
    • 그레이엄 하먼은 이를 확장하여 네 가지 존재성(실재적 객체, 실재적 성질, 감각적 객체, 감각적 성질)을 제안한다.
  • 저자는 이를 프로그래밍 용어로 재해석: 프로그램으로서의 클래스, 프로그램으로서의 인스턴스, UI로서의 클래스, UI로서의 인스턴스.
  • 예시: 트위터에서 UI로서의 인스턴스(한 건의 트윗)를 보면서 UI로서의 클래스(트윗 개념)를 인식하고, 프로그램으로서의 인스턴스(별개의 트윗)와 클래스(타입)를 구분한다.
  • 크리스토퍼 알렉산더의 '패턴 랭귀지'는 디자인에서 무명의 질(quality without a name)을 강조하며, 객체의 실재성은 의도와 무관하게 환경과의 융합에서 발생한다고 본다.
  • Smalltalk에서는 객체의 입장에서 1인칭으로 코멘트를 작성하는 관행을 소개하며, 이를 '구문론적 전회(Syntactic Turn)'라고 부른다.

User

  • 사용자 중심 디자인(UCD)은 사용자에 공감하는 것만으로는 부족하며, 디자이너는 사용자와 상황을 '2차적 이해'로 해석해야 한다.
  • 진정한 UCD는 사용자와 제품 환경 전체를 객체로 보고 주체적으로 접근하는 것이다.
  • 디자이너의 역할은 새로운 의미를 찾을 수 있는 여지를 제공하는 것이다.

Interface

  • 인공물은 인간과 환경 사이의 인터페이스이며, 인간과 환경을 상호 변화시킨다.
  • 도구는 인간을 만들었으며, 인간의 인식을 확장한다.
  • 제프 라스킨은 "인터페이스가 곧 제품"이라고 말한다.

User Interface

  • UI의 역사: 기계시대의 '맨-머신 인터페이스'에서 상호작용을 중개하는 '사용자 인터페이스'로 발전.
  • 1980년대 후반 GUI가 보편화되면서 UI는 가상 작업 공간으로 인식.
  • 현재 UI는 사용자와 관심 대상(Object)을 직접 접착시키는 것으로, 객체 그 자체로 지각된다.
  • "모든 것은 객체이며, 모든 것은 디자인 가능하다"는 하먼의 주장을 인용.

OOUI

  • 'OOUI의 목적'은 '주체 지향' 디자인(부분 최적화, 소비 조작, 권력 종속 등)에서 벗어나는 것이다.
  • 진정한 UI는 존재론적이며 객체 지향적이다. 주체에 종속된 시스템에는 UI가 없고, 오직 태스크만 있다.
  • 객체 지향 디자인은 사용자가 대상을 직접 다루고, 자신만의 의미 공간을 창조할 수 있게 한다.
  • OOUI의 구현은 플라톤 이후의 실재론 사고 실험을 소프트웨어에서 실현하는 것이다.
  • 객체 기반 UI와 태스크 기반 UI의 대비:
    • 객체 기반: 사용자에게 객체를 직접 공개. 사용자는 시스템을 '손에 닿는 존재'로 여기며, 작업이 즐거움.
    • 태스크 기반: 정해진 절차를 강요하며, 시스템이 '눈앞의 존재'로 장애물이 됨.

GUI의 역사와 특성

  • GUI는 객체(사물) 기반이며, 공간적 매핑을 활용. 커맨드라인 UI는 태스크(할 일) 기반.
  • GUI의 기원: 1963년 아이반 서덜랜드의 Sketchpad, 이후 더글러스 엥겔바트의 NLS, 제록스 PARC의 Smalltalk로 발전.
  • GUI의 큰 특징은 모드리스(mode-less) 조작. '잘라내기 & 붙여넣기'는 모드를 없애기 위해 발명됨.
    • '되돌리기(Undo)'는 실패해도 괜찮은 시스템으로, 작업에 대한 새로운 의미 부여.
  • UI 조작 순서: 커맨드라인은 '동사 → 객체', GUI는 '객체 → 동사'. 이는 객체 지향 구문과 일치.
  • OOUI의 핵심: 작업 순서 고정 관념을 제거하고, 사용자가 자신만의 방법으로 목표를 탐색할 수 있는 모드리스함.

OOUI 모델링 방법

  1. 객체 추출: 도메인에서 주요 객체(엔티티)를 식별.
    • 태스크 기반 UI에서 객체를 추출하려면 입출력 정보에 주목.
  2. 뷰 종류 결정: '컬렉션'(여러 객체 표시)과 '싱글'(상세 정보)을 정의.
    • Master-Detail 패턴이 일반적.
    • 컬렉션 형식(달력, 지도, 리스트, 타일 등)은 앱의 성격을 결정.
  3. 컨트롤러 역할 검토: 뷰의 상태와 사용자 조작을 처리.
  4. 예시: 이메일 클라이언트 모델링.
    • 객체: '받은편지함'과 '메일'.
    • 뷰: 받은편지함 컬렉션, 메일 컬렉션, 메일 싱글.
    • 컨트롤러: 컬렉션의 선택 상태나 필터 조건 관리, 사용자 클릭 처리.
  5. 태스크 기반 UI 개선 예시:
    • 환율 계산 앱: 기존 위저드 방식(태스크 기반)에서 '통화' 객체를 추출하여 두 개의 통화 뷰를 배치.
      • 사용자는 절차 없이 직접 값을 조작하며, '통화' 객체 간 동등성이 유지됨.
    • 계약 관리 시스템: 기존 12개 화면의 태스크 기반에서 '계약' 객체를 추출.
      • 메인 화면에 계약 목록과 상세를 표시하고, 사용자는 직접 객체를 선택하여 편집, 승인 등을 수행.
      • 결과적으로 단일 페이지 애플리케이션으로 개선.

결론: OOUI의 목적

  • OOUI는 사용자(주체)를 실재적 대상(객체)에 연결하는 시도.
  • 객체는 감각적 성질 뒤에 숨겨져 있으며, 무명의 질을 통해 탐구 가능.
  • OOUI는 표현 스타일 이상으로, 사용자 앞에 대상의 실재를 직접 제시하는 태도.
  • 소프트웨어를 통해 각자가 클래스(진정한 존재)의 창작자가 될 수 있음.
  • 사용자를 '동굴'에서 해방시켜, 자신만의 창의로 본질을 향하게 하는 것이 OOUI의 궁극적 목적.

링크 공유, 이제 더 스마트하게

어떤 URL이든 AI가 핵심 내용을 요약하고 미리보기를 자동 생성해 드립니다. 🤖