Moodle Web Service を用いたバルク評定インポート (Bulk Grade Import with Moodle Web...

Preview:

Citation preview

ID388  (Booklet  p.27)  

Moodle  Web  Service  を用いた  バルク評定インポート  Bulk  Grade  Import    

with  Moodle  Web  Service 樋口三郎(龍谷大学理工学部)  

Saburo  Higuchi  (Ryukoku  University)  hHp://hig3.net

どんな発表? •  他のシステム内の学習履歴(評点+フィードバック)  

–  他のLMS  –  Excel  成績表  

•  やりたいこと  –  Moodle  オフライン課題や Gradebook  に自動的に集約  

•  やりたくないこと  –  Moodle  プラグイン開発  –  Moodle  ソース改変  

•  Moodle  2.8.3+  •  Moodle  Web  Service  とは  

–  HTTP  でMoodleに機能実行を指令,  データ転送する機能  

20150222  MoodleMoot  Japan バルク評定インポート 2

評定インポートとは

3

LT293(at 東京家政大2013) ユーザ視点から見た 種々の評定インポート方法 Grade Import Techniques for Moodle 2.4

樋口三郎(龍谷大学) http://hig3.net Saburo Higuchi (Ryukoku University)

龍谷大学

比較

CSV XML Grade Publishing

LTI v1 Web Service

☺ 基本的 柔軟 対話的

非対話的 自動化可能 とりあえず動く

標準化 標準化 なんでもできる(はず)

☹ 自動化不可

識別子固定 危険

受験のたびに1名ずつ

まだ実装がない

認証認可

Moodle User認証, capability

IP + key as URL query parameter

OAuth OAuth

MoodleMoot Japan 2013-03-02 評定インポート(樋口) 5

どんな報告者? •  龍谷大学 理工学部 数理情報学科  (教員)  

–  全学の仕様策定・運用側ではない  •  Moodle歴  

–  全学サーバの教員ユーザ  2006-­‐(1.x-­‐)  –  自前サーバ(2.7)の管理者+教員ユーザ  2012-­‐  –  学内的LMS普及活動  2008,2013,…  –  Mahara  ,  他Webアプリ併用  

•  こんな科目  –  計算科学☆演習II,  確率統計☆演習I,  (1年生向け計算機科学

導入科目),(3年生向けキャリア開発科目),(3,4年生向け卒業研究),(インターンシップ科目),TA向け,  学科学生向け  

•  龍谷大学全学=情報メディアセンターのLMS    –  Moodle  →  Moodle  2.7LTS  +  Manaba  course  (2015)  

20150222  MoodleMoot  Japan バルク評定インポート 6

•  Introduc^on  •  Demonstra^on  •  Moodle  Web  Servicre  とは  •  実装  •  比較と考察

20150222  MoodleMoot  Japan バルク評定インポート 7

Demo

20150222  MoodleMoot  Japan バルク評定インポート 8

Web  Service  Client

プラウザ

•  サイト管理者がWeb  Service  有効化  •  コース教員がtoken生成

•  Moodleの`token’を預ける •  目的に応じてプログラム  

HTTP

hHps://gist.github.com/hig3/

クライアントから  /  バッチ処理も可能

20150222  MoodleMoot  Japan バルク評定インポート 9

•  管理者がWeb  Service  有効化  •  評定を管理できるコースの教員

wget,  curl  を用いたscript

Moodle Web Serviceとは

20150222  MoodleMoot  Japan バルク評定インポート 10

Moodle  Web  Service  in  5  minutes

•  (要サイト管理者権限)  1個のMoodleサーバで  •  Web  Service機能(総称)を有効化  •  複数のWeb  Service  (可算名詞)を定義  – Moodle  Mobile  Web  Service  (Built-­‐in)  – External  Service  1  (Custom)  – External  Service  2  (Custom)  – …

20150222  MoodleMoot  Japan バルク評定インポート 11

Web  Service  (External)

•  1個のWeb  Service  は,  次で定義される  – Web  Service  が使用できるWeb  Service  関数群=機能  

•  必要な  capability  群が定まる  

– Web  Service  を使用できるユーザ群  •  全員の使用を許す選択肢もあり  •  Userid  による制限  •  ユーザが持つべき  capability  による制限  

•  Capabiilty:  Moodle  において,  ユーザが特定の機能を実行できる権限

20150222  MoodleMoot  Japan バルク評定インポート 12

Moodle  Web  Service  関数

•  hHps://tracker.moodle.org/browse/MDL-­‐29934  

•  Administra^on  >  Site  administra^on  >  Plugins  >  Web  Services  >  API  Documenta^on  

20150222  MoodleMoot  Japan バルク評定インポート 13

20150222  MoodleMoot  Japan バルク評定インポート 14

core_calendar_create_calendar_events    core_calendar_delete_calendar_events    core_calendar_get_calendar_events    core_cohort_add_cohort_members    core_cohort_create_cohorts    core_cohort_delete_cohort_members    core_cohort_delete_cohorts    core_cohort_get_cohort_members    core_cohort_get_cohorts    core_cohort_update_cohorts    core_course_create_categories    core_course_create_courses    core_course_delete_categories    core_course_delete_courses    core_course_delete_modules    core_course_duplicate_course    core_course_get_categories    core_course_get_contents    core_course_get_courses    core_course_import_course    core_course_update_categories    core_course_update_courses    core_enrol_get_course_enrolment_methods    core_enrol_get_enrolled_users    core_enrol_get_enrolled_users_with_capability    core_enrol_get_users_courses    core_files_get_files    core_files_upload    core_get_component_strings    core_get_string    core_get_strings    core_grade_get_defini^ons    core_grades_get_grades    core_grades_update_grades    core_grading_get_defini^ons    core_grading_get_gradingform_instances    core_grading_save_defini^ons    core_group_add_group_members    core_group_assign_grouping    core_group_create_groupings    core_group_create_groups    core_group_delete_group_members    core_group_delete_groupings    core_group_delete_groups    core_group_get_course_groupings    core_group_get_course_groups    core_group_get_group_members    core_group_get_groupings    core_group_get_groups    core_group_unassign_grouping    core_group_update_groupings  core_message_block_contacts    core_message_create_contacts    core_message_delete_contacts    core_message_get_contacts    core_message_get_messages    core_message_search_contacts    core_message_send_instant_messages    core_message_unblock_contacts      

core_notes_create_notes    core_notes_delete_notes    core_notes_get_notes    core_notes_update_notes    core_role_assign_roles    core_role_unassign_roles    core_user_add_user_device    core_user_create_users    core_user_delete_users    core_user_get_course_user_profiles    core_user_get_users    core_user_get_users_by_field    core_user_get_users_by_id    core_user_update_users    core_webservice_get_site_info    enrol_manual_enrol_users    enrol_self_get_instance_info    message_airno^fier_are_no^fica^on_preferences_configured    message_airno^fier_is_system_configured    mod_assign_get_assignments    mod_assign_get_grades    mod_assign_get_submissions    mod_assign_get_user_flags    mod_assign_get_user_mappings    mod_assign_lock_submissions    mod_assign_reveal_iden^^es    mod_assign_revert_submissions_to_drah    mod_assign_save_grade    mod_assign_save_grades    mod_assign_save_submission    mod_assign_save_user_extensions    mod_assign_set_user_flags    mod_assign_submit_for_grading    mod_assign_unlock_submissions    mod_forum_get_forum_discussion_posts    mod_forum_get_forum_discussions    mod_forum_get_forum_discussions_paginated    mod_forum_get_forums_by_courses    moodle_course_create_courses    moodle_course_get_courses    moodle_enrol_get_enrolled_users    moodle_enrol_get_users_courses    moodle_enrol_manual_enrol_users    moodle_file_get_files    moodle_file_upload    moodle_group_add_groupmembers    moodle_group_create_groups    moodle_group_delete_groupmembers    moodle_group_delete_groups    moodle_group_get_course_groups    moodle_group_get_groupmembers    moodle_group_get_groups    moodle_message_send_instantmessages    moodle_notes_create_notes    moodle_role_assign    moodle_role_unassign    moodle_user_create_users    moodle_user_delete_users    moodle_user_get_course_par^cipants_by_id    moodle_user_get_users_by_courseid    moodle_user_get_users_by_id    moodle_user_update_users  

20150222  MoodleMoot  Japan バルク評定インポート 15

評定関係のMoodle  Web  Service  関数

•  Gradebook  操作  (すべてのAc^vity,  ItemをGrade可能)  –  core_grades_get_grades    –  core_grades_update_grades  (Assignment  の中では  Final  Grade  だけ変更されたように見える.  Feedback  付加不能)  

•  Assignment  評定操作  –  mod_assign_get_grades    –  mod_assign_save_grade  (GUIと同等のGradingが可能)  –  mod_assign_save_grades  (GUIと同等のGradingが可能)  

•  他のcore  moduleの評定の関数はない  •  自作moduleなら任意のWeb  service関数を実装可能

20150222  MoodleMoot  Japan バルク評定インポート 16

Web  Service  を使用するユーザ

•  Web  service  経由で指令を出す  capability  –  webservice/rest:use  

•  Web  service  で評定を実行する  capability  –  評点を操作する関数を使うには 教員  role  くらい必要  

•  評定インポートの場合,  次のいずれかが適切?  –  「WSユーザ」role  を作り,  コース教員に付与する  –  教員roleを修正  

•  Role:  管理者,  教員,  編集権限のない教員,  学生,  …

20150222  MoodleMoot  Japan バルク評定インポート 17

実装

20150222  MoodleMoot  Japan バルク評定インポート 18

Moodle側設定手順  (要サイト管理者権限)

•  hHps://docs.moodle.org/28/en/Using_web_services  – Web  Service機能を有効化  – Web  Serviceを定義  – 教員ユーザに必要な  capability  を与える  – 教員ユーザにセキュリティキー(token)を与える

20150222  MoodleMoot  Japan バルク評定インポート 19

20150222  MoodleMoot  Japan バルク評定インポート 20

Security  key  or  tokenによる認証

•   (Web  Service,  ユーザ)  の有効な組を指定するパスワードのようなもの  

•  生成  – サイト管理者が生成  – capability  moodle/webservice:createtoken  を有す

るユーザ自身が生成  

•  IP,  期間による制限  •  RESTの場合,  これをURLパラメタとして渡す

20150222  MoodleMoot  Japan バルク評定インポート 21

Web  Service  Client  実装

•  core_grade_xxx_grades  の実装例  – hHps://gist.github.com/jleyva/9687810  by  Juan  Leyva  

•  Web  Service  一般の実装例  – hHps://github.com/moodlehq/sample-­‐ws-­‐clients  –  (Java,  Perl,  JavaScript,  PHP)  ×  (REST,  SOAP,  XML-­‐RPC)  

20150222  MoodleMoot  Japan バルク評定インポート 22

Web  Service  Client  実装方針

•  WSC  独自に教員ユーザを認証  

•  教員ユーザと,  Web  Service  token  (秘匿)を紐付け  

•  WSC学生ユーザはMoodleの userid,  email,  fistname,  lastname  などで一意対応  

•  評定項目は,  …一意に識別できればいい  

•  適切なcapabilityがあれば,  活動を作って評定を記入,  も可能  

•  Mod_assgin_save_grades  –  Assignmen^d=2  

 

20150222  MoodleMoot  Japan バルク評定インポート 23

userid grade feedback

3 80 Well  done

4 99 Excellent

17 20 Resubmission  required

Userid\cmid 1 2 3

3 80 4 12

4 99 5 11

17 20 3 10

•  Core_grade_update_grades  

 

POST  URL

hHp://moodleserver.org/webservice/rest/server.php  ?wstoken=xxxxxxxxxxxxxxxxxxxxxxxxxxx  &wsfunc^on=mod_assign_save_grades  &moodlewsrespormat=json  

 

20150222  MoodleMoot  Japan バルク評定インポート 24

POST  Data  (in  JSON) {'assignmen^d'  :1,  //  課題id    'applytoall'  :1,  //  グループ提出課題の扱い 'grades'  :{  {'userid'  :1,  //  変更したい学生のみ  

   'grade':  99,  //  評点      'aHemptnumber'  :  -­‐1,      'addaHempt'  :  1,      'workflowstate'  :  'released',      'plugindata':{'assignfeedbackcomments_editor':              {'text':'Feedback  Text',  //  フィードバック                  'format':1},                      'files_filemanager':0                      }      },      {'userid':2,  ....},…}  

}

20150222  MoodleMoot  Japan バルク評定インポート 25

比較と考察

20150222  MoodleMoot  Japan バルク評定インポート 26

Web  Service  (対手動インポート)

•  課題(assign)  – オフライン評定ワークシート  – mod_assign_save_grades  Web  Service  関数  

•  評定(Gradebook)  – CSV  Import  – XML  Import  – core_grade_save_grades  Web  Service  関数  

•  Web  Service  を使うと完全な自動化が可能  

20150222  MoodleMoot  Japan バルク評定インポート 27

Web  Service  (対  Moodle  カスタマイズ)

•  長所  – 既存のWebアプリの機能追加として実装容易  – Moodle  側ではサイト管理者に一度だけ機能有

効化してもらえばよい  – Moodle  側のカスタマイズ不要.  バージョンアップ

の際にAPIが保たれる可能性が高い  

•  短所  – Web  Service  関数として提供される機能はごく一

部  

20150222  MoodleMoot  Japan バルク評定インポート 28

比較 課題オフライン評定

CSV  Import XML  Grade  Publishing

LTI  /  LIS Web  Service

☺ 基本的  柔軟  対話的  容易    

基本的  柔軟  対話的  

非対話的  自動化可能  とりあえず動く  

標準化 標準化  クライアント側の自由度高い  

☹ バルクでない.  1活動ずつ.  自動化不可.

自動化不可

識別子固定  危険  

バルクでない.  受験のたびに1名/1活動ずつ

実装・文書化進行中

認証認可

Moodle  User  認証

Moodle  User認証

IP  +  key  as  URL  query  parameter

OAuth IP  +  Key  as  URL  query  parameter

MoodleMoot  Japan  2013-­‐03-­‐02  評定インポート(樋口) 29

野望1:携帯出席データの集約

20150222  MoodleMoot  Japan バルク評定インポート 30

Web  Service  Client

スマートフォン  フィーチャーフォン

•  全学Moodle  •  サイト管理者に  Web  Service  を有効

化してもらう必要  •  コース教員がtoken生成する必要

•  携帯出席サーバ  

HTTP cron

野望2:クリッカー投票結果の  リフレクション

20150222  MoodleMoot  Japan バルク評定インポート 31

Web  Service  Client

•  サイト管理者がWeb  Service  有効化  •  コース教員がtoken生成

•  変換サーバ  

HTTP

Upload  Excel  Worksheets

評定インポートとは

32

拝啓 サイト管理者様

•  有効化してあげてください  •  enablewebservices  

•  capability  与えてあげてください  •  moodle/webservice:userest  •  moodle/webservice:createtoken  

33

Recommended