GenealogyPost 직접 만드는 녹화·녹음 프로그램
개발일지 4회

핵심기능 아홉 가지를 정한다 · v1.0.1.0 계획

세 판을 만들고 나서 개발 방향을 정한다. 본편 화면의 핵심기능 칸이 아홉 개이므로, 무엇을 핵심기능으로 둘지 후보를 모으고 기준을 세워 아홉으로 줄인다. 이 회차는 코드를 쓰지 않고, 다음 판에서 무엇을 먼저 만들지를 정한다.

목적

앞으로 만들 기능의 우선순위를 정한다. 본편에 실을 핵심기능 아홉 가지를 정하고, 판마다 무엇을 넣을지 배정한다.

계획
  1. 후보 기능을 빠짐없이 늘어놓는다
  2. 고르는 기준 세 가지를 세운다
  3. 기준으로 후보를 판정해 아홉을 남긴다
  4. 남긴 아홉을 판에 배정한다
  5. 장치 없는 환경에서 각 기능을 어떻게 시험할지 적는다
체크리스트5/7
  • ☑후보 열여섯 가지 정리
  • ☑기준 셋(쓰임, 기본기, 시험 가능성)
  • ☑핵심기능 아홉 확정안
  • ☑판 배정안(v1.0.1.0~v1.2.0.0)
  • ☑기능별 시험 방법
  • ☐확정안에 대한 결정 (사용자 판단 대기)
  • ☐본편 핵심기능 절을 아홉으로 다시 쓰기 (확정 뒤)

1. 왜 아홉인가

1판부터 3판까지는 있어야 할 기능을 채우는 순서로 만들었다. 1판은 녹화와 녹음을 동작하게 하였고, 2판은 소리와 영상이 어긋나는 결함을 고쳤고, 3판은 기존 녹화·녹음 프로그램에 있는 기본 기능을 세어 채웠다. 그 결과 기능이 열여덟 항목이 되었고, 다음에 무엇을 만들지가 정해져 있지 않다.

본편 화면은 핵심기능을 3열 카드로 그린다. 지금 본편에는 일곱 개가 있어 마지막 줄이 비어 있다. 아홉을 채우면 3×3 이 된다. 칸을 채우기 위해 아홉을 고르는 것이 아니라, 아홉이라는 수를 정해 두면 무엇이 핵심이고 무엇이 부수적인지를 가르는 기준이 필요해진다. 이 회차에서는 그 기준을 세우고 후보를 판정한다.

2. 후보

세 판에 이미 들어간 것과 개발일지의 「남은 일」에 적어 둔 것, 그리고 이 프로그램의 쓰임에서 나오는 것을 모두 늘어놓았다. 열여섯이다.

번호후보어디서 나왔나지금 상태
1화면 녹화(모니터·영역)1판있음
2창 녹화(따라가기)3판있음
3음성 녹음(마이크·시스템 소리)1판있음
4버전표시(marker) 파일 저장1판있음
5파일 이름 규칙1판있음
6미니 제어 막대·자기 창 제외·초 읽기·자동 정지3판있음
7클릭 강조·마우스 커서2판, 3판있음
8하드웨어 인코더 자동 탐지3판있음
9스크린샷3판있음
10예약 녹화(정한 시각에 시작·정지)회의 시간표에서 나온 요구없음
11회의 전사(음성을 글로)1판의 「왜 만드는가」없음
12녹화 중 그리기(펜)3판 「남은 일」없음
13자르기와 내보내기(구간 자르기, MP3 추출, GIF)버전표시의 쓰임에서 나온 요구없음
14버전표시를 MP4 챕터로 넣기4번의 확장없음
15웹캠 덧붙이기3판 비교표없음
16방송 송출·장면 전환3판 비교표없음

3. 기준

세 가지 기준으로 판정하였다. 세 기준을 모두 만족하는 것만 핵심기능에 둔다.

첫째, 쓰임에 닿는가. 이 프로그램의 쓰임은 강의 기록과 회의 전사다. 1판에서 직접 만들기로 한 이유가 파일 이름 규칙과 버전표시였고, 둘 다 회의를 기록한 뒤 전사하는 일에서 나왔다. 기능이 이 쓰임에 직접 닿지 않으면 핵심이 아니다.

둘째, 기본기인가. 3판의 기준은 기존 프로그램보다 못하지 않은 것이었다. 기존 녹화·녹음 프로그램의 사용자가 당연히 기대하는 것은 핵심에 두고, 있으면 좋은 것은 주요기능 표에 둔다.

셋째, 시험할 수 있는가. 개발 환경에는 카메라와 마이크가 없다. 1판부터 가짜 화면과 사인파로 엔진을 시험해 왔다. 장치 없이 시험할 방법이 없는 기능은 만들어도 확인할 수 없으므로 핵심에 두지 않는다.

4. 판정

