Skip to main content
A
// ケースファイル 01 / 16
← すべてのケースファイル

AIネイティブ学習管理システム · マルチテナント

Blitzlearning

BlitzLISは、AltaceeがBlitz Learning Technologies向けに構築した学習プラットフォームです。企業が人材を育成し、作成者がAIでコースを作り、マネージャーがチームの進捗を把握する。そのすべてを1つのシステムで、テナント同士をデータベースの層で完全に分離します。

blitzlearning.in ↗
ドシエ // 01
クライアント
Blitzlearning
業種
EdTech
プロダクト
BlitzLIS LMS
状況
本番稼働中
技術スタック
FastAPI · PostgreSQL · pgvector
公開先
blitzlearning.in
blitzlearning.in
テナント概要
BlitzLIS· テナント管理 · Acme Inc
00> BLITZLISとは

学習企業まるごと、1つのシステムに

BlitzLIS(Learning Intelligence System)は、従業員の研修、コンプライアンスプログラムの運営、顧客教育を行う企業のための、ブランド対応のマルチテナント型学習管理システムです。各社は共有インフラ上に専用のワークスペースを持ち、独自のサブドメイン、ロゴ、配色、サインイン画面、メール送信元、修了証を使えます。学習者が他社を目にすることも、Blitzの存在を目にすることもありません。

1つのワークスペースで、6種類の人が並んで働きます。学習者はコースを受講し、テストを受け、修了証を得ます。作成者は、ブロックエディタで手作業で、あるいは企画書と自社の文書からAIを使ってコースを作ります。レビュアーは、公開前のすべての変更を承認または差し戻します。マネージャーは研修を割り当て、チームの進捗を見守ります。管理者はユーザー、グループ、ブランディング、コンプライアンス、レポートを運用します。そのすべての上に、プラットフォーム運営者が全テナント、プラン、フィーチャーフラグを管理します。

Altaceeがプラットフォーム全体を設計・構築しました。FastAPIバックエンドと非同期ワーカー、全テナントテーブルに行レベルセキュリティを適用した PostgreSQL スキーマ、キーワードと意味の両方で行う検索、AIオーサリングのパイプライン、あらゆるロール向けの Next.js ウェブアプリ、そしてそれを動かすデプロイ環境までです。

オーサリングツール、LMS、クイズエンジン、修了証ジェネレーター、フォーラム、レポート用スプレッドシートといった、本来は個別のツールを何種類も組み合わせる機能を、1つのプロダクトに統合。研修会社がブランド化し、販売し、多数のクライアント企業向けに同時運用できます。

Blitz Learning を見る ↗
01> 提供する機能

研修チームに必要なものを、すべて内蔵

12の領域を、1つのプロダクトで。どれも実際に動いている機能で、ロードマップ上の予定ではありません。

01

学習体験

  • ·続きのコース、期限、連続学習日数、おすすめを並べたホームダッシュボード
  • ·スキル、カテゴリ、言語、所要時間、レベルで検索・絞り込みできるコースライブラリ
  • ·章立てのアウトライン、進捗、続きから再開できるレッスンプレーヤー
  • ·インタラクティブなブロック:理解度チェック、並べ替え、シナリオ、フラッシュカード、タブ、タイムライン
  • ·任意の箇所へのハイライトと非公開メモ、閲覧設定、集中モード
  • ·レッスン終了時の振り返りと、レッスン内の Ask AI
02

オーサリングスタジオ

  • ·すべての下書き、コース、バージョンを一か所にまとめたコンテンツスタジオ
  • ·約35種類のブロックとインスペクタを備えた、ブロックベースのレッスンエディタ
  • ·コメント、履歴、比較、復元に対応したバージョン管理付き下書き
  • ·スマートフォン、タブレット、デスクトップの各サイズで見られる学習者プレビューと共有リンク
  • ·カタログ情報、テーマ、分類:カテゴリ、色分けタグ、スキル
  • ·再利用できるブロックと、コースを順序立ててカリキュラムにするラーニングパス
03

