만화로 기술 개념을 설명하는 방법

Ahra YiAhra Yi
12 min read

원문: Julia Evans, “How to teach technical concepts with cartoons

요즘 들어 종종 이런 말을 듣습니다. “와 줄리아, 그림 정말 잘 그리시네요. 멋져요!”

이 말을 들으면 좀 웃음이 나옵니다. 왜냐면 제가 동물을 그리면 이런 모습이 되거든요.

왼쪽에서 오른쪽으로 순서대로, 세 가지 단순하고 아이처럼 그린 동물 그림이 있으며 각각 위에 라벨이 붙어 있습니다. 왼쪽에는 네 다리와 꼬리를 가진 강아지가 "개"로 표시되어 있고, 가운데에는 귀가 달린 고양이 얼굴이 "고양이"로, 오른쪽에는 코와 네 다리를 가진 코끼리가 "코끼리"로 표시되어 있습니다.

그렇지만! 기술 개념을 그림으로 설명하는 ‘기술’이 실제로 존재합니다. 그리고 여기에 저는 꽤 능숙해진 것 같고요! 여기서 말하는 기술은 "코끼리를 코끼리같이 그리는 것"과는 다른 종류의 기술입니다.

이 글에서는 컴터에 대한 개념을 그림으로 설명할 때 제가 사용하는 몇 가지 패턴을 다룰 것입니다. 특히 애정하는 컴퓨터 관련 주제를 다른 사람들에게 그림으로 알려주고 싶다면, 이 글이 여러분에게 도움이 되면 좋겠어요!

이제 만화를 구성하는 방법과 컴퓨터 개념을 그림으로 표현하는 방법을 살펴봅시다!

만화를 그리기는 그림 실력과는 별개예요

다시 한번 강조하지만 제가 쓰는 시각적 표현 수단은 기본적으로 이게 전부입니다.

시각화 팁을 알려주는 유쾌한 낙서 가이드입니다. 말풍선, 생각 구름, 컴퓨터, 별과 하트, 단어 강조, 박스 처리, 색상 사용, 얼굴 그리기, 대문자 사용, 목록 만들기, 느낌표 추가 등의 방법을 제안합니다. 마지막 메시지는 “끝!”입니다

저는 기술 만화라는 건 결국 '만화 실력’에 달려 있다고 생각해요! 제가 잘해야 하는 건 다음과 같은 것들이죠.

  • 아주 적은 수의 단어로 아이디어를 전달하기 (예를 들어 이 뮤텍스 만화에는 고작 60 단어 정도만 담겨 있죠)

  • 개념을 간단하게 쪼개기 (“DNS를 이해하기 위해 꼭 알아야 할 핵심 개념은 뭘까?”)

  • 적절한 시나리오를 설정하기 (“뮤텍스가 어떻게 동작하는지 보여주기에 좋은 예시는 뭘까?” )

이제 제가 그림을 그릴 때 자주 쓰는 몇 가지 요령을 소개해볼게요!

캐릭터에 생명을 불어넣으세요

저는 의인화와 인격화 기법을 자주 사용합니다. 시스템을 여러 캐릭터로 의인화하여 서로 대화를 나누는 방식으로 표현하는 거죠. 예를 들면 아래는 쿠버네티스 만화의 한 장면인데요. kubelet 컴포넌트가 API 서버와 이야기하고 있습니다.

두 개의 웃는 사각형 캐릭터가 등장하는 만화입니다. 왼쪽 캐릭터는 "kubelet"이라는 이름표가 붙어 있으며 “안녕하세요, 저는 새 노드예요”라고 말합니다. 오른쪽 캐릭터는 "API server/etcd"라는 이름표가 붙어 있으며 “좋아요! 정보를 저장할게요. 나중에 스케줄러가 일부 파드를 할당할 수도 있어요”라고 답합니다.

이런 방식이 유용한 이유는 다음과 같습니다.

  1. “kubelet”과 “api server”가 (그게 무엇이든 간에) 쿠버네티스에서 중요한 개념임을 강조해 줍니다

  2. 두 컴포넌트가 서로 소통한다는 사실을 시각적으로 보여줍니다

  3. 같은 내용을 글로 읽는 것보다 훨씬 더 재미있습니다

