SCORM 1.2 vs 2004: LMS와 콘텐츠가 데이터를 주고받는 규약

SCORM의 콘텐츠 패키징·런타임 API·시퀀싱 규칙을 1.2/2004 버전 차이와 xAPI/cmi5 비교, 실행 예제 코드로 정리한 이러닝 상호운용성 가이드.

2026-08-13 · 최초 발행 2025-12-05

LMS는 학습자가 어디까지 봤고 몇 점을 받았는지 어떻게 아는가. 콘텐츠(JS)가 브라우저 안에서 LMS의 API Adapter를 호출해 값을 주고받기 때문이다. ADL이 제정한 SCORM(Sharable Content Object Reference Model)은 이 호출 규약과 콘텐츠 패키징, 시퀀싱 규칙을 정의한 사실상 표준이며, 조직의 학습 자산 재사용성과 공급업체 종속 최소화, 추적·평가 일관성을 위한 기반이다.

무엇을 표준화하는가

버전은 SCORM 1.2와 SCORM 2004(2nd~4th Edition)로 나뉜다. 1.2는 폭넓은 호환성이 강점이고 2004는 시퀀싱·평가 모델을 강화했다. 핵심 구성은 세 가지다. Content Packaging은 imsmanifest.xml 기반으로 구조·메타데이터·리소스를 선언한다. Run-Time Environment는 브라우저 상의 API Adapter와 데이터를 주고받는 통신 규약이다. Sequencing & Navigation은 학습 경로와 조건부 분기·완료 규칙을 다룬다.

콘텐츠는 어떻게 패키징되는가

ZIP 패키지 안에 imsmanifest.xml(조직, 리소스, 메타데이터)을 넣어 SCO 단위로 재사용·배포한다. 표준 메타데이터(LOM)를 쓰면 검색성·분류 체계가 강화되고 벤더 간 마이그레이션 리스크가 줄어든다.

API는 어떻게 호출되는가

콘텐츠(JS)와 LMS의 API Adapter는 Initialize, GetValue, SetValue, Commit, Terminate 함수 호출로 통신한다. 데이터 모델은 SCORM 1.2의 cmi.core.*와 2004의 cmi.*가 다르며, 상태·점수·시간·위치·suspend_data 등 핵심 추적 항목을 제공한다. 1.2는 lesson_status(passed/failed/completed 등), score.raw(0100), lesson_location(255바이트 이하), suspend_data(관행상 4KB 이하)를 쓰고, 2004는 completion_status·success_status를 분리하고 score.scaled(01)를 쓰며 suspend_data를 최대 64KB까지 허용해 정밀 추적·복귀 품질을 높인다.

시퀀싱은 SCORM 2004의 규칙으로 선후수, 조건부 분기, 시도 제한, 완료·성공 속성 평가가 가능하다. 단일 SCO 코스는 1.2로 충분하지만 복잡한 경로가 필요하면 2004를 권장한다. 다만 1.2는 광범위하게 지원되는 반면 2004는 LMS 기능 편차가 일부 존재해 사전 호환성 매트릭스 검증이 필요하고, 팝업 차단·프레임 구조·동일출처 정책 같은 브라우저 제약을 고려해 API 탐색·오류 처리 래퍼를 반드시 둬야 한다.

실무에서는 어떻게 쓰는가

신규 LMS를 도입하거나 마이그레이션할 때는 SCORM 1.2 최소 준수, 2004 지원 여부 가점이라는 벤더 중립 구매 전략을 세우고 기존 콘텐츠 패키지를 검수→테스트 배포→학습 이력 이관 순으로 처리한다. 규제·컴플라이언스 교육에서는 완료·성공·소요시간 추적을 표준화해 내부감사·대외 인증에 대응하고, 버전을 고정하고 패키지 해시를 관리하며 재배포 승인 워크플로를 정립한다. 표준 기반 콘텐츠 제작 파이프라인은 Articulate·Captivate 같은 저작도구의 표준 템플릿을 운영하고 ScormCloud·ADL CTT로 QA를 자동화하며, suspend_data 크기 가이드와 커밋 정책, 에러 코드 핸들링을 공통 모듈화한다. 하이브리드 트래킹 아키텍처는 정규 학습 경로는 SCORM으로, 세부 상호작용·현장 데이터는 xAPI로 병행 수집하고 서버 사이드 LRS와 연계하며 개인정보·보존주기 정책을 분리 설계한다.

런타임이 도는 순서

등록코스 시작SCO 로드API 탐색('window.parent'계층)아니오로그 기록/사용자 안내Initialize/TerminateGetValue/SetValue('cmi.*')Commit(저장)상태/점수/시간 저장완료 여부 반영콘텐츠 패키지('zip' +'imsmanifest.xml')LMS '콘텐츠 저장소'학습자런처('LMS 플레이어')SCO('콘텐츠 HTML/JS')'API Adapter' '발견 성공?'API Adapter오류 처리('심각도=Fatal')LMS '기록 저장소'리포팅/대시보드

