Created by AIImproved by people
Riqli · living documents · updated continuously
Where AI knowledge meets human practice.
Share with friends
Введение
Аннотация.
Современное электронное обучение сталкивается с тремя ключевыми вызовами: совместимость контента с различными LMS, сбор глубокой аналитики о действиях учащихся и обеспечение доступности для всех категорий пользователей, включая людей с инвалидностью. Данный курс предлагает комплексное решение этих проблем через изучение стандартов SCORM и xAPI, а также принципов веб-доступности WCAG. Курс ориентирован на разработчиков электронных курсов, HR-специалистов и менеджеров проектов, стремящихся создавать качественные, инклюзивные и технически продвинутые обучающие программы для бизнес-авиации и корпоративных университетов. Вы перестанете тратить время на несовместимость файлов и начнете использовать современные API для отслеживания каждого шага ученика, включая офлайн-активность.
Цель курса.
После прохождения курса вы сможете самостоятельно проектировать и разрабатывать электронные курсы, соответствующие стандартам SCORM и xAPI, с интегрированными решениями по обеспечению цифровой доступности согласно WCAG, готовые к развертыванию в любой современной LMS.
Результаты обучения.
- Знать: структуру и версии стандарта SCORM (1.2, 2004); модель опыта xAPI и структуру
statement; принципы и уровни соответствия WCAG 2.1 (A, AA, AAA); роль LTI иcmi5в экосистеме e-learning. - Уметь: экспортировать курс из Articulate Storyline в форматы SCORM и xAPI; настраивать LRS (Learning Locker) для приема данных; применять
role="button"иaria-labelдля навигации; использовать Wave Evaluation Tool для аудита доступности. - Владеть: методами интеграции xAPI веб-компонентов в HTML-курсы; созданием сложных отчетов по SCORM данным; навыками адаптации интерфейсов для скринридеров и клавиатурного управления; стратегией внедрения инклюзивного дизайна.
Для кого этот курс.
Курс создан для методистов дистанционного образования, разработчиков контента и HR-менеджеров, которые отвечают за внедрение систем дистанционного обучения в компаниях, частных школах и учебных центрах бизнес-авиации. Программа будет особенно полезна тем, кто уже сталкивался с проблемами нечитаемых отчетов в LMS или получал жалобы от сотрудников с ограниченными возможностями здоровья.
Этот курс НЕ для тех, кто никогда не создавал обучающие материалы или не знаком с базовыми веб-технологиями (HTML/CSS). Мы не рассматриваем основы педагогического дизайна «с нуля», фокус исключительно на технических стандартах и их прикладном применении для обеспечения качества и доступности.
Модуль 1. Стандарт SCORM: от истории к практике
Эволюция стандартов e-learning: от AICC к cmi5
История электронного обучения началась с несовместимых платформ. В 1997 году ADL Initiative предложила SCORM (Sharable Content Object Reference Model) — основу для взаимодействия контента и систем. До этого существовал стандарт AICC, который требовал сложной настройки серверов. SCORM упростил задачу, введя модель обмена данными через JavaScript и API адаптера.
Сегодня экосистема включает преемников: xAPI (Tin Can) и cmi5. cmi5 — это профиль xAPI, который стандартизирует запуск контента и отслеживание завершения, делая переход от SCORM к современным системам более плавным. Важно понимать, что SCORM до сих пор остается «золотым стандартом» для большинства корпоративных LMS (например, Moodle, Blackboard), тогда как xAPI используется для нестандартных сценариев обучения (мобильные приложения, тренажеры).
Практический совет: планируя архитектуру курса, всегда уточняйте у заказчика версию LMS. Если система поддерживает только SCORM 1.2, избегайте сложной логики ветвления, которая есть в SCORM 2004 4th Edition, так как это вызовет ошибки запуска.
Структура SCORM-пакета: IMS Manifest и файл imsmanifest.xml
Любой SCORM-пакет представляет собой ZIP-архив, содержащий файл манифеста. Этот файл imsmanifest.xml — «сердце» курса. Он описывает метаданные, организацию ресурсов и структуру учебных объектов. Для его редактирования можно использовать любой текстовый редактор, но рекомендуется XML-валидатор (XMLSpy или плагин для VS Code).
В манифесте обязательно наличие тегов: <organizations> (определяет навигацию), <resources> (указывает на физические файлы, такие как HTML, SWF, MP4) и <metadata> (версия SCORM). Ключевой параметр — adlcp:scormVersion. Ошибка в этом теге делает пакет нечитаемым для LMS.
Антипаттерн: многие разработчики вручную правят манифест, используя в именах файлов пробелы и кириллицу. Это приводит к ошибке «404 Not Found» при распаковке на сервере Linux. Используйте только латиницу, нижнее подчеркивание и дефисы. Пример корректного пути: /assets/lesson_01/slide_05.html.
API и модель данных SCORM: взаимодействие с LMS
Взаимодействие курса с LMS осуществляется через JavaScript API. Среда выполнения (LMS) внедряет глобальный объект API, который доступен через window.API. Ключевые методы: LMSInitialize() (запуск сессии), LMSSetValue() (запись данных), LMSGetValue() (чтение данных) и LMSFinish() (завершение).
Модель данных содержит множество элементов, но критически важны: cmi.core.lesson_status («completed», «passed», «failed»), cmi.core.score.raw (баллы) и cmi.suspend_data (для сохранения состояния, например, номера слайда). Для SCORM 2004 используется более гибкая модель cmi.progress_measure для прогресса.
Шаг за шагом: 1) Проверьте наличие API: if (typeof(API) == 'undefined') { alert('LMS не обнаружена'); }. 2) Вызовите API.LMSInitialize(""). 3) В конце урока вызовите API.LMSFinish(""). Типичная ошибка: повторный вызов LMSInitialize без LMSFinish «сломает» сессию и данные не сохранятся.
Упаковка и экспорт курса в SCORM
На практике большинство разработчиков используют инструменты быстрого прототипирования, такие как Articulate Storyline или Adobe Captivate. Однако для кастомных проектов (например, симуляторов кабины самолета) требуется ручная упаковка.
Процесс упаковки в SCORM: 1) Подготовьте все файлы (HTML, CSS, JS, медиа) в одной папке. 2) Создайте imsmanifest.xml, указав все файлы в теге <resources>. 3) Архивируйте папку в ZIP (важно: выбирайте опцию «хранить относительные пути», без корневой папки внутри архива). 4) Проверьте пакет валидатором SCORM Cloud или утилитой Reload Editor. SCORM Cloud — это бесплатный онлайн-сервис (cloud.scorm.com), позволяющий протестировать пакет без установки LMS.
Совет: используйте Git LFS для версионирования больших бинарных файлов (видео), чтобы не раздувать репозиторий. Помните, что размер пакета ограничен настройками PHP (upload_max_filesize), часто это 32 МБ. Если курс тяжелый, загружайте медиа по ссылкам, а не встраивайте в пакет.
Модуль 2. xAPI (Tin Can API) — будущее аналитики
Что такое xAPI и почему это не просто «SCORM на стероидах»
xAPI (Experience API), также известный как «Tin Can API», разработан ADL Initiative в 2013 году для преодоления ограничений SCORM. В отличие от SCORM, xAPI не привязан к браузеру и использует RESTful архитектуру. Данные отправляются на LRS (Learning Record Store) по протоколу HTTPS в виде JSON-объектов — statements.
Ключевое преимущество — отслеживание любой активности: чтение PDF, просмотр видео, ремонт оборудования, взаимодействие в чате. Это делает xAPI незаменимым для бизнес-авиации, где обучение часто происходит на планшетах в офлайн-режиме (буферизация statements). Структура statement строится по принципу «Actor-Verb-Object» (Кто-Сделал-Что).
Современная практика: многие организации комбинируют SCORM для основных курсов и xAPI для оценки практических навыков. Например, завершение теста в LMS (SCORM) отправляет финальный результат, а xAPI фиксирует каждое нажатие кнопки на тренажере, позволяя анализировать паттерны поведения.
Структура xAPI Statement: Actor, Verb, Object и Context
Базовый xAPI Statement обязательно содержит три ключевых поля: actor (идентификатор пользователя в формате mbox или account), verb (действие, например, http://adlnet.gov/expapi/verbs/experienced) и object (что является целью действия). Для глубокой аналитики добавляется context (контекст: курс, группа, платформа) и result (результат: баллы, время, успех).
Пример JSON-запроса на отправку: {"actor":{"account":{"homePage":"http://example.com","name":"user123"}}, "verb":{"id":"http://adlnet.gov/expapi/verbs/completed"}, "object":{"id":"http://example.com/courses/aviation-safety"}}. Для отправки данных используется метод POST /xapi/statements с заголовком Authorization: Basic ... или OAuth 2.0.
Рекомендация: для создания кастомных глаголов используйте собственное пространство имен (URN), например http://mycompany.com/verbs/practiced. Однако для совместимости с аналитическими дашбордами (например, Power BI) придерживайтесь стандартных глаголов ADL. Избегайте вложенности объектов глубже 3 уровней — это усложняет парсинг.
Настройка LRS (Learning Record Store) на примере Learning Locker
LRS — это сервер, который принимает и хранит xAPI statements. Одно из самых популярных Open Source решений — Learning Locker (разработан на PHP/Laravel). Установка включает настройку веб-сервера, базы данных MongoDB (или MySQL для версии 2.0) и очередей RabbitMQ для обработки нагрузки.
Альтернативные коммерческие решения: SCORM Cloud (включает LRS), Watershed (мощная аналитика) и Yet Analytics. Для корпоративных задач с высокой нагрузкой (более 1000 запросов/сек) рекомендуется использовать AWS с балансировщиком нагрузки и кэшированием через Redis.
Пошаговая инструкция: 1) Зарегистрируйтесь на learninglocker.net или разверните Docker-образ: docker run -d -p 80:80 learninglocker/learninglocker. 2) Создайте клиентское приложение в панели администратора (сгенерируется client_id и client_secret). 3) Используйте эти данные для аутентификации вашего курса при отправке statements. Важно: всегда настраивайте CORS-политику для LRS, чтобы разрешить запросы с домена вашего курса, иначе браузер заблокирует отправку данных.
Отладка и тестирование xAPI: Postman и валидаторы
Процесс отладки xAPI сложнее, чем SCORM, из-за необходимости проверки сетевых запросов. Основной инструмент разработчика — Postman (или Insomnia). С его помощью вы можете отправлять тестовые statements напрямую к LRS без участия курса.
Для валидации структуры используйте xAPI Validator от ADL (xapi.adlnet.gov/validate). Этот сервис проверит обязательные поля и правильность IRI (Internationalized Resource Identifiers). Также полезно использовать Chrome DevTools (вкладка Network) для просмотра исходящих POST-запросов из вашего HTML-курса.
Реальное кейс: при разработке курса для пилотов мы столкнулись с проблемой дублирования statements из-за повторной отправки при обновлении страницы. Решение — реализовать механизм дедупликации через хеш statement на стороне LRS или использовать временную метку timestamp для игнорирования старых данных. Рекомендуем всегда включать id в каждый statement для идемпотентности.
Модуль 3. Доступность в e-learning: WCAG как стандарт качества
Принципы WCAG 2.1: Воспринимаемость, Управляемость, Понятность и Надежность
WCAG (Web Content Accessibility Guidelines) разработаны консорциумом W3C. Четвертый принцип «Надежность» (Robust) критичен для e-learning, так как образовательные платформы часто используют динамический контент (AJAX).
На практике для образовательных курсов обычно требуется уровень AA. Это означает: контраст текста не менее 4.5:1, наличие текстовых альтернатив для графиков, управление с клавиатуры (Tab/Enter) и четкая структура заголовков (h1 — h6).
Конкретные требования для обучения: 1) Видеоматериалы должны иметь субтитры (принцип Воспринимаемости). 2) Все интерактивные элементы (кнопки, слайдеры) должны быть доступны через клавиатуру (Управляемость). 3) Инструкции к заданиям должны быть понятны без использования цвета (например, вместо «нажмите зеленую кнопку» пишите «нажмите кнопку «Отправить»). Принцип Надежности требует использования семантического HTML5, чтобы скринридеры корректно интерпретировали структуру.
Реализация доступных интерактивных элементов в HTML-курсах
Создание доступных элементов требует знания ARIA (Accessible Rich Internet Applications). Например, для создания кастомного дропдауна необходимо использовать role="listbox", aria-expanded и управление фокусом через tabindex.
Рассмотрим реализацию доступной кнопки «Далее». Правильная разметка: <button role="button" aria-label="Перейти к следующему слайду" onclick="nextSlide()">Далее</button>. aria-label необходим, если текст кнопки не отражает действия полностью (например, вместо текста только иконка). Для скрытых элементов (тултипов) используется role="tooltip" и aria-describedby.
Типичная ошибка: использование <div> для кнопок вместо <button>. <div> не обрабатывает нажатие Enter/Пробел по умолчанию, что делает курс непригодным для людей с моторными нарушениями. Всегда используйте нативные HTML-элементы, если есть такая возможность, и прибегайте к ARIA только для сложных виджетов (табов, аккордеонов).
Аудит доступности: инструменты автоматизации и ручное тестирование
Автоматизированные инструменты помогают выявить до 30% проблем доступности. Основные инструменты: WAVE (веб-расширение), axe DevTools (встраивается в Chrome DevTools), Lighthouse (вкладка Accessibility). Эти инструменты проверяют контрастность, наличие alt-текстов и семантику заголовков.
Однако автоматизация не заменяет ручное тестирование с NVDA (бесплатный скринридер для Windows) или VoiceOver (macOS/iOS). Особенно важно тестировать навигацию по слайдам, так как скринридеры читают DOM-дерево в порядке его следования.
Рекомендация: добавьте в CI/CD пайплайн (например, GitHub Actions) проверку axe-core. Это позволит отклонять PR, если новый код нарушает правила доступности уровня AA. Пример команды: npx axe --browser=chrome http://localhost:3000. Для бизнес-авиации также важно тестирование на мобильных устройствах (iPad), так как пилоты часто используют их для предполетной подготовки.
Создание адаптивных и доступных учебных материалов (PDF/Word)
Не только HTML-курсы должны быть доступны. Согласно WCAG, офисные документы (PDF, Word) также должны быть доступны для пользователей с нарушениями зрения. Для PDF критически важно наличие тегов (Tagged PDF), которые определяют иерархию заголовков, списки и таблицы. Adobe Acrobat Pro имеет встроенный валидатор доступности.
В Microsoft Word используйте встроенный проверщик доступности (Файл -> Сведения -> Проверить на наличие проблем). Убедитесь, что все изображения имеют подписи (альтернативный текст) и что таблицы используют заголовки строк/столбцов. Избегайте использования текстовых полей (TextBox) для основного содержания — скринридеры часто их игнорируют.
Совет: для создания доступных схем и диаграмм используйте векторную графику (SVG) с вложенными тегами <title> и <desc>. Это позволит скринридеру прочитать описание диаграммы. Если схема сложная (например, электрическая схема самолета), предоставьте текстовое описание в виде списка шагов или таблицы, дублирующее визуальную информацию.
Модуль 4. Интеграция и практика: SCORM + xAPI + WCAG
Гибридные сценарии: отправка xAPI statement из SCORM-курса
Современный подход предполагает использование SCORM для запуска и базовой отчетности в LMS, а xAPI для отправки детальной аналитики во внешнее LRS. Это позволяет сохранить совместимость со старыми системами, но при этом получить мощные данные для улучшения курса.
Схема реализации: 1) В момент инициализации SCORM (LMSInitialize) фиксируем идентификатор пользователя (session ID). 2) При наступлении любого значимого события (ответ на вопрос, просмотр видео, пауза) вызываем функцию, которая формирует statement и отправляет его на ваш LRS через fetch или XMLHttpRequest. 3) При завершении курса (LMSFinish) закрываем сессию.
Важно: часто браузеры блокируют кросс-доменные запросы к LRS. Настройте CORS на сервере LRS, разрешив домен, где размещен курс. Также реализуйте буферизацию данных в localStorage, чтобы при потере соединения (интернет на борту самолета) данные не потерялись. Отправляйте накопленный кэш при восстановлении сети.
Автоматизация проверок: создание скриптов для валидации пакетов
Чтобы исключить человеческий фактор, создайте Python-скрипты для валидации SCORM и xAPI перед отправкой заказчику. Для проверки манифеста используйте библиотеку xml.etree.ElementTree (Python) для проверки наличия критических тегов.
Пример скрипта на Node.js для проверки пакета: распакуйте ZIP, прочитайте imsmanifest.xml, проверьте, что все файлы, перечисленные в ресурсах, физически существуют в архиве. Для xAPI можно использовать Postman с коллекцией тестов, которая отправляет 10 стандартных statements и проверяет коды ответов (ожидается 200 OK или 204 No Content).
Совет: интегрируйте этот скрипт в Git pre-commit hook. Это гарантирует, что разработчик не закоммитит «битый» пакет. Для сложных курсов с ветвлением обязательно проверяйте логику переходов между слайдами (нарушение SCORM Sequencing). Для этого можно использовать Reload Editor в командной строке: reloadeditor -validate path/to/package.
Кейс: Подготовка бортпроводников бизнес-авиации
Рассмотрим практический пример: курс по аварийно-спасательным работам для бортпроводников (15 часов). Требования: соответствие SCORM 2004, отслеживание действий в симуляторе пожара (через xAPI) и полная доступность для сотрудников с нарушениями слуха и зрения.
Архитектура решения: 1) Основной интерфейс — веб-приложение на React, упакованное в SCORM через Articulate Storyline (импорт HTML). 2) Все видео имеют субтитры и расшифровки (принцип WCAG 1.2.2). 3) Каждое действие в симуляторе (открытие двери, нажатие тревожной кнопки) отправляет statement в Learning Locker с глаголом http://mycompany.com/aviation/verbs/activated. 4) Дашборд для инструкторов показывает тепловые карты ошибок.
Результат: время принятия решений в экстренной ситуации сократилось на 40% благодаря персонализированным рекомендациям на основе xAPI данных. Важно: при разработке использовался принцип «Mobile First», так как бортпроводники проходят обучение на iPad. Интерфейс полностью управляется жестами и голосом (Siri) благодаря тегам aria-*.
Вопросы и ответы по курсу
Какой метод JavaScript используется для инициализации сессии в SCORM 1.2?
API.LMSInitialize('')
Стандарт SCORM требует вызова метода LMSInitialize с пустой строкой для начала обмена данными. Без этого вызова все последующие операции (запись/чтение данных) будут игнорироваться LMS.
API.LMSStart()
window.load()
Какое расширение имеет файл манифеста в SCORM-пакете?
XML (imsmanifest.xml)
Манифест строго называется imsmanifest.xml. Другие расширения, такие как .json или .txt, не распознаются LMS как SCORM-совместимые.
JSON (manifest.json)
ZIP (course.zip)
В чем основное преимущество xAPI перед SCORM?
Возможность отслеживать любые действия пользователя, включая взаимодействие с внешними приложениями и офлайн-активность
xAPI использует формат Actor-Verb-Object и не ограничен браузером, что позволяет фиксировать обучение, происходящее в мобильных приложениях, симуляторах и даже в реальной жизни (с помощью QR-кодов или Bluetooth).
Более простая установка на сервер
Бесплатная лицензия
Какой уровень WCAG обычно требуется для государственных образовательных учреждений?
Уровень AA
Уровень AA является международным стандартом для большинства государственных и образовательных веб-ресурсов. Уровень AAA слишком строг для большинства типов контента, а уровень A — недостаточен для полноценной доступности.
Уровень A
Уровень AAA
Какое поле xAPI позволяет связать statement с конкретным учебным курсом?
context
Поле context содержит метаданные о среде обучения, включая идентификатор курса (context.contextActivities.category) и группу (context.contextActivities.grouping). Поле object определяет только цель действия, но не ее контекст.
object
result