AIオーサリング

  • ·コースジェネレーター:企画書を書き、コースを整え、アウトラインを得て、全レッスンへ
  • ·自社資料に基づく生成:文書をアップロードすると、その内容からコースを作成
  • ·エディタ内の Ask AI で、書き換え、短縮、翻訳、テキストのビジュアルブロック化
  • ·問題バンク向けのAI問題ジェネレーター
  • ·シグナル:各レッスンの品質チェックと修正案
  • ·AIによる変更はすべて下書きとして届き、人が承認する。自動で公開されることはありません
04

評価

  • ·9種類の問題形式:選択式、正誤、短文・長文記述、数値、並べ替え、組み合わせ、穴埋め、画像ホットスポット
  • ·複数のクイズで共有できる問題バンク
  • ·クイズルール:合格点、受験回数、制限時間、学習者ごとの例外設定
  • ·結果と全受験履歴を表示するクイズランナー
05

レビューと公開

  • ·ステータスワークフロー:下書き、レビュー中、承認済み、公開済み、差し戻し
  • ·保留中のタスクをすべて集めたレビュアー受信箱
  • ·レビューモード:ブロックへのコメント、編集提案、承認・却下
  • ·学習者に届く前の公開チェックリスト
06

修了証

  • ·コース修了時に自動発行
  • ·テナントごとに独自ブランドで設計できる修了証デザイナー
  • ·QRコード、PDFダウンロード、共有
  • ·修了証番号が本物かどうか誰でも確認できる公開ページ
07

コミュニティ

  • ·投稿、写真、動画、文書、投票を扱うフィード
  • ·公開・非公開のコミュニティと、人数制限つきのラーニングサークル
  • ·リアクション、メンション、ベストアンサー表示つきのスレッド
  • ·各スレッドのAIカード:要約、FAQ下書き、翻訳
  • ·認定スキルと取得した修了証を載せたプロフィール
08

マネージャー

  • ·チーム概要:アクティブな学習者、受講登録、進行中、期限超過
  • ·コースやラーニングパスをチームまたは個人に割り当て
  • ·CSVとXLSXでエクスポートできるチームの進捗
  • ·学習者一人ひとりの、コースごとの全進捗
  • ·レポートとスキルギャップのカバー率、定期レポートメール
09

管理

  • ·従業員、割り当て済み学習、コンプライアンス、新入社員の概要
  • ·ユーザー、部署、グループ、対象者、カスタムフィールド、受講登録
  • ·リスクのある学習者とその理由を示すAIインサイト
  • ·コンプライアンス、コンピテンシーマトリクス、スキルインテリジェンス
  • ·すべてのサインイン、ロール変更、設定の監査ログ
  • ·ディレクトリ同期(SCIM)、APIキー、Webhook、リマインダー、Power BI
10

ホワイトラベル

  • ·テナントごとに専用のサブドメインまたはカスタムドメイン
  • ·独自のロゴ、配色、書体、サインイン画面
  • ·すべてのメールに独自の送信者情報とSMTPサーバー
  • ·独自の修了証デザインと法的フッター
11

標準規格とコンテンツ

  • ·SCORM 1.2・2004のインポート/エクスポート
  • ·cmi5とAICCのインポート、xAPIエクスプローラー
  • ·章、字幕、同期する文字起こしつきの動画レッスン
  • ·AIまたは人手による往復でのコース翻訳
12

プラットフォーム運用

  • ·全テナントを横断するスーパー管理者ダッシュボード
  • ·ドメイン、リージョン、ステータス別のテナント一覧
  • ·テナントごとのAI利用状況の監視とフィーチャーフラグ
  • ·課金プランとサポートチケット
02> 分離

APIに不具合があっても、他のテナントは見えない

多くのマルチテナント製品はアプリケーションコードでテナントを絞り込むため、WHERE句をひとつ書き忘れるだけで、あるクライアントのデータが別のクライアントに漏れます。BlitzLISは、その壁をデータベースに築きました。リクエストごとにトランザクションを開き、どのテナントのものかを PostgreSQL に伝え、各テーブルのポリシーがそれ以外の行をすべて拒否します。

  1. 01テナントのドメインにリクエストが届き、認証される
  2. 02APIがそのトランザクションの間だけ app.tenant_id を設定する
  3. 03PostgreSQL のポリシーがすべての読み取りを絞り込み、他テナントへの書き込みをすべて拒否する
  4. 04検索も同じ壁の内側で実行:語句は Meilisearch、意味は pgvector
  5. 05バックグラウンドワーカーがアップロードを取り込み、届いた資料はすぐ検索可能に
