はじめに

Classroom とサードパーティ製ツールの両方を活用している教師は、複数のプラットフォームにわたってコースと名簿を設定するという課題に直面します。これは、CSV アップロードを使用するか、メールアドレスを 1 つずつ入力して、手動で行うことができます。ただし、Classroom API を使用すると、サードパーティ ツールで API の最も一般的なユースケースである名簿のインポートと統合することで、教師の作業負荷を軽減できます。

名簿のインポートを使用すると、サードパーティのプラットフォームは、教師または管理者権限を使用して、コースのメタデータ、教師、生徒をコースごとに取得できます。教師は担当しているコースの詳細を取得できますが、管理者はドメイン全体のすべてのコースの詳細にアクセスできます。この柔軟性により、デベロッパーは管理者の認証情報を使用して、個々の教師レベルまたはドメイン全体で Classroom の名簿をプラットフォームにシームレスにオンボーディングできます。

名簿インポートの統合の技術的な詳細に入る前に、まずワークフローの例を確認しましょう。

  1. 教師は、サードパーティ製アプリで Classroom のコースをインポートするオプションを選択します。

  2. サードパーティ製アプリケーションが Classroom API を介して courses.list メソッドを呼び出すと、教師のすべてのコースを含むレスポンス JSON が返されます。

  3. この json レスポンスから、サードパーティ製アプリケーションに教師のコースのタイトルが表示され、そこからコースを選択できるようになります。次のステップに進むために、アプリケーションはコース ID を記録する必要があります。

  4. 選択したコース ID を使用して、サードパーティ製アプリケーションが students.list メソッドと teachers.list メソッドを呼び出し、教師がインポートを確認するためすべての名前をウェブサイトに表示します。

  5. サードパーティ アプリケーションは、students.listteachers.list のレスポンス JSON で返されたメールを使用して、プラットフォームに新しくインポートされたコースに参加するようユーザーを招待します。

ワークフローで言及されている各メソッドについては、API Explorer を使用して、各メソッドの動作を正確に確認できます。このガイドを完了する前に、次の資料を読むことをおすすめします。

  1. Classroom API でコースを管理する
  2. 生徒と教師の管理

上記で詳しく説明した名簿インポート ワークフローを要約した図。

はじめに

Classroom の名簿インポートの詳細を実装する前に、API を介して取得する必要があるコースとユーザー情報を決定する必要があります。利用可能なコース メタデータはリファレンス ドキュメントで確認できますが、必要な必須フィールドと共通フィールドの概要を以下に示します。

項目 使用
id 生徒または教師を取得する API リクエストに必須
name ウェブサイトに表示するなど、ユーザーにとっての使いやすさを重視して推奨します。
ownerId コースの主担任を正しく識別するためにドメイン全体でインポートする場合に必要です

このコース情報は、上記のワークフローの courses.list ステップで取得されます。このリクエストでは、特定のリクエスト パラメータを指定できます。この方法に必須のものではありませんが、推奨されるパラメータは次のとおりです。

パラメータ 使用
courseState 指定しない場合、API は 6 つすべての コース状態のコースを返します。ACTIVE を指定して、教師が現在使用しているコースを取得することをおすすめします。
pageSize 教師が独自のコースをインポートする場合は、API 呼び出しのレスポンス時間を短縮するために、小さい pageSize(10 未満)を指定することをおすすめします。
pageToken ページング リクエストを使用する場合は必須です。
teacherId ドメイン管理者がコースの講師を務めることが多いため、おすすめします。指定しない場合、リクエストはドメイン全体の教師のコースを返します。
fields API 呼び出しの応答時間を短縮することをおすすめします。

前の手順で取得したコース ID を使用して、そのコースの生徒と副担任のリストをアプリケーションで取得できるようになりました。teachers.liststudents.list で必須のクエリ パラメータはこのコース ID のみですが、API 呼び出しのレスポンス時間を短縮するために、同様に pageSize パラメータと fields パラメータを指定することも可能です。

生徒教師のリソースで利用可能なすべてのフィールドについては、それぞれのドキュメントをご覧ください。profile フィールド(profile.nameprofile.emailAddress)が最も一般的に使用され、通常は必須フィールドです。

項目 使用
profile.name ウェブサイトに表示するなど、ユーザーにとっての使いやすさを重視して推奨します。
profile.emailAddress 生徒を一意に識別するアプリケーションに必須

これらのコースや名簿の詳細を Classroom から取得して使用するには、アプリケーションでユーザーに承認をリクエストする必要があります。このワークフローの実装には、次の 3 つのスコープが必要です。

  • https://www.googleapis.com/auth/classroom.courses.readonly
    • Google Classroom のコースに対する読み取り専用アクセス権を付与します
  • https://www.googleapis.com/auth/classroom.rosters.readonly
    • Google Classroom コース(教師と生徒)の名簿に対する読み取り専用アクセス権を付与します
  • https://www.googleapis.com/auth/classroom.profile.emails
    • 教師と生徒の email プロパティに対する読み取りアクセス権を付与します。

Pub/Sub 通知による名簿の同期

学年度の進展に合わせて、生徒がコースを脱退または追加することで、名簿が変更されることがあります。Pub/Sub 通知を追加すると、サードパーティ アプリケーションと Classroom の名簿の同期を維持できます。通知を受け取るには、Google Cloud Pub/Sub トピックを設定し、Classroom API にトピックを登録します。この登録は、Classroom が、指定されたフィードから特定のトピックにデータを送信するリクエストです。このフィードが、教師の Classroom の名簿と再同期するためのイベント トリガーになります。

プッシュ通知を使用するには、追加のスコープが 1 つ必要です(検証のために送信する必要はありません)。

  • https://www.googleapis.com/auth/classroom.push-notifications
    • プッシュ通知アクティビティの登録をアプリに許可します

プッシュ通知を使用した名簿インポート ワークフローを要約した図

Classroom のプッシュ通知との統合方法について詳しくは、プッシュ通知の管理に関するガイドをご覧ください。