はじめに

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

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

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

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

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

  3. JSON レスポンスから、サードパーティ製アプリケーションは教師のコースのタイトルを表示し、教師が 1 つ選択できるようにします。次のステップに進むには、アプリケーションでコース ID を追跡する必要があります。

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

  5. students.list レスポンス JSON と teachers.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 を使用して、アプリケーションでそのコースの生徒と副教師のリストを取得できるようになりました。このコース ID は teachers.liststudents.list に必要な唯一のクエリ パラメータですが、API 呼び出しのレスポンス時間を短縮するために、pageSize パラメータと fields パラメータを指定することも検討してください。

生徒リソースと教師リソースで使用可能なすべてのフィールドは、それぞれのドキュメントに記載されています。最もよく使用され、通常必要な 2 つのフィールドは 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
    • 教師と生徒の メール プロパティへの読み取りアクセスを提供します

Pub/Sub 通知で名簿を同期する

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

プッシュ通知を利用するには、検証のために送信する必要のない追加のスコープが 1 つ必要です。

  • https://www.googleapis.com/auth/classroom.push-notifications
    • アプリがプッシュ通知アクティビティに登録できるようにします

プッシュ通知による名簿のインポート ワークフローをまとめた図

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