무엇을 지키고 무엇을 절충하는가

API 래퍼는 공통화하는 것이 모범사례다. API 탐색 재시도, 타임아웃, 에러 코드 매핑, 지연 커밋 배치 처리를 두되, 배치 커밋은 크래시 시 데이터 유실 위험이 있어 중요 이벤트는 즉시 커밋을 병행한다. 데이터 용량은 suspend_data에 키·상태만 최소로 저장하고 상세 데이터는 서버에 저장한 뒤 참조키를 쓰는 편이 안전하지만, 그만큼 서버 의존성이 늘고 오프라인 복귀 시 완전 복원에는 한계가 있다. 버전은 단일 SCO·단순 경로면 1.2, 복잡한 시퀀싱·정밀 평가가 필요하면 2004를 권장하되 2004는 LMS별 구현 편차가 있어 사전 적합성 테스트가 필요하다. 브라우저·보안 측면에서는 동일 출처·프레임 구조를 사전에 합의하고 팝업 예외, HTTPS 혼합콘텐츠 차단을 점검해야 하는데, 보안을 강화할수록 일부 레거시 콘텐츠의 실행이 제한될 수 있다.

최소한의 SCORM 1.2 래퍼

SCORM 1.2를 지원하는 LMS에서 콘텐츠가 LMS 플레이어 프레임이나 팝업으로 구동되고 브라우저가 ES5 이상을 지원한다는 전제 아래 동작하는 예제다.

// 최소한의 SCORM 1.2 래퍼
(function () {
  var api = null;
  function findAPI(win) {
    var depth = 0;
    while (win && depth++ < 10) {
      if (win.API) return win.API;
      try {
        if (win.parent && win.parent !== win) win = win.parent;
        else break;
      } catch (e) {
        break;
      }
    }
    return null;
  }
  function init() {
    api = findAPI(window);
    if (!api) throw new Error("SCORM API not found");
    var r = api.LMSInitialize("");
    if (r !== "true")
      throw new Error("LMSInitialize failed: " + api.LMSGetLastError());
  }
  function set(k, v) {
    var r = api.LMSSetValue(k, v);
    if (r !== "true") throw new Error("SetValue failed: " + k);
  }
  function commit() {
    api.LMSCommit("");
  }
  function finish() {
    api.LMSFinish("");
  }
  // 사용 예
  try {
    init();
    set("cmi.core.lesson_status", "completed");
    set("cmi.core.score.raw", "95");
    commit();
    // 종료 시점
    window.addEventListener("beforeunload", finish);
  } catch (e) {
    // 로깅/복구 처리
    console.error(e);
  }
})();

커밋은 구간 완료·퀴즈 제출·세션 종료 시점 위주로 배치하며 자동 저장 주기는 60~120초가 권장된다. 데이터 크기는 1.2의 suspend_data 4KB 이하, 2004의 64KB 이하 가이드를 따르고 JSON 압축(LZ-string 등)을 검토할 만하다.

SCORM·xAPI·cmi5, 무엇을 고를까

기준 SCORM 1.2/2004 xAPI cmi5
성능 브라우저 API 호출·동기 커밋 기반, 네트워크 지연 영향 중간 비동기 HTTP, 배치 전송 가능, 고성능 설계 xAPI 기반, 세션·과제 모델로 효율적
확장성 데이터 모델 고정, 커스텀 확장 어려움 자유로운 명사절(verbs)·확장, 고확장성 통제된 확장성, 코스 규칙 내장
일관성 LMS별 구현 편차 존재, 2004에서 개선 LRS 간 스키마 합의 필요, 설계 품질에 의존 규격화된 런타임 규칙으로 일관성 우수
안정성 프레임·팝업·브라우저 제약 영향 서버 간 통신 중심, 안정성 우수 LMS+cmi5 플레이리스트 규칙으로 안정성 강화
운영 편의 기존 도구·콘텐츠 풍부, 즉시 도입 용이 설계 역량 필요, 도구 성숙도 상이 SCORM·xAPI 절충, 최신 LMS 필요(최신 정보 확인 필요)

효과는 숫자로 얼마나 남는가

콘텐츠 재사용률은 3050% 향상되고 신규 제작 비용은 2030% 절감된다. LMS를 교체할 때 마이그레이션 기간은 20% 단축되고 결함률은 30% 감소한다. 표준 기반 추적으로 내부감사·규제 대응 신뢰성이 강화되고, 벤더 종속이 완화되면서 생태계 도구·콘텐츠를 폭넓게 활용할 수 있게 된다는 정성적 효과도 함께 따라온다.

단순한 경로와 폭넓은 호환성이 필요하면 1.2를, 복잡한 시퀀싱과 정밀 평가가 필요하면 2004를 고르고, 운영 안정성과 확장 추적이 중요하면 xAPI·cmi5를 병행하는 아키텍처를 검토할 만하다.

SCORM이러닝표준xAPIcmi5콘텐츠패키징