- xAPI/LRS

xAPI(eXperience Application Interface)

xAPI(Experience Application Programming Interface)

 xAPI는 분산학습 환경(Distributed Learning)에서 학습자 경험 데이터를 정의하고 이종의 시스템 간에 데이터를 공유·통신이 가능하도록 하기 위해 개발되었다. xAPI는 분산학습 환경에서 일어나는 학습경험을 문장 형식으로 구성하여 학습기록 저장소(LRS, Learning Record Store)에 저장하기 위한 과정을 정의하는 표준으로 미 국방부 산하 ADL(Advanced Distributed Learning)에서 2011년부터 논의 되었으며 2013년 1.0.0 버전을 시작으로 1.0.3까지 일반인에게 공개하고 있고 현재 2.0 버전까지 개정 진행 중이다.(Smith Brent.2019)
 xAPI는 ADL Initiative에서 개발한 학습 데이터 표준인 SCORM으로부터 출발하여 다양한 학습 환경에서도 유연하게 사용할 수 있도록 간소화하고, 최소한의 일관성 있는 어휘를 바탕으로 데이터를 생산하고 전송 할수 있는 사양을 제공하고 있다.
 xAPI가 기존 SCORM 표준의 통신과 추적 모듈과의 가장 큰 차이점은 간단함과 유연성이라고 할 수 있다. SCORM은 표준을 준수한 시스템과 콘텐츠의 경우에만 데이터를 주고 받을 수 있는 구조였지만, xAPI 표준을 준수하지 않은 다양한 학습환경에서 이루어지는 다양한 학습활동(학습시간, 진도율, 평가결과 등)를 추적/관리 할 수 있는 유연한 구조다.(정의석 2016)
Helen Colman(2019)는 이러닝 표준에 대한 장단점 비교를 아래와 같이 제시하고 있다.

1.수집 데이터 형식

xAPI는 학습자나 교수자가 콘텐츠 등의 다른 객체와 상호작용을 기록하고 수집하는 것을 목적으로 한다. 수집될 데이터는 핵심이 되는 행위자(Actor), 대상(Object), 행위(Verb)를 중심으로 구성되며, 학습활동과 관련이 있거나 분석에 활용될 수 있는 몇가지 정보를 Extension을 통해 추가할 수 있다.
xAPI는 학습자나 교수자가 콘텐츠 등의 다른 객체와 상호작용을 기록하고 수집하는 것을 목적으로 한다. 수집될 데이터는 핵심이 되는 행위자(Actor), 대상(Object), 행위(Verb)를 중심으로 구성되며, 학습활동과 관련이 있거나 분석에 활용될 수 있는 몇가지 정보를 Extension을 통해 추가할 수 있다.
xAPI는 IMS Caliper와 다르게 어휘에 대해 미리 규정하지 않고, 커뮤니티의 합의를 통해 데이터 모델을 구성할 수 있도록 하고 있다. 이는 xAPI가 서술 할 수 있는 영역에 대한 확장성을 제고해줄 뿐만 아니라, 합의 결과를 통해 명시적으로 도출되는 데이터 모델을 제공하여 상호 운용성을 확보해주는 역할을 동시에 수행하게 된다.
[그림-번호]xAPI 프로파일을 공유하는 ADL Vocab Server

2.수집데이터 전송

xAPI의 데이터 전송은 HTTP Request를 이용한다. 학습기록 생산자(LRP, Learning Record Provider)는 LRS 서버로 HTTP Request를 통해 데이터를 전송하며 xAPI 표준에서는 이에 대한 구현 가이드라인을 상세하게 정의하고 있다.
xAPI 데이터 전송에서 일부는 표준 xAPI 데이터 파라미터를 사용하고 일부는 특정 명세를 활용한다. 아래는 LRP(Learning Record Provider)에 의해 사용되는 Request다.
[표-번호]xAPI에서 정의하는 HTTP Request Header 전송규약
Request 헤더
Response 헤더
Accept
Accept-Encoding
Accept-Language
Authorization
Content-Type
Content-Length
Content-Transfer-Encoding
If-Match
If-None-Match
X-Experience-API-Version
Content-Type
Content-Length
Last-Modified
ETag
Status
X-Experience-API-Version
X-Experience-API-Consistent-Through

