Содержание статьи +
- Кратко
- Почему это важно
- Что такое SCORM
- Почему 25-летний стандарт всё ещё повсюду
- Три книги: как устроен SCORM
- Что SCORM отслеживает – модель данных
- SCORM 1.2 или SCORM 2004: сравнение
- Пример: трекинг 20-минутной видеолекции
- Чего SCORM не умеет и что приходит ему на смену
- Частые ошибки, на которые уходит время
- Построить или купить: реализовывать SCORM самим?
- Где здесь Фора Софт
- Главное
- Что почитать дальше
Кратко
SCORM (Sharable Content Object Reference Model) – стандарт упаковки курсов, которому уже 25 лет. Благодаря ему один файл курса запускается и передаёт результаты почти в любой системе обучения. SCORM решает три задачи: упаковывает курс в ZIP, который откроет любая совместимая система; связывает курс с системой через небольшой интерфейс на JavaScript; в версии 2004 ещё и задаёт порядок, в котором учащийся проходит части курса. Отслеживает он фиксированный и скромный набор данных – завершение, зачёт/незачёт, балл, время и ограниченный список ответов, и ничего сверх этого. SCORM подходит, когда курс должен работать в существующей LMS уже сегодня (для Moodle в российских вузах – версия 1.2). Если нужно отслеживать действия внутри видео или обучение за пределами LMS, берите xAPI или cmi5.
Почему это важно
Если вы строите или покупаете обучающий продукт, SCORM – первый стандарт, с которым вы столкнётесь: его понимают почти все системы управления обучением и все редакторы курсов. При правильной реализации курсы загружаются и передают результаты везде, без отдельной интеграции под каждую платформу. При ошибке получится пакет, который отлично проигрывается в редакторе, но не записывает ни одного результата в реальной системе обучения. Статья написана для руководителя L&D, продакт-менеджера или основателя, которому нужно понять, хватит ли продукту SCORM, и говорить с инженерами на одном языке. Точность здесь – до отдельного поля данных, но читать можно без знания спецификаций.
Что такое SCORM
Представьте морской контейнер. У него стандартный размер и стандартные угловые фитинги, поэтому любой кран, грузовик или судно в мире поднимет его, не интересуясь, что внутри. Стандарт, который делает то же самое с онлайн-курсом, то есть позволяет любой совместимой системе обучения загрузить и отслеживать его без ручной настройки, называется SCORM – Sharable Content Object Reference Model.
Расшифровка названия многое объясняет. Sharable Content Object – отдельная часть курса, которую можно запустить и отследить: урок, тест, видеомодуль. Главное же в названии – Reference Model (эталонная модель): SCORM не изобрёл новую технологию. Это набор правил, который ссылается на существующие веб-стандарты (ZIP, XML и JavaScript) и говорит: «упакуйте и подключите курс вот так, и он заработает везде». Курс по SCORM – это контейнер, система обучения – кран.
Система управления обучением, или LMS (learning management system), – платформа, которая хранит курсы, зачисляет учащихся, запускает контент и сохраняет результаты: Moodle, iSpring Learn, WebTutor, Mirapolis и сотни других. Смысл SCORM в том, что курс делают один раз, а работает он во всех них. До SCORM каждый курс приходилось отдельно интегрировать с каждой платформой. SCORM свёл эту работу к одному переносимому файлу.
SCORM создала инициатива Advanced Distributed Learning (ADL) – государственная программа, которая с конца 1990-х добивалась, чтобы учебный контент можно было переиспользовать в разных системах. ADL выпустила SCORM 1.0 в 2000 году, SCORM 1.2 в 2001-м, а затем семейство SCORM 2004 (четыре редакции, последняя – 2009 года). Спустя 25 лет это по-прежнему самый широко поддерживаемый стандарт e-learning в мире.
Почему 25-летний стандарт всё ещё повсюду
С тех пор появились новые стандарты – xAPI, cmi5, LTI, и мы до них дойдём. Но SCORM остаётся выбором по умолчанию по одной практической причине: его поддерживают все. Почти любая LMS на рынке умеет импортировать и запускать SCORM-пакет, и почти любой редактор умеет его экспортировать – от популярного в России iSpring Suite до международных конструкторов курсов. Когда методист нажимает «Опубликовать», он выбирает SCORM, потому что именно этот формат гарантированно примут на другой стороне.
В этой универсальности вся ценность SCORM, и она же причина, по которой стандарт застыл во времени. ADL давно не развивает SCORM и вкладывается в xAPI, cmi5 и более широкую «Total Learning Architecture». SCORM зрелый, замороженный и вездесущий – COBOL в мире e-learning. Его выбирают не за современность, а за то, что он с первого дня работает в системах, которые вы не контролируете.
Три книги: как устроен SCORM
ADL опубликовала SCORM как набор «книг», каждая посвящена своей задаче. Разобравшись в трёх книгах, вы поймёте весь стандарт, поэтому пройдём по ним по очереди.
Книга 1 – упаковка: манифест (Content Aggregation Model)
Первая книга, Content Aggregation Model (CAM), описывает контейнер. SCORM-курс поставляется одним ZIP-файлом, который иногда называют Package Interchange File (PIF). В корне архива лежит единственный обязательный файл – imsmanifest.xml. Это опись содержимого. Любая совместимая система открывает ZIP, читает манифест и узнаёт всё нужное, не открывая сам курс.
Манифест описывает три вещи. Metadata – название и описание курса. Organizations – оглавление, дерево модулей и уроков в задуманном автором порядке. Resources – список файлов: все HTML-страницы, скрипты, картинки и видео. В SCORM 2004 в манифесте хранятся ещё и правила sequencing (книга 3).
Главное различие в упаковке – SCO и asset. Sharable Content Object (SCO) – запускаемая единица, которая общается с системой обучения и передаёт результаты. Asset – обычный медиафайл (PDF, картинка, видео): он показывается, но ничего не передаёт. Всё, что нужно отслеживать, должно быть SCO. Частая и дорогая ошибка – выложить видео обычным asset, а потом гадать, почему не записывается завершение (подробнее ниже).
Книга 2 – время выполнения: диалог на JavaScript (Run-Time Environment)
Вторая книга, Run-Time Environment (RTE), описывает, как курс и система общаются после того, как учащийся нажал «Старт». Здесь и происходит трекинг, поэтому разберём эту часть подробнее.
Запуская SCO, система обучения открывает его в браузере и предоставляет небольшой JavaScript-объект – API. Первая задача SCO – найти этот объект, поднимаясь по цепочке окон браузера в поисках конкретного имени: API в SCORM 1.2, API_1484_11 в SCORM 2004. Найдя его, SCO ведёт диалог по фиксированному сценарию:
// Диалог времени выполнения SCORM 2004 (упрощённо, данные вымышленные)
var api = findAPI(window); // найти объект, который дала LMS
api.Initialize(""); // «я начинаю»
api.SetValue("cmi.completion_status", "completed");
api.SetValue("cmi.success_status", "passed");
api.SetValue("cmi.score.scaled", "0.82"); // 82%, диапазон от -1 до 1
api.Commit(""); // «сохрани то, что я отправил»
api.Terminate(""); // «я закончил»В SCORM 1.2 методы называются чуть иначе (LMSInitialize, LMSGetValue, LMSSetValue, LMSCommit, LMSFinish), но схема та же: открыть канал, прочитать или записать поля данных, сохранить, закрыть. Всё, что делает учащийся и что записывает система, проходит через этот интерфейс. Если SCO не находит API – из-за кросс-доменного ограничения браузера или неправильного запуска, – трекинг молча отключается. Это самая частая причина обращений в поддержку по SCORM.
Книга 3 – sequencing: что дальше (Sequencing and Navigation)
Третья книга, Sequencing and Navigation (SN), есть только в SCORM 2004. Это свод правил о том, что учащийся увидит дальше, закончив очередную часть. Она задаёт дерево активностей, пред- и постусловия («нельзя начать экзамен, пока не пройдены все три урока»), правила rollup (как статус частей складывается в статус «завершено» для целого) и режимы навигации (свободный переход или заданный путь).
Sequencing – мощный инструмент и, по признанию самой ADL, самая сложная часть спецификации. Реализован он тоже неоднороднее всего: курс с sequencing, который безупречно работает в одной системе, в другой может вести себя иначе. К этому компромиссу мы вернёмся при сравнении версий.
Что SCORM отслеживает – модель данных
На этом спотыкается большинство команд: SCORM не отслеживает «всё». Он работает с фиксированной, заранее заданной моделью данных – конкретным списком полей, и только с ним. Добавить своё поле нельзя. Ядро модели вендоры часто называют «Большой четвёркой»: завершение, успех (зачёт/незачёт), балл и время.
Конкретные поля в версиях различаются. В таблице – самые важные.
| Что вы хотите записать | Поле SCORM 1.2 | Поле SCORM 2004 |
|---|---|---|
| Закончил? + зачёт/незачёт | cmi.core.lesson_status (одно поле) | cmi.completion_status и cmi.success_status (два поля) |
| Балл | cmi.core.score.raw (0–100) | cmi.score.scaled (от −1 до 1), плюс raw/min/max |
| Время | cmi.core.session_time | cmi.session_time (длительность ISO 8601) |
| Где остановился | cmi.core.lesson_location | cmi.location |
| Состояние для возобновления | cmi.suspend_data (макс. 4 096 симв.) | cmi.suspend_data (макс. 64 000 симв.) |
| Ответы по вопросам | cmi.interactions (ограниченно) | cmi.interactions (подробнее, с текстом) |
| Учебные цели | не поддерживается | cmi.objectives |
Одна тонкость регулярно приводит к багам. В SCORM 1.2 единственное поле lesson_status должно выразить и «закончил ли», и «сдал ли» – значениями вроде passed, completed, failed, incomplete. Однозначно записать «завершено, но не сдано» нельзя. В SCORM 2004 это два независимых поля – завершение и успех, поэтому и «completed / failed», и «completed / passed» выражаются без двусмысленности. Если в отчётах нужно отличать «дошёл до конца» от «набрал проходной балл», одно это различие может определить выбор версии.
SCORM 1.2 или SCORM 2004: сравнение
Обычно выбирают между двумя версиями: SCORM 1.2 (2001) и SCORM 2004 (4-я редакция 2009 года, последняя и самая функциональная). На бумаге новая версия сильнее, на практике старую поддерживают шире. Между этими двумя фактами и приходится выбирать.
| Критерий | SCORM 1.2 | SCORM 2004 (4-я ред.) |
|---|---|---|
| Поддержка LMS | Почти везде, включая старые | Широкая, но sequencing поддержан неравномерно |
| Завершение и зачёт/незачёт | Одно поле | Два отдельных поля |
| Лимит данных возобновления | 4 096 символов | 64 000 символов |
| Данные по вопросам | Ограниченно | Подробно, с текстом вопроса |
| Учебные цели | Нет | Да |
| Sequencing / ветвление | Нет (решает LMS или контент) | Полные правила sequencing |
| Сложность реализации | Минимальная | Выше |
| Когда брать | Нужна максимальная совместимость | Нужны ветвление, подробные данные, цели |
Таблица – ориентир, а не догма. SCORM 1.2 подходит, когда курс прежде всего должен запускаться где угодно, включая старые и нишевые системы, а требования к трекингу простые. SCORM 2004 нужен, когда завершение и успех надо фиксировать раздельно, крупному курсу не хватает объёма данных, нужны подробные ответы по вопросам или ветвление по правилам – и при этом вы контролируете целевые системы или можете их протестировать. В спорных случаях многие команды выбирают 1.2: курс, который не загрузился, обходится дороже, чем чуть более скудные данные.
Для российского рынка у этого выбора есть практическая сторона. Moodle – стандарт де-факто для ЭИОС вузов – по собственной документации штатно поддерживает SCORM 1.2 (и проходит тесты соответствия ADL для этой версии), а SCORM 2004 не поддерживает: отдельные пакеты могут заработать, но разработка поддержки остановлена [8]. Полную поддержку 2004 документация Moodle предлагает через коммерческий плагин, связанный с зарубежным облачным сервисом. Это означает передачу данных об учащихся во внешний сервис за рубежом, а она упирается в запрет обработки персональных данных граждан РФ в зарубежных базах (ч. 5 ст. 18 152-ФЗ) [9]. Поэтому, если курс должен работать в ЭИОС на Moodle, публикуйте SCORM 1.2 и укладывайте suspend_data в 4 096 символов. Российские корпоративные LMS поддержку SCORM заявляют, но какую версию и насколько полно – проверяйте тестовым пакетом на конкретной платформе.
Пример: трекинг 20-минутной видеолекции
Ограничения SCORM нагляднее всего на цифрах. Возьмём одно видео.
Допустим, есть 20-минутная записанная лекция, и система обучения должна зафиксировать, что учащийся её «завершил». В SCORM видео оборачивают в SCO. SCO следит за HTML5-элементом video и, когда учащийся досматривает до конца, записывает одно поле:
cmi.completion_status = "completed"Для SCORM это естественная единица учёта: завершено или нет. Теперь допустим, что нужно ещё запоминать, где каждый учащийся поставил паузу, чтобы продолжить с того же места. Для этого есть suspend_data. Посчитаем объём:
Состояние на учащегося = последняя позиция (8 симв.)
+ просмотренные главы (12 симв.)
+ флаг заметок (4 симв.)
≈ 24 символа
Лимит SCORM 1.2 = 4 096 символов всего
Лимит SCORM 2004 = 64 000 символов всегоДвадцать четыре символа поместятся в любую версию. Но представьте интерактивный курс из 60 вопросов, который хранит состояние каждого вопроса в suspend_data. При 60 символах на вопрос это 3 600 символов, уже 88% лимита SCORM 1.2, а ведь больше ничего ещё не сохранено. Добавьте закладки – и курс незаметно выходит за 4 096 символов и портит собственное состояние возобновления. Поэтому крупные курсы, которые хранят состояние, переходят на SCORM 2004 с его 64 000 символов. Версию диктует арифметика, а не маркетинг.
Важнее другое: чего SCORM не видит. Он записал, что видео «завершено». Но он не скажет, что учащийся посмотрел минуты 0–5, перескочил на 18-ю, дважды пересмотрел 12-ю и бросил на 19-й. Посекундное поведение в видео в фиксированную модель SCORM не входит. Чтобы его отследить, нужны xAPI и xAPI Video Profile – об этом в статье трекинг видео через xAPI Video Profile.
Чего SCORM не умеет и что приходит ему на смену
SCORM исходит из реалий 2001 года: учащийся сидит за компьютером в браузере, вошёл в LMS и остаётся с ней на связи всю сессию. Отсюда и ограничения.
SCORM отслеживает обучение только внутри сессии, которую LMS запустила в браузере. Нативное мобильное приложение, симуляция, VR-шлем, оборудование на заводе или видео на публичном сайте ему недоступны. Модель данных фиксирована: завершение, балл, время и ограниченный набор ответов, ничего сверх. Нужно постоянное соединение с LMS, офлайн SCORM не работает. И детальной аналитики видео в нём нет вовсе.
Эти ограничения снимают стандарты, которым посвящена остальная часть блока 2:
- xAPI (Experience API), раньше известный как Tin Can API, записывает обучение где угодно в виде простых утверждений – «Мария завершила модуль 3» – в Learning Record Store (LRS). В октябре 2023 года xAPI ратифицирован как стандарт IEEE 9274.1.1-2023 (его иногда называют xAPI 2.0). См. xAPI (Tin Can): объяснение.
- cmi5 – мост: он переносит гибкость xAPI в привычную модель запуска и отчётности LMS, так что современный трекинг не требует отказываться от LMS. См. cmi5: объяснение.
- LTI (Learning Tools Interoperability) решает другую задачу: он не упаковывает контент, а запускает ваш видеоинструмент внутри LMS со сквозной авторизацией и передачей оценок. См. LTI: объяснение.
Полное сравнение – в статье SCORM, xAPI, cmi5 и LTI: какой стандарт и когда выбрать.
Частые ошибки, на которые уходит время
Несколько ловушек встречаются почти в каждом SCORM-проекте. Каждую легко обойти заранее и дорого исправлять, если заметить поздно.
Первая – «в редакторе работает, в LMS нет». Предпросмотр в редакторе курсов не запускает настоящий диалог времени выполнения. Всегда тестируйте сам экспортированный пакет в реальной системе обучения – в целевой LMS заказчика, в своей тестовой установке Moodle или в тестовом наборе ADL – до выпуска. Во внешних песочницах используйте только тестовые учётные записи, без реальных данных учащихся.
Вторая – «посмотрел 100% = завершил». Обычный видеоплеер, дошедший до последнего кадра, – не то же самое, что SCO, записавший completion_status = completed. Если видео не оформлено как SCO и поле не записано, система ничего не зафиксирует, как бы внимательно ни смотрел учащийся.
Третья – тихое переполнение suspend_data из примера выше: крупный курс на SCORM 1.2 незаметно превышает 4 096 символов и теряет состояние возобновления. Рассчитайте объём поля заранее или переходите на SCORM 2004.
Четвёртая – ожидание, что sequencing везде ведёт себя одинаково. Разные системы трактуют sequencing SCORM 2004 немного по-разному. Если ветвление важно, тестируйте его на каждой целевой платформе, а не на одной.
Построить или купить: реализовывать SCORM самим?
Начнём с бизнес-решения: именно здесь SCORM сильнее всего влияет на бюджет. «Поддержка SCORM» бывает двух видов, и это разные проекты.
Если вы создаёте курсы, строить почти ничего не нужно. Вы делаете курс в редакторе, который уже экспортирует SCORM (например, iSpring Suite), публикуете в 1.2 или 2004 и загружаете в LMS. Стандарт вы используете, а не реализуете.
Если вы строите платформу, которая должна запускать и отслеживать SCORM-контент – свою LMS или видеопродукт, принимающий SCORM-пакеты, – выбор «построить или купить» становится реальным. Написать с нуля run-time SCORM, полностью соответствующий стандарту, сложнее, чем кажется: модель данных широкая, правила sequencing в 2004 действительно сложные, пограничных случаев много. Большинству команд не стоит делать это вручную. Обычно берут зрелую open-source-библиотеку run-time (например, JavaScript-обёртку SCORM API) или встраивают готовый SCORM-движок, который берёт на себя упаковку, запуск и отчётность через API. Если движок работает как облачный сервис, проверьте, где он хранит данные: результаты учащихся – персональные данные, и для граждан РФ их нужно обрабатывать в базах на территории России [9]. Писать слой SCORM самостоятельно имеет смысл, только если работа со SCORM и есть ваш продукт. Это решение в более широком виде разобрано в статье построить, купить или расширить существующую LMS.
Шаги проверки упаковки мы свели в одностраничный чек-лист, по которому можно проверить любую SCORM-сборку: скачайте чек-лист упаковки и соответствия SCORM.
Где здесь Фора Софт
Фора Софт с 2005 года разрабатывает ПО для видеообучения, стриминга, конференций и интерактивных плееров – более 250 завершённых проектов. В обучающих продуктах мы помогаем командам принять то самое решение, о котором шла речь выше: упаковать видео в обычный SCORM, если курс должен работать в существующей LMS клиента, или перейти на xAPI либо cmi5, если продукту нужны посекундная аналитика видео, офлайн-обучение или трекинг вне LMS. Чаще всего мы работаем с гибридным вариантом: собственный видео- и интерактивный слой, который при этом корректно передаёт результаты в журнал оценок по стандартам. К такому решению обычно и приводит выбор «построить или купить» для продуктов, построенных вокруг видео. Слой трекинга мы делаем для продакшена, а не для демо.
Главное
- SCORM упаковывает курс так, чтобы любая совместимая система могла его запустить и отслеживать.
- Он решает три задачи: упаковка (манифест), трекинг (JavaScript API) и sequencing (только 2004).
- Отслеживается фиксированная модель – завершение, успех, балл, время, ограниченный набор ответов, а не «всё».
- SCORM 1.2 выигрывает по совместимости, SCORM 2004 – по объёму данных и ветвлению.
- Moodle штатно поддерживает только SCORM 1.2, поэтому для ЭИОС вузов это версия по умолчанию.
- Для посекундного видео, офлайна и обучения вне LMS нужны xAPI, cmi5 или xAPI Video Profile.
- Не пишите run-time SCORM с нуля, если SCORM-движок – не ваш продукт.