후보쓰임기본기시험판정사유
1 화면 녹화OOO핵심프로그램의 절반이다
2 창 녹화OOO핵심(1과 합침)원천의 한 종류이므로 화면 녹화 한 칸에 넣는다
3 음성 녹음OOO핵심프로그램의 나머지 절반이다
4 버전표시OXO핵심기존 프로그램에 없지만 이 프로그램을 만든 이유다. 기본기 기준의 예외로 둔다
5 파일 이름 규칙OXO핵심4와 같은 이유다
6 녹화 중 제어OOO핵심미니 막대, 단축키, 초 읽기, 자동 정지, 자기 창 제외를 한 칸으로 묶는다
7 클릭 강조·커서△OO주요기능강의 녹화에 쓰이지만 없어도 기록은 된다
8 하드웨어 인코더△O△주요기능있으면 가볍지만 결과물이 달라지지 않는다. 실제 GPU 없이는 시험이 반쪽이다
9 스크린샷△OO주요기능부수 기능이다
10 예약 녹화OOO핵심회의 시간표대로 자리를 비워도 기록이 남는다. 시계만 있으면 시험된다
11 회의 전사OXO핵심쓰임의 끝이 전사다. 시험은 합성 음성 파일로 한다
12 그리기(펜)O△O핵심강의 녹화의 판서다. 마우스 이동을 흉내 내어 시험한다
13 자르기·내보내기O△O핵심버전표시 구간으로 자르는 것이 전사와 이어진다. ffmpeg 만으로 시험된다
14 MP4 챕터OXO핵심(4에 합침)버전표시 칸의 확장이다
15 웹캠△OX제외카메라가 없어 시험할 수 없다
16 방송·장면 전환XXX제외목적 밖이다

기본기 기준에 예외를 둔 것은 4번과 5번이다. 두 기능은 기존 프로그램에 없어서 기본기가 아니지만, 이 프로그램을 만든 이유이므로 핵심에서 뺄 수 없다. 기준을 세 가지로 두되 「만든 이유」는 기준보다 앞에 둔다.

5. 핵심기능 아홉

번호핵심기능하는 일상태
1화면 녹화모니터 전체, 끌어서 고른 영역, 특정 창(움직여도 따라감)을 MP4 로 기록한다있음
2음성 녹음마이크와 시스템 소리를 함께 MP3·M4A·WAV 로 기록한다있음
3버전표시(marker)녹화·녹음 중 단축키로 시각과 메모를 찍고 결과 파일 곁에 txt·csv 로 남긴다. MP4 챕터로도 넣는다있음, 챕터는 다음 판
4파일 이름 규칙연도(0000).월(00).일(00)., 시간(00).분(00)., 주석.확장자 로 저장한다있음
5녹화 중 제어미니 제어 막대, 전역 단축키, 초 읽기, 자동 정지, 자기 창 제외있음
6예약 녹화정한 시각에 시작하고 정한 시각에 멈춘다다음 판
7회의 전사녹음 파일을 PC 안에서 음성 인식으로 글로 바꾸고, 버전표시 시각을 전사문에 표시로 끼운다. 소리를 밖으로 보내지 않는다다음 판
8그리기와 강조녹화 중 화면 위에 펜으로 판서하고, 클릭 강조를 확장한다다음 판
9자르기와 내보내기버전표시 구간으로 잘라내고, MP4 에서 MP3 를 뽑고, 짧은 구간을 GIF 로 만든다. 다시 인코딩하지 않는다다음 판

6. 판 배정

네 자리 판 번호에서 셋째 자리를 기능 추가에 쓴다. 한 판에 핵심기능 하나를 넣는다. 전사는 음성 인식 모델 파일이 커서 실행 파일과 따로 내려받게 해야 하므로 뒤에 둔다.

판넣는 것함께 넣는 것
v1.0.1.0예약 녹화버전표시를 MP4 챕터로
v1.0.2.0자르기와 내보내기
v1.1.0.0회의 전사모델 파일 내려받기 안내
v1.2.0.0그리기와 강조

7. 시험 방법

장치가 없는 환경에서 각 기능을 확인하는 방법을 미리 적어 둔다. 시험 방법이 없는 기능은 만들지 않는다.

기능시험 방법
예약 녹화시계를 가짜로 바꿔 예약 시각을 몇 초 뒤로 두고, 시작·정지 시각이 예약과 1초 안에 맞는지 잰다
MP4 챕터버전표시 세 개를 찍은 결과를 ffprobe 로 읽어 챕터 수와 시각이 같은지 본다
자르기·내보내기enginetest 의 3초 영상을 버전표시 구간으로 잘라 길이를 재고, MP3 추출과 GIF 의 스트림을 ffprobe 로 확인한다
회의 전사글을 합성 음성으로 읽힌 WAV 를 넣어 전사문이 원문과 얼마나 같은지(문자 오류율)를 잰다
그리기와 강조가짜 마우스 이동을 넣어 프레임에 선이 그려지는지 화소를 센다

8. 남은 결정

아홉 가지 확정안과 판 배정안은 사용자의 결정을 기다린다. 결정되면 본편의 핵심기능 절을 아홉으로 다시 쓰고, 다음 판의 폴더를 만들어 예약 녹화부터 시작한다.