다음은 제가 만든 네트워킹 진(zine)에 등장하는 일부 캐릭터들입니다. (노트북! 라우터! 운영체제! 프로그램!)

"여러분의 집에 있는 등장인물들"이라는 제목의 만화입니다. 네 가지 항목이 등장합니다. 웃는 얼굴의 노트북에는 “(고양이 사진 볼 때 쓰는) 당신의 노트북”이라는 설명이 붙어 있고, "cool.py"라고 적힌 파일은 “당신의 프로그램”, 펭귄 그림은 “운영체제 (네트워킹을 할 줄 앎)”, 웃는 얼굴의 상자는 “당신 집의 공유기”로 소개됩니다.

복잡한 컴퓨터 시스템을 “자, 이 시스템에서 핵심이 되는 주요 인물은 이 셋이야!”라고 나눠보는 일은 정말 많은 도움이 돼요.

장면을 보여주세요

캐릭터를 만들었다면 다음 단계는 그 캐릭터들을 장면 속에 넣어 서로 상호작용하도록 하는 것입니다! 다시 말해 “여기서 중요한 등장인물은 노트북, DNS 서버, HTTP 서버다”라는 사실을 먼저 확립한 다음, 실제로 그들이 어떻게 함께 작동하는지를 보여줄 수 있습니다.

다음은 두 사람이 대화하는 장면입니다.

두 명의 사람이 그려진 그림. 한 사람이 “bash가 뭐야?”라고 묻자, 다른 한 사람이 놀란 얼굴로 “너 bash도 몰라?!”라고 대답한다. 질문한 사람은 속으로 “아, 나 이걸 알고 있어야 했던 건가?”라고 생각한다.

그리고 다음은 두 프로그램이 같은 뮤텍스를 사용하는 장면입니다.

뮤텍스를 설명하는 유머러스한 일러스트입니다. 뮤텍스는 어떤 리소스가 사용 중인지 추적합니다. 지금은 프로그램 1이 "hello"라는 단어에 "a"를 쓸 차례이고, 프로그램 2는 "에구, 아직 내 차례가 아니네"라고 생각하며 기다리고 있습니다.

프로그램 2가 “아직 내 차례 아냐”라고 생각하는 이 장면으로 뮤텍스가 사용 중일 때 어떤 일이 벌어지는지를 꽤 명확하게 설명해 줄 수 있습니다. 같은 내용을 문단으로 설명하는 것보다 훨씬 빨리 이해할 수 있을 거예요.

목록을 만들어 보세요

저는 목록을 정말 많이 만듭니다 (한 예로 이 글 자체도 “만화 만들기에서 배운 것들의 목록 :)”이죠). 몇 가지 사례를 소개하겠습니다.

다음은 네트워크 도구들과 각 도구의 용도를 정리한 목록의 일부입니다.

세 가지 도구를 장난스럽게 표현한 그림입니다. "nmap"은 "네트워크 안에서 당신의 포트를 스캔하고 있어요", "whois"는 "도메인 정보를 조회해요", "lsof"는 "어떤 포트가 사용 중인가요?"라는 문구와 함께, 각 도구 이름은 컬러풀한 구름 모양 안에 표시되어 있습니다.

다음은 유닉스 프로세스의 속성을 나열한 목록입니다.

“프로세스에는 무엇이 들어 있을까?!”라는 제목의 그림으로, 프로세스를 구성하는 주요 요소들을 다양한 색상의 말풍선 안에 보여줍니다. 요소에는 환경 변수(PATH 등), 메모리, 실행 파일(어셈블리 코드), 작업 디렉토리(/home/bork), 프로세스 ID(39762), 사용자(bork), 그룹(staff)이 포함됩니다.

그리고 좋은 질문을 하는 전략에 대한 목록도 있습니다.

