目 次
1. 本システムの目的
2. 全体構想34

3. 処理の概要 53-1.オンライン授業の実施 53-2.教室管理者によるオンライン授業の後の作業 8
3-3. 生徒に見える映像(課題) 17
3-4. 講師の作業

18

4. 処理の詳細 214-1. ソースコード 214-2. 本システムの使用方法 26
5. 運用上の注意点 37
6. 残された課題

39

6-1. ユーザインターフェイスの首尾一貫性 39
6-2. Youtube への配信 39
7. サンプルプログラムによる事前技術的検討例

407-1. Google Apps Script(GAS) で、Google Classroom に投稿する 40
7-2. Google Apps Script : 時間主導のトリガを使用して、CRON のように一定間隔でスクリプトを実行する 41
7-3. Google Apps Script : 動画を添付して Classroom の指定のトピックへ課題として投稿する 47
8. 補足488-1. 着想の解説

488-2. 行った機能調査 49

12

1. 本システムの目的
Zoom (SB C&S 株式会社) を使ってオンライン授業を実施し、Zoom の機能を使ってその映像を録画する。録画された映像データは WEB 環境で利用可能なファイル形式に変換後、クラウド上に保存する。その録画された映像データは自習教材として、生徒や教師が使いやすい状態に整理して、ユーザインターフェイスにつなぐ。
本システムは、これらの処理が、可能な限り人手を介することなくできるよう支援する目的で構築されたものである。
本システムが本格的に稼働すれば、オンライン授業の実施の翌日から生徒は復習のためにこれを活用したり、オンライン授業に参加できなかった生徒は自習するためにこの映像教材を活用することができることが期待されるものである。

3

2. 全体構想「オンライン授業 to 自習映像教材: シームレス運用支援システム」の全体の構造は数のとおりです。
講師の演ずる教育活動が Zoom を通じて配信されるだけではなく、Google classroom とシームレスに連動することによって、事後も繰り返し利用可能なコンテンツがほぼ自動的に生成し、そのまま翌日には利用が可能となります。

赤の破線矢印で示した「ユーチューブへの配信」と「Zoom を Google classroom の配下に加える」については、現在検討中であるが、実装はしていない。こんごのかだいとします。

4

3. 処理の概要
Zoom(SB C&S 株式会社)を使って撮影した動画を G Suite(Google) のサービスである
Google Classroom の『課題』として添付して投稿する。
3-1. オンライン授業の実施(1)サインイン
教室管理者が教師と生徒を招待するので、招待された教師と生徒は Zoom にサインインする。

(2)新規ミーティング
教師と生徒は教室管理者から招待されて新規のミーティングに参加することになります。

5

(3)このコンピュータにレコーディング
オンライン授業を録画(レコーディング)するためには、教室管理者が、教師画面のポップアップメニューから「このコンピュータにレコーディング」を選ぶ。

オンライン授業が終了した際に画面右下の「ミーティングの終了」を選ぶと、WEB 環境で視聴できる動画ファイル(mp4 形式)が作成されます。

6

3-2. 教室管理者によるオンライン授業の後の作業作成される場所は、設定でローカルのフォルダを選択できます。
(1)映像をローカルフォルダに保存

7

(2)共有ドライブへの格納
この際指定するフォルダを、Google Drive File Stream をインストールして G Suite での共有ドライブの中のフォルダを指定する事によって、mp4(動画ファイル) が自動的にアップロードされます。

8

Google Drive File Stream は、以下の URL より Windows 版と Mac 版がダウンロード可能ですhttps://support.google.com/drive/answer/7329379(3)共有フォルダ内の教室別のフォルダとアップロードされるファイル
・教室のアカウント
動画を作成する単位は、学校における教室単位になります。
ここがまず最初に重要で、複数の教室で授業が展開されますが、教室に対応する Zoom のアカウントを一対一で準備します。
・教室アカウントの例
ここで、仮に R101 で行われるオンライン授業については、以下のように定義します。
アカウント : R101 専用 ZOOM
共有ドライブ管理者アカウント : classroom@i-seifu.jp
アップロード先 : 上記アカウントが作成した共有フォルダの中に作成した R101 というフォルダ
つまり、R101 教室で記録された動画は必ず共有フォルダ内の R101 というフォルダに9アップロードされます。
・アップロードされるもの
Zoom でアップロードされるファイルは、フォルダであり、フォルダの中に実際の mp4 ファイルが 1 つ以上保存されます。フォルダ名の先頭には、録画を開始した日付と時分秒が記録されています。