postgres // tenant_isolation.sql
CREATE POLICY lessons_tenant_isolation ON lessons
  USING (tenant_id = current_setting('app.tenant_id', true)::uuid)
  WITH CHECK (tenant_id = current_setting('app.tenant_id', true)::uuid);

-- per request, inside the transaction
SET LOCAL app.tenant_id = '…';
> プラットフォームのマイグレーションより、テナントテーブルごとに1つのポリシー

// セキュリティ

エンタープライズ級のサインインと分離を、標準で

  • 全テナントテーブルに PostgreSQL の行レベルセキュリティ
  • Google、Microsoft、Okta、SAMLによるシングルサインオン
  • TOTPアプリとWebAuthnキーによる2要素認証
  • Argon2idによるパスワードハッシュ化
  • 有効期間15分のアクセストークン
  • 改ざんできない監査ログ
  • コースごとに範囲を絞れるロールベースの権限
03> プロダクト

すべての画面、すべてのロール

デモ用ワークスペースで撮影した、稼働中プロダクトの実際の画面です。7人の登場人物、1つのプラットフォーム。

学習者

学ぶ場所。次にやることがわかるホーム、見て回れるライブラリ、読みやすいレッスンプレーヤー、そして最後には証明を。

学習者ホーム: 進捗つきの続きのコース、おすすめ、修了証、リーダーボード、今後の期限を1ページに。
学習者ホーム進捗つきの続きのコース、おすすめ、修了証、リーダーボード、今後の期限を1ページに。
コースライブラリ: 学習者が受講できるすべてのコースを、スキル、カテゴリ、言語、所要時間、レベルで絞り込み。
コースライブラリ学習者が受講できるすべてのコースを、スキル、カテゴリ、言語、所要時間、レベルで絞り込み。
レッスンプレーヤー: 章立てのアウトライン、進捗、メモ、集中モードを備えた、カード形式のレッスン。
レッスンプレーヤー章立てのアウトライン、進捗、メモ、集中モードを備えた、カード形式のレッスン。
理解度チェック: レッスンに組み込まれた練習:答えて、理由を確かめ、やり直して、先へ進む。
理解度チェックレッスンに組み込まれた練習:答えて、理由を確かめ、やり直して、先へ進む。
マイ修了証: 発行済みの修了証を、ステータス、有効期限、ライブプレビュー、QR検証つきで。
マイ修了証発行済みの修了証を、ステータス、有効期限、ライブプレビュー、QR検証つきで。
公開検証: 修了証コードがあれば誰でも、誰がどのコースをいつ修了したかを確認できます。
公開検証修了証コードがあれば誰でも、誰がどのコースをいつ修了したかを確認できます。
ラーニングパス: 順番に解放されるコースの学習シーケンスと、パスの進捗。
ラーニングパス順番に解放されるコースの学習シーケンスと、パスの進捗。
実績: ポイント、連続学習、バッジ、レベル、リーダーボード、そしてメンタリング。
実績ポイント、連続学習、バッジ、レベル、リーダーボード、そしてメンタリング。
カレンダー: 期限、ライブセッション、イベントを月・週・リストで表示。
カレンダー期限、ライブセッション、イベントを月・週・リストで表示。
学習者の言語で: インターフェース全体が人ごとに言語を切り替えます。ここではドイツ語のアカウントページです。
学習者の言語でインターフェース全体が人ごとに言語を切り替えます。ここではドイツ語のアカウントページです。

作成者とレビュアー

コースを作る場所。企画書と文書からアウトラインへ、ブロックエディタでレッスンへ、そしてレビューと公開へ。

