이 글은 학습 활동을 한 건의 기록으로 표현하는 방법을 설명한다. 전체 표준의 층위 구분은 국제표준은 시스템 사이의 계약이다에 두었다. 이 글의 범위는 xAPI StatementxAPI에서 학습 활동 한 건을 표현하는 기록의 단위. 누가(Actor), 무엇을 했고(Verb), 무엇에 했는지(Object)를 정해진 칸으로 적는다.ADL xAPI Data의 기본 단위와 LRSLearning Record Store. 학습 활동 기록(statement 등)을 받아 저장하고 질의할 수 있게 두는 저장소. xAPI 생태계에서 흔히 짝을 이룬다.ADL xAPI overview의 위치다.
주간 회의에서 같은 오후가 세 가지 말로 적힐 수 있다. 기획자는 “학습했다”고 말하고, 학습 화면은 “진도 80%”라고 표시하고, 운영자는 “완료 처리”라고 적는다. 이 세 문장은 모두 현장에서 나온 말이지만, 그대로 저장하면 나중에 같은 질문에 같은 답을 주지 못한다.
먼저 정해야 할 것은 저장소가 아니라 한 건의 기록이다. “김준수가 4과를 완료했다”처럼 누가, 어떤 행동을, 어떤 대상에 했는지가 한 줄로 정리되어야 한다.
정의
단위: 누가, 어떤 행동을, 어떤 대상에 했는지를 표현한 학습 기록 한 건이다.
범위: 이 글은 xAPI Statement의 기본 구조와 LRS의 저장 위치를 다룬다.
제외 대상: 진도율 계산, 성취도 해석, 대시보드 설계는 이 글의 범위가 아니다.
실패 조건: 같은 활동이 시스템마다 다른 단위로 저장되어 완료자 수를 다시 계산할 수 없는 상태다.
xAPI Statement
xAPI에서는 학습 활동 한 건을 Statement로 표현한다. 이 글에서 필요한 기본 구조는 Actor, Verb, Object다. Actor는 누가 했는지, Verb는 어떤 행동인지, Object는 무엇을 대상으로 했는지 나타낸다.
Statement의 기본 칸
- Actor 행동한 사람이나 그룹이다. 예시에서는 김준수다.
- Verb 행동의 의미다. 예시에서는 완료했다는 의미다.
- Object 행동의 대상이다. 예시에서는 4과다.
- Result와 Context 점수, 시간, 맥락 같은 추가 정보다. 이 글에서는 기본 단위 뒤의 층위로 둔다.
칸 이름은 영어지만, 칸에 들어가는 값은 현장의 대상이다. 중요한 것은 “학습했다”라는 넓은 말을 그대로 저장하지 않는 것이다. 나중에 “4과를 완료한 사람”을 묻고 싶다면, 완료라는 행동과 4과라는 대상이 구분되어 있어야 한다.
LRS의 위치
한 건의 기록이 정해지면 그 기록을 둘 자리가 필요하다. LRS는 학습 화면이 아니다. 성적표도 아니다. xAPI Statement를 받아 저장하고, 나중에 조회할 수 있게 하는 저장소다.
xAPI와 LRS
- 학습 화면 김준수가 4과를 완료했다는 활동이 발생한다.
- xAPI Statement Actor, Verb, Object 등으로 활동을 표현한다.
- LRS Statement를 저장하고 조회 요청에 응답한다.
LRS에 기록을 많이 쌓는다고 해서 분석이 자동으로 좋아지는 것은 아니다. 같은 단위로 쌓였을 때만 나중에 묻는 질문이 안정된다. 그래서 이 글은 저장소보다 한 줄의 기록을 먼저 설명한다.
OneRoster와 다른 점
명단 쪽의 한 줄은 OneRoster는 누가 그 반인지를 넘긴다에 있다. 그 줄은 “김준수가 3-2반 학생이다”이다. 이 글의 줄은 “김준수가 4과를 완료했다”이다.
두 줄은 모두 사람을 포함하지만 목적이 다르다. OneRoster는 명단과 수강 관계를 전달한다. xAPI는 학습 활동 한 건을 기록한다. 둘을 섞으면 사람 수와 완료 건수가 함께 흔들린다.
다음에 열 것
한 건의 기록, xAPI Statement, LRS의 위치까지가 이 글의 범위다. 다음에 다룰 내용은 아래와 같다.
- Actor 식별자: 학습 기록의 사람을 명단의 사람과 어떻게 맞출지 설명한다.
- Verb 관리: 완료, 시작, 통과 같은 행동 의미를 어떻게 관리할지 설명한다.
- 거절 규칙: 필수 칸이 비어 있거나 의미가 모호한 기록을 어떻게 처리할지 설명한다.