'좋은 질문을 하는 법’이라는 제목의 여섯 칸짜리 만화입니다. 각 패널마다 인물들이 다음과 같은 내용을 나눕니다. 1. 대화하기 좋은 시간 찾기 2. 본인이 아는 정보 말하기 3. 사실에 기반한 질문과 참고 자료 받기 4. 더 나은 답을 줄 수 있는 사람 고르기 5. 사전 조사 후 배경 있는 질문 하기 6. 얻은 결과를 깨닫고 지식이 늘었음을 인식하기

제가 목록 만들기를 애정하는 이유는 다음과 같습니다.

  • 단계별로 정리해 볼 수 있습니다 (1단계! 2단계! 3단계!)

  • 구조가 명확해서 이해하기 쉽습니다

  • 누군가에게 새로운 정보를 가르치는 데 효과적입니다 (여러분이 흥미로운 사실 10가지를 나열했는데, 누군가는 그중 7가지만 알고 있었을 수도 있죠!)

  • 어떤 목록도 철저히 완전할 필요는 없습니다 (저도 유닉스 프로세스의 속성 전부를 다룬 건 아니에요!)

  • 목록을 만들다 보면 뜻밖의 배움을 얻는 경우도 있습니다. 예를 들어 저는 리눅스 네트워크 도구를 나열하다가 정말 많은 수의 도구가 있다는 걸 알고 깜짝 놀란 경험이 있어요 (결국 24개만 목록화하고 마무리했습니다!) (목록은 여기에서 볼 수 있어요.)

다이어그램을 그려보세요

손으로 만화를 그릴 때의 가장 큰 즐거움 중 하나는 내가 설명하고자 하는 개념에 대한 다이어그램을 정말 쉽게 그릴 수 있다는 점입니다! LaTeX이나 Graphviz처럼 번거로운 도구들을 만질 필요가 전혀 없죠.

다음은 제가 메모리 단편화를 설명하기 위해 만든 다이어그램의 일부입니다.

총 587MB의 메모리 할당 상태를 보여주는 다이어그램입니다. 검은색으로 칠해진 부분은 사용 중인 메모리를, 빈 칸은 비어 있는 메모리를 나타냅니다. 화살표는 “이 부분은 한때 사용되었지만 이후 해제되었음”이라고 표시된 세그먼트를 가리킵니다.

그리고 조금 더 복잡한 예시로 UDP 패킷의 구조를 보여주는 다이어그램입니다.

주석이 달린 네트워크 패킷 다이어그램입니다. 이더넷 프레임 헤더, IP 헤더, UDP 헤더, 데이터가 포함되어 있습니다. 이더넷 프레임 헤더는 14바이트이며 목적지 MAC, 출발지 MAC, 타입 필드를 포함합니다. IP 헤더는 160비트로, 버전, 헤더 길이, 출발지/목적지 IP 주소 등 다양한 필드를 포함하고 있으며 라우터에게 패킷을 어디로 보낼지 지시합니다. UDP 헤더는 64비트로 출발지 포트, 목적지 포트, 길이, UDP 체크섬 필드를 포함합니다. 패킷 데이터는 “mangotea”라는 단어로, ASCII 문자 형태로 표시되어 있습니다.

저는 다이어그램에서 화살표와 색상을 활용해 중요한 부분을 강조하거나 부가적인 정보를 전달할 수 있다는 점이 정말 좋습니다. 위 UDP 패킷 다이어그램에서는 (‘출발지 IP 주소(source IP address)’에 비해 내용을 이해하는 데 중요성이 확연히 낮은 ‘프래그먼트 오프셋(fragment offset)’같은) 덜 중요하다고 판단되는 필드는 회색으로 처리했습니다.

농담을 곁들여 보세요

컴퓨터는 종종 몹시 혼란스럽고 예측불가능하게 느껴질 때가 있습니다. 때로는 정말 짜증이 나죠. ("도대체 내 프로그램은 하는 게 뭐야?!!?!") 그래도 한편으론 꽤 웃기기도 해요! 이런 기이한 상황들도 컴퓨터가 주는 재미의 일부라고 생각합니다. 그런 이유로 저는 때때로 만화에 농담을 곁들이고자 합니다.

