확대 가능한 타임라인으로 400만 개의 위키피디아 이벤트 시각화하기

확대 가능한 타임라인으로 400만 개의 위키피디아 이벤트 시각화하기

Lortex는 위키피디아와 Wikidata에서 가져온 400만 개의 이벤트를 시각화하는 확대 가능한 타임라인 인터페이스를 제작했습니다. 이 프로젝트는 Kotlin Multiplatform 기반의 고성능 기술 스택을 활용하여 저널 애플리케이션을 위해 설계된 커스텀 타임라인 UI의 데모 역할을 합니다.

기술 아키텍처 및 스택

이 애플리케이션은 크로스 플랫폼 호환성과 성능을 보장하기 위해 현대적인 Kotlin 중심 스택을 사용하여 구축되었습니다. 핵심 구성 요소는 다음과 같습니다:

  • Frontend UI: Compose Multiplatform를 사용하여 사용자 인터페이스를 구축하며, 이를 통해 역사적 이벤트의 확대 가능한 공간적 레이아웃을 구현합니다.
  • Cross-Platform Logic: 서로 다른 타겟 간에 로직을 공유하기 위해 프로젝트 전반에 걸쳐 Kotlin Multiplatform (KMP)이 광범위하게 사용되었습니다.
  • Communication: 프론트엔드는 Kotlinx-RPC를 통해 백엔드와 통신합니다.
  • Backend and Infrastructure: 시스템은 Hetzner 머신에서 호스팅되는 Postgres 데이터베이스에 의해 구동됩니다.

방대한 데이터 세트를 큐레이션하기 위해 개발자는 PageRank를 사용하여 이벤트 점수를 매겼으며, 이를 통해 위키피디아/Wikidata 임포트 데이터 중 가장 중요한 이벤트가 시각화에서 우선순위를 갖도록 했습니다.

사용자 경험 및 성능 관찰

이 프로젝트는 공간적 레이아웃에 대해 긍정적인 피드백을 받았지만, 사용자는 환경에 따라 다양한 성능 결과를 보고했습니다:

  • Smooth Performance: 일부 사용자는 Linux Gnome 환경의 Firefox에서 부드러운 경험을 보고했습니다.
  • Stability Issues: 다른 사용자는 Firefox에서 즉각적인 프리징 현상을 경험하거나 Android용 Chrome에서 기능 오류를 경험했습니다.
  • Loading State: 사용자는 초기 로딩 중에 시각적 피드백이 부족하다는 점을 언급했으며, 일부는 최대 30초 동안 빈 화면이 나타난다고 보고했습니다.

데이터 정확성 및 UI 제약 사항

커뮤니티 피드백은 데이터 파싱 및 시간적 정밀도와 관련된 특정 문제를 강조했습니다:

  • Data Errors: 데이터 오류의 예로 한 위치의 우편번호가 연도로 잘못 해석된 사례(예: 760251년에 발생하는 이벤트)가 인용되었습니다.
  • Temporal Precision: 사용자는 연도가 약 1픽셀 크기로 줄어들 때 UI가 깨지는 현상을 관찰했습니다. 이는 빅뱅 이후의 초 단위 이벤트와 같이 매우 높은 정밀도의 타임스탬프를 처리하는 데 한계가 있음을 시사하며, 이를 위해서는 더 높은 비트의 타임스탬프 저장이 필요합니다.
  • Tense Consistency: 미래에 예정된 이벤트가 현재 과거 시제로 표시되어, 예측된 이벤트의 경우 오해를 불러일으킬 수 있다는 점이 지적되었습니다.

커뮤니티 관점

사용자들은 시스템 로그 및 메트릭 분석과 같은 다른 기술적 영역에 다른 확대 가능한 타임라인 인터페이스를 적용하는 것에 관심을 표명했습니다. 다른 사용자들은 이 프로젝트를 Wikipedia에서 대량으로 가져온 방식이 아닌, 수작업으로 큐레이션된 방식인 "deep-timeline.org"의 우주 로그 스케일 타임라인과 같은 기존 도구와 비교했습니다.

Sources