複数の名簿のマッチング作業

By | 6月 17, 2020

まず最初に手順を記します。

  • 学務情報システムから、担当科目の履修者名簿をダウンロードします。
  • WebClassを利用しているなら、WebClassからメンバーリストをダウンロードします。
  • Moodleは利用経験がないので割愛します (情報提供をお待ちしています!)
  • Google Classroomを利用しているなら、柳井先生が用意して下さったウェブサービスを利用して、メンバーの名簿を作成します。
  • Googleフォームを利用するなら、ここに解説があるように自動採点の機能をオンにしてください。
  • Googleフォームの作成時に〔成績のインポート〕をオンにしていなかったら、Googleドライブでフォームを開き、〔︙〕をクリックして表示されるメニューから〔回答先を選択〕を選び、Googleスプレッドシートに出力します。

これで、準備が整います。あとは、どのファイルをどうソートして、結合(マージ)するかを考えます。各レコードの照合には、ExcelやGoogleスプレッドシートの文字列比較が有効です。

これらのマージしていくには、次のように行います。

  • Google Classroomの採点ページの学生の〔姓で並べ替え〕の順序と、ウェブサービスで作成した名簿をGoogleスプレッドシートで開いて左列記載の氏名の列をA-Zでソートした順序が合致します
  • ウェブサービスで作成した名簿にあるメールアドレスはUECクラウドアカウントです
  • Googleフォームの回答を出力したGoogleスプレッドシートのファイルには、UECクラウドアカウントしか記載されません (複数回の回答を許すと、順序はそのまま、同じ人が複数行に渡ります)
  • WebClassのメンバーリストはUECアカウントです
  • 学務情報システムは学籍番号しか持たないので、他のテーブルでUECアカウントかUECクラウドアカウントから、学籍番号を取り出しておくと便利です

これらを頼りにに、3つのリストをマージする手順の例を、Googleスプレッドシートで用意してみました。最も効率のよい手順まで追い込んではいませんが、もし参考になるならとリンクを貼っておきます。UECクラウドアカウントでログインすると、閲覧できます。なお、Google Classroomのクラスの採点ページをコピーしているのは、入力順の確認のためです。Google Classroomのクラスの名簿を柳井先生が書いてくださったGASによるサービスで作成し、Googleスプレッドシートで開いてから、「姓 名」でソートした順序が、採点ページで「姓で並べ替え」を実行した後の順序と一致する気がしています。


ここから、解説です。現在の体制は、主に次に掲げる複数のシステムを組み合わせて構築と運営がされています。

  1. 学務情報システム
  2. WebClass
  3. Moodle
  4. Google Classroom
  5. Googleフォーム

WebClassやGoogle Classroomを使うと、成績入力に必要な、学生の並べ替えに難があります。手許の評価データの中の学生の並べ替えは、成績入力の際には、入力先のシステムに合わせて並べ替える必要があります。しかし、どのシステムも、学生の氏名を、苗字の読み仮名で昇順でソートする機能は持っていません。一部のシステムは学籍番号もしくは苗字、名前、氏名でソートしてくれます。しかし一部のUECアカウントを持っておらず、また別の一部のシステムは学籍番号を持っていません。また氏名の記載について、学務情報システムのテーブルにアクセスできるシステムはありません。これらが原因で、複数のテーブルの照合(マッチング, マージ)に不自由があります。

上の例も含め、次のような状況で、複数のテーブルのマッチングが必要になります。

  • WebClassで管理しているレポートやテストの評価を集計して、学務情報システムに登録したい
  • Moodleで管理しているレポートやテストの評価を集計して、学務情報システムに登録したい
  • Google Classroomで管理しているレポートやテストの評価を集計して、学務情報システムに登録したい
  • Googleフォームで実施したテストの点数に出席点等を加味して、Google Classroomの採点ページに入力したい

上の5つのシステムからは、6種類のテーブルを作成できます。それぞれは、次のようなキーの候補を持っています。

テーブルの種類学籍番号UECアカウントUECクラウドアカウント姓 名名姓
1.学務情報システム○身分証と同一
2.WebClass○各自が自己設定
3.Moodle○各自が自己設定
4.Google Classroomのクラス内の表示○学生が自己設定
5.Googleフォームの回答の出力○設定によっては重複あり
6.Google Classroomから作成した名簿○学生が自己設定
テーブルとキー変数の候補

組み合わせたい二つのテーブルを、共通するキー変数の候補でソートしてマッチングするか、あるいは学籍番号のように、Google Classroomの採点ページで表示されないこと以外は最強のキー変数を用意してマッチングするかの、いずれかのアプローチが考えられます。

UECアカウントやUECクラウドアカウントから学籍番号を取り出すのは、比較的容易です。

  • ExcelではMID関数を使い、2文字目から7文字分を取り出すと、学籍番号になります (MID(“A1234567”, 2, 7)で文字列”1234567″を取り出せます)
  • Perlではsubstr関数を使い、同じく2文字目をオフセットに、長さ7の文字列を取り出します(substr(“A1234567”, 2, 7)で文字列”1234567″を取り出せます)
  • Pythonでは文字列を配列として扱えるので、2番目の要素から8番目の要素までを切り出します (“A1234567″[1:8]で文字列”1234567″が取り出せます)
  • JavaScriptでは文字列に対するsubstringメソッドを使って、2文字目と9文字目で区切ります。(str = “A1234567” と定義してあれば、str.substring(1,9)でいい気がするのですが、これは自信がありません)

もし可能なら、Googleフォームでは自動採点機能を用いると、このようなマッチングの必要性が少し薄れます。


以下は余談です。以前からも、WebClassと学務情報システムでは学生の順序が異なっていて、少し困っていました。

  • 学務情報システムから取得できる履修者名簿は、「学籍番号」と「氏名」を含んでいますが、このシステムでは学籍番号を「年度間は降順」で「年度内は昇順」となるようにソートします
  • WebClassから取得できる登録者名簿は、「UECアカウント」と「氏名」を含んでいますが、この氏名は学務情報システムと一致するとは限りません
  • Google Classroomから作成する名簿は「名 姓」「学籍番号」「UECクラウドアカウント」を含んでいますが、「名と姓」の順序を逆にすることは困難です
  • Googleフォームの回答をGoogleスプレッドシートに保存したデータは「UECクラウドアカウント」を列に持ちますが、回答を1回に制限しないと、重複回答の削除が大変です
  • Google Classroomの採点ページに「名 姓」の記載があり、これを名で並べ替えをした後に表全体をコピーすると、Google Classroomから作成する名簿と照合できます

この5つのデータの組み合わせたい2つに共通する列で並べ替えて照合することで、マッチングを模索します。例えば、3番目の表と4番目の表は「UECクラウドアカウント」で並べ替えると、マッチングができることがあります。3番目の表と5番目の表は「名 姓」で並べ替えてマッチングできるかもしれない、と考えたのが、このメモの起草の経緯です。



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です