はじめに

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 呼び出しのレスポンス時間を短縮するために、小さい(10 未満)pageSize を指定することをおすすめします。
pageToken ページングされたリクエストを使用する場合は必須です。
teacherId ドメイン管理者はコースを教えることが多いため、推奨されます。指定しない場合は、ドメイン全体の教師向けコースが返されます。
fields API 呼び出しのレスポンス時間を短縮することをおすすめします。

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

生徒リソースと教師リソースで使用可能なフィールドはすべて、それぞれのドキュメントで確認できます。profile フィールドには、最もよく使用され、通常は必須となる 2 つのフィールド(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 名簿との再同期イベント トリガーになります。

プッシュ通知を使用するには、追加のスコープが必要です。このスコープは、確認のために送信する必要はありません。

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

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

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