東京大学大学院経済学研究科の経済学コースの学生の多くは、ミクロ理論ワークショップ、ミクロ実証ワークショップ、マクロワークショップなどの、経済学研究科内のワークショップのいずれかで、修士論文を発表することが求められます。この修士論文の発表では、各学生に対して、主査(指導教員)と、1~2人の副査(指導教員以外の教員)が出席する必要があり、どの学生が、どの時間帯に、どの会場で発表するかを調整する必要があります。
経済学コースの修士課程は1学年100名強、教員は40名弱おり、参加者の予定を聴取したり、聴取した参加者の都合をもとに、誰がいつどこで発表を行うかを手作業で調整するのは、かなり大きな事務的負担でした。そして、全国・全世界の様々な学部学科で、同様の形式で修士論文報告会のスケジューリングが行われているのではないかと思います。
そこで、東京大学マーケットデザインセンター(UTMD)は、修士論文報告会のスケジューリングツールを開発しました。以下で示す手順に従い、操作を行うことで、
候補となる会場・日時と教員リストの情報をもとに、学生と教員が自身の空き時間を入力する Google フォームを自動生成
入力された参加者の空き時間をもとに、参加者の都合を必ず尊重し、かつ教員や会場の入れ替えを最小限にし、なるべく利便性の高い時間帯に発表を行わせるような、修論報告のスケジュールを出力
できます。
一連の作業はすべて、Googleが提供するウェブベースのサービス(Google スプレッドシート・Google Apps Script・Google フォーム・Google Colaboratory)の上で完結します。オーガナイザーを含むどの参加者も、サーバやアカウントを新規に用意したり、ソフトウェアをダウンロードしたりする必要はありません。
このツールは、オープンソースとして公開しており、学外の方も含め、どなたでも無償でご利用いただけます。
出力のサンプル。どの発表者が、どの会場で、どの時間に発表するかを最適に決定します。各発表について、その発表の主査・副査が全員参加できる時間であることが保証されています。
ファイル名のリンクをクリックすると、サンプルファイルへ飛びます。
オーガナイザーは、「A.設定スプシ」に、候補となる会場・時間帯と、主査・副査となりうる教員の名簿を入力します。
オーガナイザーは、「B.フォーム生成GAS」に「A.設定スプシ」の情報を読み取らせ、「C.学生フォーム」と「D.教員フォーム」を自動生成します。
オーガナイザーは、「C.学生フォーム」と「D.教員フォーム」を、学生と教員のそれぞれに送付します。学生・教員は、送られてきたフォームに、自身の予定を入力します。入力された情報は、「E.学生スプシ」と「F.教員スプシ」に整理されます。
オーガナイザーは、「G.出力用Notebook」に、「A.設定スプシ」「E.学生スプシ」「F.教員スプシ」の情報を読み取らせ、「H.最終結果スプシ」「I.再調整用スプシ」を出力します。「H.最終結果スプシ」の内容が満足いくものであれば、その内容を修論報告会の最終的なスケジュールとします。そうでない場合、「I.再調整用スプシ」の内容を見つつ、手作業で再調整を行います。
修士論文報告会スケジューリングツール v0.1 に保存されているファイルをすべて、ご自身が管理権限を持つ Google ドライブのフォルダへコピーしてください。このフォルダを「作業用フォルダ」と呼びます。
Google ドライブの仕様上、フォルダごとのコピーはできませんが、Google アカウントにログインした状態で当該フォルダを開き、[ファイル]から[ドライブにコピーを保存]を選択すると、ご自身の Google ドライブの「マイドライブ」内にファイルのコピーが作成されます。これらのコピーされたファイルを、Google ドライブ上に新規作成したフォルダに移し、「作業用フォルダ」としてください。
サンプルファイルにならい、「A.設定スプシ」のシート1に主査・副査となりうる教員の情報を、シート2に会場と時間に関する情報を入力してください。
シート2の各行はday と time で指定される日時を表し、会場(デフォルトでは Room A, Room B)には、その日時にその会場が利用可能かどうかを、1 = 利用可能、0 = 利用不能 の形式で入力します。
より多くの会場を利用する場合には、列を増やしてください。
シングルセッションで実施したい場合には、「Room B」の列を削除してください。
シート2の priority の行には、その日時に発表を優先的に入れたいか否かを表す数値を入力します。優先的に開催したい日時には小さい数字を入力してください。(例えば、予備日や遅い時間にはなるべく開催したくない場合には、それらの日時に大きい数値を入力してください)
Tips
「A.設定スプシ」を一度ローカルにダウンロードしたりすると、ファイル形式が Googleスプレッドシートから、xlsx などに変換されることがあります。これはエラーの原因となるので、必ずファイル形式は Google スプレッドシートとなるように操作を行ってください。
「B.フォーム生成GAS」を開き、2行目に「A.設定スプシ」のURLを入力してください。
上部のメニューより、「実行」ボタンを押してコードを実行してください。実行するために必要な権限は承認してください。
成功すると、作業用フォルダ内に、「C.学生フォーム」と「D.教員フォーム」という名前の Googleフォームが生成されます。
生成されたフォームの以下の2点について、手動で修正することを推奨します。(自動化したいのですが、Google Apps Script の仕様のため、自動化できないようです)
「C.学生フォーム」と「D.教員フォーム」に適当なテーマや色などを設定するなどして、異なる見た目にしましょう。参加者が自分が回答すべきフォームを間違えることを予防できます。
「C.学生フォーム」と「D.教員フォーム」は、いずれも「あなたが出席できないスロットをすべて選択してください 」と要求していますが、自動生成されたフォームは「出席できない」を強調表示していません。誤って出席できるスロットにチェックを入れる参加者が出ないよう、この点を強調表示するとよいでしょう。
発表者となりうる学生および主査・副査となりうる教員に、生成された「C.学生フォーム」と「D.教員フォーム」の回答用リンクをそれぞれ送付してください。
回答用リンクは、当該フォームを開いた後、右上の「送信」ボタンを押すことで生成することができます。
それぞれの Google フォームを開き、[回答]タブから[スプレッドシートにリンク]を選択し、新しいスプレッドシートに回答結果を出力してください。「C.学生フォーム」とリンクしたスプレッドシートを「E.学生スプシ」と、「D.教員フォーム」とリンクしたスプレッドシートを「F.教員スプシ」と名前をつけてください。
[スプレッドシートにリンク]の作業を行った後にフォームに新規回答や回答の編集があった場合も、内容はスプレッドシートに反映されます。
Tips
各参加者は、フォームに一度だけ回答し、もし(予定に変更があるなどして)内容を変更したくなった場合には、新規の回答ではなく、「回答の編集」を行ってもらうことが期待されます。もし誤って複数の回答を行った参加者がいた場合、オーガナイザーの手によって古い回答はスプレッドシートの行ごと削除してください。
どの学生の発表にどの教員が主査・副査として出席するかは、システム上では、学生が「C.学生フォーム」に対して行う入力により決定されます。
東京大学の経済学研究科のルール上では、指導教員(=主査)が決めることとなっています。同様の運用をする場合には、「C.学生フォーム」「D.教員フォーム」を送る通知文などで、学生に対し、「副査が誰となるかを、指導教員に確認しておくように」と連絡しておくとよいでしょう。
名寄せは、オーガナイザーが用意する「A.設定スプシ」をもとに行っているため、文字入力を行う設問で、学生・教員が入力フォーマットの指示に従わなくとも、出力に影響を与えません。(サンプルファイルでは、意図的に指定した出力に沿わない入力をいくつか行っています。)
学生は、「A.設定スプシ」に記載されている教員リストの中から、主査・副査を選択することとなります。このため、教員リストにはあらかじめ、主査・副査となりうる教員全員をリストアップしておきたいところですが、フォームに入力する段階になってから、学生や教員から「教員リストに記載されていない教員に副査をお願いしたい」と要望を受けることがあります。この場合、(i)「A.設定スプシ」の教員リストの末尾、(ii)「C.学生フォーム」の主査・副査を選択する設問の選択肢の末尾、(iii)「D.教員フォーム」で自分の名前として選択する設問の選択肢の末尾に、追加したい教員の名前を、一言一句違えないように追加してください。
作業用フォルダ内に、新規に「H.最終結果スプシ」「I.再調整用スプシ」と名付けた空のスプレッドシートを2つ作成してください。これらのスプレッドシートに出力結果が書き込まれます。
「G.出力用Notebook」の冒頭の「入力」欄にある URL を入力していきます。
すべての URL は、(文字列なので)"https://sites.google.com/site/shunyanoda/" のように、ダブルクオーテーションで囲む必要があります。不明な点があれば、サンプルファイルの入力形式を参照してください。
url_info の欄に「A.設定スプシ」のURLを入力してください。
url_stu の欄に「E.学生スプシ」のURLを入力してください。
url_tch の欄に「F.教員スプシ」のURLを入力してください。
url_output の欄に「H.最終結果スプシ」のURLを入力してください。
url_avail の欄に「I.再調整用スプシ」のURLを入力してください。
上部の[ランタイム]タブから、[すべてのセルを実行]を選択してください。途中で[Google 認証情報へのアクセスをこのノートブックに許可しますか?]と書かれたポップアップが表示されたときは[許可]を選択し、Googleアカウントでログインしてください。
成功すれば、「H.最終結果スプシ」「I.再調整用スプシ」に出力の結果が保存されます。
本ツールは、全発表者が発表できるスケジュールがもし存在すれば必ずその結果を出力するように構成されていますが、条件によってはそのようなスケジュールが存在しない場合があります。
例えば、発表用のスロットの数が発表者より少ない場合には、明らかにすべての発表者に参加してもらうことはできません。それ以外にも、発表者・主査・副査が参加できる時間が限定される場合には、全員が発表できるようなスケジュールが存在しないケースが多くなってきます。
全発表者が発表できるスケジュールが存在しない場合、本ツールは、「なるべく発表できる学生が多くなるスケジュール」を出力し、残りの学生については「Unassigned」と表示します。
例えば、サンプルファイルでは NISHIDA Niko さんの発表がスケジュールされていません。
「H.再調整用スプシ」は、スケジュールされなかった発表がある場合に、予定を再調整するための補助資料です。
各日時について、各会場と、各参加者が「参加可能」と入力したセルに「1」が入力され、色が塗られています。
うち、「I.最終結果スプシ」で使われている会場・参加者は、赤く塗られており、使われていない会場・参加者は緑色に塗られています。
例えば、2024-01-16 11:00-11:30 のスロットの Room A は、SUZUKI Sumire さんの発表が予定されており、KATO Kaori さん、EGUCHI Emi さん、KIMURA Kiyoshi さんが主査・副査として参加予定です。これを反映し、この行は「Room A」「SUZUKI Sumire」「KATO Kaori」「EGUCHI Emi」「KIUMURA Kiyoshi」の列が赤色に塗られています。
「H.再調整用スプシ」で、再調整が必要な発表者・主査・副査の列だけを表示し、なるべく緑色のセルが多い行を探すと、再調整がしやすくなります。
例えば、サンプルファイルの例では、3人の主査・副査である UEDA Uta さん、KIMURA Kiyoshi さん、 KOBAYASHI Kota さんの全員が参加できる日時が存在しないことが、NISHIDA Niko さんの発表がスケジュールできない原因でした。例えば、1/16の 11:30-16:00のどこかで、UEDA Uta さんが予定を調整して参加できるようになれば、Room A, B のいずれかで NISHIDA さんの発表を実施することができます。
このような調整が難しそうな場合には、まったく異なる日を提案する必要があるでしょう。
すべての作業は、可能な限り単一の Google アカウントで実行してください。複数のアカウントを使用すると、ファイルの管理権限でエラーが起きる可能性があります。
エラーが発生した場合、多くの場合はファイルの入力形式のミスと考えられます。まずファイルの入力形式を再確認し、サンプルファイルの入力形式に沿っているかを確認してください。
最適化部分は、(比較的スピードが遅い)整数計画法を用いているので、問題のサイズが大きくなると実行の完了までに時間がかかる可能性があります。長時間操作を行っていないと、「G.出力用Notebook」を回している Google Colab が動作停止する場合があるので、適宜実行状況を確認してください。
「G.出力用Notebook」は、混合整数計画問題を解くことにより、参加者(学生・教員)が入力した「都合」(ある時間に参加できるか否か)をもとに、以下の優先順位に基づき、誰がどのスロット(時間の枠)で発表するかを決定します。
参加者が、「出席不能」と表明したスロットは割り当てない。(制約の尊重)
なるべく多くの学生が発表できるようにスロットを割り当てる。(最大マッチングの選択)
なるべく教員が連続したスロットで主査・副査を務められるようにする。(教員の入れ替わりの手間の削減)
なるべく会場が連続して使用されるようにする。(部屋のセットアップの手間の削減)
なるべく優先度が高いスロットを使用する。(不便な時間帯に発表を実施することの回避)
これを達成するため、どのような定式化を行っているかは、技術的解説のドキュメントをご覧ください。
副査の数を増やす、特定の参加者の予定を優先するなどのカスタマイズは比較的容易に行えると考えられます。
同様に、修論報告会以外に対して応用するために改変することも可能と考えています。
ただし、人的リソースの関係上、当方でカスタマイズの要望に応じる保証はできません。
改良の提案については随時、本ページ末尾のメールアドレスにて受け付けます。
本ツールは、MITライセンスで提供します。
利用のみならず、改変・再配布・商用利用なども無料で自由にできますが、著作権表示とライセンス全文の掲載が必要です。
このツールを利用したことで発生した問題に、開発者は何の責任も負いません。
UTMD修論報告会スケジューリングツール開発チーム
玉腰 勇司 東京大学工学部 RAリーダー
澤崎 遥夏 東京大学大学院工学系研究科 RA
桑原 慶太 東京大学経済学部 RA
野田 俊也 東京大学大学院経済学研究科講師 UTMDプロジェクトマネージャー
連絡先: x-aaaaocrulgj2hlwczklkyz6e7i [at] mdcenterra2020group.slack.com
(本メールアドレスに送付されたメールは、全UTMDメンバーに共有される可能性があります。)