SlideShare a Scribd company logo
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	
Useridcmid	
 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

More Related Content

PDF
Storytelling For The Web: Integrate Storytelling in your Design Process
PDF
2024 Trend Updates: What Really Works In SEO & Content Marketing
PDF
Maple T.A.10の作問方法 Best Practice to Author Maple T.A. 10 Questions with the Qu...
PDF
非参照テスト用ブラウザと数値ランダム化問題を利用した数学科目の授業デザイン
PDF
Moodleでの匿名の非同期協調学習 Anonymous Asynchronous CSCL on Moodle
PDF
大学の確率・統計教育における LMS と数学オンラインテストの利用
PDF
数式自動採点eラーニングコンテンツの問題フォーマット変換ツールの開発 Automatic Conversion of Question Formats f...
PDF
メッセージングサービスLINE@によるプッシュ型授業情報提供の効果 Push type learning information distributio...
Storytelling For The Web: Integrate Storytelling in your Design Process
2024 Trend Updates: What Really Works In SEO & Content Marketing
Maple T.A.10の作問方法 Best Practice to Author Maple T.A. 10 Questions with the Qu...
非参照テスト用ブラウザと数値ランダム化問題を利用した数学科目の授業デザイン
Moodleでの匿名の非同期協調学習 Anonymous Asynchronous CSCL on Moodle
大学の確率・統計教育における LMS と数学オンラインテストの利用
数式自動採点eラーニングコンテンツの問題フォーマット変換ツールの開発 Automatic Conversion of Question Formats f...
メッセージングサービスLINE@によるプッシュ型授業情報提供の効果 Push type learning information distributio...
Ad

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

  • 1. ID388  (Booklet  p.27)   Moodle  Web  Service  を用いた   バルク評定インポート   Bulk  Grade  Import     with  Moodle  Web  Service 樋口三郎(龍谷大学理工学部)   Saburo  Higuchi  (Ryukoku  University)   hHp://hig3.net
  • 2. どんな発表? •  他のシステム内の学習履歴(評点+フィードバック)   –  他のLMS   –  Excel  成績表   •  やりたいこと   –  Moodle  オフライン課題や Gradebook  に自動的に集約   •  やりたくないこと   –  Moodle  プラグイン開発   –  Moodle  ソース改変   •  Moodle  2.8.3+   •  Moodle  Web  Service  とは   –  HTTP  でMoodleに機能実行を指令,  データ転送する機能   20150222  MoodleMoot  Japan バルク評定インポート 2
  • 4. LT293(at 東京家政大2013) ユーザ視点から見た 種々の評定インポート方法 Grade Import Techniques for Moodle 2.4 樋口三郎(龍谷大学) http://hig3.net Saburo Higuchi (Ryukoku University) 龍谷大学
  • 5. 比較 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
  • 6. どんな報告者? •  龍谷大学 理工学部 数理情報学科  (教員)   –  全学の仕様策定・運用側ではない   •  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
  • 7. •  Introduc^on   •  Demonstra^on   •  Moodle  Web  Servicre  とは   •  実装   •  比較と考察 20150222  MoodleMoot  Japan バルク評定インポート 7
  • 8. Demo 20150222  MoodleMoot  Japan バルク評定インポート 8 Web  Service   Client プラウザ •  サイト管理者がWeb  Service  有効化   •  コース教員がtoken生成 •  Moodleの`token’を預ける •  目的に応じてプログラム   HTTP hHps://gist.github.com/hig3/
  • 9. クライアントから  /  バッチ処理も可能 20150222  MoodleMoot  Japan バルク評定インポート 9 •  管理者がWeb  Service  有効化   •  評定を管理できるコースの教員 wget,  curl  を用いたscript
  • 10. Moodle Web Serviceとは 20150222  MoodleMoot  Japan バルク評定インポート 10
  • 11. 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
  • 12. Web  Service  (External) •  1個のWeb  Service  は,  次で定義される   –  Web  Service  が使用できるWeb  Service  関数群=機能   •  必要な  capability  群が定まる   –  Web  Service  を使用できるユーザ群   •  全員の使用を許す選択肢もあり   •  Userid  による制限   •  ユーザが持つべき  capability  による制限   •  Capabiilty:  Moodle  において,  ユーザが特定の機能を実行 できる権限 20150222  MoodleMoot  Japan バルク評定インポート 12
  • 13. 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
  • 14. 20150222  MoodleMoot  Japan バルク評定インポート 14
  • 15. 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
  • 16. 評定関係の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
  • 17. Web  Service  を使用するユーザ •  Web  service  経由で指令を出す  capability   –  webservice/rest:use   •  Web  service  で評定を実行する  capability   –  評点を操作する関数を使うには 教員  role  くらい必要   •  評定インポートの場合,  次のいずれかが適切?   –  「WSユーザ」role  を作り,  コース教員に付与する   –  教員roleを修正   •  Role:  管理者,  教員,  編集権限のない教員,  学生,  … 20150222  MoodleMoot  Japan バルク評定インポート 17
  • 18. 実装 20150222  MoodleMoot  Japan バルク評定インポート 18
  • 19. Moodle側設定手順   (要サイト管理者権限) •  hHps://docs.moodle.org/28/en/ Using_web_services   – Web  Service機能を有効化   – Web  Serviceを定義   – 教員ユーザに必要な  capability  を与える   – 教員ユーザにセキュリティキー(token)を与える 20150222  MoodleMoot  Japan バルク評定インポート 19
  • 20. 20150222  MoodleMoot  Japan バルク評定インポート 20
  • 21. Security  key  or  tokenによる認証 •   (Web  Service,  ユーザ)  の有効な組を指定す るパスワードのようなもの   •  生成   – サイト管理者が生成   – capability  moodle/webservice:createtoken  を有す るユーザ自身が生成   •  IP,  期間による制限   •  RESTの場合,  これをURLパラメタとして渡す 20150222  MoodleMoot  Japan バルク評定インポート 21
  • 22. 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
  • 23. 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 Useridcmid 1 2 3 3 80 4 12 4 99 5 11 17 20 3 10 •  Core_grade_update_grades    
  • 24. POST  URL hHp://moodleserver.org/webservice/rest/server.php   ?wstoken=xxxxxxxxxxxxxxxxxxxxxxxxxxx   &wsfunc^on=mod_assign_save_grades   &moodlewsrespormat=json     20150222  MoodleMoot  Japan バルク評定インポート 24
  • 25. 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
  • 26. 比較と考察 20150222  MoodleMoot  Japan バルク評定インポート 26
  • 27. 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
  • 28. Web  Service  (対  Moodle  カスタマイズ) •  長所   – 既存のWebアプリの機能追加として実装容易   – Moodle  側ではサイト管理者に一度だけ機能有 効化してもらえばよい   – Moodle  側のカスタマイズ不要.  バージョンアップ の際にAPIが保たれる可能性が高い   •  短所   – Web  Service  関数として提供される機能はごく一 部   20150222  MoodleMoot  Japan バルク評定インポート 28
  • 29. 比較 課題オフラ イン評定 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
  • 30. 野望1:携帯出席データの集約 20150222  MoodleMoot  Japan バルク評定インポート 30 Web  Service   Client スマートフォン   フィーチャーフォン •  全学Moodle   •  サイト管理者に  Web  Service  を有効 化してもらう必要   •  コース教員がtoken生成する必要 •  携帯出席サーバ   HTTP cron
  • 31. 野望2:クリッカー投票結果の   リフレクション 20150222  MoodleMoot  Japan バルク評定インポート 31 Web  Service   Client •  サイト管理者がWeb  Service  有効化   •  コース教員がtoken生成 •  変換サーバ   HTTP Upload   Excel   Worksheets
  • 33. 拝啓 サイト管理者様 •  有効化してあげてください   •  enablewebservices   •  capability  与えてあげてください   •  moodle/webservice:userest   •  moodle/webservice:createtoken   33