Top Banner
ID388 (Booklet p.27) Moodle Web Service を用いた バルク評定インポート Bulk Grade Import with Moodle Web Service 樋口三郎(龍谷大学理工学部) Saburo Higuchi (Ryukoku University) hHp://hig3.net
33

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

Jul 16, 2015

Download

Technology

hig3
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Moodle Web Service を用いたバルク評定インポート (Bulk Grade Import with Moodle Web Services)

ID388  (Booklet  p.27)  

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

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

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

Page 2: Moodle Web Service を用いたバルク評定インポート (Bulk Grade Import with Moodle Web Services)

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

–  他のLMS  –  Excel  成績表  

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

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

•  Moodle  2.8.3+  •  Moodle  Web  Service  とは  

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

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

Page 3: Moodle Web Service を用いたバルク評定インポート (Bulk Grade Import with Moodle Web Services)

評定インポートとは

3

Page 4: Moodle Web Service を用いたバルク評定インポート (Bulk Grade Import with Moodle Web Services)

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

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

龍谷大学

Page 5: Moodle Web Service を用いたバルク評定インポート (Bulk Grade Import with Moodle Web Services)

比較

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

Page 6: Moodle Web Service を用いたバルク評定インポート (Bulk Grade Import with Moodle Web Services)

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

–  全学の仕様策定・運用側ではない  •  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

Page 7: Moodle Web Service を用いたバルク評定インポート (Bulk Grade Import with Moodle Web Services)

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

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

Page 8: Moodle Web Service を用いたバルク評定インポート (Bulk Grade Import with Moodle Web Services)

Demo

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

Web  Service  Client

プラウザ

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

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

HTTP

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

Page 9: Moodle Web Service を用いたバルク評定インポート (Bulk Grade Import with Moodle Web Services)

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

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

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

wget,  curl  を用いたscript

Page 10: Moodle Web Service を用いたバルク評定インポート (Bulk Grade Import with Moodle Web Services)

Moodle Web Serviceとは

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

Page 11: Moodle Web Service を用いたバルク評定インポート (Bulk Grade Import with Moodle Web Services)

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

Page 12: Moodle Web Service を用いたバルク評定インポート (Bulk Grade Import with Moodle Web Services)

Web  Service  (External)

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

•  必要な  capability  群が定まる  

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

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

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

Page 13: Moodle Web Service を用いたバルク評定インポート (Bulk Grade Import with Moodle Web Services)

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

Page 14: Moodle Web Service を用いたバルク評定インポート (Bulk Grade Import with Moodle Web Services)

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

Page 15: Moodle Web Service を用いたバルク評定インポート (Bulk Grade Import with Moodle Web Services)

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

Page 16: Moodle Web Service を用いたバルク評定インポート (Bulk Grade Import with Moodle Web Services)

評定関係の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

Page 17: Moodle Web Service を用いたバルク評定インポート (Bulk Grade Import with Moodle Web Services)

Web  Service  を使用するユーザ

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

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

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

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

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

Page 18: Moodle Web Service を用いたバルク評定インポート (Bulk Grade Import with Moodle Web Services)

実装

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

Page 19: Moodle Web Service を用いたバルク評定インポート (Bulk Grade Import with Moodle Web Services)

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

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

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

Page 20: Moodle Web Service を用いたバルク評定インポート (Bulk Grade Import with Moodle Web Services)

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

Page 21: Moodle Web Service を用いたバルク評定インポート (Bulk Grade Import with Moodle Web Services)

Security  key  or  tokenによる認証

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

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

るユーザ自身が生成  

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

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

Page 22: Moodle Web Service を用いたバルク評定インポート (Bulk Grade Import with Moodle Web Services)

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

Page 23: Moodle Web Service を用いたバルク評定インポート (Bulk Grade Import with Moodle Web Services)

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  

 

Page 24: Moodle Web Service を用いたバルク評定インポート (Bulk Grade Import with Moodle Web Services)

POST  URL

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

 

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

Page 25: Moodle Web Service を用いたバルク評定インポート (Bulk Grade Import with Moodle Web Services)

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

Page 26: Moodle Web Service を用いたバルク評定インポート (Bulk Grade Import with Moodle Web Services)

比較と考察

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

Page 27: Moodle Web Service を用いたバルク評定インポート (Bulk Grade Import with Moodle Web Services)

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

Page 28: Moodle Web Service を用いたバルク評定インポート (Bulk Grade Import with Moodle Web Services)

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

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

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

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

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

部  

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

Page 29: Moodle Web Service を用いたバルク評定インポート (Bulk Grade Import with Moodle Web Services)

比較 課題オフライン評定

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

Page 30: Moodle Web Service を用いたバルク評定インポート (Bulk Grade Import with Moodle Web Services)

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

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

Web  Service  Client

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

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

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

•  携帯出席サーバ  

HTTP cron

Page 31: Moodle Web Service を用いたバルク評定インポート (Bulk Grade Import with Moodle Web Services)

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

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

Web  Service  Client

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

•  変換サーバ  

HTTP

Upload  Excel  Worksheets

Page 32: Moodle Web Service を用いたバルク評定インポート (Bulk Grade Import with Moodle Web Services)

評定インポートとは

32

Page 33: Moodle Web Service を用いたバルク評定インポート (Bulk Grade Import with Moodle Web Services)

拝啓 サイト管理者様

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

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

33