다음 그림은 쿠버네티스의 스케줄러가 어떤 파드를 아직 스케줄링 하지 않았다는 사실을 깨닫고 걱정에 휩싸인 장면이에요. (스케줄러: “아, 안돼! 나 그거 진작 했어야 했는데! 줄리아가 화낼 텐데!”)

"etcd/API 서버"라는 원통 안에 "파드 F"가 들어 있는 만화입니다. "스케줄러"라고 적힌 작은 사각형이 "이런 맙소사, 노드가 할당되지 않은 파드가 있어!"라고 외치고 있습니다.

그리고 다음은 다소 엉뚱한 농담인데요. “C는 linearizable(선형화가능한)의 C야!”라는 문장입니다. (‘CAP 정리’에서 C는 ‘consistent(일관된)’를 의미하는데 사실 ‘consistent’라는 용어는 다소 모호합니다. 보다 정확히 말하자면 사실 ‘linearizable’을 뜻한다고 보는 게 맞거든요. 헷갈릴 만하죠!)

구름 모양의 말풍선 안에 '"C"는 linearizable의 C야'라는 문장이 적혀 있습니다.

텍스트를 그냥 써도 괜찮아요

만화를 즐겨 그리지만 때로는 단락을 그냥 적기도 합니다. 다음은 제가 dstat에 대해 설명한 페이지의 첫 부분입니다.

“dstat”에 대한 손글씨 메모입니다. dstat은 매초 네트워크 및 디스크 사용량을 모니터링하는 데 있어 단순함으로 칭송받는 리눅스 전용 도구입니다. 이 도구를 사용해 느려진 데이터베이스 서버 문제를 진단한 경험이 언급되어 있습니다.

이 장면은 기본적으로 “dstat은 매초마다 그 1초 동안 컴퓨터가 사용한 네트워크와 디스크의 양을 출력해 줍니다.”라고 단순하게 말합니다. 사실 그냥 타이핑했어도 됐죠! 그럼에도 제가 손글씨로 직접 적는 이유는 “아니, 이건 정말 내가 애정하는 거야. 손으로 직접 써서 보여줄 만큼 좋아해!”라는 마음을 보다 잘 나타낼 수 있다고 생각하기 때문입니다.

컴퓨터 출력 결과도 붙여 넣어 보세요

가끔은 컴퓨터에서 실제로 볼 수 있는 출력 결과를 붙여 넣고 그에 대해 논의하고 싶을 때가 있습니다. 예를 들자면 제가 strace를 주제로 진을 만들 때 strace 출력 결과가 꽤나 혼란스럽다는 사실을 깨달았습니다. 실제 strace 출력 결과를 첨부해서 이에 대해 이야기하고 싶었죠!

다행히 그림에서는 아주 쉬운 일입니다. 왜냐하면 그림에는 내가 원하는 건 뭐든지 넣을 수 있으니까요!

"주석이 달린 strace"라는 제목의 손글씨 이미지입니다. strace 명령의 출력 예시와 유쾌한 코멘터리가 포함되어 있습니다. execve와 같은 시스템 콜이 등장하며, 각각의 요소(프로세스 ID, 시스템 콜 이름, 인자, 반환값)에 대한 설명이 나옵니다. strace 출력이 복잡하다는 점을 다소 장난스럽게 지적하며, 이를 해석하는 법을 배우자고 독려하는 내용입니다.

아이콘이나 로고를 따라 그려보세요

처음에 제가 “그림을 잘 못 그린다”라고 했었는데 그건 정말 사실입니다! 하지만 따라 그리기 할 수 있어요. 제 부족한 그림 실력을 보완하는 재밌는 방법이죠.

로고나 아이콘을 그려 넣는 게 유용할 때가 있어요! 예를 들면 아래는 제가 따라 그린 쿠버네티스 로고, 리커스 센터(Recurse Center) 로고, 리눅스 펭귄인 턱스(Tux), 그리고 고양이 그림이에요. 제가 알기로 고양이는 누군가의 로고는 아니에요.

