노트북의 성숙
2021년 8월 5일, Chris Dias, @chrisdias
개발을 하는 (그리 새롭지 않은) 새로운 방식
텍스트, 실행 가능한 코드, 그리고 그 코드의 출력을 포함하는 문서인 노트북은 개발을 하는 흥미롭고 짜릿한 새로운 방식입니다.
좋습니다, 완전히 새로운 것은 아닙니다. Donald Knuth는 1984년에 리터러시 프로그래밍 개념을 도입했고, Wolfram Mathematica는 1988년에 커널로 구동되는 노트북 UI를 도입했습니다.
지난 10년 동안, 특히 데이터 과학의 부상과 함께 노트북 사용이 폭발적으로 증가했습니다. Jupyter Notebook과 같은 도구는 데이터 과학 커뮤니티에서 사실상의 표준 도구가 되었습니다. 가상 스크래치 패드, 데이터 준비 작업, 복잡한 머신 러닝 모델 개발 등 모든 용도로 사용되고 사랑받고 있습니다.
우리가 본 흥미로운 추세 중 하나는 데이터 과학과 머신 러닝이 팀 스포츠가 되고 있다는 것입니다. 개발자들은 모델 훈련을 위한 데이터 세트 준비, 프로덕션 사용을 위한 탐색적 코드 리팩토링, 그리고 모델 추론을 핵심 제품에 통합하기 위해 데이터 과학자들과 점점 더 협력하고 있습니다. 우리 팀 자체도 매일 방대한 양의 사용량 데이터를 분석하고 Jupyter 노트북을 사용하여 가설을 추적, 분석 및 검증합니다. 우리는 도메인별 노트북(GitHub Issues)을 사용하여 GitHub 리포지토리 전반의 이슈와 작업 항목을 추적하며, 매달 VS Code의 릴리스 준비 상태에 대한 통찰력을 제공합니다. 노트북은 이제 VS Code 프로젝트를 실행하는 데 매우 중요합니다.
새로운 UI, 사전 경고 없음
우리는 노트북을 더 빠르고 안전하게 만들기 위해 VS Code의 핵심에 노트북 지원을 구축하는 데 힘쓰고 있으며, 즐겨 사용하는 VS Code 확장이 노트북에서도 작동하도록 하고 있습니다. 이러한 노력의 일환으로, 우리는 노트북이 이전 노력에서처럼 애드온이 아니라 도구의 필수적인 부분처럼 느껴지도록 사용자 경험에 대한 변경 사항도 도입하고 있습니다.
만약 여러분이 Insiders 빌드를 사용하고 있다면, 우리가 경험을 발전시키는 과정을 따라올 수 있었을 것입니다. Stable 버전에서는 새로운 노트북 경험을 사용하는 사용자가 40%였습니다. 피드백은 전반적으로 긍정적이었습니다. 그래서 Nigel Tufnel처럼, 우리는 볼륨을 11로 높이고 모두를 새로운 구현으로 옮겼습니다.
안타깝게도, 여러분이 빠르게 알려주셨듯이, 우리는 거의 또는 전혀 사전 경고 없이 여러분에게 전환을 제공했습니다. 여러분은 우주 팽창을 모델링하기 위해 방대한 데이터 세트를 정리하고 분석하는 Jupyter Notebook을 사용하여 작업을 하고 있었고, 우리는 여러분의 세상을 뒤집어 놓았습니다. 커피를 마시고 VS Code를 시작했는데, "뿅"하고 여러분의 노트북 경험이...달라졌습니다.
VS Code에 새로운 경험을 도입하게 되어 기쁘지만, 이와 같은 깜짝 놀라게 하는 일은 도구를 켤 때 아침에 기대하는 일이 아닙니다. 이에 대해 사과드립니다. 변경 사항을 롤아웃하고, 무슨 일이 일어나고 있는지, 왜, 언제 일어나는지에 대해 모든 사람에게 알리는 더 나은 방법들이 있습니다.
하지만 달라졌어요!
VS Code의 노트북 오리지널 버전은 클래식 Jupyter Notebook 경험과 매우 유사했으며, 거의 같은 모양과 동작을 했습니다. 그것은 합리적인 시작점이었고, 따뜻하고 아늑하며 익숙한 경험이었습니다. 하지만, VS Code 사용자들이 노트북과 도구의 나머지 부분을 어떻게 사용하는지에 대해 더 많이 알게 되면서, 두 경험이 다르기보다는 더 유사해야 한다는 것을 깨달았습니다.
VS Code의 노트북은 마치 Python으로 우주를 모델링하는 노트북과 코드 파일을 작성하는 것 사이를 자연스럽게 이동할 수 있도록 느껴져야 합니다. 이는 VS Code의 노트북이 내장된 메타포와 익숙한 키보드 단축키를 최대한 활용한다는 것을 의미합니다.
예를 들어, 코드 셀에 작성하는 것은 여러분이 사용하는 언어에 관계없이 완전한 텍스트 편집기에서 코드를 작성하는 것과 똑같이 느껴져야 합니다. 설정은 노트북에만 국한되어서는 안 됩니다. 빠른 수정, 개요, 소스 동작, 리팩토링, 다중 커서, 줄 바꿈, 선택 확장 및 축소, 열 선택 모드, 대소문자 변경 및 기타 편집기 경험은 동일해야 합니다. Bracket Pair Colorizer 및 Snippets와 같은 즐겨 사용하는 편집기 확장 프로그램은 작동해야 합니다. 오늘날 소스 파일처럼 노트북도 그래픽적으로, 나란히 비교할 수 있어야 합니다.
생태계
더 나아가, 우리는 노트북을 위한 풍부한 확장 생태계를 구상하고 있습니다. 테마와 새로운 언어 지원을 발견하는 것과 같은 방식으로 커널이나 사용자 지정 시각화 도구를 마켓플레이스에서 검색할 수 있어야 합니다. 우리의 API는 새로운 도메인을 위한 사용자 지정(비-Jupyter) 노트북 생성도 지원합니다. 예를 들어, REST Book 확장을 사용하면 출력을 위한 사용자 지정 시각화(예: JSON, HTML 및 사용자 지정 문서)와 함께 REST 호출을 작성하고 유지할 수 있습니다. 앞에서 언급했듯이, GitHub Issues Notebooks를 사용하면 프로젝트를 관리하기 위해 리포지토리에 대한 다른 이슈 쿼리의 노트북을 생성할 수 있습니다. 우리가 하는 것처럼.
미래는 밝아 보입니다
은유를 완성하자면, VS Code의 노트북은 어색했던 십대 시절에서 (어린) 성인으로 성숙했으며, 자신감 있고 강하며 밝은 미래를 가지고 있습니다. Jupyter에서 전환하는 경우 VS Code 노트북 작업에 약간의 조정이 필요할 수 있지만, 결국에는 그럴 가치가 있기를 바랍니다. 그리고 우리가 항상 노력하는 것처럼, 설정을 통해 경험을 사용자 지정할 수 있습니다 (설정 편집기에서 @tag:notebookLayout 검색).
우리는 VS Code의 풍부한 코딩 경험과 생태계를 포괄적인 Jupyter Notebook 지원을 포함하도록 확장하는 것이 일상 개발에 강력한 새로운 통찰력을 가져다주는 훌륭한 도구를 만든다고 믿습니다. 7월 릴리스에 훌륭한 새로운 경험이 포함되었습니다. 시도해 보시고 여러분의 의견(좋든 나쁘든!)을 알려주세요. 여러분의 피드백은 우리가 가능한 최고의 제품을 만드는 데 매우 중요합니다.
감사합니다!
Jim, Joe, Kai, Chris, 그리고 VS Code 팀
행복한 노트북 작업 되세요!
