はじめに

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

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

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

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

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

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

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

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

ワークフローで説明した各メソッドについて、API Explorer を使用して、各メソッドの動作を正確に確認できます。このガイドを読み終える前に、次の資料を事前に読んでおくことをおすすめします。

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

上記の名簿インポート ワークフローをまとめた図。

スタートガイド

Google Classroom の名簿のインポートの詳細を実装する前に、API を介して取得する必要があるコースとユーザーの情報を特定する必要があります。利用可能なコースのメタデータについては、リファレンス ドキュメントをご覧ください。必要なフィールドや一般的なフィールドの一部を以下にまとめます。

フィールド 使用
id 生徒または教師を取得する API リクエストに必要
name ユーザーの使いやすさ(ウェブサイトでの表示など)を考慮して推奨
ownerId コースのメインの教師を正しく特定するために、ドメイン全体でインポートする場合は必須

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

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

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

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

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

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

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

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

プッシュ通知による名簿のインポート ワークフローの概要図

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