쿠버네티스 로고와 텍스트가 그려져 있고, 펭귄, 컴퓨터 모니터, 고양이 아이콘이 함께 있는 일러스트입니다.

손으로 따라 그린 이 로고들은 좀 울퉁불퉁하고 애매하지만 저는 그게 오히려 퍽 만족스럽습니다. 마음에 들어요.

만화 디자인하기

여러분의 눈앞에 빈 종이 한 장이 있고 전달하고 싶은 정보가 있다면! 어떻게 하시겠어요? 이럴 때 몇 가지 구조적인 패턴을 가지고 있으면 정말 도움이 됩니다. 다음은 제가 자주 사용하는 예시들이에요.

이건 목록을 만드는 한 가지 방식입니다.

"내가 디버깅을 더 잘하게 된 방법"이라는 제목의 만화로, 다섯 가지 방법을 보여줍니다. 방법 1: 비어 있음. 방법 2: 예전에는 혼자 생각만 했지만, 이제는 말로 표현함. 방법 3: 다른 사람에게 질문함. 방법 4: 생각을 머릿속에만 두지 않고 말로 꺼냄. 방법 5: 문제를 깊이 있게 집중해서 생각함.

작은 항목 여러 개로 이루어진 목록이고요.

줄리아 에반스의 손글씨 스타일로 그려진, "더 많은 리눅스 네트워크 관리 도구들"이라는 제목의 컬러풀한 만화입니다. 여러 개의 구름 모양 도형과 그 아래 줄이 그려져 있어, 텍스트가 들어갈 자리임을 암시합니다.

그리고 또 다른 목록인데요, 단계별 목록입니다. 숫자가 매겨진 칸으로 구성되어 있어요!

"고양이 사진을 얻는 단계"라는 제목의 6칸 만화입니다. 각 패널은 노트북과 말풍선 사이의 대화를 묘사하고 있으며, 단계는 순차적으로 진행되는데 내용은 대부분 생략되어 말풍선은 생략부호(…)만 포함하고 있습니다. 마지막 6번째 패널에는 업로드 진행 상태를 나타내는 화살표와 고양이 그림이 등장합니다.

다음은 목록이라기보다는 일반적인 만화에 가까운 구성입니다. 정사각형이나 직사각형 칸 안에 시각적으로 내용을 배치하여 약간의 이야기가 전개되죠.

 “CPU 스케줄링”이라는 제목의 만화는 컴퓨터 프로세서가 여러 프로그램을 어떻게 처리하는지를 설명합니다. 이 만화는 막대 사람 그림과 대화를 활용해 컨텍스트 스위칭, CPU 시간 할당과 같은 개념을 보여주며, 운영체제가 어떻게 프로그램들 사이에 CPU 사용 순서를 조율하는지를 설명합니다.

마지막으로 꽤나 구조적이지 않은 구성입니다. 개인적으로는 이 정도로 자유로운 구성은 읽거나 따라가기가 조금 어렵다고 느껴져요. 그래서 이보다는 좀 더 구조화된 형태를 선호합니다.

네트워크 주소 변환(NAT)을 설명하는 손그림 다이어그램입니다. 인터넷에서 온 패킷이 라우터에 도달해 어떤 컴퓨터로 가야 할지 묻습니다. 이 패킷은 23393번 포트를 대상으로 하며, 라우터는 변환 테이블을 이용해 이를 로컬 IP(192.168.0.2)의 80번 포트와 매칭합니다. 이후 라우터는 수정된 패킷을 올바른 로컬 목적지로 전송합니다.

만화를 구성하는 데에 을 사용하는 것이 보편적인 방식인 데에는 그만한 이유가 있다고 생각합니다. 칸으로 그림을 구획화해서 독자가 어떤 순서로 읽어야 하는지를 명확하게 만들어주거든요.

단순히 만화로 만든다고 해서 사람들이 알아야 할 내용을 언제나 잘 전달하는 것은 아니에요

다른 만화를 예시로 조금만 비판해 보겠습니다. 이런 건 좋아하지 않지만 예시가 필요하니까요 :)

