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
Top Related