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

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
  • 3.
  • 4.
    LT293(at 東京家政大2013) ユーザ視点から見た 種々の評定インポート方法 Grade ImportTechniques 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
  • 32.
  • 33.
    拝啓 サイト管理者様 •  有効化してあげてください   •  enablewebservices   •  capability  与えてあげてください   •  moodle/webservice:userest   •  moodle/webservice:createtoken   33