GN⁺: 세계 모든 책을 ISBN-Space에 시각화하기
(phiresky.github.io)-
세계의 모든 책을 ISBN 공간에서 시각화하기
-
도서관은 인류의 지식을 수집하려고 노력해 왔음. 디지털 시대에는 특정 기준을 충족하는 모든 인류의 글을 포괄적으로 수집하는 것이 가능할 수 있음. 섀도우 라이브러리는 가능한 많은 책을 수집하고 공유하는 역할을 함.
-
ISBN(국제 표준 도서 번호)은 거의 모든 출판된 책에 할당되는 13자리 숫자임. 이 번호는 특정 구조를 가지고 있으며, 이를 통해 20억 개의 슬롯을 가진 ISBN13-공간을 시각화할 수 있음.
-
ISBN의 고유 구조
- ISBN의 978-/979- 접두사는 유럽 상품 번호의 하위 집합임. 이 접두사는 거의 무시할 수 있음.
- 국제 ISBN 기관은 대규모 ISBN 블록을 국제 조직에 할당하며, 각 국가는 자체적으로 출판사에 블록을 세분화함.
- ISBN 블록은 항상 접두사에 따라 할당됨. 예를 들어, 일본은 978-4를 할당받았고, 이를 통해 출판사에 ISBN을 할당함.
-
공간 채우기 곡선
- ISBN에서 접두사와 접미사를 제거하면 0에서 20억 사이의 십진수임. 이를 2차원 공간으로 투영하는 방법이 필요함.
- 힐버트 곡선과 같은 공간 채우기 곡선이 제안되었으나, 데이터에 없는 구조를 도입할 수 있음.
-
"책장" 곡선
- ISBN은 본질적으로 십진수이며, 이를 사용하여 이해하기 쉽고 시각적으로 매력적인 공간 채우기 곡선을 생성할 수 있음.
- 이 곡선은 책장처럼 보이며, 간단한 좌표 변환을 통해 ISBN을 좌표로 변환할 수 있음.
-
지도 타일
- 각 접두사에 대한 타일 이미지를 생성할 수 있음. 각 데이터셋에 대해 픽셀당 다른 정보를 저장함.
- 최대 줌 레벨에서는 정확성을 위해 1픽셀당 1권의 책을 매핑함.
-
셰이더
- RGB 데이터를 직접 저장하는 대신, GLSL 프래그먼트 셰이더를 사용하여 렌더링을 수행함. 이를 통해 색상 스케일을 나중에 선택할 수 있고, 여러 데이터셋을 즉시 결합할 수 있음.
-
책장 보기
- 완전히 확대된 보기에서 각 픽셀은 책처럼 스타일링됨. 이는 셰이더에서 구현되며, 줌에 따라 부드럽게 나타남.
-
성능
- 텍스트 렌더링은 줌 레벨과 뷰 프러스텀 컬링에 따라 계층 구조로 구현됨. 성능 문제를 해결하기 위해 HTML 요소를 줄이고, DOM 콘텐츠를 제한함.
-
바코드
- 최대 줌에서 각 책에는 바코드가 있음. 이는 ISBN에 따라 책을 정렬하는 개념을 강화하기 위해 추가됨.
-
출판사 범위
- 각 "그룹"은 큰 범위를 가지며, 각 출판사는 그룹 내에서 작은 범위를 가짐. 이를 시각화하기 위해 각 그룹과 출판사에 고유한 색상을 할당함.
-
비행 경로
- 책을 검색하거나 미니맵을 클릭하면 해당 위치로 이동함. 비행 경로 계산은 복잡하며, 여러 시도를 통해 개선됨.
-
아키텍처
- 백엔드는 필요하지 않으며, 정적 파일 호스트를 사용하여 HTML, JS, CSS, PNG, JSON을 저장함.
- 프론트엔드는 ThreeJS, React, MobX를 사용하여 구현됨.
-
결론
- ISBN으로 출판된 모든 책을 시각화할 수 있는 유연한 방법을 제공함. 이 프로젝트는 많은 즐거움을 주었으며, 소스 코드는 GitHub에서 확인할 수 있음.
Hacker News 의견
-
Amazon을 시작할 때, Library of Congress의 삼중 분류를 사용하고 싶었으나 데이터 제공자가 이를 하나의 문자열로 변환하여 경계를 찾기 어려웠음. 결국 이 아이디어를 포기하게 되었음
-
ISBN이 여러 책에 중복 배정되는 경우가 있어 "ISBN 공간의 모든 책"이라는 표현은 과장일 수 있음. 또한, 잘못된 ISBN을 가진 책들도 있어 이들은 블로그 게시물에서 가정한 ISBN 공간 밖에 있을 수 있음
-
발표는 Anna의 아카이브 내용만 반영하며, 특정 언어에 대한 편향이 있음. 검은색으로 표시된 부분은 아카이브에서 누락된 항목을 나타냄
-
프로젝트가 놀랍고, 책 제목, 바코드, 책 표지 및 세부 정보를 볼 수 있는 기능이 인상적임. 개선 아이디어로는 왼쪽 상단의 흰색 패널과 오른쪽 상단의 요소를 숨기는 체크박스 추가가 있음
-
하이퍼볼릭 상반평면에서의 이동을 모델링하여 비행 경로를 생각할 수 있음. 줌 레벨에 따라 타일을 최소화하는 방법을 고려했으며, 기존 구현은 높은 줌 레벨에서 팬닝에 더 많은 시간을 소비함
-
현재 형식의 발표가 다소 압도적이었으나, 데이터 시각화와 깊이가 뛰어남. 특정 지역의 출판 활동을 보는 것이 흥미로웠으며, 폴란드는 최근 활발하고, 중국은 2005년 이후 크게 증가했음
-
Microsoft SilverLight PivotViewer가 이 응용 프로그램에 적합하며, Gary W. Flake의 TED 강연이 인상적임. 그러나 웹 표준이 아니라 아쉬움
-
현실의 Library of Babel과 같은 프로젝트가 흥미로우며, 무한한 도서관이나 박물관이 VR에서 실현된다면 투자할 가치가 있음
-
줌인하면 책장이 보이는 것이 매우 멋짐
-
매우 멋진 시각화이며, 더 많은 멋진 제출물이 있음