この日付と時間を使って、R101 教室で使用される科目の時間割テーブルより Classroomと科目を特定します。
※ Google の内部的には、クラスはコースと呼ばれ、科目はトピックと呼ばれます(4)教室別の科目テーブル
例えば、R101 教室で行われる科目について着目すると、以下が R101 の科目テーブルとなります。

10

(5)コンテナ
このテーブルは、classroom@i-seifu.jp が作成した Google スプレッドシートに記述されます。
また、プログラムでこのテーブルを使用する為、このスプレッドシートは『コンテナ』と呼ばれます。
情報の保存場所として Google ドライブの共有フォルダ上の任意の場所で認識されます。

A 列のセルには、Google Classroom に投稿済の R101 フォルダにあるフォルダ名がセットされています。
これを参照しながら、新規が既存かの判断をしていくので、やがて大量のデータ行が溜まります。
その場合は、別プログラムでクリアと同時に実体を別フォルダにアーカイブさせる予定です。

11

(6)Google ドライブ内のファイルの移動について
Google ドライブでは、場所を移動しても、ファイルの ID が変わる事がないのでこのような事が可能です
実際のプログラムは、Google Apps Script という JavaScript を使った API を利用します。
そのスクリプト用のエディタは、コンテナ( スプレッドシート )のメニューより開く事ができ、『プロジェクト』という位置付けになります12

(7)スクリプトエディタ
スクリプトエディタを選ぶと次のようなウインドウが開かれます。ここでは「myFunction」が選ばれています。

(8)トリガーを使用しての起動
このコードの起動方法は、テスト中はエディタより関数を選択して実行が可能です。
実際の運用時は、『トリガー』という時間主導で定期的に起動できるサービスに登録して実行させます。
画面遷移を以下の連続する図群によって示します。

13

14

(9)コンテナの作成
教室管理者は、このコンテナを教室ごとに作成し、Classroom に教師を招待した後にクラスコードを生徒に配布して参加してもらいます。

15

3-3. 生徒に見える映像(課題)(1)生徒の Classroom の中
この事によって、翌日には自分の受けた授業の動画が、自分の参加する Classroom の中にあるトピックに課題として投稿されます。
次には、トピックに掲載された科目名と映像名の例を示します。

16

映像名の一つをクリックすると次のようになります。
(2)映像の一つを選ぶ
下記のような画面に遷移します。ここで、「課題を選ぶ」を選択すると映像が視聴ができるようになる。

3-4. 講師の作業
Class ルームの名前は講師名で作成すると解りやすいですが、副担任のように複数の登録も可能です。
しかし、決められた時間の範囲に行われる科目は一つである必要があります。
そして、各 Classroom は classroom@i-seifu.jp が管理者として全て作成して教師を招待します。
その際、Google 的には一時的な教師登録となり、管理者が自動的に作成させる Google グ
ループ内で『承認』する必要があります。

17

この「参加リクエスト」内に承認すべき教師がリストでならんでいるので、管理者権限のあるアカウントで、承認作業をして下さい。上の図は承認後ですので、教師リストが消えたあとです。
承認すれば、下の画面のように「すべてのメンバー」のところに移動されます。

Google Apps Script で使用できる標準 API では、Classroom の API は使用できないので、一旦 classroom@i-seifu.jp のアカウントで Google Cloud Console で利用の承認を行い、API の利用をチェックする必要があります( Google Cloud Console のプロジェクトを作る必要はありません )18

さらに最初の実行時には、アカウントと権限の確認ダイアログで承認する必要もあります。

19

4. 処理の詳細
4-1. ソースコード
起動はトリガで夜間バッチです。
処理は、主として下記の時間割テーブルを対象に行われる。
▼ 時間割テーブル

