파이콘 키노트에서 마리모를 소개한 계기
발표자는 일본에서 열린 파이콘에 다녀왔다고 밝혔다. 그 컨퍼런스의 키노트 연사는 주피터를 만든 캐롤 윌링이었고, 발표 주제는 다음 세대를 위한 파이썬이었다. 캐롤 윌링은 이 발표에서 마리모를 소개하며 사용을 권했다.
발표자는 주피터를 상당히 많이 써 왔고 주피터로 많은 코드를 작성했다고 말했다. 그러나 에이전트 코딩을 시작하면서 주피터를 잘 쓰지 않게 됐다고 설명했다.
반응형 실행과 파이썬 파일 저장 방식이 주피터의 실행 순서 문제와 Streamlit의 재실행 부담을 줄인다는 설명
발표자는 일본에서 열린 파이콘에 다녀왔다고 밝혔다. 그 컨퍼런스의 키노트 연사는 주피터를 만든 캐롤 윌링이었고, 발표 주제는 다음 세대를 위한 파이썬이었다. 캐롤 윌링은 이 발표에서 마리모를 소개하며 사용을 권했다.
발표자는 주피터를 상당히 많이 써 왔고 주피터로 많은 코드를 작성했다고 말했다. 그러나 에이전트 코딩을 시작하면서 주피터를 잘 쓰지 않게 됐다고 설명했다.
발표자는 컨퍼런스에 함께 간 한국 참가자들과 점심을 먹으며 주피터를 잘 쓰지 않는 이유를 이야기했다. 주변 사람들의 권유로 오크노미 토크에서 짧게 발표하기도 했다.
발표자는 일본 파이콘에서 인상 깊었던 내용이 많아 영상으로 공유하고 싶었지만 아직 다 소개하지 못했다고 말했다. 이번 영상에서는 마리모를 중심으로 정리하겠다고 밝혔다.
발표자는 마리모가 주피터만 대체하는 것이 아니라 Streamlit의 단점도 보완했다고 설명했다. 마리모는 웹어셈블리를 사용하며, 파이썬 웹어셈블리는 대체로 파이오다이드(Pyodide) 라이브러리로 구현된다. 이 라이브러리는 한국 개발자가 주로 개발해 온 프로젝트라고 소개됐다.
화면은 로컬호스트 포트에서 대시보드 뷰로 열 수 있고, 코드 에디터 화면에서도 볼 수 있다. 코드 에디터에서는 Shift+Enter로 셀을 실행하며, 단축키는 주피터와 거의 같다고 설명했다. 데이터 프레임은 하단에 출력되고 검색과 필터를 적용할 수 있다.
데이터 분석 도구로는 폴라스(Polars)와 판다스를 함께 사용했다. 발표자는 폴라스가 러스트로 만든 빠른 데이터 분석 도구라고 설명하면서, 용량이 큰 데이터에서 판다스가 느려질 수 있다는 점을 언급했다.
발표자는 데이터 프레임에서 회사 이름으로 검색해 특정 기업만 골라 볼 수 있다고 보여 줬다. 1인당 평균 고지 금액을 광역 시도별 막대 그래프로 그리는 예도 보여 줬다.
그래프는 '차트 보기'와 '파이썬 코드 보기'를 클릭해 전환할 수 있다. 파이썬 코드에서는 알테어를 자주 사용한다고 설명했다. 변수만 바꾸면 다른 컬럼을 선택해 다시 그릴 수 있다고 말했다.
마지막 줄이 출력되는 방식은 주피터와 같다. 발표자는 Generate 기능에 API 키를 연결하면 AI 기능도 쓸 수 있다고 소개했지만, 대시보드를 에이전트로 만들 때는 직접 편집할 일이 많지 않았다고 말했다.
발표자는 주피터 노트북이 JSON 형식으로 코드를 감싸 저장하기 때문에 git으로 관리하기 까다롭다고 설명했다. 에이전트가 노트북 파일을 만들 때도 코드 셀과 출력 셀을 불필요하게 생성해 토큰을 많이 쓴다고 말했다.
컨텍스트가 커지면 생성이 멈추는 경우가 있고, 괄호 하나만 빠져도 노트북 전체가 깨질 수 있다고 설명했다. 이런 이유로 에이전트 코딩에서 주피터를 쓰면 번거로움이 크다고 밝혔다.
마리모는 셀을 데코레이터로 감싸 기존 노트북의 셀 구조를 유지한다. 출력 파일이 노트북과 섞이지 않아 깃 diff 확인이 쉽다고 발표자는 설명했다.
주피터에서는 셀 실행 순서에 따라 같은 변수를 여러 셀에서 정의하면 오류가 난다. 발표자는 a=1을 실행한 뒤 다른 셀에서 a=2를 정의하자 오류가 발생하는 예를 보여 줬다. 마리모는 이런 실행 순서 문제를 대부분 해결하며, 같은 변수를 다른 셀에서 다시 정의하면 어느 셀을 따를지 물어보는 방식으로 처리한다고 말했다.
발표자는 코드 양이 적어 에이전트 코딩에 더 적합하다고 평가했다.
발표자는 공공데이터포털의 국민연금 가입 사업장 내역을 가져와 마리모 대시보드를 만들었다. 법인은 3인 이상, 개인은 10인 이상 사업장 데이터가 공개되어 있다고 설명했다.
광역 시도와 사업장 형태 필터를 걸어 법인만 보거나 개인만 볼 수 있다. 네이버, 카카오, 삼성전자를 검색하면 가입자 수, 추정 연봉, 입사자 수, 상실 현황 등을 볼 수 있다고 시연했다.
발표자는 이 대시보드를 아르고(Gemini) 4로 한두 번 입력해 만들었다고 설명했다. 서버를 따로 관리하지 않아도 되어 배포 비용과 관리 부담을 줄일 수 있다고 말했다.
발표자는 마리모를 반응형 노트북이라고 소개했다. 셀을 실행하면 바로 아래에 결과가 나오고, 같은 변수를 여러 셀에서 정의해 생기던 오류도 많이 보완됐다고 설명했다.
마리모는 .py 파일로 저장되어 테스트 코드를 작성하기 쉽고, 다른 노트북에서 임포트할 수도 있다. 무거운 노트북에서는 자동 실행 대신 stale 표시만 나오도록 설정할 수 있다.
SQL 셀과 HTML, 웹어셈블리 내보내기도 지원한다. 발표자는 AI 기능에서 API 키를 입력하면 프롬프트로 쿼리를 작성할 수 있다고 덧붙였다.
발표자는 마리모를 따로 설치하지 않고 에이전트에게 맡기는 방법을 제안했다. 예를 들어 '마리모로 대시보드 만들어서 브라우저로 열어 줘'라고 입력하면 된다.
국민연금 데이터를 내려받아 주면 그 데이터를 활용하고, 내려받지 않았다면 에이전트가 공공데이터포털에서 데이터를 찾아 대시보드까지 만들어 준다고 설명했다.
발표자는 스트림릿에서 사용자가 필터 값을 바꾸면 스크립트 전체를 위에서부터 다시 실행한다고 설명했다. 데이터 로딩이나 모델 학습처럼 무거운 단계도 매번 다시 돌기 때문에 캐시를 꼼꼼히 걸어야 한다고 말했다.
마리모는 필터 값에 의존하는 집계와 차트 셀만 다시 실행하고, 필터와 관계없는 데이터 블록이나 모델 학습 결과는 그대로 둔다. 발표자는 이 방식이 성능 문제를 줄이는 장점이라고 설명했다.
주피터와 마리모의 가장 큰 차이는 파일 형식과 실행 방식이다. 주피터는 출력까지 담은 JSON 파일이고, 마리모는 코드만 담은 파이썬 파일이다. 마리모는 변수 정의와 참조를 분석해 셀을 다루고, 셀을 지우면 그 셀의 변수도 메모리에서 제거된다.
발표자는 아나콘다가 conda 환경 관리자, 내비게이터 GUI, 과학 계산 패키지, 주피터를 한꺼번에 설치하는 배포판이라고 설명했다. 파이썬 환경 전체를 감싸는 큰 설치판이라는 의미였다.
마리모는 샌드박스 단위가 노트북 파일이다. 노트북 맨 위에 PEP 723 블록으로 의존성을 적어 두면 그 파일만 전달해도 환경을 맞출 수 있다.
발표자는 UV를 강력하게 추천했다. UV는 러스트로 만들어져 설치가 매우 빠르며, 마리모도 UV와 함께 쓰면 편하다고 말했다.
발표자는 코드를 직접 작성하지 않고 에이전트에 맡기는 경우 샌드박스 안에서 마리모를 실행하는 방식이 맞다고 봤다. 주피터, 아나콘다, 스트림릿과 비교하면 마리모가 세 가지 대안을 함께 제공하는 도구라고 설명했다.
발표자는 주피터를 만든 캐롤 윌링도 마리모를 쓰라고 권장했다고 언급했다. 주피터의 공동 개발자가 다음 세대 파이썬으로 마리모를 추천한 점이 인상 깊었다고 말했다.
마리모는 셀 간 의존 관계를 정적으로 분석해 실행 순서를 정한다. 실행 순서는 화면상 위치가 아니라 의존 관계에 따라 정해지므로 함수를 노트북 맨 아래에 두어도 된다고 설명했다.
반응형 실행을 위해 지켜야 할 규칙도 있다. 전역 변수는 하나의 셀에서만 정의할 수 있으며, 같은 이름을 두 셀에서 정의하면 어느 쪽을 따를지 정할 수 없어 한쪽 셀만 실행된다.
객체 내부 변경은 추적하지 않는다. 파이썬에서는 변경을 안정적으로 추적하기 어렵기 때문이라고 설명했다. 그래서 변수를 정의하고 셀에서 변경하거나 새 변수를 만드는 방식을 쓰도록 안내했다.
셀을 지우면 그 셀의 변수가 메모리에서 지워진다. 주피터에서는 쓰지 않는 데이터 프레임이 메모리에 남아 컴퓨터가 느려지는 문제가 있었는데, 마리모에서는 이런 정리가 자동으로 이뤄진다고 설명했다. 밑줄로 시작하는 변수는 셀 안에서만 쓰는 지역 변수라 다른 셀에서 같은 이름을 다시 쓸 수 있다.
무거운 학습 셀이나 대용량 쿼리가 자동으로 다시 실행되는 문제를 막기 위해 레이지 모드가 있다. 이 모드에서는 의존 셀을 바로 실행하지 않고 stale 상태만 표시하며, 버튼 하나로 한꺼번에 실행할 수 있다.
mo.stop은 조건이 참이면 그 셀과 하위 셀의 실행을 멈춘다. 런 버튼과 함께 쓰면 버튼을 눌렀을 때만 학습 셀이 실행된다.
셀을 비활성화하면 그 셀과 하위 셀은 실행되지 않는다. 다시 켰을 때 그 사이에 상위 셀이 실행된 경우에만 자동으로 실행된다.
슬라이더 같은 UI 요소는 전역 변수에 할당해야 상호작용이 반영된다. 슬라이더를 움직이면 그 변수를 참조하는 셀만 다시 실행되며, 정의한 셀은 다시 실행되지 않는다. 폼은 제출 버튼을 누르기 전까지 값을 보류하므로 무거운 셀과 함께 쓰기 좋다고 설명했다.
SQL 셀은 f-스트링으로 파이썬 변수나 UI 요소 값을 넣을 수 있고, 값이 바뀌면 쿼리가 다시 실행된다. 기본 엔진은 메모리 위의 덕DB이며, SQLAlchemy, Ibis, 덕DB 파일, ClickHouse 등도 연결할 수 있다고 설명했다.
일반 마리모 노트북은 브라우저가 편집기와 출력 화면을 보여 주고, 실제 파이썬 코드는 서버의 커널에서 실행된다. 셀을 실행할 때마다 브라우저와 서버가 네트워크로 주고받는다.
웹어셈블리 노트북은 파이오다이드가 이 서버 역할을 브라우저 안에서 대신한다. 파이썬 인터프리터가 웹어셈블리로 컴파일되어 브라우저에서 실행되므로 파이썬 설치도, 백엔드 서버도, 네트워크 왕복도 필요 없다고 설명했다. 구글 코랩처럼 넘파이, 판다스 등 주요 패키지를 기본으로 쓸 수 있다고 덧붙였다.
노트북은 HTML, 웹어셈블리, 스크립트, JSON으로 내보낼 수 있고 GitHub Pages 같은 정적 배포도 가능하다고 소개했다.
다만 운영체제 쓰레드를 만들 수 없고 실제 CPU 병렬 처리도 되지 않는다. 스레딩 락이나 공유 메모리 같은 기본 동기화 도구도 지원하지 않으며, 메모리는 약 2GB 정도로 제약된다. PDB 디버거도 아직 쓸 수 없다. 브라우저는 최신 크롬, 파이어폭스, 엣지, 사파리를 지원하지만 크롬을 가장 권장한다고 했다. 공식 문서는 튜토리얼이나 가벼운 탐색에 쓰도록 권장하고, 무거운 연산은 로컬이나 서버에서 실행하라고 안내한다고 말했다.
순수 파이썬 휠이 있는 패키지는 설치할 수 있고, 파이오다이드가 지원하는 패키지도 쓸 수 있다. 임포트한 패키지가 없으면 마리모가 자동 설치를 시도하며, 직접 설치할 때는 micropip를 await로 호출한다.
데이터 파일은 노트북 옆 public 폴더에 두고, notebook location으로 경로를 만들면 로컬과 같은 코드가 동작한다고 설명했다. 다른 서버의 파일을 읽을 때는 프록시가 필요할 수 있으며, 플랫폼에 따라 분기하려면 sys.platform 등을 확인하면 된다고 말했다.
Answers come from the transcript, with the exact spot cited.
Want the next article from 오늘코드todaycode?
When 오늘코드todaycode publishes, we'll write it up like the one you just read and email it to you.
Pocket 4 vs Pocket 3 and the Luna Lineup: Which Pocket Camera to BuyThink Media5 days ago · 14:27 · 127.2K views · Created 18 hours ago
Stronger Setup for a Year-End Rally with Improving Earnings and Falling RatesStockCharts TV2 days ago · 18:57 · 9.9K views · Created 18 hours ago
Why Matthew Berman Says Local AI Doesn't Add Up Yet, and What It Would Take to Make It WorkMatthew Berman21 hours ago · 32:20 · 17K views · Created 18 hours ago