コンテンツスタジオ: 作成者の下書きとコース、レビュー中のものと公開済みのもの。
コンテンツスタジオ作成者の下書きとコース、レビュー中のものと公開済みのもの。
コースを作成: ゼロから始めることも、コースの内容を伝えてAIに下書きさせることも。
コースを作成ゼロから始めることも、コースの内容を伝えてAIに下書きさせることも。
AIコース企画書: このコースで何を、誰に、どのレベルとトーンで、どの文書から教えるのか。
AIコース企画書このコースで何を、誰に、どのレベルとトーンで、どの文書から教えるのか。
コースを執筆中: ジェネレーターはバックグラウンドで動作:資料の取り込み、アウトライン、レッスン。
コースを執筆中ジェネレーターはバックグラウンドで動作:資料の取り込み、アウトライン、レッスン。
ブロックエディタ: ブロックで構成するレッスン:テキスト、コールアウト、メディア、チェック、インタラクション。アウトラインとインスペクタつき。
ブロックエディタブロックで構成するレッスン:テキスト、コールアウト、メディア、チェック、インタラクション。アウトラインとインスペクタつき。
エディタ内のAI: レッスンアシスタントが変更を下書きとして提案し、作成者が採用か却下かを決めます。
エディタ内のAIレッスンアシスタントが変更を下書きとして提案し、作成者が採用か却下かを決めます。
レビュアー受信箱: 判断待ちのすべてのバージョンを、1つのキューに。
レビュアー受信箱判断待ちのすべてのバージョンを、1つのキューに。
レビューモード: レビュアーはブロックにコメントし、編集を提案し、承認または変更を依頼します。
レビューモードレビュアーはブロックにコメントし、編集を提案し、承認または変更を依頼します。

コミュニティ

学習者が語り合う場所。フィード、コミュニティとサークル、投票つきのスレッド、それを要約できるAI。

コミュニティフィード: 投稿、コース修了、取得した修了証、投票、活発なコミュニティ。
コミュニティフィード投稿、コース修了、取得した修了証、投票、活発なコミュニティ。
AIつきスレッド: 投票スレッドで、AIアシスタントが要約、FAQ作成、翻訳をいつでも実行できる状態。
AIつきスレッド投票スレッドで、AIアシスタントが要約、FAQ作成、翻訳をいつでも実行できる状態。
コミュニティ: 公開・非公開のコミュニティと、席数に上限のある少人数のラーニングサークル。
コミュニティ公開・非公開のコミュニティと、席数に上限のある少人数のラーニングサークル。

マネージャー

チームを動かす場所。誰に何を割り当てたか、誰が遅れているか、そして自動でエクスポートやメール送信されるレポート。

チーム概要: アクティブな学習者、受講登録、進行中、修了、期限超過、平均修了率。
チーム概要アクティブな学習者、受講登録、進行中、修了、期限超過、平均修了率。
チームの進捗: 全学習者の受講登録・修了・進行中・期限超過の件数を、エクスポート可能な形で。
チームの進捗全学習者の受講登録・修了・進行中・期限超過の件数を、エクスポート可能な形で。
レポート: チームの進捗、修了、期限超過の学習者、修了証をCSV、XLSX、PDFで。スキルギャップも。
レポートチームの進捗、修了、期限超過の学習者、修了証をCSV、XLSX、PDFで。スキルギャップも。
学習者個人: 一人のコースを、ステータス、進捗、期限、修了状況とともに。
学習者個人一人のコースを、ステータス、進捗、期限、修了状況とともに。

テナント管理者

企業が自社のアカデミーを運営する場所。人、コンプライアンス、リスク、ブランディング、完全な監査証跡。

テナント概要: 従業員、割り当て済み学習、保留項目、コンプライアンス、新入社員、AI生成コースをひと目で。
テナント概要従業員、割り当て済み学習、保留項目、コンプライアンス、新入社員、AI生成コースをひと目で。
AIインサイト: 研修を受け損ねるリスクのある学習者と、その要因。
AIインサイト研修を受け損ねるリスクのある学習者と、その要因。
監査ログ: 誰が、どのリソースに、どこから何をしたか。操作や日付で絞り込めます。
監査ログ誰が、どのリソースに、どこから何をしたか。操作や日付で絞り込めます。
テーマとブランディング: 配色、ロゴ、サインイン画面、ドメイン、メール、修了証、書体を、ライブプレビューつきで。
テーマとブランディング配色、ロゴ、サインイン画面、ドメイン、メール、修了証、書体を、ライブプレビューつきで。
コミュニティ分析: メンバー数、エンゲージメント率、投稿数とコメント数の推移。
コミュニティ分析メンバー数、エンゲージメント率、投稿数とコメント数の推移。

