コース教材をSCORMパッケージへ変換する実践的ファイル変換ガイド
学習管理システム(LMS)は、SCORM(Sharable Content Object Reference Model)標準を利用して e ラーニングコンテンツをパッケージ化、配信、トラッキングします。オーサリングツールは SCORM バンドルを自動生成しますが、組織内には何年にもわたって作成された PDF、MP4 動画、PowerPoint スライド、HTML クイズといった多種多様な資産がすでに蓄積されていることが多いです。これらの異種ファイルを 1 つの整然とした SCORM パッケージに変換するのは、視覚的忠実度、メタデータ、インタラクションロジックを保持しなければならないため、容易ではありません。
本ガイドでは、資産の監査から最終 zip までの変換ワークフロー全体を解説し、互換性・アクセシビリティ・データプライバシーに影響を与える判断ポイントをハイライトします。専用オーサリングプラットフォームを使用する場合でも、convertise.app のような汎用コンバータでフォーマット正規化を行ってからパッケージ化する場合でも、原則は同じです。
1. SCORM の構造要件を理解する
SCORM は学習コンテンツの設計方法を規定しませんが、フォルダー階層と LMS が読み取る小さな XML マニフェストファイルのセットを定義します。最低限、SCORM 1.2 または 2004 パッケージには次のものが必要です。
- imsmanifest.xml – すべてのリソースを列挙し、シーケンス規則を定義し、識別子とファイルパスを紐付けるコア記述子。
- Resources フォルダー – マニフェストで参照されるすべてのメディア(画像、音声、動画)および文書ファイル。
- HTML エントリーポイント – LMS が iframe 内で読み込む起動ページ(通常は
index.html)。
PDF ハンドアウト、SCORM 互換クイズ、JavaScript ライブラリなどの追加資産も、適切な <resource> タグでマニフェストに列挙しなければなりません。エントリが欠落または名前が間違っていると、LMS はパッケージを拒否するか、最悪の場合は破損した学習体験を提供します。
2. 既存資産の監査
変換を始める前に、コースに含めるすべてのファイルを棚卸しします。次の列を持つスプレッドシートを作成してください。
| 資産 | 現行フォーマット | 想定用途 | 必要な変換 | メタデータを保持するか |
|---|---|---|---|---|
| 講義動画 | MOV | インライン動画 | MP4(H.264)に変換 | はい(作成日) |
| スライドデッキ | PPTX | HTML 表示 | PDF → HTML にエクスポート | いいえ |
| クイズバンク | XLM | SCORM‑Quiz | QTI XML にエクスポート | はい |
| 配布資料 | DOC | ダウンロードリンク | PDF/A に変換 | はい |
この表から浮かび上がる重要な質問は 2 つです。
- LMS がネイティブにサポートしているフォーマットは何か? 現代の LMS は主に MP4(動画)、PDF(文書)、HTML5(インタラクティブコンテンツ)を受け入れます。
- どのメタデータを変換後も残す必要があるか? コンプライアンスや分析のために、作成者、作成日、バージョン番号などを保持する必要があります。
3. メディアファイルの正規化
3.1 動画変換
動画は MOV、AVI、カメラ専用フォーマットなど様々です。SCORM 互換動画は H.264 ビデオと AAC オーディオを使用した MP4 で、品質とファイルサイズのバランスを取ったビットレート(720p は概ね 2–4 Mbps、1080p は 5–6 Mbps)にします。変換手順は次の通りです。
- ソースメタデータを抽出(例:
ffprobeで作成日・撮影者・GPS を取得)。この情報はサイドカー JSON に保存し、後で再埋め込みします。 - 2 パスエンコーディングでトランスコードし、ターゲットビットレートとインタラクティブタイムスタンプに合わせたキーフレーム間隔を確保。
- 余分な黒帯や向きフラグがある場合はロスレスでトリミング/回転。
- 保持したメタデータを再埋め込み(例:
ffmpeg -metadataを使用)し、LMS が資産ライブラリで表示できるようにします。
プライバシーに配慮する場合は、最終 zip 前に位置情報や顔認識タグなどの埋め込みデータを削除してください。
3.2 画像・グラフィック変換
ラスタ画像は、ロスレスが必要なアイコンや UI スクリーンショットは PNG、写真は JPEG が基本です。SVG 図は LMS が直接レンダリングできない場合、300 dpi の PNG にエクスポートします。色プロファイル(sRGB)を保持すれば、デバイス間での色ずれを防げます。典型的なパイプラインは以下です。
- ソースのカラースペースを
exiftoolで検証。 - 変換:
imagemagick convert source.svg -density 300 -colorspace sRGB output.png - 不要な EXIF 項目を除去しつつ、帰属情報は残す。
4. 文書を Web 対応 HTML に変換する
多くの SCORM 起動ページは HTML5 に依存します。PDF を直接埋め込むのではなく、ページ列に変換しましょう。
- PowerPoint や Word を PDF にエクスポート。ベクタオブジェクトを保持できるツール(例:Microsoft Office の「PDF として保存」)を使用。
- OCR(任意)。PDF がスキャン画像の場合、OCR でテキスト検索可能にし、アクセシビリティを向上。
- PDF を HTML に変換。見出し、表、リストを正しく保持するクリーンな DOM を生成するコンバータを選びます。インラインスタイルが大量に流れ込む形式は SCORM のトラッキング JavaScript との統合が難しくなります。
- ARIA ランドマークを手動または自動スクリプトで注入し、見出し階層を
<section>タグにマッピング。 - 生成された HTML を gzip 圧縮(Web サーバー側)しますが、SCORM zip 自体は未圧縮で保持。LMS はフラットなディレクトリ構造を前提とします。
この過程で、元文書のメタデータ(作成者、リビジョン)を各ページの <head> 内に <meta> タグとして追加してください。
5. インタラクティブ評価の構築
SCORM は HTML/JavaScript で構築されたクイズをホストできますが、多くの組織では QTI、GIFT、独自の Excel シートといった形式で問題バンクを保有しています。変換フローは次の通りです。
- 元アンケートを CSV または XML の中立フォーマットへエクスポート。
- 各列を QTI の要素階層(item、response、outcome)にマッピング。シンプルな Python スクリプトで自動化可能。
- QTI XML ファイルを生成し、
questionsフォルダーに配置。 - 小さな JavaScript ラッパーを追加し、QTI を読み込み質問をレンダリング、学習者の回答を取得、
SetValue("cmi.score.raw", score)で SCORM API に結果を送信。
社内に開発リソースがない場合は、QTI を消費し JavaScript シャムを出力するオープンソースオーサリングエンジン(例:ADL X‑API)を利用できます。
6. マニフェスト(imsmanifest.xml)の作成
マニフェストは SCORM パッケージの心臓部です。単一レッスンモジュールの最小かつ堅牢な例を示します。
<?xml version="1.0" encoding="UTF-8"?>
<manifest identifier="com.example.course1" version="1.2"
xmlns="http://www.imsproject.org/xsd/imscp_rootv1p1p2"
xmlns:adlcp="http://www.adlnet.org/xsd/adlcp_rootv1p2"
xmlns:imsmd="http://www.imsglobal.org/xsd/imsmd_rootv1p2p1">
<metadata>
<schema>ADL SCORM</schema>
<schemaversion>1.2</schemaversion>
</metadata>
<organizations default="ORG-1">
<organization identifier="ORG-1" structure="hierarchical">
<title>Course Title – Module 1</title>
<item identifier="ITEM-1" identifierref="RES-INDEX">
<title>Lesson Overview</title>
</item>
</organization>
</organizations>
<resources>
<resource identifier="RES-INDEX" type="webcontent" adlcp:scormtype="sco" href="index.html">
<file href="index.html"/>
<file href="assets/video.mp4"/>
<file href="assets/handout.pdf"/>
<file href="questions/q1.xml"/>
</resource>
</resources>
</manifest>
ポイント
adlcp:scormtype="sco"は、起動・LMS へのレポートが可能な Sharable Content Object を示します。- 物理ファイルはすべて
<file>要素で列挙する必要があります。欠けたファイルは実行時に「resource not found」エラーを引き起こします。 - 人間が読みやすい識別子(
RES-INDEX、ITEM-1)を使用するとデバッグが楽になります。
複数レッスンがある場合は <item> ブロックを複製し、異なるリソースを参照させます。
7. Zip アーカイブの組み立て
すべての資産が整い、マニフェストが検証できたら、SCORM が要求する正確なフォルダー構造で zip を作成します。
my_course.zip
├─ imsmanifest.xml
├─ index.html
├─ assets/
│ ├─ video.mp4
│ ├─ handout.pdf
│ └─ diagram.png
└─ questions/
└─ q1.xml
重要:zip のトップレベルにディレクトリを入れないでください。LMS はルートにマニフェストがあることを前提とします。zip -X -r my_course.zip . のようにファイルタイムスタンプを保持するコマンドラインツールを使用してください。元資産のタイムスタンプは、一部の LMS が学習者に lastModified 属性として表示することがあります。
8. パッケージの検証
アップロード前に、ADL の SCORM Test Suite やオープンソースの Rustic SCORM Cloud などでパッケージを検証します。バリデータは以下をチェックします。
- マニフェストの構文と必須属性
- 参照されているすべてのファイルの有無
- 選択した SCORM バージョン(1.2 vs 2004)への適合性
- 起動ページでの正しい API 呼び出し(例:
Initialize()、Terminate())
欠落したメタデータが指摘されたら、変換手順に戻り必要なタグを再埋め込みます。
9. ワークフローの自動化
数十本以上のコースを変換する組織では、手作業がボトルネックになります。Python や Bash で次のステージをオーケストレートする簡易自動化パイプラインを構築できます。
- Discovery – ソースディレクトリを走査し新規資産を検出。
- Conversion –
ffmpeg、imagemagick、PDF‑to‑HTML サービス(例:convertise.app の API)を呼び出し、標準化された出力を生成。 - Metadata Harvesting –
exiftoolで作者・日付を抽出し、後のマニフェスト生成に使うmetadata.jsonを作成。 - Manifest Generation – Jinja2 テンプレートにファイルリストとメタデータを注入。
- Packaging – フォルダーを zip、SCORM バリデータでチェックし、合格した zip を出力バケットへ移動。
各ステップのログを保存すれば、監査証跡も自動的に残ります。これは規制産業で求められる要件です。
10. プライバシーとセキュリティの考慮事項
変換はローカルまたはプライベートクラウドで行われても、次の点に注意してください。
- 画像・動画から埋め込み GPS を除去:
ffmpeg -metadata location= - PDF の隠しテキスト層(レビューコメント等)を削除
- 最終 zip の暗号化は LMS が暗号化 SCORM アップロードに対応している場合にのみ。対応していなければ、暗号化された zip を安全なリポジトリに保管し、IAM ポリシーでアクセスを制御。
- 監査ログ – 誰が変換を開始し、どのソースファイルを使用したかを記録。GDPR や HIPAA で個人識別情報が学習データに含まれる場合のコンプライアンス回答に役立ちます。
11. よくある落とし穴と回避策
| 症状 | 考えられる原因 | 対策 |
|---|---|---|
| LMS が「Manifest not found」と表示してパッケージを拒否 | zip に余分なトップレベルフォルダーが入っている | コンテンツをルート直下に再 zip |
| 動画は再生できるが音声が出ない | 非対応の音声コーデック(例:PCM) | 音声を AAC(128 kbps)に再エンコード |
| クイズのスコアが LMS に届かない | SetValue が Terminate 前に呼ばれていない | ページアンロード前に SCORM API ラッパーがデータ書き込みを完了するよう実装 |
| 手配資料 PDF が LMS ビューアで空白になる | ビューアがサポートしない圧縮方式が使用されている | PDF/A‑1b に変換して互換性を確保 |
早期に対処すればテストサイクルの時間を大幅に短縮できます。
12. 実例:レガシー教材を SCORM に変換する流れ
シナリオ:製造業の企業が、PowerPoint デッキ(PPTX)、WMV で撮影した指導動画、PDF 配布資料というレガシー教材ライブラリを保有。LMS は SCORM 2004 のみ受け付けるため、すべてを SCORM パッケージ化したい。
実施手順
- 資産監査で PPTX が 45 本、WMV 動画が 30 本、PDF が 60 本あることを把握。
- 動画変換:バッチスクリプト
ffmpeg -i "$in" -c:v libx264 -crf 22 -c:a aac -b:a 128k "${in%.*}.mp4"を実行。 - スライドデッキは PowerPoint の CLI で PDF にエクスポートし、
pandocの--standaloneオプションで HTML に変換。テーブルや箇条書きの階層は保持。 - メタデータは
exiftoolで取得し、HTML の<head>に<meta>タグとして埋め込む。 - クイズ作成は既存の CSV(選択問題)を Python スクリプトで QTI にマッピング。
- マニフェスト生成は Jinja2 テンプレートに資産 CSV を流し込み、識別子を自動付与。
- バリデーションで SCORM Cloud が画像参照 2 件不足を指摘 → 欠落ファイルを zip に追加。
- 配信:最終的に 1.3 GB の zip(圧縮後)を LMS にアップロード。ベンダーのコンプライアンステストに合格。
このプロジェクトにより、手作業でのオーサリング時間が 70 % 短縮され、すべてのモジュールで一貫した学習体験が実現しました。
13. ベストプラクティスまとめ
- まず監査 – 明確なスプレッドシートが資産漏れを防止。
- メディアは広く受容される形式へ正規化(MP4、JPEG/PNG、PDF/A)。
- 重要メタデータは抽出→再埋め込みで保持。
- クリーンで検証済みのマニフェストを生成;コード扱いなのでリント推奨。
- 余計なディレクトリを入れずにパッケージし、元タイムスタンプを保持。
- 早期に SCORM テストスイートで検証し、構造エラーを速やかに修正。
- ボリュームが大きい場合は自動化し、ログで監査証跡を確保。
- 変換時にプライバシー情報を徹底的に除去し、特に画像・動画のメタデータに注意。
上記手順に従えば、異種の学習資産を 1 つの標準準拠 SCORM パッケージに変換でき、LMS 間での信頼性の高い配信、アクセシビリティ、プライバシー保護が実現します。
本稿で紹介した技術はプラットフォームに依存しません。高速かつプライバシー重視のフォーマット正規化が必要な場合は、convertise.app のようなクラウドベースコンバータと組み合わせて SCORM zip を作成すると効果的です。