쿠버네티스를 소개하는 정말 사랑스러운 가이드인 “어린이를 위한 쿠버네티스 일러스트 가이드(The Children’s Illustrated Guide to Kubernetes)”가 있어요.

이 만화는 멋지고, 중요한 개념들도 많이 소개하고 있습니다. 하지만 개인적으로는 쿠버네티스에서 etcd의 역할을 이해하기 전까지는 쿠버네티스가 어떻게 작동하는 건지 전혀 알 수 없었어요. (쿠버네티스의 모든 상태는 etcd에 저장되고 다른 모든 컴포넌트는 상태를 갖지 않거든요.) 그런데 이 만화에서는 etcd에 대한 언급이 단 한 번도 없어요! 그래서 저에게는 쿠버네티스를 이해하는 데 큰 도움이 되지는 않았습니다.

만화를 사용해서 기술 개념을 설명하는 방식에는 두 가지가 있는 것 같아요.

  1. 설명을 더 명확히 할 수 있도록 다이어그램이나 만화를 그린다

  2. 설명을 더 재미있게 하기 위해 그림을 사용한다

개념을 더 명확하게 만들든 더 재미있게 만들든 둘 다 정말 훌륭한 목표입니다! 재미있게 만드는 건 사람들의 주의를 끌고, 어려운 개념에 대한 두려움을 덜 수 있는 좋은 방법이니까요.

그럼에도 삽화 작업을 할 때면 제 그림이 실제로 개념을 설명하는 데 도움이 되는지 아니면 단순히 재미만 있는지를 꼭 구분해서 생각해보려 합니다. (Wireshark에 대해 설명하면서 상어 그림을 그리는 경우처럼요!)

제 생각에 아동용 쿠버네티스 일러스트 가이드의 경우, 그림의 대부분은 내용을 더 재미있게 만들어주는 역할을 하는 것 같습니다. 실제 내용은 거의 모두 텍스트에 들어 있고요. 기린 그림들을 모두 없애더라도 문서가 전달하는 정보는 기본적으로 달라지지 않을 것 같습니다! 물론 이게 꼭 나쁘다는 뜻은 아니에요. 다만 저는 보통 그림 안에도 좀 더 정보가 담겨 있는 편을 선호하는 거죠.

그리기를 쉽게 해주는 도구들

제가 요즘 이런 그림들을 그릴 때 사용하는 도구는 다음과 같습니다. (더 자세한 내용은 이 인터뷰를 참고하세요)

  • Samsung Chromebook Plus (꼭 이 모델이 아니어도 되고 S펜이 있는 삼성 태블릿이면 돼요. 아이패드 + 애플 펜슬 조합도 좋아요!)

  • 안드로이드의 Squid 앱 (아이패드의 굿노트도 훌륭해요!)

  • 이게 다예요!

그릴 수 있는 태블릿이 있다는 건, 정말 빠르게 그림을 그린 다음 ‘트위터에 공유’를 눌러 전 세계에 곧바로 보여줄 수 있다는 뜻입니다. 펜과 종이를 썼을 때보다 훨씬 더 많은 그림을 만들어 내게 되었고 그림도 훨씬 보기 좋아졌어요 :)

그림이 예쁘지 않아도 충분히 멋질 수 있어요

처음에는 종이에 펜이나 샤피(Sharpie)로 그림을 그리고 그냥 사진을 찍어서 올리기 시작했어요. 지금까지 보여드린 그림들보다 훨씬 덜 멋져 보였지만 그래도 여전히 정말 괜찮았어요!!

예를 들어 여기 종이에 펜으로 그린 뒤 트위터에 올렸던 아주 초기 그림이 있어요. 지금 보면 좀 조잡하고 읽기 어렵지만 솔직히 말해서 당시 포스팅 했을 때는 긍정적인 반응을 엄청나게 받았답니다 (증거).

