WebAPIの利用手順書

概要

このドキュメントは、WebClass の WebAPI の利用手順について記載します。
WebClassで利用できるWebAPIの詳細ついては以下のドキュメントをご覧ください。

WebClass APIドキュメント

WebAPI の有効化


WebAPI を利用するには、事前に WebClass に ClientIDトークン取得用認証キー を設定する必要があります。この設定はサポートが行いますので、ClientID を指定してください。

  • ClientID は、API を利用するシステムを識別するためのものです。
  • URL または英数字の文字列を使用します。

    : https://some.existing.service/

サポートが認証キーを生成し、ClientID と一緒に登録します。登録後、認証キーを通知します。

トークンの取得


ClientIDトークン取得用認証キー を使用してアクセストークンを取得します。

Form形式の場合

curl -X POST https://your.webclass.site/webclass/api.php/auth/token \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "client_id=YOUR-CLIENT-ID&key=YOUR-SECRET-KEY"

JSON形式の場合 (WebClass v12 以降)

curl -X POST https://your.webclass.site/webclass/api.php/auth/token \
  -H "Content-Type: application/json" \
  -d '{"client_id":"YOUR-CLIENT-ID", "key":"YOUR-SECRET-KEY"}'

レスポンス例

{
  "result": "OK",
  "token": "xxxxxxxxxx"
}

API の利用


取得したトークンを Bearer ヘッダー に設定して API を呼び出します。

教材の成績データ取得API の例

:contents_id はデータを取り出す教材 ID に置き換えます。

curl -X GET https://your.webclass.site/webclass/api.php/rest/contents/:contents_id/scores \
  -H "Authorization: Bearer xxxxxxxx"

利用例


WebAPIの利用例として、ユーザ登録APIとコースユーザ登録APIの利用方法を紹介します。

ユーザ登録


ユーザ登録 API を利用して、新しいユーザを登録します。

  • メソッド: POST
  • Content-Type: application/json

ユーザ登録 API エンドポイント

https://サーバホスト/webclass/api.php/rest/user

送信データ例

{
  "user_id": "id000001",
  "fullname": "鈴木 先生",
  "email": "suzukisensei@example.com",
  "perm": "1",
  "student_id": "2022000001",
  "login_id": "extid000001"
}

返却データ例

{
  "result": "Registration successful. user_id <id000001> added."
}

コースユーザ登録


コースユーザ登録 API を利用して、コースにユーザを登録します。

  • メソッド: POST
  • Content-Type: application/json

コースユーザ登録 API エンドポイント

https://サーバホスト/webclass/api.php/rest/course/APITestCourse/member

送信データ例

{
  "user_id": "id000001",
  "course_perm": "0"
}

返却データ例

{
  "result": "Registration successful. user_id <id000001> added."
}

修学カルテの新機能をご紹介します (WebClass v11.14.1)

WebClass v11.14.1 がリリースされます。修学カルテに追加される新機能について、用例とともにご紹介します。

ルーブリックに初期値を設定できるようになった

ルーブリックの各行に対して、初期値を設定できるようになりました。以下のように、<dimension>タグにdefault属性を設定します。

<field_template id="cook" type="rubric" title="調理実践" >
  <rubric>
    <rubric_header>
      <level value="0"/>
      <level value="1"/>
      <level value="2"/>
      <level value="3"/>
      <level value="4"/>
    </rubric_header>
    <dimension
        id="cut"
        title="切る"
        description="切り方の習熟度合を評価します"
        default="2">
      <option level="0">まったくできなかった</option>
      <option level="1">あまりできなかった</option>
      <option level="2">ふつう</option>
      <option level="3">少しできた</option>
      <option level="4">よくできた</option>
    </dimension>
  </rubric>
</field_template>

<mark-complete>タグに親子関係を設定して、複数カードの「済」と「未」のステータスを一度に変更できるようになった

<mark-complete>は、カード上部に完了ボタンを設置する機能です。

