ルーブリックの基準別加重得点と評価を計算
このルーブリック加重得点計算ツールは、各評価基準の百分率得点を、ルーブリックで定めた重みに従って集計します。得点と重みが有効かを確認し、重みの合計が100%でなければ計算を行わず、加重合計と一般的なAからFまでの評価を返します。各基準が最終結果に与えた寄与も表示されるため、計算の監査、学習者への説明、成績処理への組み込みに利用でき、表計算ソフトの数式に頼る必要がありません。
無料で実行
基準ごとの得点と重みを準備します
ルーブリックの各評価基準について、1件ずつレコードを入力してください。各レコードには、分かりやすい名称、0から100までの百分率得点、0から100までの百分率による重みが必要です。たとえば「調査」の得点が92で、課題全体の30%を占める場合は、得点に92、重みに30を指定します。素点で評価している基準は、送信前に百分率へ換算してください。20点満点中18点であれば、得点は90です。成績には影響させず、講評のためだけに残す基準がある場合は、重みを0としてルーブリックの行を維持できます。結果には基準名、元の値、加重後の寄与が並ぶため、具体的で一貫した名称を使うと後日の確認が容易になります。最大100基準まで処理できます。空の名称、数値でない値、無限大、許容範囲外の数値は、作成者の意図を推測せずにエラーとして扱います。
加重計算の仕組みを確認します
各基準について、百分率得点に百分率の重みを掛け、100で割ります。したがって、重みが25%の基準で得点が80なら、最終結果への寄与は20点です。すべての寄与を合計して総合得点を求めます。結果を返す前に、入力された重みの合計が100%であることを検証します。この確認は重要です。基準が欠けていても一見もっともらしい数値が出ることがあり、本来の成績を過小または過大に評価するおそれがあるためです。コンピューター内部の小数表現によるごく小さな誤差は許容しますが、実際に合計が不足または超過している場合は入力エラーになります。重みを自動的に再配分することはありません。各寄与と総合得点は小数第2位までに丸めます。固定の評価尺度は、90以上をA、80以上をB、70以上をC、60以上をD、60未満をFとします。ご利用の教育機関の規程と一致するか、あらかじめ確認してください。
結果を活用し、内容を確認します
応答には、総合得点、文字評価、確認済みの重み合計、各基準の加重寄与を含む順序付き一覧が含まれます。この内訳は、最終評価を記録する以外にも役立ちます。教員は各観点が結果へ及ぼした影響を示すことができ、学習管理システムは元の評価と一緒に計算結果を保存でき、確認担当者は表計算の数式を組み直さずに合計を再現できます。アルゴリズムは決定的でネットワークサービスを使用しないため、同じ有効な入力からはブラウザーでもAPIでも常に同じJSON結果が得られます。文字評価は、明示されたA–Fの境界に基づく補助情報として扱い、教育機関の評価規程の代わりにはしないでください。プラスやマイナス、合否判定、相対評価、除外基準、特別な丸め規則を使う場合は、別途適用する必要があります。重みに誤りがあるときは、得点を変えて合計を100に合わせるのではなく、ルーブリックの定義を直すか、不足している基準を追加してください。
活用例
課題の最終評価を確定する
承認済みのルーブリックに従い、調査、分析、正確性、発表の得点を集計し、寄与の内訳を保存します。
学習管理の処理を検証する
不正なルーブリックデータを、加重得点が成績簿や学習者記録へ書き込まれる前に拒否します。
評価判断の根拠を説明する
各基準が最終百分率と文字評価へどのように寄与したかを、学習者や確認担当者に明確に示します。
よくある質問
1回の利用料金はいくらですか?
APIリクエスト1回につき$0.002です。ティアAではブラウザー上でも実行できます。
重みの合計が100%でない場合はどうなりますか?
無効な入力としてエラーを返します。不足または超過した重みを自動的に正規化することはありません。
どの文字評価尺度を使用しますか?
90以上はA、80以上はB、70以上はC、60以上はD、60未満はFです。
百分率ではなく素点を入力できますか?
直接は入力できません。送信前に、各基準の獲得点を満点に対する百分率へ換算してください。
重みが0の基準も使えますか?
はい。内訳には表示されますが、総合得点への寄与は0点になります。
丸めはどのように行われますか?
表示される各加重寄与と最終得点を小数第2位までに丸め、丸め後の最終得点から文字評価を決定します。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/edu/rubric-score-aggregate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"criteria":[{"name":"Research","score":92,"weight":30},{"name":"Analysis","score":84,"weight":45},{"name":"Presentation","score":96,"weight":25}]}'const res = await fetch("https://api.kit.forhosting.com/edu/rubric-score-aggregate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"criteria": [
{
"name": "Research",
"score": 92,
"weight": 30
},
{
"name": "Analysis",
"score": 84,
"weight": 45
},
{
"name": "Presentation",
"score": 96,
"weight": 25
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/edu/rubric-score-aggregate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"criteria": [
{
"name": "Research",
"score": 92,
"weight": 30
},
{
"name": "Analysis",
"score": 84,
"weight": 45
},
{
"name": "Presentation",
"score": 96,
"weight": 25
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/edu/rubric-score-aggregate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"criteria":[{"name":"Research","score":92,"weight":30},{"name":"Analysis","score":84,"weight":45},{"name":"Presentation","score":96,"weight":25}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"criteria":[{"name":"Research","score":92,"weight":30},{"name":"Analysis","score":84,"weight":45},{"name":"Presentation","score":96,"weight":25}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/edu/rubric-score-aggregate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"criteria": [
{
"name": "Research",
"score": 92,
"weight": 30
},
{
"name": "Analysis",
"score": 84,
"weight": 45
},
{
"name": "Presentation",
"score": 96,
"weight": 25
}
]
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "edu.rubric_score_aggregate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |