Moodle 標準搭載の Open Badges を Badges Ninja に置き換える方法(デザイナーが強化、API はそのまま)
Moodle には Open Badges 機能が標準搭載されていますが、デザイナーの機能は限定的で、受領者の体験も Moodle 内に閉じています。Moodle のコース完了をトリガーに、Badges Ninja のクレデンシャルを発行しましょう。
Moodle はバージョン 2.5 から Open Badges を標準搭載しており、多くのコース管理者にとって、それだけで他の選択肢を検討しない十分な理由になっています。組み込みで無料、しかも技術的には標準準拠のクレデンシャルを生成できます。それなのに、なぜ多くの Moodle 管理者は 50 枚目のバッジを発行する頃にはうんざりしてしまうのでしょうか。
正直に言うと、Moodle のバッジシステムはクレデンシャル製品として設計されたものではなく、コンプライアンス項目にチェックを入れるために作られたものです。動作はしますが、LMS に後付けされた機能らしく、機能的ではあるものの古めかしく、そのプラットフォームの制約に縛られています。Moodle のバッジを丸いクリップアートのアイコン以外の何かに見せようとしたことがある人、あるいは修了生から「え、これってどこで見られるんでしたっけ?」と聞かれたことがある人なら、このギャップにはすでに気づいているはずです。
これは Moodle を批判するものではありません——Moodle は優れた LMS ですし、そのバッジ条件エンジン(コース修了、活動修了、手動付与、コホートメンバーシップ)は、クレデンシャルを「トリガー」する仕組みとして実によく考えられています。問題は、トリガーの後に続くすべてのこと——デザインツール、受領者の体験、そして自分の Moodle インスタンスの外でのバッジの可視性です。まさにそこを解決するために作られたのが badges.ninja であり、これを使うために Moodle の修了ロジックを手放す必要はありません。トリガーの向き先を別の発行エンジンに変えるだけです。
Moodle 標準バッジの物足りない点
デザイナーはデザインツールではなく、座標ベースの画像合成ツールです。 Moodle のバッジエディタでは、ベース画像を選び、いくつかの既定アイコンを重ね、ピクセル単位のオフセットで位置を調整することしかできません。形状ライブラリもなく、パレットシステムもなく、アイコンセットに組み込まれたもの以外のフォント選択肢もありません。組織にブランド——ロゴ、カラーパレット、認定証専用のビジュアル言語——があったとしても、Moodle のエディタではそれを表現できません。多くの機関は結局、Photoshop や Canva でバッジのアートを作り、フラットな PNG をアップロードすることになり、アプリ内デザイナーを持つ意味自体が失われてしまいます。
受領者は自分のバッジを見るために Moodle のログインが必要です。 学習者に付与されたバッジは、その人の Moodle プロフィールページ内に保存されます。コースを離れたり、機関の認証情報を忘れたり、機関がその後アカウントを無効化したりすると、バッジは受領者側からは事実上消えてしまいます——たとえ根底のアサーション自体は Moodle の backpack コネクタや公開バッジページで解決可能であっても。メールアドレスだけでログインし、これまでにすべてのコースで獲得したクレデンシャルを一覧できる、専用でブランド化された、常にアクセス可能な場所は存在しません。
共有機能はほとんど後回しにされています。 Moodle は Mozilla Backpack 互換サービスへバッジをプッシュでき、各バッジに公開の検証用 URL も用意していますが、組み込みの「LinkedIn に追加」フローもワンクリックの共有ボタンもなく、発行後に誰かがそのバッジを見たかどうかを示すエンゲージメント分析もありません。バッジを口コミマーケティングとして機能させたいプログラム——ブートキャンプ、継続教育プロバイダー、企業研修——にとって、これは実質的な機会損失です。
一括操作は扱いにくいです。 全員が同じタイミングで Moodle 内のトリガー活動を完了する場合は、コホート全体へのバッジ付与はうまくいきます。しかし過去のコホートに遡ってバッジを補完発行したい場合、スプレッドシートから過去の修了データをインポートしたい場合、あるいは LMS の外で起きた出来事に対してバッジを発行したい場合は、Moodle のデータベースに直接 SQL を書くか、バッジ専用には作られていない CSV インポートツールと格闘することになります。
置き換えパターン:Moodle のトリガーは残し、発行元だけを変える
この問題を解決するために Moodle から移行する必要はありません。もっともきれいなパターンは、Moodle には得意なこと——コース修了、活動修了、コホートメンバーシップの追跡——を続けさせつつ、完了条件が発火した瞬間に、標準バッジの付与の代わりに(あるいはそれと並行して)Badges Ninja API を呼び出すことです。
Moodle ではいくつかの方法でこれを実現できます。
-
コース完了 Webhook / Moodle Web Services(REST)ポーリング。 Moodle の core_completion API は、ユーザーごと・コースごとの完了状態を公開しています。軽量なスケジュールタスク(Moodle のスケジュール cron タスク、または Moodle の REST API を叩く外部 cron ジョブ)が新しく完了した登録をポーリングし、それぞれについて Badges Ninja の awards エンドポイントを呼び出すことができます。
-
ローカルプラグインのフック。 開発者がいる環境であれば、Moodle のイベントシステム(
\core\event\course_completed)を小さなローカルプラグインで監視し、完了した瞬間に HTTP リクエストを発火させることができます——ポーリングの遅延はありません。 -
Zapier/Make/n8n を接着剤として使う — Moodle のコードベースに触れたくない場合、Moodle は完了イベントを Webhook レシーバーにプッシュし、ノーコード自動化ツールがそれを award 呼び出しに変換できます。
修了したユーザーの名前とメールアドレスがあれば、実際の award 呼び出しは次のようになります。
curl -X POST https://api.badges.ninja/awards \
-H "X-Api-Key: bws_3f9a1c2d4e5b6a7c8d9e0f1a2b3c4d5e" \
-H "Content-Type: application/json" \
-d '{
"badgeId": "badge_moodle_course_completion",
"recipient": { "name": "Jordan Alvarez", "email": "learner@example.edu" },
"issuedOn": "2026-08-31"
}'
あるいは、実行しているスケジュールタスクや Webhook レシーバーの中で Node を使う場合は次のようになります。
const response = await fetch("https://api.badges.ninja/awards", {
method: "POST",
headers: {
"X-Api-Key": process.env.BADGES_NINJA_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
badgeId: "badge_moodle_course_completion",
recipient: { name: completedUser.fullname, email: completedUser.email },
issuedOn: Date.now(),
}),
});
const award = await response.json();
受領者のメールアドレスは保存時に SHA-256 でハッシュ化され、award には一意の検証用 URL、QR コード、A4 の PDF 証明書が自動的に付与されます。そして重要な点として、受領者は badges.ninja/me でのマジックリンクサインインを通じてそれを受け取ることができ、別途 Moodle アカウントを用意する必要はありません。リクエスト/レスポンスの完全な形式については awards API リファレンスを、API キーの仕組み全体については認証ガイドを参照してください。
リアルタイムイベントを組むよりも、まとめて処理したい場合——たとえば 1 学期分の修了データを一度に遡って発行したい場合——Moodle から修了データを CSV としてエクスポートし、一括発行フローを直接使うこともできます。これは大きなファイルの一時停止・再開に対応しています。詳しくはCSV から Open Badges を発行する方法で解説しています。
バッジ自体をデザインする
配管部分が整えば、実際のバッジデザインは Web チームへのチケット提出ではなく、数分で完了します。ビジュアルデザイナーには 80 種類以上の形状テンプレート、本格的なカラーパレットシステム、アイコンライブラリ、カスタムフォントのアップロードが用意されているので、「統計学上級——修了」のようなバッジも、汎用的な Moodle の達成アイコンではなく、あなたの機関のブランドに本当に属しているように見せることができます。