ソースコードは以下の通りです。

20

21

2223

上記ソースコードによって、教室と一対一のフォルダより新しく登録されたフォルダの中にある Zoom 動画ファイルを該当する Classroom の コース内の該当するトピックに登録することができます。

24

4-2. 本システムの生成とその確認
コンテナの機能を中心に画面の様子を確認しながら「オンライン授業 to 自習映像教材 シームレス運用支援システム」を用いて実際に運用するシステムを生成する手順とその結果得られる動作の確認を示します。
(1)教室管理機能の生成
教室管理者は、グーグルドライブを用いて、各教室ごとのコンテナを生成しておきます。
その様子は、次のようにすることによってみることができます。
まず、グーグルドライブ-共有ドライブ-「classroom 管理用」を選びます。

次に「コンピュータのコンテナ」を選択します。

25

ここで、「コンピュータのコンテナ」を選択します。
ここでは、サンプルとして「R101」と名付けられた教室のデータを見てゆくことにします。

当該コンテナの画面が開かれます。

26

ここで、「スクリプトエディタ」を選びます。

続いて、オンライン授業で作成された映像データを共有フォルダの所定のフォルダに格納し、同時にコンテナの内容を最新状態に書き換えます。そのため、まず「関数を選択」を選んで「myFunction」を選びます。

27

「myFunction」を実行すれば、オンライン授業で作成された映像データを共有フォルダの所定のフォルダに格納されます。

28

「▶」ボタンをクリックすると、今選ばれている関数「myFunction」が実行され、オンライン授業で作成された映像データを共有フォルダの所定のフォルダに格納し、同時にコンテナの内容を最新状態に書き換えます。

ここで、初回のみ以下のプロンプトがポップアップするので、「許可を確認」を選択します。

29

次の画面では「(管理者)@i-seifu.jp」を選択します。

次の画面に遷移するので、「許可」ボタンをクリックする。

30

(2)確認ここからは、生成された結果を確認していきます。
「myFunction」の実行後、グーグルドライブ-共有ドライブ-「classroom 管理用」を選びます。

31

次に表示された画面の「フォルダメニュー」からオンライン授業を行った教室番号(ここでは「R101」)が付いたフォルダを選択します。

32

「R101」のフォルダを開けると次のような画面になりますので、該当する授業の日付と時間が確認できます。

該当する授業のフォルダを開けると次のように、必要なファイル(.mp4 ファイルほか)が入っていることが判ります。

33

確認作業開始前と後のコンテナの様子は次の通りです。
<前>

<後>

(3)Google classroom での確認
Google classroom の画面では、次のように表示されますので日時を確認して必要な授業の映像を選択して「課題を表示」を選ぶと、教室管理者が格納し、講師が許可を与えた映像を見ることができます。

34

5. 運用上の注意点(1)教室移動の可能性注意しなければならないのは、同一のクラスの同一の科目であっても場合によって教室を変更しなければならない場合があることです。
新型コロナウイルスなど感染症の対策として、本システムを活用する場合、生徒は、通常運用時は「2.全体構想」の図のように、家庭で受講する者が大多数で、教室で参加する者は通常よりかなり少なくなると推測されます。
この場合は、教室内でもまばらに着席することになるので、密集、密着になりにくいと考えられます。換気に十分気をつけることによって、感染の危険を減少させることが可能です。したがって、このときの講師と出校した生徒は通常通りの教室に入って、対面で学習活動を行いながら、在宅学生たちとはネットを介して学習活動を行うことになります。
一方、生徒らが長期間出校しないままにするのは学習への緊張感の維持が困難と考えられます。そのため、一定の頻度(例えば週に 1 回など)では、クラス別に、全員出席日を設けることにします。

35

