SDKの初期化とデータ保存(key-value)
1. メソッド
init(SDKの初期化)
⚠️ SDKで提供されるすべての機能は、initメソッドを通じて初期化が完了した後に使用できます。この関数の実行が完了した後にSDK機能を使用してください。
バニラJSの例
<script defer>
document.addEventListener('DOMContentLoaded', function () {
// EliceCDK SDKの初期化
var cdk = new EliceCDK();
var rootEl = document.getElementById('root') || document.body;
cdk
.init()
.then(function () {
// SDK初期化完了
renderApp();
})
.catch(function () {
// SDK初期化失敗
console.error('SDK初期化失敗');
});
function renderApp() {
// Appコンポーネント内容
var appContent = '<div>Hello, world!';
// root要素にAppコンポーネント内容を追加
rootEl.innerHTML = appContent;
}
});
</script>
Reactの例
// main.tsx
import { EliceCDK } from '@eliceio/cdk';
const cdk = new EliceCDK();
const rootEl = document.getElementById('root') ?? document.body;
const root = createRoot(rootEl);
cdk
.init()
.then(() => {
// SDK初期化完了
return root.render(
<React.StrictMode>
<App />
</React.StrictMode>
);
})
.catch(() => {
// SDK初期化失敗
});
インストールされたSDKで提供される init() 関数を使用してSDKを初期化します。
-
この関数は基本的に
window.location.searchを通じてURLに含まれるクエリストリングを解析し、Eliceプラットフォームと連携するための情報であるmaterialId、extTokenを抽出します。// src/constants.tsimport { EliceCDK } from '@eliceio/cdk';export const cdk = new EliceCDK();cdk.init(); // クエリストリングから抽出して初期化します。 -
window.location.searchから連携情報を提供することが難しい場合は、
init()関数にsearch引数を通じて直接情報を提供できます。cdk.init({search: queryString.stringify({materialId: 100,extToken: '...',}),}); -
baseUrlは基本的にEliceプラットフォームのproduction環境に設定されています。テスト環境で使用する場合はbaseUrlを引数として設定してください。
cdk.init({baseUrl: 'https://dev-v4-external-contents-api.dev.elicer.io',});
sendScore(Eliceプラットフォームへスコアを送信)
コンテンツがユーザーによってすべて完了した時、スコアをEliceプラットフォームに送信するように構成します。
-
コンテンツが完了する時点で、
@eliceio/cdkが提供するsendScore()関数を呼び出します。関数にはscoreという引数が必要で、通常はコンテンツを完了した際には100を送信するようにします。import { cdk } from './path/to/cdk';cdk.sendScore({ score: 100 }); // 100点をEliceプラットフォームに送信 -
上記の説明のようにコンテンツをElice授業資料として設定している場合、授業資料のスコアが図のように100点になるか確認します。
postKeyValue(Eliceプラットフォームに実習変更内容を保存)
学生のコンテンツ変更内容をEliceプラットフォームに保存するには、@eliceio/cdk が提供する postKeyValue() 関数を使用します。この関数は key と value を保存する役割を果たします。
import { cdk } from './path/to/cdk';
await cdk.postKeyValue({
key: 'quiz01.answer', // keyは常にcamelCaseで記述されなければならず、
// 英字及び数字のみで記述する必要があります。 (`[a-zA-Z0-9]+]`)
value: '엘리스', // valueの可能なタイプはstring, number, boolean, object, arrayであり、
// objectのkeyは常にcamelCaseで記述される必要があります。
});
⚠️ 実習変更内容は各ユーザー及び授業資料ごとに別々に保存され、他ユーザーや授業資料には影響を与えません。
⚠️ key及びvalueの記述規則
- keyは常にcamelCaseで記述されなければならず、英字及び数字のみで記述する必要があります。 (
[a-zA-Z0-9]+])- valueの可能なタイプは string, number, boolean, object, array であり、objectの keyは常にcamelCase で記述される必要があります。
getKeyValue(Eliceプラットフォームに実習変更内容を取得)
学生のコンテンツ変更内容を呼び出す時には、@eliceio/cdk が提供する getKeyValue() 関数を使用します。この関数は key に該当する value を呼び出します。
import { cdk } from './path/to/cdk';
const value = await cdk.getKeyValue({
key: 'quiz01.answer',
});
console.log(value); // "엘리스"
// または次のようにキーの一部のみ入力してそのキーのサブキーをすべて取得できます。
// 区切り文字は常に '.'(ドット)で記述しなければなりません。
const value = await getKeyValue({
key: 'quiz01',
});
console.log(value); // { answer: "엘리스" }
delete(key-value削除)
このメソッドはKey-Valueストレージからキー-値ペアを削除するために使用されます。
パラメーター
| 名前 | タイプ | 説明 |
|---|---|---|
key | string | kvstoreから削除するデータの固有なキーを意味します。 |
JavaScriptの例
import { cdk } from './path/to/cdk';
const deleteButton = document.createElement('button');
const handleDelete = async () => {
await cdk.kvstore.delete('quiz01.answer');
const value = await cdk.kvstore.get('quiz01.answer');
console.log(value); // null
};
deleteButton.addEventListener('click', handleDelete);
deleteButton.click();
Reactの例
import { cdk } from './path/to/cdk';
import { useState } from 'react';
const App = () => {
const [value, setValue] = useState(null);
const handleDelete = async () => {
await cdk.kvstore.delete('quiz01.answer');
const value = await cdk.kvstore.get('quiz01.answer');
setValue(value);
};
return (
<div>
<button onClick={handleDelete}>Delete</button>
{value === null ? 'Deleted' : value}
);
};
2. プロパティ
account (アカウント情報)
⚠️
account.accountIdプロパティはバージョン v1.0.0 から非推奨となります。代わりにaccount.uidを使用してください。
以下は、Elice プラットフォームにログインしたアカウントの情報を取得するためのプロパティです。アカウント情報には以下のプロパティが含まれます:
| 名前 | 型 | 説明 |
|---|---|---|
uid | number | アカウントの一意の識別子です。 |
fullname | string | アカウント所有者の名前です。 |
isTutorAccount | boolean | アカウントがチューターアカウントかどうかを示します。 |
import { cdk } from './path/to/cdk';
console.log(cdk.account); // { accountId: '550e8400-e29b-41d4-a716-446655440000', fullname: 'elice', uid: 123 }
metadata (学習資料メタデータ)
Elice プラットフォームに登録されている学習資料のメタデータを取得できます。この情報は metadata プロパティを介して取得でき、materialId(資料 ID)が含まれます。
import { cdk } from './path/to/cdk';
console.log(cdk.metadata); // { materialId: 456 }
isTutoringMode (チュータリングモード)
⚠️
isTutoringModeプロパティはバージョン v1.0.0 から非推奨となります。代わりにcdk.tutoring.isEnabledを使用してください。
isTutoringMode プロパティは、現在のユーザーがチュータリングモードであるかどうかを確認するために使用されます。ユーザーがチュータリングモードの場合は値が true になり、それ以外の場合は false を返します。チュータリングモードは、Elice プラットフォームを介してチューターが他の学生の外部コンテンツにアクセスする場合にのみ有効になります。
import { cdk } from './path/to/cdk';
console.log(cdk.isTutoringMode); // false または true
locale (ロケール)
locale は現在のユーザーの設定言語を示し、型は文字列です。IETF 言語サブタグ形式に従い、デフォルト言語は en です。現在、Elice プラットフォームがサポートしている言語は以下の通りです。
| 言語 | コード |
|---|---|
| 韓国語 | ko |
| 英語 | en |
| 日本語 | ja |
| タイ語 | th |