事例349
プログラミング習得のための課題採点方法
近江兄弟社高校 長谷川友彦先生
生徒が自分自身で課題の取り組み状況を確認することができるWebアプリ
昨年の全高情研で、生徒が自分自身で課題の取り組み状況を確認することができるWebアプリを開発したことを御報告しました。
こちらのアプリを簡単に説明しますと、Google Classroomで生徒が課題に取り組むとき、自分がどれに取り組んで、今スコアが何点なのかということを把握するのは大変ですよね。
また、確認テストのスコアを成績に反映させるには、1回だけしか解答できるようにしなければなりません。
さらに問題点がありまして、最終的にGoogle Classroomのスコアを成績に反映させるために書き出そうとすると、クラスごとに手動でエクスポートしなければならず、これが非常にたいへんなので、これを全部自動化したアプリを作りました、いうことでした。
※クリックすると拡大します。
先ほどの分科会で、樟蔭女子高校の川浪先生が紹介されていましたが、IMPORTRANGE関数とQUERY関数を駆使すれば、生徒の全てのスコアを自動集約で1つのスプレッドシートにまとめることができます(※1)。
そして、1つにまとまった「課題取組状況確認」というスプレッドシートの内容を基にして、GAS( Google Apps Script)でHTMLに書き出すことで、生徒がリアルタイムで自分の課題の取り組み状況や、どのように採点されているかを確認できる、というものになっています。
※1 応用的なデータベース学習としてSQLの知識を活かした身近なデータを扱う取り組み
※クリックすると拡大します。
ユーザのメールアドレスを関数の引数にすることとアプリのアクセス権を限定することで、セキュリティを万全に
セキュリティに関してですが、Webアプリ化するにあたり、スプレッドシートに対して閲覧権限を与える必要があります。
したがって、スプレッドシートのURLが漏洩してしまうと、全員の成績情報が漏洩してしまうことにつながるため、スプレッドシートのURLに関しては厳重な取り扱いが必要となります。
ただ、Webアプリの実行者からはこのURLは見えないため、よほどのことがない限り漏洩することはないでしょう。
Webアプリを実行するにあたり、Googleの個人認証を通過させることで、外部への漏洩を防ぎつつ、どのような処理にも、常に生徒のGoogleアカウントを関数の引数とすることによって、Googleアカウントにひもづけられたデータのみが取り出されるようにしています。それにより、生徒が自分の情報にしかアクセスできないように工夫しています。
また、Webアプリのアクセス権を組織内ユーザのみに限定することにより、たとえWebアプリの実行URLが流出しても、Googleの個人認証を通過できないため、いかなるデータも流出することはありません。
※クリックすると拡大します。
再提出した課題の状況もリアルタイムで確認できる仕組みを作る
昨年度までのアプリは、生徒がURLや作品を提出したもののうち、最新のものを生徒の名簿に紐付けて表示させ、それをもとに採点するようにしていました。そのため、生徒が再提出した場合、それを検知することがなかなかできなかったのですね。
ところが、プログラミングなど習得を目的とした課題では、1回で合格しない場合が結構多いのですね。
そうなると、不合格だった場合は再提出するのですが、タイミングによっては、「先生、私再提出したけど、再提出したのも不合格だったの?」と聞いて来られて、「ごめん、まだ採点できてへん」ということが結構ありました。
それをどのように改良したかと言いますと、非常に簡単な話で、SORT関数を使ってデータをタイムスタンプ順に並べるだけにしておいて、それを順に採点していくということにしました。
教員側としても、どこまで採点してどこが採点できていないかもすぐ把握できますし、チェック列が空欄の状態であれば、採点待ちであることがわかります。
※クリックすると拡大します。
生徒は、URLを提出した瞬間に「採点待ち」が表示されるので、再提出したものが見てもらえたのか、合格したのか、まだ見てもらっていないのかが分かるわけです。
そして、再提出したけれど不合格になっていたら、もう一度チャレンジしなければいけないのだな、ということが一目で把握できます。
この仕組みは、もっと複雑な採点方法のものでも同じように使えるので、いろいろ応用して使っています。
採点自体を自動にするのは、なかなか難しいところはありますが、私は授業中に一人ひとりの状態をざっと見てしまっておき、提出されたらその都度この順番に見るだけということにしています。
そこで不合格だった生徒を個別に呼んで、どこがいけなかったのかを指導した上で、またやり直してもらう、というやり方で使っています。
※クリックすると拡大します。
さまざまな課題のスコアや回答を1つの スプレッドシートに集約するコツ
この仕組みを構築する際のコツの1つは、さまざまな課題のスコアや回答を1つの スプレッドシートに集約することです。
Google Formsの回答の送信先を、「既存のスプレッドシートを選択」とすることで、一つのスプレッドシートにすべての回答を集約することができます。
次に、このように集約した回答を、生徒ごとの一覧表に集約していきます。VLOOKUP関数で生徒ごとのスコアを呼び出す際に、シートの見出しを一覧表の見出しに使用することにより、INDIRECT関数でシートを自動的に呼び出し、一覧表にまとめることができるようになります。
課題ごとに集約した一覧表をさらに一つのスプレッドシートにまとめていきます。
この場合、IMPORTRANGE関数を使用することにより、スプレッドシートを超えて一つのスプレッドシートにすべての情報を集約し、Webアプリへと展開していくことができるようになります。
※クリックすると拡大します。
第17回全国高等学校情報教育研究会全国大会(愛知大会)ポスター発表