全員出席日には、生徒全員が通常の教室にそのまま入室すると密集、密着状態となり、日本語の学習などでは、間断なく大きな発声発話が行われるので、感染の原因となる飛沫が相当程度まき散らされる危険性があります。
感染の危険を避けるため、全員出席日には、普段より大きな教室に変更して、生徒らに間隔をあけて着席してもらう必要があります。
(2)教卓パソコンが問題
さて、教室を変えると困ったことが起きます。教室を変えると教卓のパソコンも変更先の教室の教卓パソコンに変わってしまいます。A 教室を本拠地としている甲先生が B 教室に代わると、B 教室のパソコンはいつもは別の乙先生が使っているパソコンです。乙先生が使っているパソコンは甲先生が使っているとは知らずに「乙先生の教科を始める」と勝手に判断してしまいます。教科名が違ってしまったり、映像ファイルが保存されるフォルダが違ってしまう恐れがあります。
実は、各教室にあるパソコンには、・教室番号と対応付けられている「Zoom ID」が設定されています。
・教室番号がついている保存場所に Zoom のファイルを書き込むように設定されています。
A 教室のパソコンがノートパソコンで、甲先生がそのノートパソコンを B 教室に運ん使用すれば、問題が起こません。A 教室のパソコンがデスクトップパソコンで、持ち運びできない場合は、B 教室のパソコンの設定を A 教室と同じにして使用して、授業の終わりにはもとに戻す必要があります。
a) もともとの教室のパソコンがノートパソコンだったらそのノートパソコンを移動先の教室に運んで使用します。
ノートパソコンを持ち運ぶと、置忘れやとり違いがしばしば発生することが予想されるので、ノートパソコンの蓋の上には、次のようなゼッケンを張り付けてまぎれのないようにしておくことが望まれます。

36b) もともとの教室のパソコンがデスクトップパソコンだったらZoom ID をもとの教室(A 教室)の ID に変更する。
Zoom の映像ファイル保存場所(フォルダ)を A 教室の映像ファイル保管場所(フォルダ)に設定しなおす。
Zoom を立ち上げる。
<通常のオンライン授業を行う>
撮影済みファイルのコンバートを済ませて、ローカルフォルダに保存する。
B 教室の教卓パソコンの Zoom ID を元の(B 教室固有の) ID に戻す。
B 教室の教卓パソコンの Zoom のファイル保存場所(フォルダ)を B 教室の映像ファイル保管場所(フォルダ)に設定を戻す。
を行います。

37

6. 残された課題
6-1. ユーザインターフェイスの首尾一貫性
現在のシステムでは、生徒たちはリアル・オンライン授業では Zoom へのサインインから始めて、復習するときや欠席した授業を改めて受講する場合は Google classroom へのサインインから始めなければなりません。
将来は、どちらの場合でも Google classroom へのサインインから始められるように統一をはかるべきと思われます。つまり、リアル・オンライン授業であっても、Googleclassroom のメニューから選択できるように機能を改めるようにしたいと考えます。
6-2. Youtube への配信
Youtube はダウンロードやコピーができない使用のため、コンテンツの著作権の保護などの観点から、学外にも広く授業映像を公開する場合には、Youtube への配信もほぼ自動的にできるようにしたいと考えています。
今後は、引き続き、クリアすべき技術的課題などを調査し、実装を目指すものとします。

38

7. サンプルプログラムによる事前技術的検討例
7-1. Google Apps Script(GAS) で、Google Classroom に投稿する
ドキュメントでは、REST API なので、UrlFetchApp クラスを使うのか? とか思ってしまいますが、そもそも それだと auth が必要なのでまだ試してしません。
で、そんな事をしなくてもそれぞれの REST の クラスのメソッドに引数を渡す形で実行できます。
ただし、Classroom Service が拡張なので、スクリプトエディタのリソースメニュー(Google の拡張サービス)より API を実行可能にしておく必要があります。

以下のサンプルでは、Classroom は一つしか作成しておらず、ループである必要はありませんが、複数の場合に名前で特定する時に使えると思います。

39

Logger.log は、何かと結果が表示されない事が多いので、Gmail で自分のアドレスに送信したほうがいいと思います。

7-2. Google Apps Script : 時間主導のトリガを使用して、CRON のように一定間隔でスクリプトを実行する
Google Apps Script(GAS) で、Google Classroom に投稿することを目指します。
一定間隔で、Classroom になんらかの授業用データを作成する為の準備用作業です。