プラットフォーム運営者

Blitzが全クライアント企業を同時に運営する場所。

スーパー管理者ダッシュボード: プラットフォーム全体の全テナント、総ユーザー数、アクティブな学習者、受講登録、修了。
スーパー管理者ダッシュボードプラットフォーム全体の全テナント、総ユーザー数、アクティブな学習者、受講登録、修了。
04> かんたんQ&A

BlitzLISをQ&Aで

BlitzLISとは何ですか?
BlitzLISは、AltaceeがBlitz Learning Technologies向けに構築した、マルチテナント型のAIネイティブ学習管理システムです。多数の企業の従業員研修、コンプライアンス、顧客教育を同時に運用し、各社にブランド化された独立のワークスペースを提供します。
BlitzLISは誰が作ったのですか?
Altaceeが最初から最後まで設計・構築しました。FastAPIバックエンド、行レベルセキュリティを備えた PostgreSQL のデータモデル、検索、AIオーサリングのパイプライン、Next.js ウェブアプリ、デプロイまでです。
BlitzLISはどうやってテナントを分離しているのですか?
データベースで分離しています。リクエストごとにトランザクションにテナントを設定し、全テナントテーブルの PostgreSQL 行レベルセキュリティポリシーが他テナントの行を拒否するため、APIにバグがあっても他社のデータは漏れません。
BlitzLISでAIを使ってコースを作れますか?
はい。作成者が企画書を書き、必要なら自社の文書をアップロードすると、ジェネレーターがアウトラインとレッスンを下書きします。AIによる変更はすべて下書きとして届き、学習者の目に触れる前に人のレビューを経ます。
BlitzLISはどのeラーニング標準に対応していますか?
SCORM 1.2とSCORM 2004のインポート/エクスポート、およびcmi5とAICCのインポートに対応しています。
学習者はどうやってサインインしますか?
Argon2idでハッシュ化したパスワード、またはGoogle、Microsoft、Okta、SAMLによるシングルサインオンでサインインします。TOTPアプリやWebAuthnキーによる2要素認証も任意で使えます。
BlitzLISは何で作られていますか?
FastAPIと非同期ワーカー、pgvector を備えた PostgreSQL 16、Meilisearch、Redis、そして Next.js のウェブアプリです。
01

> リリースまでの道のり

// 課題01

Blitzlearningに必要だったことは?

AIネイティブのLMSは、互いに何一つ共有しない教育機関に売る必要がありました。あるテナントが別テナントの受講者を目にした時点で契約は終わり、それでいて誰もページ送りしたくない講座ライブラリを瞬時に感じさせなければなりません。

// アプローチ02

AltaceeはBlitzlearningをどう構築したか?

分離はアプリケーションコードではなくデータベースに置きました。テナント単位の行レベルセキュリティを備えたPostgres 16、その隣で意味検索を担うpgvector、キーワード速度のためのMeilisearch、非同期FastAPIの背後で教材を取り込むarqワーカー。

// 成果03

Blitzlearningは何を得たか?

テナントは同じデータベースを共有しながら、APIが誤っても他社の行には到達できません。教材はアップロードが終わった瞬間から、語句でも意図でも検索できます。

case --info blitzlearning
> クライアント · Blitzlearning
> 業種 · EdTech
> 技術スタック · FastAPI · PostgreSQL · pgvector · Meilisearch · Redis
> 結果 · マルチテナント · RLS強制 · 稼働中
> case/blitzlearningリリース済み ▮

同じようなシステムをお考えですか。

何をつくりたいかをお聞かせください。営業トークではなく、範囲を定めた計画をお返しします。