すべての API キーは、バッジや発行者を管理するのと同じダッシュボードからスコープ設定と失効ができるため、統合用のクレデンシャルを開発者(や Zapier のような自動化ツール)に渡しても、メインアカウントのログイン情報を共有することにはなりません。

比較:受領者の体験
| Moodle 標準バッジ | Badges Ninja | |
|---|---|---|
| 受領者が閲覧する場所 | Moodle プロフィール内、ログインが必要 | badges.ninja/me、マジックリンク、パスワード不要 |
| 公開検証 | あり、バッジごとの公開 URL | あり、Open Badge v2.0 の JSON-LD エンドポイント |
| デザインツール | 固定アイコン + 位置オフセット | 80 以上のテンプレート、パレット、カスタムフォント/アイコン |
| LinkedIn での共有 | 手動、組み込みボタンなし | ネイティブの LinkedIn プロフィール追加フロー |
| 過去分の一括発行 | SQL または手動の CSV による回避策 | 一時停止・再開に対応した組み込みの一括発行 |
| エンゲージメントの可視性 | なし | award ごとの閲覧/共有統計 |
| 所属機関を離れた後のアクセス | Moodle アカウントの状態に依存 | 永続的で受領者が所有 |
それでも Moodle には勝る点が一つあります。要件が「バッジが存在し、技術的に Open Badge v2.0 に準拠していて、学習者がすでに使っている LMS 内にある」だけであれば、標準バッジは追加費用ゼロで、統合作業も不要です。しかしデザイン品質、コース終了後の可搬性、あるいは発行を採用・マーケティングのシグナルに変えることを重視し始めた瞬間に——それはやがてほとんどの機関に当てはまります——このトレードオフが表面化します。
他の Open Badges プラットフォームの価格と機能をより広く比較したい場合は、最安の Open Badges プラットフォーム比較をご覧ください。また、機関として Open Badge v2.0 と新しい検証可能なクレデンシャル仕様のどちらを採用すべきか検討している場合は、Open Badge v2 と v3 の違い解説で今日実際にどちらを採用すべきかがわかります。
最初の検証可能なクレデンシャルを発行する準備はできましたか?badges.ninja で無料で始める——ビジュアルデザイナー、公開検証ページ、PDF 証明書、Open Badge v2.0 出力。クレジットカードは不要です。
この記事の作成方法
このブログの記事の一部は、AIアシスタントの支援を受けて下書きされた後、公開前にBadges Ninjaチームがレビュー、ファクトチェック、編集を行っています。すべてのコードサンプルと価格は実際の製品と照合して検証済みです。編集方針とAIプロセスについて詳しくは、 編集プロセスページ .

著者について
Nacho Coll
Founder & Engineer at Badges Ninja
Nacho founded Badges Ninja to make issuing verifiable digital credentials as simple as a single API call — Open Badge v2.0 badges and certificates, minted, hosted, and verifiable without standing up your own issuer infrastructure. Writes about the Open Badges spec, credential verification, and running a credentialing platform serverless on AWS, from the operator side of the wire.