40

▼ まず Google スプレッドシートを作成してスクリプトエディタを起動します▼ コース id ( 整数文字列 ) と コース名をメールに送信するコードを保存▼ スクリプト名を決定して保存41▼ Google の拡張サービスで、Classroom の API を使用可能にする42▼ トリガ登録画面を表示する

43

▼ トリガ登録▼ トリガの時間間隔を決定

44

このスクリプトは、指定のメールアドレスに現在存在する コース id( 自分はクラス番号と呼んでます ) と名前を送っています。

45

7-3. Google Apps Script : 動画を添付して Classroom の指定のトピックへ課題として投稿する
Google Apps Script : 時間主導のトリガを使用して、CRON のように一定間隔でスクリプトを実行することを目指しました。
このコードは本来、時間主導のトリガを使用して、投稿していない動画があった場合に実行するものです。
( ✅注意 ) いろいろ調べましたが、『資料の作成』は、API からは実行できるようになっていませんでした。

46

8. 補足8-1. 着想の解説
Excel のマクロの言語は、vba ですが、今回のは、javascript となり、vba の関数の及ぶ範囲は、Excel 内のセル等と、pc のハードディスクです。
今回は google のサーバ上にある、Excel もどきと、google ドライブとなり、関数レベルですと、その範囲に加えて gmail でメールが送れる程度です。
★ https://developers.google.com/apps-script/reference/drive/drive-app★ https://developers.google.com/apps-script/reference/spreadsheet/spreadsheetapp★ https://developers.google.com/apps-script/reference/gmail/gmail-app
そこに、追加プラグインとして拡張できるのが、Classroom の処理です。
★ https://developers.google.com/apps-script/advanced/classroom
今回使った拡張部分の処理は、課題作成と言う処理で、動画が添付出来るということになります。
★ https://developers.google.com/classroom/reference/rest/v1/courses.courseWork/c
reate
さらに、通常プログラムを起動するのは、pc の操作員ですが、google のサーバが定期的に実行してくれるということになります。
★ https://developers.google.com/apps-script/guides/triggers(トリガー)

システム用語では、これは夜間バッチと呼んでおり、リソースや処理の混雑のない時間帯に行うもので、それら以外は、すべて google の web サービスの ui から作業員が行うものです。
ここからは、運用設計になります。
以前ユニットと表現したものを、教室備え付けのロボットと考え、その、ロボットを遠隔で操作するのが教師です。
ロボットは、その教室で行われる科目をすべて担当して、時間割の最初に録画を始めて次の時間割の直前に録画を終了します。
それらの動画が、ロボットに対応する classroom の、対応する科目に登録できるように準備するのが作業員の役目です。
その際、作るテーブルに必要な情報が教師に対応する classroom のコース id と科目のトピック id です。
作業員は、まず教師の classroom を全て作成(コース)して教師が担当する科目(トピック)を classroom の中に登録します。

47そして、 ロボットの個体数ぶん( 教室 ) のプロジェクトを作成して、それぞれのコンテナとなる Excel もどきのセルを使って時間割を作成します(次ページ画像)。
それぞれのプロジェクトの、起動はトリガーを追加して、google にまかせます。
時間割は、ロボットを操作する教師と、科目をセットで登録します(次ページ画像参照)。

8-2. 行った機能調査
・Zoom の機能使って解ったことは、動画が指定場所に保存できるということだった。
・動画のアップロードは google drive strram をインストールしたらできた。
ローカルフォルダに共有ドライブが現れるので、そこを Zoom の保存先として指定すればよい。
・動画を classroom へ投稿
google のドキュメントを読んで、検索して調べて試したらできた。
・https://logicalerror.seesaa.net/article/473808758.html
この時点では試しただけで、課題では無かった。
・https://logicalerror.seesaa.net/article/473924654.html
これは、ただの CRON のテスト
・https://logicalerror.seesaa.net/article/473936195.html

48固定値で動画投稿(この時点で、課題でしか投稿できないと解る)以上

49