Moodle Web Service を用いたバルク評定インポート (Bulk Grade Import with Moodle Web...
-
Upload
hig3 -
Category
Technology
-
view
318 -
download
9
Transcript of Moodle Web Service を用いたバルク評定インポート (Bulk Grade Import with Moodle Web...
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