1 분 소요

메모장 프로그램을 만들어보았다. 커밋 히스토리로 확인하건대 4월 15일에 처음 커밋했고, 4월 23일에 마지막 버전인 3.1.1을 배포한 걸로 봐서 4월에 개발한 것이다.

동기는 이렇다. 나는 소프트웨어 개발에 관심이 있었다. 내가 쓰는 메모장 프로그램, 음악 재생 프로그램, 캘린더 프로그램들에서 마음에 들지 않은 부분들이 보였다. 그래서 여력이 된다면 내가 직접 그 프로그램들을 만들어보고 싶었다.

메모장에 관해서는 다음과 같은 구체적인 동기가 있었다. 핸드폰에서 사용하는 메모장 앱의 경우 찾기(Ctrl+F) 기능이 없었다. 어려운 소설을 읽을 때 메모장으로 색인을 적는 습관을 들였던, 2-3년 전에 카밀라 호세 셀라의 소설을 읽을 때에, 메모장에 색인을 열심히 적어놨는데도 불구하고 그것들을 다시 검색할 수 없었다. 지금은 색인을 만들 때 깃헙을 사용하기 때문에 문제가 되지 않지만, 당시에는 그게 불만이었다.

여하튼, 소프트웨어 개발의 첫걸음을 떼기 위해서는, 음악 재생 프로그램과 캘린더 프로그램보다는, 가장 쉬워보이는 메모장 프로그램 개발을 하는 게 좋아 보였다. 그리고 인공지능의 시대를 살아가는 요즈음에 그런 개발은 정말 쉬운 것이었다. 클로드가 잘 짜주기 때문이다. 그럼에도 불구하고 나는 모든 원리를 이해하면서, 각 컴포넌트들을 완전히 이해하면서 코딩하는 데 주력했다.

v2

가장 먼저 했던 것은 상단 메뉴를 만드는 거였다. 언어는 파이썬으로, tkinter라는 라이브러리를 사용했다. tkinter는 쓰기 편했고 직관적이었다.

버전 1을 언제 어떻게 만들었는지는 기억나지 않지만 버전 2는 tkinter로 만든 버전이었고 여기에 응용프로그램을 저장해놨다.

버전2를 사용해 영어 txt 파일을 저장하는 과정은 다음과 같고 별 문제없이 진행된다. v2_english

한글로 된 txt 파일을 저장하는 것도 문제없이 잘 되지만 한글을 타이핑할 때 글자가 완성되기 직전에 해당 글자가 확대되어 보이는 것이 관찰된다. 글자가 완성되기 전 다음 글자로 넘어가거나 스페이스바 또는 화살표를 누르면 해당 글자가 완성되기 때문에 큰 문제는 아니지만 외관상 별로 좋지는 않았다. v2_hangul

v2는 겨우 300줄 밖에 안되는 짧은 파이썬 코드로 완성되었다. 찾기 및 바꾸기 (find and replace) 기능을 제외하면 200줄만에 메모장 파일이 완성된다. Notepad라는 이름의 단일한 클래스에 간결하게 코드 구현이 가능했다.

v3

v2도 어느정도 충분한 기능을 하기는 하지만, 한글 입력시의 불완전함을 보완하기 위해 다른 라이브러리를 사용하기로 한다. claude가 추천해준 또다른 라이브러리는 PyQt6이다. 클래스명도 cahier로 바꾸었다. 프랑스어로 ‘메모장’이라는 뜻으로 해당 repo명과 이 글의 이름 또한 cahier로 두었다. v2때와 비슷한 구조로 코드를 만들었다. PyQt6tkinter와 크게 다르지 않았다.

그 결과, 250줄 정도로 프로그램을 완성시킬 수 있었다. 한글 입력시의 불완전함도 보완되었고, v2에서는 없었던 ‘찾기 및 바꾸기’기능도 넣을 수 있었다. 또한, 적절한 이모티콘으로 프로그램의 아이콘을 적용시킬 수 있었다. 해당 프로그램은 여기에 저장해놓았지만, 별도의 다운로드 페이지를 만들어놓아 누구든 다운로드할 수 있게 하였다.

영어 파일도 잘 편집되어 저장되고v3_english

한글 파일도 문제없이 잘 작동된다. v3_hangul

댓글남기기