<static_card id="grade1" title="1年次" edit-protect-target="false">
     <mark-complete id="complete" title="全課程修了" complete-target="self" edit-auth="self"></mark-complete>
     <field id="cook" ref="cook"></field>
</static_card>

完了ボタンをクリックすると、完了状態に切り替わります。

アドバイザーからは、どの学生が完了状態になっているかが一覧で確認できます。

今回の機能追加で、<mark-complete>下に<child>を設定することで、一つの完了ボタンを押すと、同時に他のカードの完了ボタンも一括でステータスが変わるようになりました。

記述式の入力欄でform_type=texareaのとき、初期の行数の高さを設定できるようになった

テキスト入力欄の行数(高さ)を、rows属性で設定できます。

<field_template
  id="summarize"
  type="text"
  form_type="textarea"
  title="総括"
  edit-auth="self"
  rows="20" ></field_template>

修学カルテの新機能について (WebClass v11.14.0)

WebClass v11.14.0 がリリースされます。この記事では、修学カルテに追加された機能について解説します。

積み上げ棒グラフ

修学カルテでは、入力状況をグラフで可視化できます。このリリースで、積み上げ棒グラフでの可視化に対応しました。

上のイメージは、学生が1年次から4年次までに受けた試験の合計点を可視化するグラフです。問題の分野別に点数を積み上げています。

積み上げ棒グラフを表示するためには、カルテXMLで<stacked-bar-graph>を指定します。詳しい説明はマニュアルをご覧ください。また、手元の環境ですぐに試してみたい方は、以下のXMLをダウンロードして登録してみてください。

積み上げ棒グラフ.xml

グラフをカード内に表示できるようになりました

これまで各種グラフはSummaryタブ内でのみ表示可能でしたが、カード内でも表示できるようになりました(今回対応しているカードは<static_card>のみです)。

グラフをカード内で表示するためには、これまで<summary>内で指定していた<rubric-chart>などを<static_card>直下に記述するだけです。

使用例は次の変更でまとめて紹介します。

入力フィールドの入力値を、別の場所に表示する

入力フィールドの入力値を、別の場所に表示できるようになりました。たとえば年度ごとに振り返りをするカルテで、 今年度の目標を入力する画面に、参考として前年度の振り返りを表示するような使い方ができます。

この画面の上半分は、前年度の振り返り時に入力した内容が表示されています。また、前年度の入力内容をレーダーチャートで可視化しています。これらを参照しながら、下半分で今年度の振り返りを入力していきます。

別の場所の入力フィールドを参照して表示するには、<copy-field>を使用します。詳しくはマニュアルを参照してください。

これらの機能を試してみたい方は、以下のXMLを使用してみてください。

入力フィールドの入力値を別の場所に表示する.xml

タブ、入力項目のラベルなどの色を変更できるようになった

以下のイメージでは、タブや入力項目のラベルの色を変更しています。年次や日などの入力タイミングの違いを分かりやすくするために、色の差で表現している例です。

設定例は以下のXMLを参照してください。

色変更.xml

AsciiDoc と Antora でマニュアルサイトを構築しました

弊社 LMS WebClass には、学生の学習履歴を可視化する「学習記録ビューア」という機能があります。学習記録ビューアを使い始めるために必要な権限設定、プラグインによる機能拡張もあり、ユーザーの方に使っていただくためにはドキュメントの充実が必須です。学習記録ビューア専用のマニュアルサイトを以前から公開していたのですが、先日プチリニューアル(内部的にはなかなか大きな更新)しました。その際、サイト構築にドキュメントサイトジェネレータ Antora を使用することになりました。Antora 使用事例として興味を持つ人もいるかなと思い、構築プロセスを公開します。

今回リニューアルしたマニュアルサイトはこちらです。

Antora とは

  • Antora は、AsciiDoc からドキュメントサイトを生成するツール
  • デモサイト
  • Antora のドキュメントサイト 自体も Antora で生成されている
  • 複数のリポジトリにコミットされている AsciiDoc から一つのサイトを生成できる
  • Git ブランチやタグからドキュメントの「バージョン」を規定できる
    • 例えば “v1”, “v2” のようなタグまたはブランチを作り、バージョン毎にドキュメントを管理する
    • サイトにアクセスした人は見たいバージョンを切り替えることができるようになる

