リンクの添付ファイルを Classroom アドオンの添付ファイルにアップグレードする

教師が Classroom にサードパーティのコンテンツを追加する方法の一つとして、課題の作成ページでリンクをリンクの添付ファイルとして貼り付ける方法があります。教師がすでに使い慣れている機能を活用するため、教師がリンクの添付ファイルをアドオンの添付ファイルにアップグレードできるようにアドオンを設定できるようになりました。

概要

この機能を使用してアドオンを構成すると、教師が課題の作成ページにリンクの添付ファイルを貼り付けたときに、リンクをアドオンの添付ファイルにアップグレードするよう求めるメッセージが表示されます。教師にこのメッセージが表示されるのは、アドオンがすでにインストールされている場合のみです。

教師がリンクをアドオンの添付ファイルにアップグレードすることに同意すると、次のクエリ パラメータを使用してリンク アップグレード iframe が起動します。

  • courseId
  • itemId
  • itemType
  • addOnToken
  • urlToUpgrade
  • login_hint(ユーザーがアプリをすでに承認している場合のみ)

最初の 4 つのクエリ パラメータは、添付ファイル検出 iframe で起動されたクエリ パラメータを反映しています。urlToUpgrade クエリ パラメータは新しく、アドオンの添付ファイルの作成方法を評価するのに役立ちます。その後、他のクエリ パラメータを使用して、ユーザーがログインしているかどうかを確認し、itemType の値に基づいて courseWorkcourseWorkMaterials、または announcementsCreateAddOnAttachment メソッドを呼び出すことができます。iframe 内で読み込み画面を表示して、アドオンの添付ファイルが作成中であることを教師に知らせることができます。

アドオンの添付ファイルが作成されると、iframe が閉じられ、教師は通常どおりに課題で添付ファイルを表示できます。

技術的な実装の詳細

このセクションでは、この機能に関する重要な技術的な詳細について説明します。

urlToUpgrade クエリ パラメータを読み取る

urlToUpgrade クエリ パラメータは、リンク アップグレード iframe で渡されるときに URI エンコードされます。元の形式で取得するには、URL をデコードする必要があります。たとえば、JavaScript を使用している場合は、decodeURIComponent() 関数を使用してこれを行うことができます。

この機能で最適なユーザー エクスペリエンスを実現するため、アドオンの添付ファイルが正常に作成されたら、postMessage を 1 回送信します。これで iframe が閉じます。詳しくは、iframe 実装の詳細ページをご覧ください。

構成の詳細

この機能をアドオンに統合するには、次の構成が必要です。

  • Link Upgrade iframe の URL: 教師がアップグレードに同意したときに iframe で開く URL です。

  • Classroom が検出してアップグレードを試みる URL パターン: URL パターンは、ホストと複数のパス接頭辞で構成できます。

    • 複数の URL パターンを指定できます。
    • パス接頭辞を指定しない場合、ホストと一致する URL はすべてアップグレードできます。
    • https スキームの URL のみアップグレードできます。
    • URL パターンに localhost を含めることはできません。
    • パス接頭辞にクエリ パラメータや URL フラグメントを含めることはできません。
    • 現時点では、パス接頭辞はワイルドカードをサポートしていますが、ホストはサポートしていません。
      • example.com は有効なホストで、/foo/bar/*/baz は有効なパス接頭辞です。
      • example.*.host.com が有効なホストではありません。
    • パス接頭辞コンポーネント間のワイルドカードは、単一のコンポーネントにのみ一致し、スラッシュで区切られた複数のコンポーネントには一致しません。ホスト example.com とパス プレフィックス /bar/*/baz を含む URL パターンを考えてみましょう。
      • https://example.com/bar/123/baz は、URL パターンと一致します。
      • https://example.com/bar/123/baz/456/789 は、URL パターンと有効に一致します。
      • https://example.com/bar/123/456/baz は URL パターンと一致しません。パスのプレフィックスのワイルドカードが /123/456/ と一致しないためです。

開発プロセス

テスト用または本番環境用アドオンのリンク アップグレード iframe の URL と URL パターンを classroom-link-upgrade-external@google.com にメールで送信します。

Classroom アドオンを表す任意の Google Cloud プロジェクトの構成を指定できます。まず、非公開の可視性でアドオンの構成を指定することをおすすめします。これにより、本番環境のユーザーに影響を与えることなく、デモドメインで開発とテストを行うことができます。

構成が有効になると、メールで返信が届きます。localhost を使用する URL パターンは、この機能ではサポートされていません。

メールの形式を次のようにします。

Google Cloud Project number: GCP_PROJECT_NUMBER

Link Upgrade iframe URL: LINK_UPGRADE_IFRAME_URL

URL Patterns:
-   Host:HOST_1
-   Path prefixes:
  -   PATH_PREFIX_1
  -   PATH_PREFIX_2

-   Host:HOST_2
-   Path prefixes:
  -   PATH_PREFIX_3
  -   PATH_PREFIX_4

// add more hosts and path prefixes as needed

次のように置き換えます。

  • GCP_PROJECT_NUMBER: アドオンが関連付けられている Google Cloud プロジェクトの番号。
  • LINK_UPGRADE_IFRAME_URL: リンク アップグレード iframe で開く URL。
  • HOST_1: Classroom が検出するホスト。https スキームのみがサポートされています。
  • PATH_PREFIX_1PATH_PREFIX_2: Classroom が検出してアップグレードを試みる HOST_1 に関連付けられたパスの接頭辞。
  • HOST_2: Classroom が検出するホスト。https スキームのみがサポートされています。
  • PATH_PREFIX_3PATH_PREFIX_4: Classroom が検出してアップグレードを試みる HOST_2 に関連付けられたパスの接頭辞。

この機能を実装する際に考慮すべき提案事項を次に示します。

教師の負担を軽減する

必要に応じて、iframe を使用してログインを容易にするか、読み込みインジケーターを表示することを強くおすすめします。最適なユーザー エクスペリエンスを実現するため、教師が貼り付けたリンクをアドオンの添付ファイルにアップグレードすることに同意した後は、追加情報の入力を求めるメッセージが表示されないようにする必要があります。ただし、アドオンでこれができない場合は、Link Upgrade iframe を使用して必要な追加情報を収集できます。iframe は、リンクのアップグレードができない場合やエラーが発生した場合に、教師に通知するためにも使用できます。

ユーザー フレンドリーなアクセス エラー メッセージを含める

教師がアクセスできないリンクを貼り付けてアップグレードした場合、教師が問題を認識できるように、iframe にわかりやすいエラー メッセージを表示します。iframe を使用して、教師にコンテンツへのアクセス権限を付与することもできます。