В детстве я мечтала стать учителем. Детская мечта частично сбылась: мои взрослые рабочие будни проходят «в школе». И хотя я не учитель в реальном классе, а программист системы дистанционного обучения (СДО), цель у меня та же: сделать обучение доступным, а его процесс интересным. Правда, программисту для этого необходимо умение «жонглировать» не мелом и указкой, а стандартами дистанционного обучения. Я предлагаю совершить путешествие во времени на 20 лет назад, чтобы узнать, как эволюционировали стандарты дистанционного обучения и какие средства в арсенале программистов СДО есть сейчас.
В 1999 году, когда мои ровесники обводили карандашом в кружок теорему Пифагора в учебнике геометрии, компания ADL стартовала проект, в котором скучные учебники планировали заменить электронными курсами. В 2001 ею была выпущена первая официальная версия SCORM (Sharable Content Object Reference Model) — формального языка и спецификации для создания обучающих курсов и их интеграции в СДО.?
ADL — не единственная компания, которая пыталась стандартизировать дистанционное обучение. На создание SCORM ее вдохновила разработанная компанией AICC одноименная спецификация. AICC первоначально предназначалась для авиации, но в результате стала популярна и за ее пределами.
SCORM «под капотом» — это:
- описание структуры учебных блоков и пакетов учебного материала (Content Aggregation Model) — метаданных и ресурсов (изображения, HTML-файлы, Flash и т.д.);
- требования к среде выполнения: правила запуска курсов, ECMAScript API для коммуникации SCORM-клиента с СДО, структура модели данных;
- правила организации учебных материалов и навигации между ними в зависимости от успеваемости ученика.
Несмотря на то, что реализация курса и его поддержки на стороне СДО — задача непростая, SCORM выглядел привлекательным со многих сторон:
- Конфигурация SCORM-курсов не завязана на конкретной СДО. Однажды созданные курсы могут быть использованы в любых системах, поддерживающих SCORM. Справедливо и обратное: для СДО не важно, кто является провайдером курса. Достаточно того, чтобы курс соответствовал стандарту.
- SCORM-курс может содержать проверочные тесты, обучающие модули, интерактивные игры в любом формате, поддерживаемом браузерами.?
- СДО получает информацию о прогрессе ученика: оценку, если это тест, процент прохождения курса, время, затраченное на обучение, и т. д.
- Курсы хорошо структурированы, блоки и модули следуют друг за другом в заданном порядке.
- Ученик может прервать курс и продолжить в любое другое время. СДО позаботится о том, чтобы в следующий раз курс открылся на том месте, на котором был остановлен.
xAPI
Со временем SCORM показал свои слабые стороны.
- Исторически сложилось, что большинство курсов реализовано на некогда популярном Flash. Решение о прекращении поддержки Flash привело к тому, что обновленные браузеры «не хотят» добровольно запускать такие SCORM-курсы.
- Мобильные гаджеты, оснащенные приложениями для обучения, стали конкурировать с ПК за «место на парте», и зависимый от браузера SCORM остался не у дел.
- SCORM-курс не способен существовать отдельно от СДО: и хоститься они вынуждены вместе, чтобы избежать кроссдоменных конфликтов, и сам по себе такой курс вне СДО становится бесполезным.
- Обнаружилось, что взломать SCORM-курс способен даже школьник («спасибо» ECMAScript API).
ADL решила не латать дыры в SCORM, а создать новую спецификацию, которая не повторит ошибок SCORM и в будущем станет его достойной заменой. Так появился xAPI (или TinCan).
Изюминки нового стандарта — это основанная на REST архитектура и Learning Record Store (LRS) — отдельно выделенное хранилище, которое получает информацию о каждом шаге учащегося и выдает ее по запросу. Что это дало пользователям и разработчикам xAPI?
- Стало возможным обучаться на мобильном устройстве.
- Формат контента курса безграничен. Устаревший Flash, произвольные HTML-страницы, аудио, видео, обучающие игры и симуляторы — из всего этого можно «приготовить» контент.?
- Курсовой контент и LRS могут быть размещены где угодно, а не только на том сервере, где «живет» СДО.
- Курсы доступны даже офлайн. Информация о прохождении курса не будет потеряна, как это происходит в SCORM, а синхронизируется с LRS сразу, как только восстановится связь. Также ученик может продолжить обучение на любом другом устройстве с того места, где он остановился, а не проходить курс заново.?
- Неограниченные возможности для сбора аналитики.
- Наконец, курсы стали доступны вне СДО. Теперь всю работу по хранению и выдаче аналитики выполняет за нее LRS.
xAPI + СДО =?
Хотя xAPI и выглядит как серебряная пуля для электронного обучения, на практике оказалось, что отдельные xAPI-курсы не могут заменить полноценную СДО. Попытка же подключать такие курсы к СДО сильно осложнилась тем, что язык xAPI лишен жестких правил. Так, например, нет способа систематизировать и однозначно идентифицировать действия учащегося, если в одном курсе глагол, означающий завершение курса, — это “completed”, а в другом — “passed”.?
В 2016 появился CMI5 (Computer Managed Instruction) — совместное «детище» компаний AICC и ADL, известное как xAPI, модифицированная для использования в СДО. Создатели спецификации утвердили единую структуру курса, правила взаимодействия курса и СДО, словарь слов, описывающих действия учащегося. В итоге CMI5 унаследовала лучшие качества SCORM и xAPI: гарантированную совместимость курсов и СДО и большие возможности для обучения и аналитики процесса обучения.?
CMI5 в действии
Рассмотрим простейший CMI5-курс для изучения русского языка.
Один из его блоков, информационный, содержит правило для запоминания падежей.
Модуль «Падежи» — только для чтения. При нажатии на кнопку Продолжить будет сгенерировано событие «Иван Иванов изучил 'Падежи'. », или на языке CMI5 “Ivan Ivanov experienced 'Падежи'.”. На запрос информации о произошедшем событии LRS ответит следующим JSON:
Ivan Ivanov experienced 'Падежи'.
{
"id": "5f174065-3b34-4995-97d9-9ed542a85c91",
????"actor": {
????????"account": {
????????????"homePage": "http://test.scorm.com",
????????????"name": "test"
????????},
????????"objectType": "Agent",
????????"name": "Ivan Ivanov"
????},
????"verb": {
????????"id": "http://adlnet.gov/expapi/verbs/experienced",
????????"display": {
????????????"en-US": "experienced"
????????}
????},
????"context": {
????????"extensions": {
"https://w3id.org/xapi/cmi5/context/extensions/sessionid": "bb6253b8-9470-405b-962c-6e12b1cb4e18"
????????},
????????"registration": "3f0210f7-82fc-4adf-bea8-0b5b6c7555ab",
????????"contextActivities": {
????????????"grouping": [
????????????????{
????????????????????"id": "https://test.cmi5/E6577A53-68D2-4863-B1CE-F606338992A3/presentation",
????????????????????"objectType": "Activity"
????????????????}
????????????],
????????????"parent": [
????????????????{
????????????????????"id": "https://test.cmi5/E6577A53-68D2-4863-B1CE-F606338992A3/presentation",
????????????????????"objectType": "Activity"
????????????????}
????????????]
????????}
????},
????"timestamp": "2020-02-15T16:29:59.000Z",
????"stored": "2020-02-15T16:29:59.494Z",
????"authority": {
????????"account": {
????????????"homePage": "http://test.scorm.com",
????????????"name": "test"
????????},
????????"objectType": "Agent",
????????"name": "Ivan Ivanov"
????},
????"version": "1.0.0",
????"object": {
????????"id": "http://test.scorm.com/cmi5/lms-id/3a45d09ae8d81f3e2c195ca0c92517c1bc9c4099/4deaa592-477f-4b79-9081-c1cf95edba7a/slides/0",
????????"definition": {
????????????"name": {
????????????????"ru-RU": "Падежи"
????????????},
????????????"type": "http://adlnet.gov/expapi/activities/module"
????????},
????????"objectType": "Activity"
????}
}
В этой структуре можно разглядеть следующую информацию:
- actor — описывает того, кто проходит обучение.
- verb — глагол, обозначающий действие учащегося. То, что отличает CMI5 от xAPI, — это утвержденные 9 глаголов-действий: Launched, Initialized, Terminated, Passed, Completed, Failed, Abandoned, Waived, Satisfied;
- timestamp — фиксированный момент времени прохождения модуля;
- stored — время, когда событие было записано в LRS;
- authority — информация об авторизованном пользователе;?
- object описывает текущий модуль.?
Другой модуль курса — проверочный. От учащегося требуется выбрать несколько правильных ответов из предложенных вариантов.
Наш неграмотный ученик частично ошибается, выбрав 3 и 4 варианты. JSON-отчет для этого события выглядит так:
Ivan Ivanov incorrectly answered 'Выберите предложения, в которых -бы пишется РАЗДЕЛЬНО.' with response '2,3' with score 0%.
{
"id": "e0d2bc32-31f4-478e-83cf-f5a29c707c64",
"actor": {
"account": {
"homePage": "http://test.scorm.com",
"name": "test"
},
"objectType": "Agent",
"name": "Ivan Ivanov"
},
"verb": {
"id": "http://adlnet.gov/expapi/verbs/answered",
"display": {
"en-US": "answered"
}
},
"result": {
"score": {
"scaled": 0,
"raw": 0,
"min": 0,
"max": 10
},
"success": false,
"response": "2[,]3",
"duration": "PT0H0M21S"
},
"context": {
"extensions": { "https://w3id.org/xapi/cmi5/context/extensions/sessionid": "bb6253b8-9470-405b-962c-6e12b1cb4e18"
},
"registration": "3f0210f7-82fc-4adf-bea8-0b5b6c7555ab",
"contextActivities": {
"grouping": [
{
"id": "https://test.cmi5/E6577A53-68D2-4863-B1CE-F606338992A3/presentation",
"objectType": "Activity"
}
],
"parent": [
{
"id": "http://test.scorm.com/cmi5/lms-id/3a45d09ae8d81f3e2c195ca0c92517c1bc9c4099/4deaa592-477f-4b79-9081-c1cf95edba7a/quizzes/3eb2m2qum2ic-gi7dizsu4d26",
"objectType": "Activity"
}
]
}
},
"timestamp": "2020-02-15T16:30:12.000Z",
"stored": "2020-02-15T16:32:06.654Z",
"authority": {
"account": {
"homePage": "http://test.scorm.com",
"name": "test"
},
"objectType": "Agent",
"name": "Ivan Ivanov"
},
"version": "1.0.0",
"object": {
"id": "http://test.scorm.com/cmi5/lms-id/3a45d09ae8d81f3e2c195ca0c92517c1bc9c4099/4deaa592-477f-4b79-9081-c1cf95edba7a/quizzes/3eb2m2qum2ic-gi7dizsu4d26/questions/Slide1_Q_i68jbjynkg0v-wgrvgh6ix86p",
"definition": {
"name": {
"ru-RU": "Выберите предложения, в которых -бы пишется РАЗДЕЛЬНО."
},
"description": {
"ru-RU": "Выберите предложения, в которых -бы пишется РАЗДЕЛЬНО."
},
"type": "http://adlnet.gov/expapi/activities/cmi.interaction",
"correctResponsesPattern": [
"1[,]2"
],
"choices": [
{
"id": "0",
"description": {
"ru-RU": "Ира делает селфи, что(бы) привлечь внимание Димы."
}
},
{
"id": "1",
"description": {
"ru-RU": "Что(бы) ни опубликовал Иван в Инстаграме, Маше все нравилось."
}
},
{
"id": "2",
"description": {
"ru-RU": "\"Что(бы) заказать: суши или вок?\" - думала Вика."
}
},
{
"id": "3",
"description": {
"ru-RU": "Что(бы) быть в тренде, Антон купил пальто."
}
}
],
"interactionType": "choice"
},
"objectType": "Activity"
}
}
Объект result содержит результат прохождения теста: ответ ученика, набранные учеником очки, максимальное и минимальное количество очков, время, затраченное на тест и т.д. Объект object описывает содержимое теста, включая список вариантов и правильный ответ.
Заключение
В 2019 году компания Rustici Software опубликовала статистику курсов, загружаемых на SCORM Cloud.
Согласно статистике, процент использования xAPI-курсов растет с каждым годом, хотя спецификация все еще далека по популярности не только от различных версий SCORM, а даже от его прародителя AICC.?
Причин для этого несколько. Самые очевидные — трудовые и финансовые затраты, необходимые для внедрения xAPI. К тому же большое число СДО доступны только в браузере, и если исключить проблемные Flash-курсы, то сложно придумать весомый повод для того, чтобы отказаться от рабочих SCORM-курсов и переписать их на xAPI.??
Процент CMI5-курсов на этом графике минимальный. При этом CMI5 отлично справляется со своей главной миссией: обеспечивает совместимость LRS и xAPI-подобных курсов с СДО и, как следствие, выступает более мощной и современной альтернативой SCORM.
Есть ли жизнь после SCORM? Однозначно есть. И она объективно более интересная, более технологичная и разнообразная, чем та, что помещается в браузерное окно.