3.xAPI Statement

   xAPI 표준에 정의된 학습경험 데이터의 기본 단위로서 Statement는 JSON을 사용하여 형식화되며 학습경험을 추적하는 행위자(Actor), 대상(Object), 행위(Verb) 정보로 구성된 문장이다. xAPI 데이터 모델에서 행위자(Actor), 대상(Object), 행위(Verb) 문장 구성요소는 필수이고, Result와 Context 구성요소는 생략될 수 있다. xAPI 데이터 모델의 가장 중요한 특징은 문장의 구조 뿐만 아니라 구성요소에 의해 제공되어 지는 유연성이다.
[그림-번호]xAPI 데이터 모델 개요
3rd Party 시스템은 LRS에 접근해 저장된 데이터를 조회해서 학습분석하고 그 결과를 시각화 할 수 있다. 이러한 LRS의 접근성과 분리성은 LMS나 학습도구들이 추적데이터를 저장하고 접근하는데 적절한 기밀성을 제공한다.
[표-번호]xAPI Statement 구성요소
기능
설명
Actor
xAPI를 사람 중심(Human-Centeric)으로 만드는 중요한 단계로 Actor는 하나의 시스템이나 ID로만 구성할 필요는 없다. Actor의 Object Type은 Agent와 Group으로 표현할 수 있다.
Verb
URI와 짧은 문자열과 쌍을 이루며 행위자와 Activity 사이의 활동(Action)을 설명한다. Verb는 Statement에서 IRI와 Display로 표현한다. 새로운 Verb를 만들기 전에 ADL에서 구축한 xAPI Registry를 통해 선 탐색 후 인용하고 필요시 새롭게 개발해야 의미론적 상호운용성을 높일 수 있다.
Object
행위의 대상으로 정의하며, Statement에서 Object는 Activity,Agent/Group, SubStatement, Statement Reference로 표현된다. Object의 속성은 ObjectType에 따라 변경된다. 시스템에 의해서 제공되거나 정의되고 ID 필드에 의해 식별되며 같은 ID로 두가지 활동을 참조하지 않는다. Object의 속성은 ObjectType에 의해 달라진다.
Result
xAPI의 선택적 속성으로 측정된 산출 결과를 표현한다. Result 객체에는 Score, Success, Completion,Response, Duration, Extensions 유형의 속성을 포함한다.
Context
Context를 통해 Statement에 상황 정보를 추가할 수 있다. Context에는 Extensions도 포함 할 수 있어 보다 정교한 분석을 위한 그룹화 등으로 활용할 수 있다.
Extensions
Extensions은 Statement Context, StatementResult의 일부로서 Activity Definitions 에 활용된다. Extension은 임의의 데이터를 포함할 수 있기 때문에 Statement를 표현하는데 있어 많은 유연성을 확보한다.
Timestamp
학습경험이 발생된 시간
Stored
Statement가 LRS에 기록된 시간, ISO 8601 데이터 타입을 따름.
Authority
Statement의 사실 증빙을 위한 속성으로 O’Auth를 활용한다.
Version
Statement의 버전 정보는 Learning Record Consumer가 수준을 이해하는데 도움을 준다.
Attachments
어떤 경우 Attatchment는 학습기록에서 중요한 부분을 담당한다.  Attachment에 학습경험에 대한 증빙을 담아 LRS에 저장한다.
[표-번호]xAPI Statement 예제 코드
{
  “actor”:{
    “name”:”Sally Glider”,
    “mbox”:”mailto:sally@example.com”
  },
  “verb”:{
    “id”:”http://adlnet.gov/expapi/verbs/completed”,
    “display”:{“en-US”:”completed”}
  },
  “object”:{
    “id”:”http://example.com/activities/hang-gliding-test”,
    “definition”:{
      “type”:”http://adlnet.gov/expapi/activities/assessment”,
      “name”:{“en-US”:”Hang Gliding Test”},
      “description”:{
        “en-US”:”The Solo Hang Gliding test, consisting of a timed flight from the peak of Mount Magazine”
      },
      “extensions”:{
        “http://example.com/gliderClubId”:”test-435″
      }
    }
  },
  “result”:{
    “completion”:true,
    “success”:true,
    “score”:{
      “scaled”:0.95
    },
    “extensions”:{
      “http://example.com/flight/averagePitch”:0.05
    }
  },
  “context”:{
    “instructor”:{
      “name”:”Irene Instructor”,
      “mbox”:”mailto:irene@example.com”
    },
    “contextActivities”:{
      “parent”:{“id”:”http://example.com/activities/hang-gliding-class-a”}
      “grouping”:{“id”:”http://example.com/activities/hang-gliding-school”}
    },
    “extensions”:{
      “http://example.com/weatherConditions”:”rainy”
    }
  },
  “timestamp”:”2012-07-05T18:30:32.360Z”,
  “stored”:”2012-07-05T18:30:33.540Z”,
  “authority”:{
    “name”:”Irene Instructor”,
    “mbox”:”mailto:irene@example.com”
  }
}

4.xAPI Profile 

프로파일은 특정 맥락에서 xAPI를 구현할 때 사용되는 애플리케이션 특화된 컨셉, Statement 패턴, Extension 그리고 Statement 템플릿으로 인간 또는 기계에서 읽을 수 있는 문서를 말한다.
프로파일은 xAPI가 특정 사용 사례에 대해 일관성 있게 구현되는 데 필요한 어휘 개념, 확장자, 문장 템플릿 및 패턴을 문서화한 것으로 설계자와 개발자가 통제된 도메인별 어휘를 설정하고 어떤 데이터를 캡처/저장 및 보고할지를 결정할 수 있도록 한다. 프로파일은 xAPI 구현에 있어 성공적이고 의미론적으로 상호운용을 가능하게 해주는 청사진이라고 할 수 있다.
프로파일은 두가지 기술적 목표를 제공한다
첫째, 동사(Verbs) 및 활동 유형(Activity Types)과 같이 문장 내에 재사용하기 위한 xAPI 개념에 대한 메타데이터를 포함한다.  메타데이터는 현재의 프로파일 내에서 뿐만 아니라 다른 프로파일에서도 사용되는 개념들간의 연결을 포함하여 관련 용어의 풍부한 생태계를 지원한다.
둘째, 개인과 그룹이 특정 상황에서 적정하게 컨셉을 활용하는 규칙을 포함한다. 이러한 규칙을 통해 프로파일 작성자는 특정한 요소 즉 정확한 순서와 많은 다른 옵션을 설명할 수 있다.
이러한 두가지 기본 목표 달성에 도움이 되도록 프로파일에는 설명, 작성자, 버전관리 등 자체에 대한 메타데이터도 포함되어있다.
   ADL은 2012년 xAPI를 지원하는 커뮤니티를 통해 사양에 대한 결정을 지원하기 위해 어휘 레지스트리 Vocab Server를 운영했다. 그러나 xAPI 활용이 확대되면서 동일한 Activity를 표현하는데 있어 데이터가 일치하지 않은 경우가 많아졌고, 커뮤니티를 통한 일관성 있는 프로파일 데이터 활용이 어려워지는 문제가 발생하고 있다.
[그림-번호]xAPI Vocab Server
2017년 DISC(Data Interoperability Standard Consotium)에서는 ADL Initiative를 대신해 대규모 xAPI 프로파일을 완성했고, 정합성을 확보하는 새로운 거버넌스 체제구축에 대해 논의하고 있다.
[그림-번호]xAPI Profile Server Network 개념도
 – 중앙집중식 접근방식이 아닌 연합 형태의 거버넌스 구조
 – xAPI프로파일의 자동 업데이트 체계 마련
 – LRP(Learning Record Provider)도구 및 상품의 xAPI Profile에 대한 상호운용 인증방식 도입
[표-번호] xAPI 프로파일 서버의 기능
기존 기능
어휘 탐색/검색
xAPI프로파일 작성 가이드
기존 프로파일 및 관련 문서 연결
신규 기능
코드없는(Code-Free) xAPI 프로필 작성
권한을 유지하는 중앙 그룹(Central Group)에 xAPI 프로파일 관리 권한 위임
xAPI 프로필 서버의 연합 네트워크간에 교환을 가능하게하는 오픈 소스 코드
xAPI 프로필 및 어휘 검색
어휘의 의미 매핑
LRP 테스트를 지원하기 위해 들어오는 Statement 유효성 검사
xAPI 프로필 관리, 버전 관리 및 이전 버전 유지 관리 xAPI 프로필에 대한 추가 컨텍스트를 생성하여 비 xAPI 전문가가 향상된 구현 결정을 내릴 수 있도록 구성
역방향 xAPI 프로필 구성 (예 : Statement 스트림을 수집하고 문 스트림에있는 내용을 기반으로 프로필 채우기)
xAPI 프로필 확인 (예 : 특정 영역에 대한 사실상의 표준으로 xAPI 프로필 할당)
끝.