"마법사 같은 프로그래머가 되는 법"이라는 손글씨 노트입니다. 세 가지 핵심 조언이 적혀 있습니다. 1. 질문하기 — 바보 같은 질문도 포함해서. 2. 다른 사람들이 풀지 못하는 문제에 도전하기. 3. 남들이 모른다고 해서 포기하지 말고, 스스로 방법을 찾아내기. 추가로, 아무도 답을 모르는 상황이 드물지 않으며, 그런 순간일수록 끈기와 호기심이 중요하다는 메시지를 담고 있습니다. 별표(*)로 이 과정은 "매우 오래 걸린다"는 점도 강조됩니다.

그러니까 그림이 꼭 예쁘고 깔끔할 필요는 없어요! 종이에 끄적인 거라도 충분히 괜찮습니다.

기술 만화 주제로 뭐가 좋을지 어떻게 정하냐고요?

작년에 제가 만들었던 부동소수점(Floating Point) 만화를 예로 살펴봅시다! 그 과정을 단계별로 정리하면 다음과 같아요.

  1. 먼저 부동소수점에 대해 예전엔 저도 정말 헷갈렸다는 걸 떠올렸어요. 그런데 스테판 카핀스키(Stefan Karpinski)로부터 몇 가지 핵심적인 통찰을 배운 뒤에는 완전히 깨달음을 얻고 엄청 신이 났죠!!!

    • double은 64비트입니다. 즉 부동소수점 숫자가 단 2⁶⁴개뿐이라는 뜻이에요!!!

    • 2⁵² 다음의 가장 작은 double 값은 2⁵² + 1입니다 (그래서 2⁵² + 0.2 = 2⁵²가 돼요).

    • 이 말은 자바스크립트에서는 2⁵³ 이상의 정수를 제대로 표현할 수 없다는 뜻이죠.

  2. “음, 이 세 가지는 정말 단순하니까 만화로 만들 수 있겠다”라고 생각했습니다.

  3. 그리고 이 내용을 어떻게 만화의 칸으로 나눠 구성할지 고민했어요!

  4. 한 페이지를 넘기지 않도록 했어요.

이렇게 해서 만들어진 최종 부동소수점 만화는 다음과 같습니다.

부동소수점 수에 대한 만화입니다. double은 64비트이며, 2의 64승 개의 서로 다른 값을 가질 수 있고, 최대 1.8 × 10의 308승까지 표현 가능합니다. '2의 52승 + 0.2 = 2의 52승'과 같은 연산, 무한대 연산 및 NaN(숫자가 아님) 결과를 다룹니다. 정수 사이에 표현 가능한 수의 개수와 자바스크립트가 오직 double만 사용한다는 점, 그리고 double 값을 짧게 출력하는 것이 얼마나 복잡한지에 대해서도 설명하고 있습니다.

제 만화의 대부분을 이런 식으로 구성합니다. 제가 오랜 시간에 걸쳐 어렵게 배웠지만 정말 유용했던 어떤 핵심 개념이나 사실, 혹은 놀라웠던 점들을 바탕으로 만들어지죠.

또 다른 예로 “유닉스 권한의 작동 방식”이라는 만화도 그렇습니다. 만약 누군가가 ‘0644’라는 숫자가 8진수라는 사실과 그것이 어떻게 rw-r--r--와 매핑되는지를 모른다면 유닉스 권한 체계를 이해하기가 정말 어렵거든요. 유닉스 권한 만화는 여기에서 보실 수 있어요.

여러분도 기술 만화를 만들 수 있습니다

혹시 여러분도 기술 만화를 그리는 데 관심이 있다면 이 블로그 글이 도움이 되었기를 바랍니다! 저도 기술을 주제로 멋진 일러스트를 만드는 분들을 여럿 봐왔어요.

만화를 만드는 데에 관심이 있다면 스콧 맥클라우드(Scott McCloud)의 책 『만화의 이해(Understanding Comics)』를 강력히 추천드려요. 만화가 어떻게 작동하는지를 아주 멋지게 설명한 책으로, 저도 정말 많은 걸 배웠습니다.

훌륭한 기술 만화를 그리는 다른 몇몇 분도 소개할게요.

5
Subscribe to my newsletter

Read articles from Ahra Yi directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Ahra Yi
Ahra Yi