# WEBマクロ
## 文責
英語科 添削ツール 出口雄統
## 作成日
2022-09-14
## 目的
本ドキュメントはICEからのWebマクロ・コメント集対応試験種の確認とWebマクロへの答案アップロード, 採点マスタ不備フォーム送信,
期限アラート, 提出期限に基づく背景色の設定を既存のICE拡張に追加したchrome extensions "ice_chromeExtensions_main_eng"開発に関する要件定義書です.
## 概要
### 構成
実装していただきたい機能は以下の通りです.
なお, いくつかの機能については既存の拡張機能で実装済みです.
- Webマクロ対応試験種の確認
採点マスタのマスタデータに基づき, Webマクロで採点可能な試験種をICE上で判別可能にします.
- コメント集対応試験種の確認
コメント集のマスタデータに基づき, コメント集が存在する試験種をICE上で判別可能にします.
->GASで拡張機能側で対応+クリックすると飛べるのがいいのでは?
→表の列を増やすことで対応
- Webマクロへの答案アップロード
ICE→Webマクロへの答案アップロードをICE上からボタン1つで可能にします.
->
- 採点マスタ不備フォーム送信
採点マスタに不備がある場合, ICE上からフォーム送信を可能にします.
- 不備答案フォーム送信
答案由来の不備がある場合, ICE上からフォーム送信を可能にします.
***以下の機能はリーダーmtgで相談してから実装するか決めます***
- 期限アラート
ICEの「添削」画面上に答案の提出期限に関する注意文を表示します.
- 提出期限に基づく背景色の設定
提出期限までの日数に応じて背景色を変更します.
### 用語定義
以下では, 本ドキュメントに登場する用語の定義をします.
- ice_chromeExtensions_main_eng
開発対象となるchrome拡張機能の名前です. 本ドキュメントでは以降, 略して"ICME(イクメ)"と呼称します.
- Webマクロ
ITチームによって2020年度に開発された新たな採点方法「マクロ」を実装したWebアプリです.
化学科を発端として, ローカルのlibreOfficeにpythonマクロを導入していたものが, 物理/ITの参入によって, Webアプリ化し, 参入障壁を下げました.
こちらのドキュメント(https://sites.google.com/view/nagase-web-macro/%E6%8E%A1%E7%82%B9%E7%94%A8%E3%83%9E%E3%83%8B%E3%83%A5%E3%82%A2%E3%83%AB)に使用・ログイン方法が書かれています.
- コメント集
英語科内で添削者に提供している, 生徒解答の類似ミスに対するコメントをまとめたスプレッドシートです.
正式名称は, 「添削コメント集」であり, 出口が統括をつとめる「添削ツール」の管轄です.
こちらに一覧がまとまっております. (https://drive.google.com/drive/u/1/folders/1PbRQN2avVCQQpbjUuoHVcnUSpiYcKTpd)
- 採点マスタのマスタデータ
現在準備中です. 作成の進捗管理を行うスプレッドシートを指します.
- コメント集のマスタデータ
修正中です. コメント集が完成しているかをまとめたスプレッドシートを指します.
概要をkeyとする場合は問題ありませんが, CODE_NUMをkeyとする場合はステータスにずれが生じて問題になります.
(https://docs.google.com/spreadsheets/d/1zXCr7XKRMfnJRZdF-yxWlrV7YQQVhKmr9MrM_U_49eI/edit#gid=1566447967)
- 不備答案フォーム
答案が切れている・文字が薄くて読めない等の答案由来の不備を発見した際に, 添削者が報告するフォームです.
(https://forms.gle/wNmCfLfpm8vF8AH66)
- 採点マスタ不備フォーム
大問の配点が異なる・加点理由に誤字がある等のWebマクロ採点マスタ由来の不備を発見した際に, 添削者が報告するフォームです.
***私大で用いているサンプルであり, 実装は別のフォームを用います***
(https://forms.gle/mKoTKoJiM2h82Bbx7)
- Webマクロへの答案アップロード
Webマクロ採点を行うためには, Webアプリ上でCODE_NUM+生徒番号をファイル名とする答案pdfをサーバーにアップロードする必要があります.
そのHTTP通信をICE上で行うことを指します.
***私大で用いているICE拡張***
(https://drive.google.com/drive/u/1/folders/1EyV0Ghr_6wGjrDMfsqPB2Tws1KItpYZm)
## 業務要件
### 現状のフロー
現状のフローは以下の通りです.
1. 振り分けられた答案をICEからローカルにDLし, Webマクロ(Webアプリ)にログインする
2. 答案由来の不備を発見した場合は, 不備答案フォームを別タブで開いて, 手動で入力を行い, 送信する
3. 答案自体に不備がなく添削可能な場合は, Webマクロ上でICEからDLした答案をULする
4. Webマクロ未対応の試験種の場合は, 「採点マスタが完成していません。」などのアラートが出るのでデジタル採点を行う
5. Webマクロ対応試験種で, かつマクロ添削時に配点情報など, 採点マスタ由来の不備を発見した場合は,
採点マスタ不備フォームを別タブで開いて, 手動で入力を行い, 送信する
6. Webマクロ対応試験種で, かつ採点マスタに不備がなく添削を終えた場合は, ICEへ採点済み答案をドラッグアンドドロップで提出
### 開発後のフロー
ICME開発後のフローは以下の通りです.
1. 振り分けられた答案でWebマクロ対応しているものは, ICE上のボタン1つでWebマクロへULする
2. 答案由来の不備を発見した場合は, ICE上のプルダウンから不備理由を選択し, フォームをボタン1つで送信する
3. 答案自体に不備がなく添削可能な場合で, かつマクロ添削時に配点情報など, 採点マスタ由来の不備を発見した場合は,
ICE上のプルダウンから不備理由を選択し, フォームをボタン1つで送信する
4. 採点マスタに不備がなく添削を終えた場合は, ICEへ採点済み答案をドラッグアンドドロップで提出
### How to 実装 ICME?
あくまで出口の想像, というかこういう感じかなあというのは・・・
1. ICEの「添削」画面上=tableから「概要」を配列で取得
2. fetch postしてweb apiとしてデプロイしたコメント集・採点マスタ, それぞれのマスタデータ(スプレッドシート)上 or スタンドアローン型のスクリプトを起動
3. gas側から受け取った結果に基づいて, 背景色などを変更してそれぞれの対応チェック
4. ICEのHTMLから添削者番号, 氏名, ASIDなどの基本情報を取得 & 新たにプルダウンリスト・各種フォーム用のDOMを生成
5. 取得した基本情報をクエリパラメータとして, クリックイベントを仕掛ける. ページ遷移先をiframeにして別タブ展開させずにICE上でフォーム送信を完結させる.
藤井さんのREAD_MEとか(https://produce-web.net/sendform-iframe/)を読むといい. というか, まあ既に実装してますよね多分...
### 利用者一覧
- 英語科の全添削者
### 規模
過去にchrome extensionsの開発経験があるbot管理メンバー1~2名を想定しております.
### スケジュール
| 日付 | 内容 |
|--------|--------|
| 2022年09月31日まで | 要件確認 |
| 2022年11月15日まで | 開発 |
| 2022年11月31日まで | テスト |
| 2022年12月20日まで| テスト結果に伴う修正 |
| 2022年12月31日まで| 予備日 |
| 2022年1月1日| 開発完了・リリース |
### 予算
基本的にbot管理で出していただきたいです.
必要であれば, 添削ツールからは6万円程度(~30h)なら申請していただいて構いません.
### 導入するにあたって行うこと
- ICEから答案をDLしたのち、WebマクロへULする
- 答案由来の不備を発見した場合は, ICE上のプルダウンから不備理由を選択し, フォームをボタン1つで送信する
and
答案自体に不備がなく添削可能な場合で, かつマクロ添削時に配点情報など, 採点マスタ由来の不備を発見した場合は,ICE上のプルダウンから不備理由を選択し, フォームをボタン1つで送信する
GAS側
- 試験種のリストを受け取って, Webマクロ/コメント集が使えるかを返すdoPost()を実装
拡張機能側
- ICEから答案DL -> Webマクロを開いて「ファイル選択」 -> UL
- ICEで試験種のリストを取得 -> GASに送信してWebマクロ/コメント集が使えるかどうか取得 -> ICEの答案一覧画面に反映
### 担当分け
遠山
- ICEから答案DL, WebマクロにUL
鶴谷
- GASと連携して, Webマクロやコメント集の使用可否をICEの答案一覧画面に反映
- まずはGASを実装
- https://docs.google.com/spreadsheets/d/1zXCr7XKRMfnJRZdF-yxWlrV7YQQVhKmr9MrM_U_49eI/edit#gid=1566447967 ここからのapiの作成は、外部からのアクセス不可であるため、パミッションエラーが出た。
- そのため、https://docs.google.com/spreadsheets/d/1KmCXEsVgnTXI5bATWaimKPahbuOZDXoQumLkENG3m3g/edit#gid=0 こちらのspreadsheetを用いて実装した。