リニューアル前の状況

  • マニュアル本文は全て AsciiDoc で書いている
    • 1 ページ 1 adoc ファイル
  • サイトの外殻は Pug で書いていた。Pug を HTML に変換する際、AsciiDoc を Asciidoctor (Asciidoctor.js) で HTML に変換し埋め込んでいた
  • Asciidoctor PDF を使って、AsciiDoc を PDF に変換し、サイトからダウンロードできるようにしている
  • 社内でセルフホストしている GitLab でバージョン管理

課題

  • マニュアル本文は AsciiDoc を編集するので楽だが、ナビゲーションメニューを更新するために Pug を編集する必要があり、面倒くささは拭いきれなかった
    • ドキュメントの充実のためには更新のしやすさは必須
  • 検索機能がなかった
  • 目次がページのタイトル下に表示されるが、下にスクロールすると見えなくなるので、文の多いページだと全体が俯瞰しづらかった

リニューアル後

構成

  • マニュアルリポジトリには、複数ある製品のマニュアル AsciiDoc ファイルが全て登録されている
  • マニュアルサイトリポジトリには、antora-playbook.yml という設定ファイルが登録されている
    • antora-playbook.yml に AsciiDoc が登録されているリポジトリやバージョン情報を記述することで、Antora のコマンド一発でサイトが生成できるようになる
  • CI/CD
    1. マニュアルリポジトリで AsciiDoc ファイルを変更しコミットする
    2. GitLab CI の Multi-project pipelines によりマニュアルサイトリポジトリのパイプラインが起動
    3. マニュアルサイトリポジトリのパイプライン内でサイト生成ジョブ実行
    4. サイト生成完了後、Manual Job でデプロイ可能となる

リニューアル前の課題は解決したか

  • ナビゲーションメニュー等の高頻度で更新される部分は全て、 Antora の設定ファイル及び AsciiDoc を編集することで変更できるため、マニュアル更新が楽になった
  • 検索機能を簡単に付けることができた
    • 実装の詳細は後述
  • ページをスクロールしても常に目次が表示されるようになった

多言語化

こちらを参考に、バージョン切り替えの仕組みを使って言語切り替えを実現しました。

antora-playbook.yml:

content:
  sources:
  - url: https://git.lan.datapacific.co.jp/webclass/manual-integrated-portfolio.git
    start_paths:
      - integrated-portfolio/admin/ja
      - integrated-portfolio/admin/en

この方法だと、逆に通常のバージョン切り替えができなくなります。言語毎に別サイトを生成してもよかったかもしれません。

検索機能

  • Antora Lunr Extension を使っている
  • Antora コマンドによるサイト生成時に検索用インデックスも生成される
    • サイト表示後はオフライン検索できる

antora-playbook.yml:

antora:
  extensions:
    - require: '@antora/lunr-extension'
      languages: [ja]

まとめ

マニュアルサイトに必要な機能は全て揃い、マニュアル更新のハードルはかなり下がりました。これから一番大切なコンテンツ改善を進めていきます。

課題実施状況一覧が確認できるようになります

WebClassの v11.12.1 で、学習記録ビューア コース活動状況画面から「課題実施状況一覧」が確認できるようになります。

score_summary_3.png

「課題実施状況一覧」にアクセスするには、ログイン後の画面で「コース活動状況」をクリックします。

score_summary_1.png

この画面で「課題実施状況一覧」をクリックします。

score_summary_2.png

教員がアクセスしたときは、以下のように、担当するコースでの全学生の課題実施状況が表示されます。学生のテストの得点なども確認できます。

score_summary_3.png

学生がアクセスしたときは、所属しているコースでの課題の締切、実施日、成績が表示されます。試験など成績非公開の教材は表示されません。

score_summary_4.png

v11.12.1 は3月2日にリリースされます。みなさんぜひ使ってみてください。