(57)【要約】  本出願は、教員によって生成された課題に関連する進捗追跡を可能にするクライアント−サーバアーキテクチャに関する。ハンドアウトは、ハンドインのためのプレースホルダ及び／又は課題の一部として生徒によって実施されるアクティビティを指定する添付ファイルを含むことができる。いくつかのアクティビティは、クライアントデバイスのバックグラウンドで実行しているデーモンに提供される進捗追跡情報をアプリケーションに生成させるソフトウェアフレームワークの少なくとも一部分を実装する、第三者アプリケーションを使用して実施され得る。デーモン及び／又はクライアントアプリケーションは、１つ以上のネットワークサービスとインタフェースして、教員が進捗追跡情報を利用することを可能にする。ネットワークサービスは、生徒のグループに割り当てられるハンドアウトを生成するために利用されるハンドアウトサービスを含むことができる。ネットワークサービスはまた、複数のクライアントデバイスから受信された進捗追跡情報を処理するように構成された、いくつかのサービスを含む進捗パイプラインを含むことができる。
2021518940.tif 000002
【特許請求の範囲】
【請求項１】
クライアントデバイス上での生徒のアクティビティを追跡するための方法であって、前記方法は、前記クライアントデバイス上で実行しているバックグラウンドプロセスによって、
前記クライアントデバイス上の１つ以上のアプリケーションから生徒のアクティビティに関連する進捗追跡情報を受信することと、
フィルタリングされた進捗追跡情報を生成するために、前記進捗追跡情報をフィルタリングすることと、
前記フィルタリングされた進捗追跡情報をリモートデータベースに記憶することと、
フィルタリングされた前記進捗追跡情報に関連付けられたメタデータを生成することと、
ネットワークを介して前記クライアントデバイスによってアクセス可能な少なくとも１つのサービスに前記メタデータを送信することと、
を含む、方法。
【請求項２】
前記１つ以上のアプリケーションの各アプリケーションは、前記アプリケーションに、前記アプリケーション内で実施された動作に応答して、前記バックグラウンドプロセスへのアプリケーションプログラミングインタフェース（ＡＰＩ）コールを生成させる、ソフトウェアフレームワークの少なくとも一部分を実装する、請求項１に記載の方法。
【請求項３】
前記進捗追跡情報をフィルタリングすることは、
前記１つ以上のアプリケーションのそれぞれについて進捗追跡が有効にされているか、又は無効にされているかを判定することと、
進捗追跡が無効にされている任意のアプリケーションから前記進捗追跡情報が受信されたときに、前記進捗追跡情報を破棄すること、又は
進捗追跡が有効にされている任意のアプリケーションから前記進捗追跡情報が受信されたときに、前記進捗追跡情報を処理して、前記フィルタリングされた進捗追跡情報を生成することと、
を含む、請求項１に記載の方法。
【請求項４】
前記進捗追跡情報をフィルタリングすることは、
前記１つ以上のアプリケーションに関連付けられたアクティブなコンテキストのリストを受信することと、
前記進捗追跡情報に含まれるコンテキスト識別子をアクティブなコンテキストの前記リストと比較することと、
前記コンテキスト識別子がアクティブなコンテキストの前記リストに含まれていないときに、前記進捗追跡情報を破棄すること、又は
前記コンテキスト識別子がアクティブなコンテキストの前記リストに含まれているときに、前記進捗追跡情報を処理して、前記フィルタリングされた進捗追跡情報を生成することと、
を含む、請求項１に記載の方法。
【請求項５】
前記リモートデータベースに記憶された前記進捗追跡情報は、前記リモートデータベースの各ゾーンのディスク暗号化を使用してセキュリティ保護されている、請求項１に記載の方法。
【請求項６】
前記リモートデータベースは、異なるデータを記憶する複数のゾーンに分割されたネットワークベースの記憶サービスであり、各ゾーンは、組織識別子、クラス識別子、ユーザ識別子、コンテキスト識別子、又はハンドアウト識別子のうちの少なくとも１つの任意の組み合わせに範囲が限定されている、請求項１に記載の方法。
【請求項７】
前記進捗追跡情報は、前記ネットワークベースの記憶サービス内の個人ゾーンに記憶されており、前記個人ゾーンは、前記クライアントデバイスにインストールされたクライアントアプリケーションに関連付けられたユーザアカウントの特定のユーザ識別子に関連付けられている、請求項６に記載の方法。
【請求項８】
前記メタデータは、前記リモートデータベース内の前記進捗追跡情報への参照と、クラス識別子、ユーザ識別子、又はコンテキスト識別子のうちの少なくとも１つと、を含む、請求項１に記載の方法。
【請求項９】
前記コンテキスト識別子は、前記メタデータに含まれている、請求項８に記載の方法。
【請求項１０】
命令を記憶するように構成された少なくとも１つの非一時的なコンピュータ可読記憶媒体であって、前記命令は、クライアントデバイスに含まれる少なくとも１つのプロセッサによって実行されると、前記クライアントデバイスに、前記クライアントデバイス上で実行されるバックグラウンドプロセスを実装させ、前記バックグラウンドプロセスは、ステップを実行することにより、前記クライアントデバイス上での生徒のアクティビティを追跡し、前記ステップは、
前記クライアントデバイス上の１つ以上のアプリケーションから生徒のアクティビティに関連する進捗追跡情報を受信することと、
フィルタリングされた進捗追跡情報を生成するために、前記進捗追跡情報をフィルタリングすることと、
前記フィルタリングされた進捗追跡情報をリモートデータベースに記憶することと、
前記フィルタリングされた進捗追跡情報に関連付けられたメタデータを生成することと、
ネットワークを介して前記クライアントデバイスによってアクセス可能な少なくとも１つのサービスに前記メタデータを送信することと、
を含む、少なくとも１つの非一時的なコンピュータ可読記憶媒体。
【請求項１１】
前記１つ以上のアプリケーションの各アプリケーションは、前記アプリケーションに、前記アプリケーション内で実施された動作に応答して、前記バックグラウンドプロセスへのアプリケーションプログラミングインタフェース（ＡＰＩ）コールを生成させる、ソフトウェアフレームワークの少なくとも一部分を実装する、請求項１０に記載の少なくとも１つの非一時的なコンピュータ可読記憶媒体。
【請求項１２】
前記進捗追跡情報をフィルタリングすることは、
前記１つ以上のアプリケーションのそれぞれについて進捗追跡が有効にされているか、又は無効にされているかを判定することと、
進捗追跡が無効にされている任意のアプリケーションから前記進捗追跡情報が受信されたときに、前記進捗追跡情報を破棄すること、又は
進捗追跡が有効にされている任意のアプリケーションから前記進捗追跡情報が受信されたときに、前記進捗追跡情報を処理して、前記フィルタリングされた進捗追跡情報を生成することと、
を含む、請求項１０に記載の少なくとも１つの非一時的なコンピュータ可読記憶媒体。
【請求項１３】
前記進捗追跡情報をフィルタリングすることは、
前記１つ以上のアプリケーションに関連付けられたアクティブなコンテキストのリストを受信することと、
前記進捗追跡情報に含まれるコンテキスト識別子をアクティブなコンテキストの前記リストと比較することと、
前記コンテキスト識別子がアクティブなコンテキストの前記リストに含まれていないときに、前記進捗追跡情報を破棄すること、又は
前記コンテキスト識別子がアクティブなコンテキストの前記リストに含まれているときに、前記進捗追跡情報を処理して、前記フィルタリングされた進捗追跡情報を生成することと、
を含む、請求項１０に記載の少なくとも１つの非一時的なコンピュータ可読記憶媒体。
【請求項１４】
前記リモートデータベースに記憶された前記進捗追跡情報は、前記リモートデータベースの各ゾーンのディスク暗号化を使用してセキュリティ保護されている、請求項１０に記載の少なくとも１つの非一時的なコンピュータ可読記憶媒体。
【請求項１５】
前記リモートデータベースは、異なるデータを記憶する複数のゾーンに分割されたネットワークベースの記憶サービスであり、各ゾーンは、組織識別子、クラス識別子、ユーザ識別子、コンテキスト識別子、又はハンドアウト識別子のうちの少なくとも１つの任意の組み合わせに範囲が限定されている、請求項１０に記載の少なくとも１つの非一時的なコンピュータ可読記憶媒体。
【請求項１６】
前記進捗追跡情報は、前記ネットワークベースの記憶サービス内の個人ゾーンに記憶されており、前記個人ゾーンは、前記クライアントデバイスにインストールされたクライアントアプリケーションに関連付けられたユーザアカウントの特定のユーザ識別子に関連付けられている、請求項１５に記載の少なくとも１つの非一時的なコンピュータ可読記憶媒体。
【請求項１７】
前記メタデータは、前記リモートデータベース内の前記進捗追跡情報への参照と、クラス識別子、ユーザ識別子、又はコンテキスト識別子のうちの少なくとも１つと、を含む、請求項１０に記載の少なくとも１つの非一時的なコンピュータ可読記憶媒体。
【請求項１８】
前記コンテキスト識別子は、前記メタデータに含まれている、請求項１７に記載の少なくとも１つの非一時的なコンピュータ可読記憶媒体。
【請求項１９】
生徒のアクティビティを追跡するように構成されたクライアントデバイスであって、前記クライアントデバイスは、
少なくとも１つのプロセッサと、
命令を記憶する少なくとも１つのメモリと、を備え、前記命令は、前記少なくとも１つのプロセッサによって実行されると、前記クライアントデバイスに、ステップを実行するバックグラウンドプロセスを実装させ、前記ステップは、
前記クライアントデバイス上の１つ以上のアプリケーションから生徒のアクティビティに関連する進捗追跡情報を受信することと、
フィルタリングされた進捗追跡情報を生成するために、前記進捗追跡情報をフィルタリングすることと、
前記フィルタリングされた進捗追跡情報をリモートデータベースに記憶することと、
前記フィルタリングされた進捗追跡情報に関連付けられたメタデータを生成することと、
ネットワークを介して前記クライアントデバイスによってアクセス可能な少なくとも１つのサービスに前記メタデータを送信することと、
を含む、クライアントデバイス。
【請求項２０】
前記１つ以上のアプリケーションの各アプリケーションは、前記アプリケーションに、前記アプリケーション内で実施された動作に応答して、前記バックグラウンドプロセスへのアプリケーションプログラミングインタフェース（ＡＰＩ）コールを生成させる、ソフトウェアフレームワークの少なくとも一部分を実装する、請求項１９に記載のクライアントデバイス。
【請求項２１】
前記進捗追跡情報をフィルタリングすることは、
前記１つ以上のアプリケーションのそれぞれについて進捗追跡が有効にされているか、又は無効にされているかを判定することと、
進捗追跡が無効にされている任意のアプリケーションから前記進捗追跡情報が受信されたときに、前記進捗追跡情報を破棄すること、又は
進捗追跡が有効にされている任意のアプリケーションから前記進捗追跡情報が受信されたときに、前記進捗追跡情報を処理して、前記フィルタリングされた進捗追跡情報を生成することと、
を含む、請求項１９に記載のクライアントデバイス。
【請求項２２】
前記進捗追跡情報をフィルタリングすることは、
前記１つ以上のアプリケーションに関連付けられたアクティブなコンテキストのリストを受信することと、
前記進捗追跡情報に含まれるコンテキスト識別子をアクティブなコンテキストの前記リストと比較することと、
前記コンテキスト識別子がアクティブなコンテキストの前記リストに含まれていないときに、前記進捗追跡情報を破棄すること、又は
前記コンテキスト識別子がアクティブなコンテキストの前記リストに含まれているときに、前記進捗追跡情報を処理して、フィルタリングされた前記進捗追跡情報を生成することと、
を含む、請求項１９に記載のクライアントデバイス。
【請求項２３】
前記リモートデータベースに記憶された前記進捗追跡情報は、前記リモートデータベースの各ゾーンのディスク暗号化を使用してセキュリティ保護されている、請求項１９に記載のクライアントデバイス。
【請求項２４】
前記リモートデータベースは、異なるデータを記憶する複数のゾーンに分割されたネットワークベースの記憶サービスであり、各ゾーンは、組織識別子、クラス識別子、ユーザ識別子、コンテキスト識別子、又はハンドアウト識別子のうちの少なくとも１つの任意の組み合わせに範囲が限定されている、請求項１９に記載のクライアントデバイス。
【請求項２５】
前記進捗追跡情報は、前記ネットワークベースの記憶サービス内の個人ゾーンに記憶されており、前記個人ゾーンは、前記クライアントデバイスにインストールされたクライアントアプリケーションに関連付けられたユーザアカウントの特定のユーザ識別子に関連付けられている、請求項２４に記載のクライアントデバイス。
【請求項２６】
前記メタデータは、前記リモートデータベース内の前記進捗追跡情報への参照と、クラス識別子、ユーザ識別子、又はコンテキスト識別子のうちの少なくとも１つと、を含む、請求項１９に記載のクライアントデバイス。
【請求項２７】
前記コンテキスト識別子は、前記メタデータに含まれている、請求項２６に記載のクライアントデバイス。
【請求項２８】
ネットワークを介して利用可能な１つ以上のサービスを利用して進捗追跡情報を処理するための方法であって、前記方法は、
複数のクライアントデバイスから進捗追跡情報に対応するメタデータを受信することと、
組織識別子によって識別される特定の組織のための追跡ウィンドウ中に受信された前記メタデータのサブセットを含むデータ構造を生成することと、
前記データ構造を処理して、クラス識別子及びコンテキスト識別子に基づいて、ソートされたメタデータを生成することと、
前記ソートされたメタデータに対応する前記進捗追跡情報を、サービスによってアクセス可能なメモリに記憶することと、
を含む、方法。
【請求項２９】
前記メタデータを拡充して、追加の情報を含めることを更に含む、請求項２８に記載の方法。
【請求項３０】
前記追加の情報は、前記組織識別子、ディレクトリサービス識別子、又はハンドアウト識別子のうちの少なくとも１つを含む、請求項２９に記載の方法。
【請求項３１】
前記１つ以上のサービスは、オンランプサービス、拡充サービス、分散型ファイルシステム、集約サービス、オフランプサービス、及び保管サービスのうちの少なくとも１つを含む、請求項２８に記載の方法。
【請求項３２】
命令を記憶するように構成された少なくとも１つの非一時的なコンピュータ可読記憶媒体であって、前記命令は、コンピューティングデバイスに含まれる少なくとも１つのプロセッサによって実行されると、前記コンピューティングデバイスに、ステップを実行することにより、ネットワークを介して利用可能な１つ以上のサービスを利用して進捗追跡情報を処理させ、前記ステップは、
複数のクライアントデバイスから進捗追跡情報に対応するメタデータを受信することと、
組織識別子によって識別される特定の組織のための追跡ウィンドウ中に受信された前記メタデータのサブセットを含むデータ構造を生成することと、
前記データ構造を処理して、クラス識別子及びコンテキスト識別子に基づいて、ソートされたメタデータを生成することと、
ソートされた前記メタデータに対応する前記進捗追跡情報を、サービスによってアクセス可能なメモリに記憶することと、
を含む、少なくとも１つの非一時的なコンピュータ可読記憶媒体。
【請求項３３】
前記ステップは、
前記メタデータを拡充して、追加の情報を含めることを更に含む、請求項３２に記載の少なくとも１つの非一時的なコンピュータ可読記憶媒体。
【請求項３４】
前記追加の情報は、前記組織識別子、ディレクトリサービス識別子、又はハンドアウト識別子のうちの少なくとも１つを含む、請求項３３に記載の少なくとも１つの非一時的なコンピュータ可読記憶媒体。
【請求項３５】
前記１つ以上のサービスは、オンランプサービス、拡充サービス、分散型ファイルシステム、集約サービス、オフランプサービス、及び保管サービスのうちの少なくとも１つを含む、請求項３２に記載の少なくとも１つの非一時的なコンピュータ可読記憶媒体。
【請求項３６】
ネットワークを介して利用可能な１つ以上のサービスを利用して進捗追跡情報を処理するように構成されたコンピューティングデバイスであって、前記コンピューティングデバイスは
少なくとも１つのプロセッサと、
命令を記憶する少なくとも１つのメモリと、を備え、前記命令は、前記少なくとも１つのプロセッサによって実行されると、前記コンピューティングデバイスに、
複数のクライアントデバイスから進捗追跡情報に対応するメタデータを受信させ、
組織識別子によって識別される特定の組織のための追跡ウィンドウ中に受信された前記メタデータのサブセットを含むデータ構造を生成させ、
前記データ構造を処理させ、クラス識別子及びコンテキスト識別子に基づいて、ソートされたメタデータを生成させ、
ソートされた前記メタデータに対応する前記進捗追跡情報を、サービスによってアクセス可能なメモリに記憶させる、
コンピューティングデバイス。
【請求項３７】
前記少なくとも１つのプロセッサは更に、前記コンピューティングデバイスに、
前記メタデータを拡充させて、追加の情報を含めさせる、請求項３６に記載のコンピューティングデバイス。
【請求項３８】
前記追加の情報は、前記組織識別子、ディレクトリサービス識別子、又はハンドアウト識別子のうちの少なくとも１つを含む、請求項３７に記載のコンピューティングデバイス。
【請求項３９】
前記１つ以上のサービスは、オンランプサービス、拡充サービス、分散型ファイルシステム、集約サービス、オフランプサービス、及び保管サービスのうちの少なくとも１つを含む、請求項３６に記載のコンピューティングデバイス。
【請求項４０】
１つ以上のデジタルハンドアウトを割り当てられた生徒の進捗を追跡するための方法であって、前記方法は、ネットワークに接続された少なくとも１つのサーバデバイスによって、
前記１つ以上のデジタルハンドアウトを完了する生徒の進捗を追跡するためのサービスを実装することを含み、前記サービスは、
前記１つ以上のデジタルハンドアウトを作成し、少なくとも１つのクライアントデバイスにインストールされた１つ以上のアプリケーションに関連付けられたコンテキストにリンクすることを可能にする、ハンドアウトサービスであって、前記１つ以上のアプリケーションの各アプリケーションは、ソフトウェアフレームワークの少なくとも一部分を実装する、ハンドアウトサービスと、
前記少なくとも１つのクライアントデバイスにインストールされた前記１つ以上のアプリケーションによって生成された進捗追跡情報を処理するように構成された複数のサービスを含む進捗パイプラインと、
を含む、方法。
【請求項４１】
前記進捗パイプラインは、第１のサービスを含み、前記第１のサービスは、
進捗追跡情報に対応するメタデータを受信し、
ユーザ識別子をディレクトリサービス識別子又は内部識別子に置き換えることにより、前記メタデータに含まれる前記ユーザ識別子を逆参照し、
前記ユーザ識別子、前記ディレクトリサービス識別子、又は前記内部識別子のうちの１つについて進捗追跡が有効にされているか、又は無効にされているかを判定し、
前記判定に基づいて前記メタデータをフィルタリングする、
ように構成されている、請求項４０に記載の方法。
【請求項４２】
前記進捗パイプラインは、第２のサービスを含み、前記第２のサービスは、
組織識別子、前記ディレクトリサービス識別子、前記内部識別子、又はハンドアウト識別子のうちの少なくとも１つで前記メタデータを拡充するように構成されている、請求項４１に記載の方法。
【請求項４３】
前記進捗パイプラインは、第２のサービスを含み、前記第２のサービスは、
少なくとも１つのジャーナルノードを含む分散型ファイルシステムから、追跡ウィンドウに対応するメタデータのサブセットを取得し、
メタデータの前記サブセットに含まれる特定の組織識別子に関連付けられた、メタデータの前記サブセットを含むデータ構造を生成し、
前記データ構造を記憶サービスに記憶し、
前記データ構造に対応する参照を待ち行列にプッシュする、
ように構成されている、請求項４１に記載の方法。
【請求項４４】
前記進捗パイプラインは、第２のサービスを含み、前記第２のサービスは、
データ構造を処理して、クラス識別子、ハンドアウト識別子、コンテキスト識別子、前記ユーザ識別子、前記ディレクトリサービス識別子、又は前記内部識別子のうちの少なくとも１つに基づいて、ソートされたメタデータを生成する、
ように構成されている、請求項４１に記載の方法。
【請求項４５】
前記進捗パイプラインは、第２のサービスを含み、前記第２のサービスは、
前記ユーザ識別子、前記ディレクトリサービス識別子、又は前記内部識別子のうちの１つに関連付けられた進捗識別子に前記進捗追跡情報を関連付け、
前記進捗追跡情報及び前記進捗識別子をネットワークベースの記憶サービスに記憶する、
ように構成されている、請求項４１に記載の方法。
【請求項４６】
各クライアントデバイスは、前記クライアントデバイスのローカルデータベースに記憶されたデータを、前記データが第２のクライアントデバイスによってアクセスされ得るように、リモートデータベースに対して同期させるように構成されたデーモンを含む、請求項４０に記載の方法。
【請求項４７】
命令を記憶するように構成された少なくとも１つの非一時的なコンピュータ可読記憶媒体であって、前記命令は、コンピューティングデバイスに含まれる少なくとも１つのプロセッサによって実行されると、前記コンピューティングデバイスに、ステップを実行することにより、１つ以上のデジタルハンドアウトが割り当てられた生徒の進捗を追跡させ、前記ステップは、
前記１つ以上のデジタルハンドアウトを完了する生徒の進捗を追跡するためのサービスを実装することを含み、前記サービスは、
前記１つ以上のデジタルハンドアウトを作成し、少なくとも１つのクライアントデバイスにインストールされた１つ以上のアプリケーションに関連付けられたコンテキストにリンクすることを可能にする、ハンドアウトサービスであって、前記１つ以上のアプリケーションの各アプリケーションは、ソフトウェアフレームワークの少なくとも一部分を実装する、ハンドアウトサービスと、
前記少なくとも１つのクライアントデバイスにインストールされた前記１つ以上のアプリケーションによって生成された進捗追跡情報を処理するように構成された複数のサービスを含む進捗パイプラインと、
を含む、少なくとも１つの非一時的なコンピュータ可読記憶媒体。
【請求項４８】
前記進捗パイプラインは、第１のサービスを含み、前記第１のサービスは、
進捗追跡情報に対応するメタデータを受信し、
ユーザ識別子をディレクトリサービス識別子又は内部識別子に置き換えることにより、前記メタデータに含まれる前記ユーザ識別子を逆参照し、
前記ユーザ識別子、前記ディレクトリサービス識別子、又は前記内部識別子のうちの１つについて進捗追跡が有効にされているか、又は無効にされているかを判定し、
前記判定に基づいて前記メタデータをフィルタリングする、ように構成されている、請求項４７に記載の少なくとも１つの非一時的なコンピュータ可読記憶媒体。
【請求項４９】
前記進捗パイプラインは、第２のサービスを含み、前記第２のサービスは、
組織識別子、前記ディレクトリサービス識別子、前記内部識別子、又はハンドアウト識別子のうちの少なくとも１つで前記メタデータを拡充するように構成されている、請求項４８に記載の少なくとも１つの非一時的なコンピュータ可読記憶媒体。
【請求項５０】
前記進捗パイプラインは、第２のサービスを含み、前記第２のサービスは、
少なくとも１つのジャーナルノードを含む分散型ファイルシステムから、追跡ウィンドウに対応するメタデータのサブセットを取得し、
メタデータの前記サブセットに含まれる特定の組織識別子に関連付けられた、メタデータの前記サブセットを含むデータ構造を生成し、
前記データ構造を記憶サービスに記憶し、
前記データ構造に対応する参照を待ち行列にプッシュする、
ように構成されている、請求項４８に記載の少なくとも１つの非一時的なコンピュータ可読記憶媒体。
【請求項５１】
前記進捗パイプラインは、第２のサービスを含み、前記第２のサービスは、
データ構造を処理して、クラス識別子、ハンドアウト識別子、コンテキスト識別子、前記ユーザ識別子、前記ディレクトリサービス識別子、又は前記内部識別子のうちの少なくとも１つに基づいて、ソートされたメタデータを生成する、
ように構成されている、請求項４８に記載の少なくとも１つの非一時的なコンピュータ可読記憶媒体。
【請求項５２】
前記進捗パイプラインは、第２のサービスを含み、前記第２のサービスは、
前記ユーザ識別子、前記ディレクトリサービス識別子、又は前記内部識別子のうちの１つに関連付けられた進捗識別子に前記進捗追跡情報を関連付け、
前記進捗追跡情報及び前記進捗識別子をネットワークベースの記憶サービスに記憶する、
ように構成されている、請求項４８に記載の少なくとも１つの非一時的なコンピュータ可読記憶媒体。
【請求項５３】
各クライアントデバイスは、前記クライアントデバイスのローカルデータベースに記憶されたデータを、前記データが第２のクライアントデバイスによってアクセスされ得るように、リモートデータベースに対して同期させるように構成されたデーモンを含む、請求項４７に記載の少なくとも１つの非一時的なコンピュータ可読記憶媒体。
【請求項５４】
１つ以上のデジタルハンドアウトを割り当てられた生徒の進捗を追跡するためのシステムであって、前記システムは、
ネットワークに接続され、前記１つ以上のデジタルハンドアウトを完了する生徒の進捗を追跡するためのサービスを実装するように構成された１つ以上のサーバデバイスを備え、前記サービスは、
前記１つ以上のデジタルハンドアウトを作成し、少なくとも１つのクライアントデバイスにインストールされた１つ以上のアプリケーションに関連付けられたコンテキストにリンクすることを可能にする、ハンドアウトサービスであって、前記１つ以上のアプリケーションの各アプリケーションは、ソフトウェアフレームワークの少なくとも一部分を実装する、ハンドアウトサービスと、
前記少なくとも１つのクライアントデバイスにインストールされた前記１つ以上のアプリケーションによって生成された進捗追跡情報を処理するように構成された複数のサービスを含む進捗パイプラインと、
を含む、システム。
【請求項５５】
前記進捗パイプラインは、第１のサービスを含み、前記第１のサービスは、
進捗追跡情報に対応するメタデータを受信し、
ユーザ識別子をディレクトリサービス識別子又は内部識別子に置き換えることにより、前記メタデータに含まれる前記ユーザ識別子を逆参照し、
前記ユーザ識別子、前記ディレクトリサービス識別子、又は前記内部識別子のうちの１つについて進捗追跡が有効にされているか、又は無効にされているかを判定し、
前記判定に基づいて前記メタデータをフィルタリングするように構成されている、請求項５４に記載のシステム。
【請求項５６】
前記進捗パイプラインは、第２のサービスを含み、前記第２のサービスは、
組織識別子、前記ディレクトリサービス識別子、前記内部識別子、又はハンドアウト識別子のうちの少なくとも１つで前記メタデータを拡充するように構成されている、請求項５５に記載のシステム。
【請求項５７】
前記進捗パイプラインは、第２のサービスを含み、前記第２のサービスは、
少なくとも１つのジャーナルノードを含む分散型ファイルシステムから、追跡ウィンドウに対応するメタデータのサブセットを取得し、
メタデータの前記サブセットに含まれる特定の組織識別子に関連付けられた、メタデータの前記サブセットを含むデータ構造を生成し、
前記データ構造を記憶サービスに記憶し、
前記データ構造に対応する参照を待ち行列にプッシュする、
ように構成されている、請求項５５に記載のシステム。
【請求項５８】
前記進捗パイプラインは、第２のサービスを含み、前記第２のサービスは、
データ構造を処理して、クラス識別子、ハンドアウト識別子、コンテキスト識別子、前記ユーザ識別子、前記ディレクトリサービス識別子、又は前記内部識別子のうちの少なくとも１つに基づいて、ソートされたメタデータを生成する、
ように構成されている、請求項５５に記載のシステム。
【請求項５９】
前記進捗パイプラインは、第２のサービスを含み、前記第２のサービスは、
前記ユーザ識別子、前記ディレクトリサービス識別子、又は前記内部識別子のうちの１つに関連付けられた進捗識別子に前記進捗追跡情報を関連付け、
前記進捗追跡情報及び前記進捗識別子をネットワークベースの記憶サービスに記憶する、
ように構成されている、請求項５５に記載のシステム。
【請求項６０】
各クライアントデバイスは、前記クライアントデバイスのローカルデータベースに記憶されたデータを、前記データが第２のクライアントデバイスによってアクセスされ得るように、リモートデータベースに対して同期させるように構成されたデーモンを含む、請求項５４に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
記載される実施形態は、概して、教室環境に様々な技術を実装するように構成されたソフトウェアフレームワークに関する。特に、本実施形態は、複数の生徒についてオンライン課題の完了の進捗に関連する情報を追跡及び報告することに関する。
【背景技術】
【０００２】
テレビ、投影システム、及びテープデッキなどの音声視覚（ＡＶ）デバイスの発明以来、学区及び教員は、これらのデバイスを利用して、新しく魅力ある方法で生徒に情報を提供する教材を授業計画に組み込んできている。教員は、単に教科書、講義、及び書面による課題に限定されない。情報化時代の到来により、インターネットは、教室の新しい局面を開いている。今では、教員は、魅力ある生産的な対話式の授業計画を作成するために、ほぼ無制限の情報リソースから抽出することができる。
【０００３】
しかし、これらの授業計画を開発する際に教員が利用可能なツールは限定されている。例えば、Ｗｉｋｉｐｅｄｉａ（登録商標）の記事は、特定の教科に関する有用な背景資料を提供する場合がある。それにもかかわらず、教員は、生徒と記事を共有するための良好なオプションを有していない場合がある。教員は、紙のハンドアウトに記事を印刷することができ、これは、そのような教材を生徒に配布する従来の方法である。しかし、この方法は、不経済であり、オンラインで提示されるような記事の対話式要素（例えば、アニメーション、ハイパーリンクなど）の一部を失う。あるいは、教員は、家庭の又は学校が提供したコンピューティングデバイスで閲覧するために、記事のハイパーリンクを彼らの生徒のそれぞれに電子メールで送信することができる。そのような方法は、生徒が、適切なコンテキスト内で記事を閲覧して記事に埋め込まれた対話式要素と対話することを可能にするが、各生徒がハイパーリンクをクリックしたかどうか、さらには各生徒が実際に記事全体を通読したかどうかを、教員が追跡する方法がない。
【発明の概要】
【０００４】
この書類は、教員によって生成された課題に関連する進捗追跡を可能にするクライアント−サーバアーキテクチャに関する様々な実施形態を説明する。ハンドアウトは、ハンドインのためのプレースホルダ及び／又は課題の一部として生徒によって実施されるアクティビティを指定する添付ファイルを含むことができる。いくつかのアクティビティは、クライアントデバイスのバックグラウンドで実行しているデーモンに提供される進捗追跡情報をアプリケーションに生成させるソフトウェアフレームワークの少なくとも一部分を実装する第三者アプリケーションを使用して実施され得る。デーモン及び／又はクライアントアプリケーションは、１つ以上のネットワークサービスとインタフェースして、教員が進捗追跡情報を利用することを可能にする。ネットワークサービスは、生徒のグループに割り当てられるハンドアウトを生成するために利用される、ハンドアウトサービスを含むことができる。ネットワークサービスはまた、複数のクライアントデバイスから受信された進捗追跡情報を処理するように構成されたいくつかのサービスを含む進捗パイプラインを含むことができる。
【０００５】
いくつかの実施形態では、クライアントデバイスは、プロセッサ、メモリ、及びディスプレイを含む。メモリは、オペレーティングシステム、クライアントアプリケーション、デーモン、及び１つ以上の第三者アプリケーションを含むことができ、そのような第三者アプリケーションは、ソフトウェアフレームワークの少なくとも一部分を実装する少なくとも１つの進捗アプリケーションを含む。ソフトウェアフレームワークは、進捗アプリケーションがクライアントアプリケーション及び／又はデーモンに提供する１つ以上のコンテキストに関連する進捗追跡情報を進捗アプリケーションが生成することを可能にする。コンテキストは一般に、進捗アプリケーション内で生徒によって完了され得るアクティビティをクライアントアプリケーションが定義できるように、進捗アプリケーションの少なくとも一部分の構造を定義する。
【０００６】
いくつかの実施形態では、デーモンは、バックグラウンドプロセスとして実行され、１つ以上のアプリケーションから進捗追跡情報を受信し、進捗追跡情報をフィルタリングし、進捗追跡情報をリモートデータベースに記憶し、進捗追跡情報に関連付けられたメタデータを生成し、メタデータを少なくとも１つのサービスに送信するように構成されている。デーモンはまた、クライアントデバイスにローカルで記憶されたリソースのバージョンを、リモートデータベースに記憶されたバージョンと整合させる同期メカニズムを実装することができる。同期メカニズムは、リソースを２つ以上のクライアントデバイス上でアクセス可能にする。
【０００７】
いくつかの実施形態では、ソフトウェアフレームワークは、進捗アプリケーションに、進捗追跡情報を含み、デーモンに送信されるＡＰＩコールを生成させる。デーモンは、進捗追跡が１つ以上の進捗アプリケーションについて有効にされているか、又は無効にされているかに基づいて、進捗追跡情報をフィルタリングするように構成され得る。あるいは、デーモンは、アクティブなコンテキストのリストに基づいて進捗追跡情報をフィルタリングするように構成され得る。
【０００８】
いくつかの実施形態では、リモートデータベースは、異なるデータを記憶する複数のゾーンに分割されたネットワークベースの記憶サービスであり、各ゾーンの範囲は、組織識別子、クラス識別子、ユーザ識別子、コンテキスト識別子、又はハンドアウト識別子のうちの少なくとも１つの任意の組み合わせに限定される。進捗追跡情報に対応するメタデータは、デーモンによって生成され、進捗パイプラインに送信される。メタデータは、リモートデータベース内の進捗追跡情報への参照と、クラス識別子、ハンドアウト識別子、ユーザ識別子、又はコンテキスト識別子のうちの少なくとも１つと、を含む。
【０００９】
いくつかの実施形態では、進捗パイプラインは、パイプラインアーキテクチャに構造化されたいくつかのサービスを含む。進捗パイプラインは、オンランプサービスを含むことができ、オンランプサービスは、進捗追跡情報に対応するメタデータを受信し、ユーザ識別子をディレクトリサービス識別子、又は内部識別子に置き換えることにより、メタデータに含まれるユーザ識別子を逆参照し、進捗追跡が、ユーザ識別子、ディレクトリサービス識別子、又は内部識別子のうちの１つについて有効にされているか、又は無効にされているかを判定し、判定に基づいてメタデータをフィルタリングするように構成されている。進捗パイプラインは、組織識別子、ディレクトリサービス識別子、ユーザ識別子、又はハンドアウト識別子のうちの少なくとも１つによってメタデータを拡充するように構成された拡充サービスを含むことができる。進捗パイプラインは、集約サービスを含むことができ、集約サービスは、少なくとも１つのジャーナルノードを含む分散型ファイルシステムから追跡ウィンドウに対応するメタデータのサブセットを取得し、メタデータのサブセットに含まれる特定の組織識別子に関連付けられたメタデータのサブセットを含むデータ構造を生成し、データ構造をメモリに記憶し、データ構造に対応する参照を待ち行列にプッシュするように構成されている。進捗パイプラインは、オフランプサービスを含むことができ、オフランプサービスは、データ構造を処理して、クラス識別子、ハンドアウト識別子、コンテキスト識別子、ユーザ識別子、ディレクトリサービス識別子、又は内部識別子のうちの少なくとも１つに基づいて、ソートされたメタデータを生成するように構成される。進捗パイプラインは、記憶サービスを含むことができ、記憶サービスは、ユーザ識別子又はディレクトリサービス識別子のうちの一方に関連付けられた進捗識別子に進捗追跡情報を関連付け、進捗追跡情報及び進捗識別子をネットワークベースの記憶サービスに記憶するように構成されている。
【００１０】
クライアント−サーバアーキテクチャ及び／又はソフトウェアフレームワークは、個々に又は組み合わせて、１つ以上の第三者アプリケーションの機能を組み込んだ対話式の授業計画を使用して教員及び生徒が対話して、学習体験を強化することを可能にし得る。本発明の他の態様及び利点は、例として、説明される実施形態の原理を例示する、添付図面を併用して以下の詳細な説明から明らかになるであろう。
【００１１】
この「発明の概要」は、本明細書で説明する主題の一部の態様の基本的理解を提供するように、一部の例示的実施形態を要約することを目的として提供されるものに過ぎない。従って、上記説明された特徴は、実施例に過ぎず、いずれかの方式において本明細書で説明される主題の範囲及び趣旨を狭めると解釈されるべきでないことを理解されよう。本明細書で説明される主題の他の特徴、態様、及び利点は、以下の詳細な説明、図面、及び特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００１２】
本開示は、添付の図面と併せて以下の詳細な説明によって容易に理解され、同様の参照番号は同様の構造要素を示す。
【００１３】
【図１】いくつかの実施形態による、教室環境内で動作するように設計されたネットワーク環境を示す。
【００１４】
【図２】いくつかの実施形態による、教室環境内でのクライアントデバイスの進捗追跡を可能にするように実装されたクライアント−サーバアーキテクチャを示す。
【００１５】
【図３】いくつかの実施形態による、クライアントアプリケーションのグラフィカルユーザインタフェースを示す。
【００１６】
【図４】いくつかの実施形態による、ハンドアウトサービスとクライアントアプリケーション及び／又はデーモンとの間のクライアント−サーバ関係を示す。
【００１７】
【図５】いくつかの実施形態による、デーモンによって実装される同期メカニズムを示す。
【００１８】
【図６Ａ】いくつかの実施形態による、クライアントアプリケーションのグラフィカルユーザインタフェースを示す。
【図６Ｂ】いくつかの実施形態による、クライアントアプリケーションのグラフィカルユーザインタフェースを示す。
【図６Ｃ】いくつかの実施形態による、クライアントアプリケーションのグラフィカルユーザインタフェースを示す。
【図６Ｄ】いくつかの実施形態による、クライアントアプリケーションのグラフィカルユーザインタフェースを示す。
【図６Ｅ】いくつかの実施形態による、クライアントアプリケーションのグラフィカルユーザインタフェースを示す。
【００１９】
【図７】いくつかの実施形態による、ハンドアウトサービスと、クラスの複数の生徒に関連付けられたいくつかのクライアントアプリケーション（単数又は複数）及び／又はデーモン（単数又は複数）との間のクライアント−サーバ関係を示す。
【００２０】
【図８Ａ】いくつかの実施形態による、生徒に関連付けられたクライアントデバイス上のクライアントアプリケーションによって実装されるグラフィカルユーザインタフェースを示す。
【図８Ｂ】いくつかの実施形態による、生徒に関連付けられたクライアントデバイス上のクライアントアプリケーションによって実装されるグラフィカルユーザインタフェースを示す。
【図８Ｃ】いくつかの実施形態による、生徒に関連付けられたクライアントデバイス上のクライアントアプリケーションによって実装されるグラフィカルユーザインタフェースを示す。
【００２１】
【図９】いくつかの実施形態による、ハンドインサービスとクラスの複数の生徒のいくつかのクライアントアプリケーション（単数又は複数）及び／又はデーモン（単数又は複数）との間のクライアント−サーバ関係を示す。
【００２２】
【図１０】いくつかの実施形態による、進捗パイプラインとクライアントアプリケーション及び／又はデーモンとの間のクライアント−サーバ関係を示す。
【００２３】
【図１１】いくつかの実施形態による、デーモンによる進捗追跡情報のフィルタリングを示す。
【００２４】
【図１２】いくつかの実施形態による進捗パイプラインを示す。
【００２５】
【図１３】いくつかの実施形態による、報告サービスとクライアントアプリケーション及び／又はデーモンとの間のクライアント−サーバ関係を示す。
【００２６】
【図１４Ａ】いくつかの実施形態による、クライアントアプリケーションのグラフィカルユーザインタフェースを示す。
【図１４Ｂ】いくつかの実施形態による、クライアントアプリケーションのグラフィカルユーザインタフェースを示す。
【００２７】
【図１５】いくつかの実施形態による、クライアントデバイス上での生徒のアクティビティを追跡するための方法のフローチャートである。
【００２８】
【図１６】いくつかの実施形態による、ネットワークを介して利用可能な１つ以上のサービスを利用して進捗追跡情報を処理するための方法のフローチャートである。
【００２９】
【図１７】いくつかの実施形態による、本明細書で説明する様々な装置及び／又は方法を実装するために使用され得る例示的なコンピューティングデバイスの詳細な図を示す。
【発明を実施するための形態】
【００３０】
本出願による方法及び装置の代表的な適用例を、本セクションで説明する。これらの例は、前後関係を追加し、説明する実施形態の理解を助けることのみを目的として提供される。それゆえ、説明する実施形態は、これらの具体的な詳細の一部又は全てを伴わずに実践することができる点が、当業者には明らかとなるであろう。他の実例では、説明する実施形態を不必要に不明瞭化することを回避するために、周知のプロセスステップは、詳細には説明されていない。他の適用例が可能であり、それゆえ以下の実施例は、限定的なものとして解釈されるべきではない。
【００３１】
以下の「発明を実施するための形態では、記載の一部を成し、説明する実施形態に係る具体的な実施形態が例示として示される添付の図面が参照される。これらの実施形態は、説明する実施形態を当業者が実施し得る程度に詳細に説明されるが、これらの実施例は限定するものとして理解されず、したがって、他の実施形態を使用してもよく、説明する実施形態の趣旨及び範囲から逸脱することなく変更を行ってもよい。
【００３２】
デジタル教室は、生徒に提供されたコンピューティングデバイスにインストールされた対話式アプリケーションの豊かな環境内で学習する新しい機会を生徒に提供する。デバイスは、生徒が、ブラウザによってアクセスされるか又は特殊なアプリケーションによって提供される情報とオンラインで対話することを可能にし得るが、これらのアクティビティの利点は通常、これらのアクティビティを追跡することの困難な性質によって失われる。その結果、これらの教材を統一された教室アーキテクチャに組み込むための新しい技術が望まれる。
【００３３】
教室環境は、いくつかのデバイス及びアプリケーションを教員及び生徒に提供することができ、これらは、教員が、教員によって容易に監視され得るこれらのアプリケーションを使用して、生徒のアクティビティを割り当てることを可能にする。教員が、生徒に割り当てるために、ソフトウェアフレームワークを実装する１つ以上の第三者アプリケーションによって提供されたコンテキストによって定義されたアクティビティを組み込んだハンドアウトを作成する。第三者アプリケーションは、これらのコンテキストに関連付けられたアクティビティを完了する生徒の進捗を追跡し、進捗追跡情報をデバイスのバックグラウンドプロセスに提供するように構成される。バックグラウンドプロセス及び／又はクライアントアプリケーションは、進捗追跡情報を処理するように設計された１つ以上のネットワークサービスとインタフェースすることができる。処理された進捗追跡情報は、ハンドアウトを割り当てられた各生徒の進捗を示す、教員に表示するための報告データを生成するために照会され得る。
【００３４】
これらの実施形態及び他の実施形態について、図１〜図１７を参照して以下で論じる。それらの図に関して本明細書で与えられる詳細な説明が説明のみを目的とし、限定的であると見なされるべきではないことを当業者は容易に理解するであろう。
【００３５】
図１は、いくつかの実施形態による、教室環境内で動作するように設計されたネットワーク環境１００を示す。ネットワーク環境１００は、ネットワーク１５０を介して通信するように構成された別個かつ個別のいくつかのコンピューティングデバイスを含む。ネットワーク環境１００は、サーバデバイス１１０及びクライアントデバイス１２０を含む。図１に示すように、クライアントデバイス１２０は、ラップトップコンピュータ１２０−１及び１２０−５、タブレットコンピュータ１２０−２、１２０−３、及び１２０−４、並びにモバイルデバイス１２０−６を含むことができるが、これらに限定されない。ネットワーク環境１００は、デスクトップコンピュータ、ウェアラブルデバイス（例えば、スマートウォッチ）、パーソナルデジタルアシスタントなどの他の種類のクライアントデバイス１２０を含み得ることが理解されるであろう。
【００３６】
以下の用語は、この文書全体にわたって使用され得る。クラスは、特定の教科又はアクティビティを教わるために定期的に集まる個人のグループを指す。クラスは、１人以上の教員と、クラスに登録された何人かの生徒とを含むことができる。教室環境は、クラスに関連付けられたユーザのグループによって利用される関連するデバイスのグループを指す。学校は、教員のグループによって教えられるいくつかのクラスの管理集合を指す。学区は、１つ以上の学校を管理する組織を指す。
【００３７】
いくつかの実施形態では、教員は、１つ以上のデバイスを利用してクラス内の生徒に教材を頒布する。図１に示すように、教員は、クライアントデバイス１２０−１などのラップトップコンピュータ又はクライアントデバイス１２０−２などのタブレットコンピュータを利用して、生徒のための教材を作成することができる。いくつかの実施形態では、ラップトップコンピュータ及び／又はタブレットコンピュータは、生徒のための対話式の課題を作成するように構成されたアプリケーションを含む。課題は、第１のサーバデバイス１１０−１から利用可能なウェブサイト、又は第２のサーバデバイス１１０−２に記憶されたドキュメントへのハイパーリンクなど、ネットワーク１５０を介して利用可能な教材へのリンクを含むことができる。アプリケーションはまた、教員が課題を生徒に容易に配布することを可能にし得る。生徒は、クライアントデバイス１２０−３及び１２０−４などのタブレットコンピュータ、クライアントデバイス１２０−５などのラップトップコンピュータ、並びに／又はクライアントデバイス１２０−６などのモバイルデバイスを利用して、課題にアクセスし、各課題に含まれる教材を閲覧することができる。
【００３８】
いくつかの実施形態では、第３のサーバデバイス１１０−３が、様々なクライアントデバイス１２０に含まれるアプリケーションによって利用される１つ以上のサービスをホストする。例えば、第３のサーバデバイス１１０−３は、課題を定義するデータ構造又はファイルをネットワークベースの記憶リソースにアップロードするサービスをホストすることができる。別の例として、第３のサーバデバイス１１０−３は、どのクライアントデバイス１２０が特定の教室環境に登録されているかを追跡するサービスをホストすることができる。更に別の例として、第３のサーバデバイス１１０−３は、特定の課題に対応する各生徒の進捗を追跡するサービスをホストすることができる。いくつかの実施形態では、アプリケーション（単数又は複数）によって利用されるサービスは、２つ以上のサーバデバイス１１０でホストされ得る。加えて、サービスは、異なるサービスプロバイダによってホストされ得る。例えば、第１のサービスプロバイダによって維持される第１のサーバデバイス１１０−は、ネットワークベースの記憶サービスをホストするように構成され得、第２のサービスプロバイダによって維持される第２のサーバデバイス１１０−２は、学校管理サービスをホストするように構成され得る。
【００３９】
教室環境内の様々なクライアントデバイス１２０によって実行されるアプリケーションのソフトウェアフレームワークの説明が、以下に記載される。加えて、本明細書に記載されるアプリケーションによって利用され、１つ以上のサーバデバイス１１０でホストされる様々なサービスの説明が、以下に記載される。
【００４０】
図２は、いくつかの実施形態による、教室環境内でのクライアントデバイス１２０の進捗追跡を可能にするように実装されたクライアント−サーバアーキテクチャ２００を示す。クライアント−サーバアーキテクチャ２００は、クライアントデバイス１２０に実装され、かつ、ネットワーク１５０を介してアクセス可能なサーバデバイス１１０に実装された、いくつかのサービスと対話するように構成された、クライアントアプリケーション２０５を含む。クライアント−サーバアーキテクチャ２００は、教員が、クライアントデバイス１２０にインストールされた１つ以上の第三者アプリケーションによって提供される豊富な対話式教材を含む課題を作成すること、並びにクラスの課題に後れないようにする際の生徒の取り組みを教員が監視できるようにシームレスな進捗追跡を統合することが可能になる。
【００４１】
いくつかの実施形態では、クライアントアプリケーション２０５は、クライアントデバイス１２０に含まれるプロセッサによって実行されるように構成されたバイナリ実行形式である。バイナリ実行形式は、ターゲットオペレーティングシステムを実行するように設計されたターゲットハードウェアプラットフォームなどの特定の動作環境内で動作するように設計され得る。その結果、クライアントアプリケーション２０５は、異なる動作環境のためにコンパイルされた、複数のバージョンのソースコードを使用して実装され得る。例えば、クライアントアプリケーション２０５の第１のバージョンは、ラップトップコンピュータ１２０−１のために設計され得、クライアントアプリケーション２０５の第２のバージョンは、タブレットコンピュータ１２０−２のために設計され得る。
【００４２】
いくつかの実施形態では、クライアントアプリケーション２０５は、ネットワーク１５０を介して１つ以上のサービスと接続するように設計される。サービスは、ハンドアウトサービス２２０、ハンドインサービス２３０、学校管理サービス２４０、進捗パイプライン２５０、識別サービス２６０、及び報告サービス２７０を含むことができるが、これらに限定されない。クライアントアプリケーション２０５は、サービスによって実装されるアプリケーションプログラミングインタフェース（Application Programming Interface；ＡＰＩ）によってサービスにアクセスするように構成され得る。例えば、ウェブベースのサービスは、ＳＯＡＰ（Simple Object Access Protocol）を使用して、あるいはサービスに関連付けられたリソースにクライアントアプリケーション２０５がアクセスすること及び／又はクライアントアプリケーション２０５がリソース上で動作することを可能にするＲＥＳＴ（REpresentational State Transfer protocol）を使用して、ＡＰＩを実装することができる。ＡＰＩは、クライアントアプリケーション２０５が、サービスへのデータの送信、及び／又はサービスからのデータの受信を行うことを可能にし得る。ＡＰＩコールはまた、サービスに、様々な動作を実施させること、及び／又は追加のＡＰＩコールを使用して追加のサービスを呼び出させることもできる。
【００４３】
他の実施形態では、クライアントアプリケーション２０５は、クライアントデバイス１２０のブラウザ内に表示されるウェブベースのアプリケーションである。クライアントアプリケーション２０５は、ウェブサイトに関連付けられたサーバに要求される一連のリソース（例えば、ハイパーテキストマークアップ言語（ＨＴＭＬ）ドキュメント、画像、スクリプトなど）を含むことができる。ブラウザは、リソースを受信し、リソースを解釈して、クライアントデバイス１２０のディスプレイにウェブサイトの表現を表示する。したがって、クライアントアプリケーション２０５は、異なるオペレーティングシステムを実行する複数の異なるクライアントデバイス１２０にクライアントアプリケーション２０５を表示できるという点で、プラットフォームから独立している。
【００４４】
いくつかの実施形態では、クライアントアプリケーション２０５は、ＡＰＩゲートウェイ２１０を介して１つ以上のサービスとインタフェースする。ＡＰＩゲートウェイ２１０は、サーバデバイス１１０によって実装され、クライアントデバイス１２０から受信されたＡＰＩコールをクライアント−サーバアーキテクチャ２００内の様々なサービスにリダイレクトする。他の実施形態では、ＡＰＩゲートウェイ２１０は、省略されるか又は選択的に迂回され、クライアントデバイス１２０は、ＡＰＩコールをサービスに直接送信する。
【００４５】
いくつかの実施形態では、クライアントアプリケーション２０５は、教員がクラスのためのハンドアウトを作成することを可能にする。ハンドアウトは、クラスの生徒に公開されることを意図した課題に関連する情報を含むファイル又はデータ構造を指す。ハンドアウトは、ハンドアウト識別子と、課題のタイトルと、課題を完了する方法に関する生徒のためのテキストベースの指示を含む、課題の本文と、課題の期限と、課題に関連付けられた添付ファイルのリストと、を含むいくつかのフィールドを含むことができる。ハンドアウトは、特定のクライアントデバイス１２０で作成され、ローカルで記憶され得る。添付ファイルは、ファイル（例えば、ドキュメント、画像、動画など）と、生徒が提出することになっているファイルのためのプレースホルダと、生徒が課題の一部として完了することになっているアクティビティと、を含むことができる。アクティビティは、クラスキットソフトウェアフレームワークの一部分を実装する第三者アプリケーションを使用して実施される。アクティビティの例としては、デジタルの書籍又は教科書のある章を読むこと、クイズを受けるか又は問題セットに回答すること、対話式ゲームのプレイ又はデジタル実験の実施などのタスクを実施するのに費やした時間を追跡することなどを挙げることができるが、これらに限定されない。
【００４６】
いくつかの実施形態では、クライアント−サーバアーキテクチャ２００は、ハンドアウトサービス２２０を含む。ハンドアウトサービス２２０は、ハンドアウトを管理するように構成される。いくつかの実施形態では、ハンドアウトサービス２２０は、教員が複数のデバイスで作業することを可能にするために、１つのクライアントデバイス１２０で作成されたハンドアウトを別のクライアントデバイス１２０と同期するように構成される。いくつかの実施形態では、ハンドアウトサービス２２０は、ハンドアウトを生徒のリストに公開することを可能にするように構成される。ハンドアウトを公開するとは、ハンドアウト内の情報を別個のクライアントデバイス１２０での生徒による閲覧のために利用可能にすることと、ハンドアウトの添付ファイルに関連する様々なバックエンド動作を処理することと、を指す。
【００４７】
いくつかの実施形態では、クライアント−サーバアーキテクチャ２００はまた、ハンドインサービス２３０を含むことができる。ハンドインは、ファイル又はデータ構造のためのプレースホルダを指し、これは、課題を完了するために、ファイル又はデータ構造を作成して提出するように生徒が指示されていることを示す。生徒は、課題完了の要件を満たすために、ファイル又はデータ構造を作成し、ファイル又はデータ構造をハンドインサービス２３０に提出することができる。
【００４８】
いくつかの実施形態では、クライアント−サーバアーキテクチャ２００はまた、クラスの構造に関連する学区の管理情報を管理するように構成された学校管理サービス２４０を含むことができる。例えば、学校管理サービス２４０は、どの教員が複数のクラスのそれぞれに割り当てられているかを示す記録を維持することができる。記録はまた、どの生徒が複数のクラスのそれぞれに登録されているかを示すことができる。各教員又は各生徒は、教員識別子又は生徒識別子をそれぞれ割り当てられ得る。学区によって作成された各クラスは、クラス識別子に関連付けられ得る。次いで、各クラス識別子について、クラスに登録された生徒の生徒識別子の名簿を列挙する別個の記録を作成することができる。いくつかの実施形態では、関係データベースは、１つ以上のテーブルにおいて教員識別子及び／又は生徒識別子をクラス識別子に関連付ける。関係データベースは、構造化クエリ言語（ＳＱＬ）又は他の何らかの種類のクエリ言語を使用して照会されて、様々なクラスの構造を識別する情報を返すことができる。
【００４９】
いくつかの実施形態では、学校管理サービス２４０は、学区の管理者が、クラスを作成し、クラスに登録される生徒を指定することを可能にする、管理インタフェースを含む。管理インタフェースは、例えば、各クラスの名簿を変更するために、資格情報の提供を管理者に要求する、ウェブベースのインタフェースとすることができる。他の実施形態では、学校管理サービス２４０は、学区がクライアント−サーバアーキテクチャ２００とは別個に維持する別個かつ個別の学校情報システムからデータをダウンロードするための、インタフェースを含む。クラス及び名簿は、学校情報システムから自動的にダウンロードされ得る。
【００５０】
いくつかの実施形態では、クライアント−サーバアーキテクチャ２００はまた、進捗パイプライン２５０を含むことができる。進捗パイプライン２５０は、教員によって公開されたハンドアウトに記載された課題を生徒が完了したときに進捗追跡に関連する情報を管理するための安全なアーキテクチャを提供する。生徒のクライアントデバイス１２０は、クライアントデバイス１２０にインストールされた１つ以上の第三者アプリケーションに関連するアクティビティを監視するように構成されたバックグラウンドプロセス（すなわち、デーモン）を含むことができる。デーモンは、１つ以上の公開されたハンドアウトにおいて指定された課題を完了する際に生徒によってなされた進捗を追跡し、各生徒の進捗に関連する情報を進捗パイプライン２５０に送信する。進捗パイプライン２５０は、進捗情報を集約及び記憶して、教員がクラスの１人以上の生徒についての包括的な報告を閲覧することを可能にする。
【００５１】
いくつかの実施形態では、進捗パイプライン２５０は、異なるサーバデバイス１１０で実行しているいくつかの別個のサービスとして実装され、パイプライン方式のデータフローにおいて進捗情報を処理するように構造化される。他の実施形態では、進捗パイプライン２５０は、単一のサーバデバイス１１０で実行しているいくつかのサービスによって実装され得る。
【００５２】
いくつかの実施形態では、クライアント−サーバアーキテクチャ２００はまた、識別サービス２６０を含むことができる。識別サービス２６０は、特定のクライアントデバイス１２０に関連するデータを、教室環境内の特定の人々（例えば、教員又は生徒）に関連付けることを可能にする。いくつかの実施形態では、識別サービス２６０は、様々なユーザ識別子又はデバイス識別子を、クライアント−サーバアーキテクチャ２００のサーバ側に範囲が限定されたディレクトリサービス識別子に関連付ける。識別サービス２６０の使用は、特定の範囲（例えば、教室環境）の外側で利用される任意の識別子から、デーモンによって収集された個人識別情報を分離することにより、データの完全性を保護する。したがって、ユーザのテストのスコアがどうであるかなどのデータを、同じサービスプロバイダによって提供される音楽共有サービスでどの種類の音楽を生徒が好んで聞くかなど、その範囲の外側の他の情報に紐づけることができない。そのような個人識別情報の完全性は、ほとんどの生徒が未成年であり、また特定の年齢の脆弱なユーザのデータを保護するときに考慮される特別な配慮事項が存在し得ることを考えると、特に重要となり得る。
【００５３】
いくつかの実施形態では、ディレクトリサービス識別子は、特定のサービスプロバイダによって１つ以上のデバイスのユーザに関連付けられた静的な識別子である。ディレクトリサービス識別子は、ユーザを特定のユーザアカウントに関連付けるためにクライアントデバイスによって使用されるユーザ識別子に関連付けられ得る。ディレクトリサービス識別子は、特定のユーザアカウントのユーザに関連付けられ、クライアントデバイスに公表された、外部識別子に関連付けられ得る。ディレクトリサービス識別子は、特定のユーザの内部識別子に関連付けられ得る。内部識別子は、ディレクトリサービス識別子から分離され得、次いで、新しい内部識別子が、ディレクトリサービス識別子に関連付けられ得る。いくつかの実施形態では、内部識別子を新しい内部識別子で置き換えることは、これらのデータを１つ以上のサーバデバイス１１０から削除する必要なしに、特定の記憶されたデータと特定のユーザ又はユーザアカウントとの間の関連付けを断つために利用され得る。
【００５４】
いくつかの実施形態では、クライアント−サーバアーキテクチャ２００はまた、何人かの生徒によって完了されたアクティビティの進捗に関連する集約データをコンパイルし、教員によってレビューされるようにクライアントデバイス１２０に提供することを可能にする、報告サービス２７０を含むことができる。報告サービス２７０はまた、進捗情報に関連する統計データを生成するために、複数の生徒から受信された進捗情報を分析することができる。例えば、報告サービス２７０は、何人の生徒が特定のアクティビティを完了したかに関連する統計値を生成することができる。報告サービス２７０はまた、アクティビティに関連する結果（例えば、クイズアクティビティの正しく回答された質問の数、クイズを完了するのに要した時間など）を追跡することができる。他の実施形態では、クライアントアプリケーション２０５は、個々の生徒の報告データを報告サービス２７０から受信し、クライアントアプリケーション２０５は、報告データを集約する、及び／又はクラスの統計値を計算する。
【００５５】
クライアントアプリケーション２０５は、クライアント−サーバアーキテクチャ２００の記載されたサービスのいくつか又は全てと対話するように構成され得ることが理解されるであろう。例えば、クライアントアプリケーション２０５は、ハンドアウトサービス２２０、ハンドインサービス２３０、進捗パイプライン２５０、及び報告サービス２７０へのコールを生成するように構成され得る。いくつかの実施形態では、クライアントアプリケーション２０５は、学校管理サービス２４０及び／又は識別サービス２６０などの、サービスのサブセットと対話するように構成されない。代わりに、他のサービスが、クライアントアプリケーション２０５からのコールの受信に応答して、これらのサービスへのコールを生成することができる。
【００５６】
図３は、いくつかの実施形態による、クライアントアプリケーション２０５のＧＵＩ３００を示す。ＧＵＩ３００は、クライアントデバイス１２０のディスプレイ３０２上で教員に提示され得る。図３に示すように、ＧＵＩ３００は、クライアントデバイス１２０−２などのタブレットコンピュータに表示される。ＧＵＩ３００は、グラフィック、テキスト、アイコン、図形、入力フィールド、出力フィールド、表示領域などを含む、いくつかの要素を含むことができる。
【００５７】
いくつかの実施形態では、ＧＵＩ３００は、第１の表示領域３１０、第２の表示領域３２０、及び第３の表示領域３３０を含む。第１の表示領域３１０は、教員によって以前に作成されたハンドアウトの表現を表示するために利用される。第２の表示領域３２０は、特定の教員に関連付けられたクラスの表現を表示するために利用される。図３に示すように、第１の表示領域３１０は、ディスプレイ３０２に含まれる画素の第１の部分を占め、第２の表示領域３２０は、ディスプレイ３０２に含まれる画素の第２の部分を占める。
【００５８】
第１の表示領域３１０は、ユーザアカウントに関連付けられた別個かつ個別のハンドアウトを表す要素３１２を示すヘッダを含む。ハンドアウトは、教員、管理者、又は他の役割に関連付けられたアカウントによって作成され得る。いくつかの実施形態では、各要素３１２は、ハンドアウトのタイトルと、ハンドアウトに関連付けられた期限日の記述子と、何人の生徒がハンドアウトを完了したかの表示とを含む、ボックスによって定義される。例えば、第１の要素３１２−１は、課題「動植物」の第１のハンドアウトに関連付けられ、このハンドアウトは、３月１２日が期限日であり、全ての生徒が完了しており、第２の要素３１２−２は、課題「テスト準備」の第２のハンドアウトに関連付けられ、このハンドアウトは、３月１５日が期限日であり、ハンドアウトを割り当てられた２２人の生徒のうちの７人のみが完了している。他の実施形態では、要素３１２は、異なる形態をとり得ることが理解されるであろう。例えば、要素３１２は、期限日及び／又は完了インジケータを省略することができる。あるいは、要素３１２は、期限日及び／又は完了インジケータに加えて又はその代わりに情報を含むことができる。加えて、要素３１２は、ハンドアウトに割り当てられた異なるアクティビティを表す画像又はアイコンなどのグラフィックを含むことができる。場合によっては、グラフィックは、要素３１２の背景として動画を再生すること、又はハンドアウトに添付された画像のスライドショーを示すことなどによって、アニメーション化され得る。
【００５９】
第２の表示領域３２０は、特定の教員のユーザアカウントに関連付けられた別個かつ個別のクラスを表す要素３２２を示すヘッダを含む。いくつかの実施形態では、各要素３２２は、クラスのタイトルと、クラスに割り当てられたハンドアウトの数の記述子とを含む、ボックスによって定義される。例えば、第１の要素３２２−１は、クラス「科学Ａ」に関連付けられ、このクラスには、２つのハンドアウトが割り当てられ、第２の要素３２２−２は、クラス「数学Ａ」に関連付けられ、このクラスには、３つのハンドアウトが割り当てられ、第３の要素３２２−３は、クラス「数学Ｂ」に関連付けられ、このクラスには、ハンドアウトが割り当てられていない（ハンドアウトは０個である）。他の実施形態では、要素３２２は、異なる形態をとり得ることが理解されるであろう。例えば、要素３２２は、クラスに割り当てられたハンドアウトの数のインジケータを省略することができる。あるいは、要素３２２は、クラスのタイトル及びクラスに割り当てられたハンドアウトの数のインジケータに加えて又はその代わりに情報を含むことができる。例えば、要素３２２は、クラスに登録された生徒の数を含むことができる。加えて、要素３２２は、クラスに関連する特定の教科又は学科を示すためにコード化された画像又は背景色などのグラフィックを含むことができる。
【００６０】
いくつかの実施形態では、教員は、クライアントデバイス１２０の入力インタフェースを使用して特定のクラス（又は複数のクラス）を選択することができる。例えば、教員は、タッチインタフェースを使用して、その教員に関連付けられた利用可能なクラスのうちの１つに関連付けられた要素３２２を選択することができる。特定の要素３２２を選択すると、選択された要素３２２は、アクティブ化され、第１の表示領域３１０の要素３１２は、第２の表示領域３２０の選択された要素３２２によって表されるクラスに関連付けられたハンドアウトを反映するように更新されてもよい。選択された要素３２２（例えば、現在アクティブ化されている要素）は、要素３２２がアクティブであることを示すために強調表示され得る。強調表示は、要素のサイズを大きくする、要素３２２に関連付けられた色を変更する、要素３２２の境界の色又は太さを変更する、選択された要素３２２の周囲にボックスを表示するなどによって実装され得る。図３に示すように、第１の要素３２２−１は、アクティブ化され、第２の要素３２２−２及び第３の要素３２２−３よりも大きく示される。
【００６１】
いくつかの実施形態では、第１の表示領域３１０及び／又は第２の表示領域３２０には、全てのクラス及び／又は特定のクラスに割り当てられた全てのハンドアウトをディスプレイ３０２の範囲内に提示するには十分な余地が存在しない場合があることが理解されるであろう。そのような場合、クライアントデバイス２０５のユーザは、タッチジェスチャなどの入力コマンドを使用して、追加の要素を表示することができる。例えば、いくつかの要素が表示されていないことを示すアイコンを表示することができる。追加の要素は、ユーザがアイコンを選択したことに応答して、第１の表示領域３１０又は第２の表示領域３２０に表示される。別の例では、ユーザが、スワイプタッチジェスチャを使用して、追加の要素を表示するように水平にスクロールすることができる一方、他の要素は、特定の表示領域内で移動されるか又は特定の表示領域から除外される。
【００６２】
第３の表示領域３３０は、ディスプレイ３０２の上端縁の近傍に位置する。第３の表示領域３３０は、クライアントアプリケーション２０５のユーザが、ユーザアカウントにサインインし、特定のクラスの新しいハンドアウトを生成すること、又は以前に生成され、クライアントデバイス１２０にローカルで及び／又はサーバデバイス１１０にリモートで記憶されたハンドアウトを編集することを可能にする、要素を含む。いくつかの実施形態では、第３の表示領域３３０は隠れており、例えば、垂直スワイプタッチジェスチャを使用して、第３の表示領域３３０を露わにさせるなどの、ユーザ入力に応答して表示され得る。
【００６３】
第１のアイコン３３２が、第３の表示領域３３０の左側の近傍に表示される。第１のアイコン３３２は、ユーザによって選択されると、クライアントアプリケーション２０５に、教員に関連付けられたユーザアカウントにサインインするための資格情報の入力をユーザに促させることができる。いくつかの実施形態では、第１の表示領域３１０及び第２の表示領域３２０は、ユーザが第１のアイコン３３２を使用して特定のユーザアカウントにサインインするまで隠れている。いくつかの実施形態では、クライアントアプリケーション２０５が起動すると、ユーザアカウントにサインインするための資格情報の入力ユーザに促す別個のインタフェースがユーザに対して表示される。ＧＵＩ３００は、ユーザが特定のユーザアカウントに首尾よくサインインしたときにのみ、ディスプレイ３０２に表示される。次いで、第１のアイコン３３２は、ユーザアカウントからサインアウトするために及び／又は異なるユーザアカウントにサインインするために使用され得る。
【００６４】
第２のアイコン３３４が、第３の表示領域３３０の右側の近傍に表示される。第２のアイコン３３４は、ユーザによって選択されると、クライアントアプリケーション２０５に、新しいハンドアウトに関連する情報を記憶するために、クライアントデバイス１２０のファイルシステムにファイル又はデータ構造を生成させることができる。いくつかの実施形態では、新しいファイル又はデータ構造は、第２の表示領域３２０で選択されたアクティブなクラスに自動的に関連付けられる。次いで、教員は、異なるＧＵＩを使用してファイル又はデータ構造に情報を追加することができ、これについては、図６Ａ〜図６Ｅを参照して以下でより詳細に説明する。
【００６５】
第３のアイコン３３６が、第３の表示領域３３０の右側の近傍に表示される。第３のアイコン３３６は、ユーザによって選択されると、クライアントアプリケーション２０５に、以前に生成されたハンドアウトのファイル又はデータ構造に記憶された情報を取得させることができる。いくつかの実施形態では、第１の表示領域３１０の要素３１２の１つが、選択基準に基づいて自動的に、又はユーザによって提供される入力に応答して手動でのいずれかで、アクティブ化される。例えば、特定のクラスを表す要素３２２がアクティブ化されると、そのクラスについて記憶された全てのハンドアウトのうちハンドアウトの期限日と現在の日付との最小の差に基づいて、要素３１２が、自動的に選択されてアクティブ化され得る。あるいは、要素３１２が、特定の要素３１２に対応するディスプレイ３０２の領域でのタッチジェスチャ入力（例えば、タップ入力）に応答して、アクティブ化されるように手動で選択され得る。図３には明示的に示していないが、第１の表示領域３１０で選択された要素３１２（例えば、現在アクティブされている要素）は、選択された要素３１２がアクティブであることを示すために強調表示され得る。第３のアイコン３３６の選択に応答して、図６Ａ〜図６Ｅを参照して以下でより詳細に説明する異なるＧＵＩは、クライアントデバイス１２０によって表示され、アクティブな要素３１２に関連付けられたファイル又はデータ構造からのデータをポピュレートされ得る。
【００６６】
いくつかの実施形態では、第１の表示領域３１０は、準備中のハンドアウト及び生徒のリストに公開されたハンドアウトの表現を含む。場合によって、要素３１２は、要素３１２によって表されるハンドアウトが公開されているか、又はまだ公開されていない（すなわち、依然として教員によって準備中である）かの表示を含むことができる。
【００６７】
上述し、また図３に示すＧＵＩ３００は、クライアントアプリケーション２０５のために設計されたＧＵＩの例示的な実施形態にすぎないことが理解されるであろう。他の実施形態では、クライアントアプリケーション２０５のＧＵＩは、他の形態をとることができる。ＧＵＩの外観及び感触はまた、特定のオペレーティングシステム又はターゲット環境に関連付けられた標準的な表示要素に対応してもよい。さらに、また他の実施形態では、クライアントアプリケーション２０５は、クライアントデバイス１２０のブラウザに表示されるウェブベースのアプリケーションである。そのような実施形態では、ＧＵＩ３００は、１つ以上のハイパーテキストマークアップ言語（Hypertext Markup Language；ＨＴＭＬ）ドキュメントに含まれる複数のＨＴＭＬ要素を含むことができる。そのような要素の表現は、クライアントデバイス１２０でのブラウザアプリケーションの実装に、場合によってはブラウザアプリケーションに関連付けられたユーザの好みに、依存する場合がある。
【００６８】
図４は、いくつかの実施形態による、ハンドアウトサービス２２０とクライアントアプリケーション２０５及び／又はデーモン４４０との間のクライアント−サーバ関係を示す。ハンドアウトサービス２２０は、教員が、ハンドアウトを作成し、教員に関連付けられたクラスに登録された生徒のリストに割り当てるための手段を提供する。上述のように、クライアントアプリケーション２０５は、ユーザアカウントに関連付けられた資格情報の提供をユーザに促すように構成される。ユーザアカウントが教員に関連付けられている場合、クライアントアプリケーション２０５は、教員が、クライアントデバイス１２０のメモリ４２０にハンドアウトのファイル又はデータ構造を生成することを可能にする。いくつかの実施形態では、これらのファイル又はデータ構造は、ネットワークベースの記憶サービスに対して同期させることができ、これにより、教員が、複数のクライアントデバイス１２０からハンドアウトに関連する情報にアクセスすることを可能にする。
【００６９】
図４に示すように、クライアントデバイス１２０は、プロセッサ４１０、ディスプレイ３０２、及びメモリ４２０を含む。メモリ４２０は、オペレーティングシステム４３０、クライアントアプリケーション２０５、デーモン４４０、及びローカルデータベース４４５を含む。デーモン４４０は、クライアントアプリケーション２０５が、デーモン４４０と非同期的に通信して特定のタスクを実施することを可能にする、ＡＰＩを実装するバックグラウンドプロセスである。それらのタスクのうちの１つは、ローカルデータベース４４５にファイルを作成するように動作する。
【００７０】
いくつかの実施形態では、デーモン４４０は、ローカルデータベース４５０を維持する。いくつかの実施形態では、教員は、クライアントアプリケーション２０５を使用してハンドアウトの新しいファイル又はデータ構造を作成することができる。クライアントアプリケーション２０５は、デーモン４４０によって維持されるローカルデータベース４５０にハンドアウトのファイル又はデータ構造を作成するようにデーモン４４０に要求する。教員は、図６Ａ〜図６Ｅを参照して以下でより詳細に論じるＧＵＩ６００を使用して、ハンドアウトのファイル又はデータ構造をポピュレートすることができる。
【００７１】
いくつかの実施形態では、デーモン４４０は、ローカルデータベース４５０のファイル又はデータ構造をリモートデータベース４６０に同期させるように構成される。リモートデータベース４６０は、いくつかのサーバデバイス１１０に実装された、クラウドベースのデータベースサービスなどの分散型データベースとすることができる。デーモン４４０は、ファイル又はデータ構造が複数のクライアントデバイス１２０を使用してアクセス及び／又は修正され得るように、ローカルデータベース４５０のファイル又はデータ構造をリモートバージョンのファイル又はデータ構造と同期させるために、リモートデータベース４６０とインタフェースする。同期メカニズムについては、図５を参照して以下でより詳細に説明する。
【００７２】
ハンドアウトがリモートデータベース４６０に対して同期されると、次いで、教員は、クライアントアプリケーション２０５の異なるバージョンを使用して、異なるクライアントデバイス１２０に切り替え、新しいクライアントデバイス１２０を使用して、リモートサーバ１１０に記憶されたハンドアウトのバージョンにアクセスすることができる。新しいクライアントデバイス１２０に記憶されたリソースのローカルコピーへの任意の変更が、リモートデータベース上のハンドアウトのバージョンを更新するためにリモートデータベース４６０に対して同期される。次いで、これらの変更は、以前のクライアントデバイス１２０上のクライアントアプリケーション２０５にプッシュされて、初期のクライアントデバイス１２０上のローカルデータベース４５０内のローカルリソースのコピーを更新する。
【００７３】
例えば、教員が、ラップトップコンピュータ１２０−１上のクライアントアプリケーション２０５を開き、ラップトップコンピュータ１２０−１のメモリに記憶されるハンドアウトのローカルバージョンを作成することができる。ラップトップコンピュータ１２０−１上のデーモン４４０は、ハンドアウトのローカルバージョンのコピーをリモートデータベース４６０に送信して、ハンドアウトをリモートデータベース４６０に記憶されたハンドアウトのバージョンと同期させる。次いで、教員は、タブレットコンピュータ１２０−２上の別個のクライアントアプリケーション２０５を開き、教員のユーザアカウントの資格情報を提供する。タブレットコンピュータ１２０−２上のクライアントアプリケーション２０５を開くことにより、デーモン４４０は、リモートデータベース４６０に記憶されたハンドアウトのリモートバージョンをタブレットコンピュータ１２０−２のメモリにダウンロードし、そこで、タブレットコンピュータ１２０−２上のクライアントアプリケーション２０５は、ハンドアウトのローカルコピーにアクセスし、タブレットコンピュータ１２０−２のメモリ内のハンドアウトのローカルコピーを修正することができる。ハンドアウトのローカルコピーへの任意の修正は、リモートデータベース４６０に記憶されたハンドアウトのバージョンが最新のものとなるように、リモートデータベース４６０に対して同期され得る。次に教員がラップトップコンピュータ１２０−１上のクライアントアプリケーション２０５を開くと、クライアントアプリケーション２０５は、デーモン４４０に、ハンドアウトの現在のバージョンをリモートデータベース４６０に要求し、リモートデータベースは、リモートデータベース４６０に記憶されたハンドアウトのバージョンをラップトップコンピュータ１２０−１のデーモン４４０に送信して、ハンドアウトのローカルバージョンとしてラップトップコンピュータ１２０−１のメモリに記憶する。
【００７４】
いくつかの実施形態では、ハンドアウトサービス２２０は、サーバデバイス１１０のプロセッサによって実行されるように構成された、サーバデバイス１１０のメモリに記憶された命令セットとして実装される。ハンドアウトサービス２２０は、教員に関連付けられたクライアントデバイス１２０と生徒に関連付けられたクライアントデバイス１２０との間でのハンドアウトの配布を管理する。いくつかの実施形態では、ハンドアウトサービス２２０は、リモートデータベース４６０を使用してハンドアウトの配布を実装する。ハンドアウトサービス２２０は、リモートデータベース４６０にゾーン４６５を作成する。各ゾーン４６５は、特定のクラスに範囲を限定される。あるいは、各ゾーン４６５は、生徒のグループに範囲を限定される。教員に関連付けられた各クラスは、生徒の異なるグループに関連付けられ得る。
【００７５】
教員は、クライアントデバイスのローカルデータベース４５０にハンドアウトを作成することができる。ハンドアウトは、リモートデータベース４６０の教員のための個人ゾーン４６５−１に対して同期される。特定のハンドアウトが準備され、生徒のグループに割り当てる準備が整うと、教員は、クライアントアプリケーション２０５を利用してハンドアウトを公開して、ハンドアウトを生徒のグループに割り当てることができる。クライアントアプリケーション２０５は、ハンドアウトの公開をハンドアウトサービス２２０に要求する。次いで、ハンドアウトサービス２２０は、ハンドアウトのコピーを、ハンドアウトにおいて指定された生徒のグループに範囲を限定されたリモートデータベース４６０の新しいゾーン４６５−２にコピーする。新しいゾーン４６５−２の範囲内の各生徒は、生徒のグループの各生徒によって制御されるクライアントデバイス１２０のデーモン４４０が、公開されたハンドアウトのコピーをその生徒のクライアントデバイス１２０のローカルメモリに対して同期することにように、新しいゾーン４６５−２をサブスクライブする。
【００７６】
ハンドアウトサービス２２０はまた、リモートデータベース４６０に記憶されたハンドアウトのリソースを識別するために利用され得るハンドアウト識別子を生成することが理解されるであろう。いくつかの実施形態では、ハンドアウトが公開されると、ハンドアウト識別子が生成される。他の実施形態では、ハンドアウトが作成されると、ハンドアウト識別子が生成される。次いで、ハンドアウトのリソースは、新しいゾーン４６５−２にコピーされ、ハンドアウトが公開されると、教員の個人ゾーン４６５−１から削除される。
【００７７】
図５は、いくつかの実施形態による、デーモン４４０によって実装される同期メカニズムを示す。図５に示すように、デーモン４４０は、リモートデータベース４６０のフロントエンドを提供するデータベースサービス５１０とネットワーク１５０を介してインタフェースするように構成される。データベースサービス５１０は、サーバデバイス１１０に実装され得る。いくつかの実施形態では、リモートデータベース４６０は、特定の組織又は学区の範囲に制限される。したがって、リモートデータベース４６０内に記憶された情報は全て、特定の学区に関するものである。そのような実施形態では、データベースサービス５１０は、異なる組織又は学区の複数のリモートデータベース４６０を管理するように構成される。様々な実施形態では、リモートデータベース４６０は、サービスプロバイダによって管理されるクラウドベースの分散型データベースサービスである。
【００７８】
いくつかの実施形態では、データベースサービス５１０は、リモートデータベース４６０内に実装された複数の異なるゾーン４６５にファイルを記憶するように構成される。学区の各教員及び／又は各生徒は、リモートデータベース４６０内の個人ゾーンとして異なるゾーン４６５を割り当てられ得る。個人ゾーン４６５は、特定のユーザアカウントに関連付けられたファイル又はデータ構造を記憶することができる。加えて、学区によって作成された各クラスは、クラスに関連付けられた全ての生徒及び教員とリソースを共有するためのクラスゾーン４６５を割り当てられ得る。代替的な実施形態では、ゾーン４６５は、クラスのサブセットであり得るか又は２つ以上のクラスに登録され得る、生徒及び／又は教員のグループについて作成され得る。クラスゾーン４６５は、特定のクラスに関連付けられた生徒及び／又は他の教員にハンドアウトを公開するために利用され得る。ゾーン４６５は、組織、クラス、又は個人（例えば、教員又は生徒）に範囲を限定され得る。ゾーン４６５はまた、異なるデータのために利用され得る。
【００７９】
いくつかの実施形態では、データベースサービス５１０は、各ゾーン４６５の範囲内のユーザ（例えば、教員及び／又は生徒）のリストを示す、各ゾーン４６５に対するサブスクリプションを維持する。データベースサービス５１０は、ゾーン４６５内のリソースが更新されるたびに、ゾーン４６５をサブスクライブするユーザの各クライアントデバイス１２０に通知をプッシュすることができる。特定のクライアントデバイス１２０のデーモン４４０は、通知を受信し、更新されたリソースをゾーン４６５からダウンロードして、ローカルデータベース４５０のリソース５２２のローカルコピーを更新する。
【００８０】
クライアント−サーバアーキテクチャ２００の１つ以上のサービスによって必要とされるいくつかの機能を実装するために、異なる種類のゾーンを作成して同期メカニズムを利用できることが理解されるであろう。例えば、ゾーンは、ハンドアウト、ハンドイン、第三者アプリケーションに関連付けられたブックマークされたコンテキスト、クラスの名簿情報、進捗追跡情報などを記憶するように作成され得る。更に、上述の各ゾーンは、単一のユーザに（すなわち、個人ゾーンとして）又は複数のユーザに範囲を限定され得る。例えば、ハンドアウトゾーン４６５は、ハンドアウトに関連するデータ（例えば、添付ファイル、生徒によってアップロードされたハンドインのリソースなど）を記憶するために作成され、ハンドアウトにおいて識別された生徒のグループに範囲を限定され得る。進捗ゾーン４６５が、何人かの生徒の進捗情報を記憶するために作成される。進捗ゾーン４６５は、クラスに、又はクラスに公開された特定のハンドアウトに範囲を限定され得る。名簿ゾーン４６５が、組織のクラス構造に関連するデータを記憶するために作成される。名簿ゾーン４６５は、組織に範囲を限定され得る。
【００８１】
図６Ａ〜図６Ｅは、いくつかの実施形態による、クライアントアプリケーション２０５のＧＵＩ６００を示す。ＧＵＩ６００は、クラスに割り当てるように教員が準備しているハンドアウトに記憶された情報を編集するために使用され得る。ＧＵＩ６００は、クライアントデバイス１２０のディスプレイ３０２に提示され得る。図６Ａに示すように、ＧＵＩ６００は、クライアントデバイス１２０−２などのタブレットコンピュータに表示される。ＧＵＩ６００は、グラフィック、テキスト、アイコン、図形、入力フィールド、表示領域などを含む、いくつかの要素を含むことができる。いくつかの実施形態では、ＧＵＩ６００は、教員がＧＵＩ３００の第２のアイコン３３４又は第３のアイコン３３６を選択したことに応答して表示される。
【００８２】
ＧＵＩ６００は、第１の表示領域６１０、第２の表示領域６２０、及び第３の表示領域６３０を含む。第１の表示領域６１０は、特定のクラス又は生徒のグループの教員によって作成されたハンドアウトに関連する情報を表示するために利用される。第２の表示領域６２０は、ハンドアウトの添付ファイルを表示するために利用される。図６に示すように、第１の表示領域６１０は、ディスプレイ３０２に含まれる画素の第１の部分を占め、第２の表示領域６２０は、ディスプレイ３０２に含まれる画素の第２の部分を占める。第３の表示領域６３０は、ディスプレイ３０２に含まれる画素の第３の部分を占める。いくつかの実施形態では、第３の表示領域６３０は隠され隠れていてもよく、第３の表示領域６３０は、スワイプタッチジェスチャを使用してディスプレイ３０２の上端縁の近傍に第３の表示領域６３０を出現させることなど、ユーザ入力に応答して表示される。
【００８３】
図６Ａに示すように、第１の表示領域６１０は、ハンドアウトを割り当てられる生徒のグループを示すためのインタフェースを含む。インタフェースは、ラベル（例えば、「Ｔｏ：」）、ユーザインタフェース要素６１２、及びユーザインタフェース要素６１４を示す。教員が、生徒（単数又は複数）の識別子をユーザインタフェース要素６１２にタイピングするか、又はユーザインタフェース要素６１４を選択し、リストから生徒のグループを選択するかのいずれかにより、ハンドアウトを割り当てられる生徒のグループを指定することができる。
【００８４】
いくつかの実施形態では、ユーザインタフェース要素６１４を選択することにより、クライアントアプリケーション２０５は、クライアントアプリケーション２０５にサインインした教員に関連付けられたクラスの名簿データを要求する。名簿データは、教員に関連付けられた任意のクラスに登録された全ての生徒の識別子を含む。クライアントアプリケーション２０５は、学校管理サービス２４０に識別子のリストを要求することができる。あるいは、クライアントアプリケーション２０５は、クライアントデバイス１２０のローカルメモリ４２０から識別子のリストを取得することができる。例えば、名簿サービスは、リモートデータベース４６０の名簿ゾーン４６５に名簿データを記憶する学校管理サービス２４０に名簿データを定期的に要求することができる。名簿ゾーン４６５は、特定のクラスに範囲を限定され得、教員は、その教員に関連付けられたそれらのクラスの名簿ゾーン４６５をサブスクライブすることができる。したがって、同期メカニズムによって、デーモン４４０は、クライアントデバイス１２０のローカルデータベース４５０に名簿データをダウンロードし、そこでは、同データが、クライアントアプリケーション２０５によってアクセスされ得る。
【００８５】
第１の表示領域６１０はまた、生徒が、ハンドアウトに添付されたアクティビティを完了し、ハンドアウトに割り当てられた任意のハンドインを提出する期限日を示す、インタフェースを含む。インタフェースは、ラベル（例えば、「期限日：」）及びユーザインタフェース要素６１６を示す。ユーザインタフェース要素６１６は、課題を完了する日付（例えば、期間）を表示することができる。ユーザインタフェース要素６１６を選択することにより、教員に日付を選択させるカレンダーの表現を表示することができる。
【００８６】
第１の表示領域６１０はまた、ハンドアウトのタイトル及び本文を変更するために教員によって編集され得るいくつかのテキストフィールドを含む。例えば、図６Ａに示すように、教員は、ハンドアウトのタイトル「動植物（Flora & Fauna）」を指定し、課題を完了する方法に関して生徒に与えられる指示のセットを書いている。
【００８７】
第２の表示領域６２０は、第１のアイコン６２２及び第２のアイコン６２４と呼ばれる一対のユーザインタフェース要素を含む。第１のアイコン６２２は、ハンドインのためのプレースホルダをハンドアウトに追加するために教員によって選択され得る。第２のアイコン６２４は、アクティビティをハンドアウトに追加するために教員によって選択され得る。ハンドアウトに対する任意の添付ファイルが、第１のアイコン６２２及び第２のアイコン６２４の下に列挙され得る。図６Ａに示すように、このハンドアウトには現在、ハンドインのためのプレースホルダ又はアクティビティが添付されていない。
【００８８】
図６Ｂに示すように、ハンドインのためのプレースホルダをハンドアウトに添付することにより、第２の表示領域６２０のボックス６４０が、いくつかのユーザインタフェース要素をポピュレートされる。例えば、第１のユーザインタフェース要素６４２は、ハンドインのオプションを編集することを可能にし、第２のユーザインタフェース要素６４４は、ハンドインに関連する情報を表示し、第３のユーザインタフェース要素６４６は、ユーザがハンドインに関するより詳細な情報を表示することを可能にし、第４のユーザインタフェース要素６４８は、ユーザがハンドアウトの添付ファイルを並び替えること又はハンドインのためのプレースホルダをハンドアウトから削除する（例えば、添付から外す）ことを可能にする。いくつかの実施形態では、第２のユーザインタフェース要素６４４は、ハンドインのリソースの表現のサムネイル画像と、サムネイル画像の隣に位置し、ハンドインに関連する情報を提供するテキストと、を含む。例えば、テキストは、ハンドインのタイトル、及びハンドインのために生成されるリソースの種類を示すことができる。この情報が省略されてもよいこと又は本明細書に記載される情報の代わりに追加の情報が含まれてもよいことが理解されるであろう。
【００８９】
図６Ａに戻ると、第２のアイコン６２４を選択することにより、クライアントアプリケーション２０５は、教員がアクティビティをハンドアウトに添付することを可能にする、ユーザインタフェース要素を含むインタフェースを表示する。アクティビティの種類としては、第三者アプリケーションを用いて完了されるアクティビティ、添付ファイルの閲覧又は編集によって実施されるアクティビティ、ブラウザアプリケーション内のブックマーク又はリンクに関連付けられたネットワークリソースの閲覧によって完了されるアクティビティ、及びマルチメディアファイル（例えば、画像、動画など）の閲覧によって完了されるアクティビティを挙げることができる。
【００９０】
図６Ｃに示すように、ユーザがＧＵＩ６００の第２のアイコン６２４を選択したことに応答して、ボックス６５０を表示することができる。ボックス６５０は、教員がアプリケーションアクティビティをハンドアウトに関連付けることを可能にする、第１のユーザインタフェース要素６５２を含む。例えば、第三者アプリケーションは、クイズを生徒に提示し、クイズに含まれる質問に回答するように生徒に促すように構成され得る。別の例として、第三者アプリケーションは、タスク（例えば、プログラムのソースコードを書く、ゲームをプレイする、画像を外国語の単語と一致させるなど）を実施する指示に生徒が従うことを含む、対話式授業を生徒に提供することができる。また別の例として、第三者アプリケーションは、デジタルの書籍又は教科書の１つ以上の節を読むために、書籍又は教科書のテキストを生徒に提示することができる。
【００９１】
ボックス６５０は、教員がファイルをハンドアウトに添付することを可能にする、第２のユーザインタフェース要素６５４を含む。ファイルは、ドキュメント、スプレッドシート、プレゼンテーション（例えば、スライドデッキ）、ソースコード、又はクライアントデバイス１２０上のアプリケーションによって閲覧できる任意の他の形式のファイルを含むことができる。添付されたファイルは、生徒によって典型的に読まれるか又は閲覧される教材を教員が配布することを可能にする。いくつかの実施形態では、教員は、単一のファイルがクラスの全ての生徒の間で共有される（共同制作オプションと呼ばれる）か、又はファイルのクローン（例えば、コピー）が、各生徒と個別に共有されるかを指定することができる。教員はまた、添付されたファイルを読み出し専用状態にする、又は生徒がファイルを編集するための読み出し−書き込みアクセスを生徒に可能にする、ファイルに関連付けられた権限を指定することができる。
【００９２】
ボックス６６０は、教員がブックマーク又はリンクをハンドアウトに添付することを可能にする、第３のユーザインタフェース要素６６６を含む。ブックマーク又はリンクは、インターネットなどのネットワークを介してアクセス可能なリソースのユニフォームリソースロケータ（Uniform Resource Locator；ＵＲＬ）を指定するハイパーリンクを指す。リンクは、生徒が、授業に関連し得るウェブサイトを閲覧することを可能にし得る。
【００９３】
ボックス６５０は、教員がマルチメディアファイルをハンドアウトに添付することを可能にする、第４のユーザインタフェース要素６５８を含む。マルチメディアファイルは、写真、スライドショー、動画、又は仮想現実データ若しくは３次元モデルなどの他の種類のマルチメディアを含むことができる。次いで、マルチメディアファイルは、クライアントデバイス１２０にインストールされた、画像ビューワアプリケーションなどのアプリケーションを使用して生徒によって閲覧され得る。
【００９４】
ユーザが第１のユーザインタフェース要素６５２を選択して、第三者アプリケーションに関連付けられたアクティビティをハンドアウトに添付すると、ボックス６５０は、図６Ｄに示すようにボックス６６０と置き換えられ得る。ボックス６６０により、教員は、アプリケーションのリストからアクティビティのための第三者アプリケーションを選択することが可能になる。
【００９５】
いくつかの実施形態では、ボックス６６０は、利用可能なアプリケーションのリストから任意のアプリケーションを選択するための第１のユーザインタフェース要素６６２を含む。しかし、場合によっては、いくつかの第三者アプリケーションは、第三者アプリケーション内のアクティビティを完了する、生徒の進捗を追跡するための１つ以上のサービスに進捗データを第三者アプリケーションが提供することを可能にする、クラスキットソフトウェアフレームワークの少なくとも一部分を実装することができる。クラスキットソフトウェアフレームワークの少なくとも一部分を実装するこれらの第三者アプリケーションは、本明細書では進捗アプリケーションと呼ばれる場合がある。ソフトウェアフレームワークの少なくとも一部分を実装する進捗アプリケーションは、第１のユーザインタフェース要素６６２の下方にある個々のユーザインタフェース要素に別個に列挙され得る。例えば、第２のユーザインタフェース要素６６４は、教員が第１の進捗アプリケーションのアクティビティを添付することを可能にし、第３のユーザインタフェース要素６６６は、教員が第２の進捗アプリケーションのアクティビティを添付することを可能にし、第４のユーザインタフェース要素６６８は、教員が第３の進捗アプリケーションのアクティビティを添付することを可能にする。
【００９６】
いくつかの実施形態では、第三者アプリケーションは、クラスキットソフトウェアフレームワークの少なくとも一部分を実装し、それは、第三者アプリケーションに対話機能を組み込むための手段を提供する。例えば、クラスキットソフトウェアフレームワークは、ソフトウェア開発者が、アプリケーションに関連付けられたコンテキストを定義することを可能にする。本明細書で使用するとき、コンテキストは、アプリケーションの構造を記述するメタデータを指す。例えば、デジタル教科書が、デジタル教科書内の章、節、ページ、問題セット、及び同様の構造を定義するコンテキストを使用して記載され得る。一般に、コンテキストは、第三者アプリケーションのアクティビティを定義することを可能にするメタデータを定義する。
【００９７】
コンテキストはまた、アプリケーション内のアクティビティの進捗を追跡することを可能にする。例えば、デジタル教科書の例を参照し直すと、教員は、教科書の章を読むことに関連するアクティビティを定義することができる。コンテキストは、アクティビティを定義するときに教員が割り当てることを望む、デジタル教科書の特定の章又は節を教員が指定することを可能にさせる。したがって、ＧＵＩ６００を使用してアクティビティを指定するときに、クライアントアプリケーション２０５は、そのコンテキストを調査して、第三者アプリケーション内でどのアクティビティが完了され得るかを決定することができる。
【００９８】
いくつかの実施形態では、教員は、１つ以上の第三者アプリケーションに関連付けられた利用可能なコンテキストのリストを手動で検索し、様々なハンドアウトに教員が割り当てたいコンテキストのセットを選択することができる。コンテキストのセットは、教員がそれらのコンテキストに関連付けられたアクティビティをハンドアウトに添付できるようにするために、メモリ４２０に保存され、クライアントアプリケーション２０５に関連付けられ得る。
【００９９】
他の実施形態では、クライアントデバイス１２０にインストールされた各進捗アプリケーションは、進捗アプリケーションによって提供される利用可能なコンテキストをデーモン４４０に通知することができる。教員は、クライアントアプリケーション２０５を利用して、１つ以上の進捗アプリケーションによって公開される利用可能なコンテキストのリストをブラウズし、お気に入りコンテキストとしていくつかのコンテキストを選択することができる。例えば、ボックス６６０の第１のユーザインタフェース要素６６２を選択することにより、教員は、クライアントデバイス１２０にインストールされた進捗アプリケーションによって提供される、利用可能なコンテキストの全てをブラウズすることができる。次いで、教員は、特定のコンテキストを教員のお気に入りコンテキストとして選択することができる。教員によってお気に入りとして選択された利用可能なコンテキストのサブセットは、クライアントデバイス１２０のローカルデータベース４５０に記憶され得る。教員によって選択されたお気に入りコンテキストはまた、教員に範囲を限定されたリモートデータベース４６０の個人ゾーン４６５に対して同期され得る。次いで、ボックス６６０の追加のユーザインタフェース要素は、特定のお気に入りコンテキストに対応する各ユーザインタフェース要素によって表示され得る。次いで、教員は、特定のお気に入りコンテキストを選択して、ハンドアウトに添付することができる。
【０１００】
図６Ｅに示すように、第２のユーザインタフェース要素６５４を選択することにより、クライアントアプリケーション２０５は、添付されたファイルに関連付けられたオプションを教員が指定することを可能にする、２つのユーザインタフェース要素を含むボックス６７０を表示する。いくつかの実施形態では、オプションは、ファイル共有の権限及びファイルが共同制作であるかどうかを含む。例えば、図６Ｅに示すように、ユーザインタフェース要素６７２が、ファイルが共同制作であるかどうかを教員が示すことを可能にする。このオプションは、ファイルが複数のユーザの間で単一のリソースとして共有されるかどうか、又はファイルのコピーが各ユーザと個別に共有されるかどうかを決定する。ユーザインタフェース要素６７４が、教員がファイルのリソースの権限を変更することを可能にする。リソースが読み出し専用である場合、生徒は、リソースを編集することができないが、リソースが読み出し−書き込みである場合、生徒は、ファイルを編集することができる。
【０１０１】
図６Ｅに明示的に示していない追加のユーザインタフェース要素が、ボックス６７０に含まれ得ることが理解されるであろう。例えば、他のユーザインタフェース要素は、教員が、ローカルメモリ４２０に記憶されたファイルを指定して、ハンドアウトに添付することを可能にし得る。
【０１０２】
図７は、いくつかの実施形態による、ハンドアウトサービス２２０と、クラスの複数の生徒に関連付けられたいくつかのクライアントアプリケーション（単数又は複数）２０５及び／又はデーモン（単数又は複数））４４０との間のクライアント−サーバ関係を示す。図７に示すように、クラスは、クラスに登録されたＬ人の生徒を含むことができ、各生徒は、１つ以上のクライアントデバイス１２０へのアクセスを有する。上述のように、ハンドアウトサービス２２０は、教員が、教員によって制御される複数の異なるクライアントデバイス１２０を使用してハンドアウトを作成及び管理することを可能にするように構成される。加えて、ハンドアウトサービス２２０はまた、生徒のグループに関連付けられた複数の追加のクライアントデバイス１２０に含まれるクライアントアプリケーション２０５にハンドアウトを配布するのを支援するように構成される。
【０１０３】
いくつかの実施形態では、教員は、ハンドアウトの準備を終了し、次いで、閲覧して完了するようにハンドアウトを生徒のグループに割り当てるためにハンドアウトを公開することができる。ハンドアウトサービス２２０は、ハンドアウトを、ハンドアウトにおいて指定された生徒のグループに範囲を限定されたリモートデータベース４６０のハンドアウトゾーン４６５にコピーする。教員がハンドアウトを公開したことに応答して、ハンドアウトサービス２２０は、リモートデータベース４６０のハンドアウトゾーン４６５が更新されたことを、様々な経路７１０によって、生徒に関連付けられた各クライアントデバイス１２０に通知する。経路７１０は、特定のクライアントデバイス１２０のネットワークインタフェースの宛先アドレスに関連付けられたネットワーク経路を参照することができる。
【０１０４】
通知は、各クライアントデバイス１２０に含まれるデーモン４４０によって受信され得る。次いで、デーモン４４０は、ハンドアウトゾーン４６５からクライアントデバイス１２０のローカルデータベース４５０にデータをダウンロードする。いくつかの実施形態では、ハンドアウトサービス２２０は、クラスの生徒のユーザ識別子を取得するために、学校管理サービス２４０を利用する。ユーザ識別子は、所与のクラスの生徒に関連付けられた各クライアントデバイス１２０に、別個の通知サービスを使用して通知を送信するために利用され得る。
【０１０５】
いくつかの実施形態では、生徒のグループは、学校管理サービス２４０によって識別され得、学校管理サービスは、ハンドアウトサービス２２０からの要求を受信したことに応答して、特定のクラスに登録された生徒の識別子のリストを返すように構成される。他の実施形態では、名簿サービスは、学校管理サービス２４０とインタフェースして、組織に範囲を限定されたリモートデータベース４６０の名簿ゾーン４６５に名簿データを作成することができる。次いで、ハンドアウトサービス２２０は、学校管理サービス２４０から名簿データを直接取得する代わりに、リモートデータベース４６０から名簿データにアクセスすることができる。
【０１０６】
ハンドアウトを公開する要求に応答して、ハンドアウトサービス２２０は、教員に範囲を限定された個人ゾーン４６５から、クラスの生徒のグループに範囲を限定されたハンドアウトゾーン４６５にハンドアウトをコピーすることができる。ハンドアウトのコピーがハンドアウトゾーン４６５に記憶されると、ハンドアウトサービス２２０は、ハンドアウトゾーン４６５をサブスクライブする生徒に関連付けられた任意のクライアントデバイスに変更の通知を送信する。ハンドアウトゾーン４６５に関連付けられた生徒のクライアントデバイス１２０に含まれるデーモン４４０は、ハンドアウトサービス２２０からの通知の受信に応答して、ハンドアウトゾーン４６５に記憶されたハンドアウトのコピーをクライアントデバイス１２０のローカルメモリに自動的にダウンロードする。次いで、ハンドアウトは、生徒がアクティビティを完了すること、及び／又はハンドアウトに添付された教材を閲覧することができるように、生徒のクライアントデバイス１２０のクライアントアプリケーション２０５によって閲覧され得る。
【０１０７】
図８Ａ〜図８Ｃは、いくつかの実施形態による、生徒に関連付けられたクライアントデバイス１２０上のクライアントアプリケーション２１０によって実装されるＧＵＩ８００を示す。ＧＵＩ８００は、ＧＵＩ６００とは異なる。クライアントアプリケーション２１０は、教員ではなく生徒に関連付けられたユーザアカウントにユーザがサインインしたことに応答して、ＧＵＩ８００を表示するように構成され得る。ＧＵＩ８００は、生徒が、クラスの教員によって生徒のグループに割り当てられた、クラスのハンドアウトを閲覧することを可能にする。
【０１０８】
いくつかの実施形態では、ＧＵＩ８００は、第１の表示領域８１０、第２の表示領域８２０、及び第３の表示領域８３０を含む。第１の表示領域８１０は、特定のクラスの生徒に割り当てられたハンドアウトの表現を表示するために利用される。第２の表示領域８２０は、生徒が登録されたクラスの表現を表示するために利用される。図８Ａに示すように、第１の表示領域８１０は、ディスプレイ３０２に含まれる画素の第１の部分を占め、第２の表示領域８２０は、ディスプレイ３０２に含まれる画素の第２の部分を占める。
【０１０９】
第１の表示領域８１０は、選択されたクラスの生徒に割り当てられた別個かつ個別のハンドアウトを表す要素８１２を示すヘッダを含む。いくつかの実施形態では、各要素８１２は、ハンドアウトのタイトル、ハンドアウトに関連付けられた期限日の記述子、及び生徒がハンドアウトを完了したかどうかの表示を含む、ボックスによって定義される。例えば、第１の要素８１２−１は、課題「動植物」の第１のハンドアウトに関連付けられ、このハンドアウトは、３月１２日が期限日であり、この生徒は完了しており、第２の要素８１２−２は、課題「テスト準備」の第２のハンドアウトに関連付けられ、このハンドアウトは、３月１５日が期限日であり、この生徒は完了していない。他の実施形態では、要素８１２は異なる形態をとり得ることが理解されるであろう。例えば、要素８１２は、期限日及び／又は完了インジケータを省略することができる。あるいは、要素８１２は、期限日及び／又は完了インジケータに加えて又はその代わりに情報を含むことができる。加えて、要素８１２は、ハンドアウトに割り当てられた異なるアクティビティを表す画像又はアイコンなどのグラフィックを含むことができる。場合によっては、グラフィックは、要素８１２の背景として動画を再生すること、又はハンドアウトに添付された画像のスライドショーを示すことなどによって、アニメーション化され得る。
【０１１０】
第２の表示領域８２０は、生徒が登録されている別個かつ個別のクラスを表す要素８２２を示すヘッダを含む。生徒は、クラスの教員によってどのハンドアウトが生徒に割り当てられたかを第１の表示領域８１０で見るために、特定の要素８２２を選択することができる。いくつかの実施形態では、各要素８２２は、クラスのタイトルと、クラスの生徒に割り当てられたハンドアウトの数の記述子と、を含むボックスによって定義される。例えば、第１の要素８２２−１は、クラス「科学Ａ」に関連付けられ、このクラスは、２つのハンドアウト期限を有し、第２の要素８２２−２は、クラス「数学Ａ」に関連付けられ、このクラスは、ハンドアウト期限を有しておらず（ハンドアウトは０個であり）、第３の要素８２２−３は、クラス「英語Ａ」に関連付けられ、このクラスは、１つのハンドアウト期限を有する。他の実施形態では、要素８２２は異なる形態をとり得ることが理解されるであろう。例えば、要素８２２は、クラスの生徒に割り当てられたハンドアウトの数のインジケータを省略することができる。
【０１１１】
いくつかの実施形態では、生徒は、クライアントデバイス１２０の入力インタフェースを使用して特定のクラスを選択することができる。例えば、生徒は、タッチインタフェースを使用して、その生徒が登録されている利用可能なクラスのうちの１つに関連付けられた要素８２２を選択することができる。要素８２２が選択されると、要素８２２はアクティブ化され、第１の表示領域８１０の要素８１２は、第２の表示領域８２０の選択された要素８２２によって表されるクラスに関連付けられたハンドアウトを反映するように更新されてもよい。選択された要素８２２（例えば、現在アクティブ化されている要素）は、要素８２２がアクティブであることを示すために強調表示され得る。強調表示は、要素のサイズを大きくする、要素８２２又は要素８２２の境界に関連付けられた色を変更する、選択された要素８２２の周囲にボックスを表示するなどによって実装され得る。図８Ａに示すように、第１の要素８２２−１は、アクティブ化され、第２の要素８２２−２及び第３の要素８２２−３よりも大きく示される。
【０１１２】
第３の表示領域８３０は、ディスプレイ３０２の上端縁の近傍に位置する。第３の表示領域８３０は、クライアントアプリケーション２１０のユーザが生徒のユーザアカウントにサインインすることを可能にする、要素を含む。いくつかの実施形態では、第３の表示領域８３０は隠れており、例えば、垂直スワイプタッチジェスチャを使用して、第３の表示領域８３０を露わにさせるなどの、ユーザ入力に応答して表示され得る。
【０１１３】
第１のアイコン８３２が、第３の表示領域８３０の左側の近傍に表示される。第１のアイコン８３２は、ユーザによって選択されると、クライアントアプリケーション２１０に、生徒のユーザアカウントにサインインするための資格情報の入力をユーザに促させることができる。いくつかの実施形態では、第１の表示領域８１０及び第２の表示領域８２０は、ユーザが第１のアイコン８３２を使用して特定のユーザアカウントにサインインするまで隠れている。いくつかの実施形態では、クライアントアプリケーション２１０が起動すると、ユーザアカウントにサインインするための資格情報の入力をユーザに促す別個のインタフェースがユーザに対して表示される。ＧＵＩ８００は、ユーザが特定のユーザアカウントに首尾よくサインインしたときにのみ、ディスプレイ３０２に表示される。次いで、第１のアイコン８３２は、ユーザアカウントからサインアウトするために及び／又は異なるユーザアカウントにサインインするために使用され得る。
【０１１４】
特定のクラスのハンドアウトを表す特定の要素８１２を選択することにより、ＧＵＩ８００は、図８Ｂに示すように、ハンドアウトを表すデータによって更新される。第１の表示領域８４０は、ハンドアウトのタイトル、ハンドアウトの期限日、ハンドアウトが割り当てられたクラスの表示、及び教員によってハンドアウトに含まれた指示などの、ハンドアウトに含まれる情報を提示する。第２の表示領域８５０は、教員によってハンドアウトに添付された任意のハンドイン及び／又はアクティビティに関連する情報を提示する。
【０１１５】
第２の表示領域８５０内のアクティビティを選択することにより、異なるアプリケーションのアクティビティが開かれる。アクティビティが特定のファイル形式の添付ファイルである場合、そのファイル形式に対応するアプリケーションが、添付ファイルを閲覧するために開かれる。アクティビティがブックマーク又はリンクである場合、ウェブブラウザアプリケーションが開かれ、ブックマーク又はリンクのＵＲＬによって指定されたリソースが、取得される。アクティビティがマルチメディアファイルである場合、マルチメディアアプリケーションが、マルチメディアファイルを閲覧するために開かれる。しかし、アクティビティが進捗アプリケーションに関連付けられている場合（例えば、アクティビティが、進捗アプリケーションによって提供され、お気に入りコンテキストとして教員によって選択されたコンテキストに関連付けられている場合）、進捗アプリケーションは、アクティビティを完了するために開かれる。いくつかの実施形態では、進捗アプリケーションは、アクティビティを完了するときに生徒の進捗を追跡するためのクラスキットソフトウェアフレームワークの少なくとも一部分を実装する。
【０１１６】
図８Ｃに示すように、第１の進捗アプリケーションのＧＵＩ８６０が、ディスプレイ３０２上で生徒に提示される。ＧＵＩ８６０は、画素データとして提示される情報の形態で出力を提供することができる。図８Ｃに示すように、第１の進捗アプリケーションのＧＵＩ８６０は、生徒が特定の教科を学習するのを助けるテキスト及びグラフィックを提供することができる。ＧＵＩ８６０は、要素を含むことができ、それらの要素のいくつかは対話式であってもよい。例えば、生徒は、木に関するより詳細な情報を表示するために、木の画像を選択することができる。図８Ｃに示す第三者ソフトウェアは、例示のみを目的として示されており、ソフトウェアの設計は、いかなる特定の種類の学習ソフトウェアにも限定されないことが理解されるであろう。実際に、クラスキットソフトウェアフレームワークを実装できるソフトウェアの多様性は大きい。
【０１１７】
図９は、いくつかの実施形態による、ハンドインサービス２３０とクラスの複数の生徒のいくつかのクライアントアプリケーション（単数又は複数）２１０及び／又はデーモン（単数又は複数）４４０との間のクライアント−サーバ関係を示す。図９に示すように、クラスは、クラスに登録されたＬ人の生徒を含むことができ、各生徒は、１つ以上のクライアントデバイス１２０へのアクセスを有する。ハンドインサービス２３０は、生徒の対応するグループに割り当てられた１つ以上のハンドアウトに含まれるハンドインの管理を支援するように構成される。
【０１１８】
いくつかの実施形態では、ハンドインのためのプレースホルダを含むハンドアウトが公開されると、ハンドアウトのプレースホルダは、生徒がハンドインに対応するファイルを提出することを要求されていることを示す。ここでも、生徒は、クライアントデバイス１２０上の１つ以上のアプリケーションを使用して、ハンドインのファイルを生成する。次いで、生徒は、クライアントアプリケーション２０５を使用してハンドインを提出することができる。あるいは、クライアントアプリケーション２０５は、生徒が第三者アプリケーションからハンドインを提出することを可能にする、第三者アプリケーションに追加されたＧＵＩ要素（例えば、アプリケーション拡張）を作成することができる。
【０１１９】
いくつかの実施形態では、生徒によって作成されたドキュメントは、生徒が異なるクライアントデバイス１２０からドキュメントにアクセスできるように、リモートデータベース４６０の個人ゾーン４６５−１に対して同期され得る。生徒がドキュメントをハンドインとして提出することを選択すると、ハンドインサービスは、生徒に範囲を限定された個人ゾーン４６５−１から、クラスに範囲を限定されたハンドインゾーン４６５−２に、任意選択的にハンドインに対応する特定のハンドアウトにも、ドキュメントをコピーすることができる。生徒の個人ゾーン４６５−１からハンドインゾーン４６５−２にドキュメントを移動させることにより、教員はドキュメントを閲覧することができる。いくつかの実施形態では、ドキュメントはまた、生徒に範囲を限定された個人ゾーン４６５−１から削除され、生徒は、ハンドインゾーン４６５−２に記憶されたドキュメントのコピーへの読み出し専用アクセスを承諾される。その結果、ドキュメントがハンドインとして提出されると、生徒はもはやドキュメントを編集することができない。
【０１２０】
いくつかの実施形態では、特定のハンドアウトに関連付けられた生徒のグループは、学校管理サービス２４０によって識別され得、学校管理サービスは、ハンドインサービス２３０からの要求を受信したことに応答して、特定のクラスに登録された生徒の識別子のリストを返すように構成される。他の実施形態では、名簿サービスは、学校管理サービス２４０とインタフェースして、組織に範囲を限定されたリモートデータベース４６０のゾーン４６５に名簿データを作成することができる。次いで、ハンドインサービス２３０は、学校管理サービス２４０から名簿データを直接取得する代わりに、リモートデータベース４６０から名簿データにアクセスすることができる。
【０１２１】
図１０は、いくつかの実施形態による、進捗パイプライン２５０とクライアントアプリケーション２１０及び／又はデーモン４４０との間のクライアント−サーバ関係を示す。クラスキットソフトウェアフレームワークの利点を教室環境内で完全に実現するためには、関連付けられたクライアントデバイス１２０を使用する各生徒のアクティビティを追跡するための手段が必要となる。デーモン４４０及び進捗パイプライン２５０は、クラスキットソフトウェアフレームワークの少なくとも一部を実装する任意の第三者アプリケーションにそのような機能を提供する。
【０１２２】
図１０に示すように、クライアントデバイス１２０が、プロセッサ４１０と、ソフトウェア及びデータを含むメモリ４２０と、を含む。クライアントデバイス１２０のメモリ４２０は、オペレーティングシステム４３０、クライアントアプリケーション２１０、デーモン４４０、及び１つ以上の進捗アプリケーション１０１０を含む。デーモン４４０は、クラスキットソフトウェアフレームワークによって進捗アプリケーション１０１０と通信するＡＰＩを実装する。
【０１２３】
いくつかの実施形態では、１つ以上の進捗アプリケーション１０１０はそれぞれ、進捗アプリケーション１０１０によって提供される１つ以上のコンテキストに関連付けられた進捗を追跡するための、クラスキットソフトウェアフレームワークの少なくとも一部分を実装する。クラスキットソフトウェアフレームワークは、進捗アプリケーション１０１０のソースコードに追加されるソースコード、進捗アプリケーション１０１０によって利用される機能のライブラリのソースコード、及び進捗アプリケーション１０１０のソースコードにリンクされ得るコンパイルされた機能のライブラリのうちの少なくとも１つを含む。ソフトウェアフレームワークは、クライアントデバイス１２０のバックグラウンドで実行しているデーモン４４０に対するＡＰＩコールを生成する、進捗アプリケーション１０１０のソースコードに含まれる機能を提供する。ＡＰＩコールは、進捗アプリケーション１０１０内でユーザによって実施される動作に関連する進捗追跡情報を含む。
【０１２４】
ソフトウェア開発者は、進捗追跡機能を進捗アプリケーション１０１０内に実装するために、進捗アプリケーション１０１０のソースコード内にＡＰＩコールを実装することができる。例えば、ドキュメント閲覧アプリケーションでは、ソースコードは、ユーザが新しいページに移動するたびにユーザがドキュメントの特定のページを読んだことを示すＡＰＩコールを生成するように構成され得る。ソフトウェア開発者はまた、クライアントアプリケーション２１０内のハンドアウトに添付され、進捗アプリケーション１０１０を利用するアクティビティを教員が作成することを可能にするために、進捗アプリケーション１０１０の構造を指定する進捗アプリケーション１０１０の１つ以上のコンテキストを定義することができる。各コンテキストは、標準の言語（例えば、定義済みキーワード）及び／又はフォーマットを使用して、進捗アプリケーション１０１０の構造を定義するデータ構造である。
【０１２５】
単一の進捗アプリケーション１０１０は、２つ以上のコンテキストに関連付けられ得ることが理解されるであろう。例えば、教科書アプリケーションが、異なるファイル又はデータ構造に記憶された複数の教科書を閲覧するために実装され得る。異なるコンテキストが、異なる教科書のそれぞれについて定義され得る。各コンテキストは、教科書のタイトル、教科書の作成者、教科書の版、教科書の章の数、教科書の各章の説明、各章に含まれる節の説明、各節に含まれる各ページの説明、各章又は各節内の問題セットの説明などを含む、教科書の目次などを定義するなど、対応する教科書の特定のレイアウトを定義することができる。次いで、教員は、これらのコンテキストを使用して、特定のコンテキストに関連付けられた特定のアクティビティを選択し、これらの選択されたアクティビティをクラスの生徒に割り当てられるハンドアウトに添付することができる。
【０１２６】
デーモン４４０は、進捗アプリケーション１０１０からＡＰＩコールを受信するように構成される。ＡＰＩコールは、進捗アプリケーション１０１０内で生成された進捗追跡情報を含むことができる。いくつかの実施形態では、進捗追跡を有効にする、又は無効にすることができる。デーモン４４０は、進捗追跡が無効にされているときに、進捗アプリケーション１０１０から受信された進捗追跡情報を無視するように構成される。しかし、進捗追跡が有効にされている場合、デーモン４４０は、進捗追跡情報を処理するように構成される。いくつかの実施形態では、デーモン４４０は、２つ以上のＡＰＩコールにより受信された進捗追跡情報を集約した後に、１つ以上の進捗アプリケーション１０１０から受信されて集約された進捗追跡情報を処理する。
【０１２７】
いくつかの実施形態では、進捗追跡は、個々の進捗アプリケーション１０１０について有効に又は無効にされ得る。したがって、第１のアプリケーションの進捗追跡を有効にすることができ、第２のアプリケーションの進捗追跡を無効にすることができる。したがって、デーモン４４０は、進捗追跡が無効にされているアプリケーションからの任意の進捗追跡情報をフィルタリングして除外し、進捗追跡が有効にされているアプリケーションの進捗追跡情報のみを処理するように構成される。
【０１２８】
いくつかの実施形態では、クライアントデバイス１２０にインストールされた全ての進捗アプリケーション１０１０の進捗追跡は、クライアントアプリケーション２１０のインストール時に自動的に有効にされる。したがって、クライアントデバイス１２０のユーザは、進捗追跡情報の収集を防止するために、クライアントデバイス１２０又はクライアントデバイス１２０にインストールされた個々の第三者アプリケーションの進捗追跡を無効にすることを要求され、これは、オプトアウトポリシーと呼ばれる場合がある。他の実施形態では、クライアントデバイス１２０にインストールされた全ての第三者アプリケーション１０１０の進捗追跡は、クライアントアプリケーション２１０のインストール時に自動的に無効にされる。したがって、クライアントデバイス１２０のユーザは、進捗追跡情報の収集を可能にするために、クライアントデバイス１２０又はクライアントデバイス１２０にインストールされた個々の第三者アプリケーションの進捗追跡を有効にすることを要求され、これは、オプトインポリシーと呼ばれることがある。
【０１２９】
進捗追跡情報としては、進捗アプリケーション１０１０を使用してクライアントデバイス１２０のユーザによって完了された動作を識別する情報を挙げることができるが、これに限定されない。例えば、進捗追跡情報としては、ユーザがデジタル教科書の特定の章を閲覧したこと又は読んだこと、進捗アプリケーション１０１０のＧＵＩによってユーザに提示されたいくつかの問題を完了したこと、進捗アプリケーション１０１０の対話式要素のリンクをクリックしたり、同対話式要素と対話したりするなどの動作を完了したこと、などを示す情報を挙げることができる。
【０１３０】
進捗追跡情報は、個人識別情報（Personally Identifying Information；ＰＩＩ）を含むことができる。このＰＩＩは、機密情報とみなされる場合があり、したがって、クライアントデバイス１２０からサーバデバイス１１０に送信されるときに、この情報をセキュリティ保護するようにデーモン４４０によって配慮される。いくつかの実施形態では、特定の生徒に範囲を限定された進捗ゾーン４６５が、ユーザアカウントに関連付けられた各生徒の進捗追跡情報を記憶するために利用される。進捗追跡情報は、クライアントデバイス１２０のメモリ４２０に記憶され、ローカルで暗号化される。進捗追跡情報はまた、リモートデータベース４６０の進捗ゾーン４６５においてリモートで暗号化され得る。進捗追跡情報は、異なる暗号キーによってローカル又はリモートで暗号化され得る。加えて、デーモン４４０は、リモートデータベース４６０に転送中の進捗追跡情報を暗号化するように構成され得る。転送中の暗号化に使用される暗号キーは、ローカル又はリモートで利用される暗号キーとは異なり得る。その結果、進捗追跡情報は、様々な形態の認証（例えば、生体認証、パスコードの入力をユーザに要求するなど）を使用してローカルでセキュリティ保護され得、進捗追跡情報は、安全な伝送機構としての相互ＴＬＳなどの追加の認証形態を使用して、リモートで（すなわちサーバ側で）セキュリティ保護され得る。
【０１３１】
図１１は、いくつかの実施形態による、デーモン４４０による進捗追跡情報のフィルタリングを示す。いくつかの実施形態では、デーモン４４０は、１人以上の教員によって生徒に割り当てられた１つ以上のハンドアウトに関連付けられたアクティブなコンテキストのセットに基づいて、進捗アプリケーション１０１０から受信された進捗追跡情報をフィルタリングするように構成される。デーモン４４０は、生徒（又はクラス）に現在割り当てられている１つ以上のハンドアウトの添付ファイルに基づいて、アクティブなコンテキストのリスト１１７０を追跡することができる。いくつかの実施形態では、期限日を既にすぎているハンドアウトの添付ファイルは、教員によって閉じられ（例えば、非アクティブ化され）、アクティブなコンテキストのリスト１１７０から除去され得る。デーモン４４０は、アクティブなコンテキストのリスト１１７０に基づいて、進捗アプリケーション１０１０から受信された進捗追跡情報をフィルタリングするように構成される。
【０１３２】
例えば、第１の教員は、第１の進捗アプリケーション１０１０−１の第１のコンテキストに関連付けられたアクティビティを含む第１のハンドアウトを特定の生徒に割り当てることができ、第２の教員は、第２の進捗アプリケーション１０１０−２の第２のコンテキストに関連付けられたアクティビティを含む第２のハンドアウトを特定の生徒に割り当てることができる。第１の進捗アプリケーション１０１０−１の第１のコンテキスト及び第２の進捗アプリケーション１０１０−２の第２のコンテキストは、アクティブなコンテキストと見なされる。しかし、生徒は、任意のアクティブなコンテキストに関連付けられていない第３の進捗アプリケーション１０１０−３を使用してもよく、デーモン４４０は、第３の進捗アプリケーション１０１０−３から受信された任意の進捗追跡情報１１４０をフィルタリングして除外して（例えば、無視して）、不要な進捗追跡データの収集を避けるように構成され得る。同様に、デーモン４４０はまた、異なる非アクティブなコンテキストに関連付けられ、第１の進捗アプリケーション１０１０−１及び／又は第２の進捗アプリケーション１０１０−２から受信された任意の進捗追跡情報をフィルタリングして除外することができる。例えば、アクティブなコンテキストは、マクベスの電子書籍の構造を定義してもよく、非アクティブなコンテキストは、ロメオとジュリエットの電子書籍の構造を定義してもよい。進捗アプリケーション１０１０においてマクベスの電子書籍が開いている間に受信された任意の進捗追跡情報は、デーモン４４０によって処理され、進捗アプリケーション１０１０においてロメオとジュリエットの電子書籍が開いている間に受信された追跡情報は、フィルタリングして除外され無視される。
【０１３３】
図１１に示すように、第１の進捗アプリケーション１０１０−１から受信され、アクティブなコンテキストのリスト１１７０に含まれる第１のコンテキストに関連付けられた第１の進捗追跡情報１１１０は、デーモン４４０によって処理される。いくつかの実施形態では、デーモン４４０は、第１の進捗追跡情報１１１０を、進捗追跡情報１１５０−１としてローカルデータベース４５０に記憶する。進捗追跡情報１１５０−１は、同期メカニズムによって、生徒に範囲を限定されたリモートデータベース４６０の進捗ゾーン４６５にアップロードされる。同様に、第２の進捗アプリケーション１０１０−２から受信され、アクティブなコンテキストのリスト１１７０に含まれる第２のコンテキストに関連付けられた第２の進捗追跡情報１１２０は、デーモン４４０によって処理される。第２の進捗追跡情報１１２０は、進捗追跡情報１１５０−２としてローカルデータベース４５０に記憶される。ここでも、進捗追跡情報１１５０−２は、同期メカニズムによって、生徒に範囲を限定されたリモートデータベース４６０の進捗ゾーン４６５にアップロードされる。
【０１３４】
しかし、第２の進捗アプリケーション１０１０−２から受信され、アクティブなコンテキストのリスト１１７０に含まれない第３のコンテキストに関連付けられた第３の進捗追跡情報１１３０が、デーモン４４０によって無視される。同様に、第３の進捗アプリケーション１０１０−３から受信され、アクティブなコンテキストのリスト１１７０に含まれない第４のコンテキストに関連付けられた第４の進捗追跡情報１１４０がまた、デーモン４４０によって無視される。
【０１３５】
デーモン４４０はまた、暗号化された進捗追跡情報１１５０に関連付けられたメタデータ１１６０を作成する。メタデータ１１６０は、リモートデータベース４６０の暗号化された進捗追跡情報１１５０への参照、及び進捗追跡情報に関連付けられたコンテキストのコンテキスト識別子を含むことができる。いくつかの実施形態では、メタデータ１１６０は、クラス識別子、コンテキストに対応するハンドアウト識別子、進捗追跡情報１１５０を生成した進捗アプリケーション１０１０に対応するアプリケーション識別子、又はクライアントデバイス１２０のユーザアカウントにサインインしたユーザに関連付けられたユーザ識別子など、進捗パイプライン２５０によって利用され得る追加の情報を含む。その結果、進捗パイプライン２５０は、ＰＩＩを含み得る実際の進捗追跡情報を処理しない。代わりに、進捗パイプライン２５０は、進捗追跡情報に関連付けられたメタデータ１１６０を処理するにすぎず、実際の進捗追跡情報は、暗号化され、リモートデータベース４６０の個人進捗ゾーン４６５に記憶されたままである。
【０１３６】
他の実施形態では、メタデータ１１６０ではなく、実際の進捗追跡情報が、暗号化されているか又は暗号化されていないかのいずれかで、進捗パイプライン２５０に提供され得ることが理解されるであろう。しかし、これらの実施形態は、進捗追跡情報に含まれるＰＩＩにより低いセキュリティをもたらす場合がある。
【０１３７】
アクティブなコンテキストの受信により、その特定のコンテキストに関連する進捗の追跡が、デーモン４４０に暗示的に許可されることが理解されるであろう。コンテキストがアクティブなコンテキストのリスト１１７０から除去されると、暗示的な許可が取り消され、したがって、デーモンは、そのコンテキストに関連付けられた進捗を追跡しない。
【０１３８】
図１２は、いくつかの実施形態による進捗パイプライン２５０を示す。進捗パイプライン２５０は、１つ以上のサーバデバイス１１０に実装される。いくつかの実施形態では、進捗パイプライン２５０の各構成要素が、異なるサーバデバイス１１０に実装される。場合によっては、進捗パイプライン２５０の特定の構成要素が、本明細書でクラスタと呼ばれる場合もある、サーバノード群に実装される。
【０１３９】
図１２に示すように、進捗パイプライン２５０は、１つ以上のクライアントデバイス１２０に含まれるデーモン４４０からネットワーク１５０を介して進捗追跡メタデータ１２０２を受信する。進捗パイプライン２５０は、ネットワークアドレスに関連付けられた１つ以上のサービスとして実装され得る。ネットワークアドレスに送信されたメッセージが、対応するサービスによって処理される。
【０１４０】
いくつかの実施形態では、オンランプサービス１２１０は、１つ以上のデーモン４４０から進捗追跡メタデータ１２０２を受信する。進捗追跡メタデータ１２０２は、特定の生徒の進捗追跡情報１１５０に関連する情報を含む。いくつかの実施形態では、進捗追跡メタデータ１２０２は、クライアントアプリケーション２１０のユーザアカウントに関連付けられたユーザ識別子と、進捗追跡情報１１５０に対応する特定のコンテキストのコンテキスト識別子と、を含む。
【０１４１】
いくつかの実施形態では、オンランプサービス１２１０は、進捗追跡が特定のユーザについて有効にされているかどうかをチェックするように構成される。管理者は、学校管理サービス２４０によって、所与の生徒の進捗を追跡する許可について、特定の生徒の選好を変更することができる。オンランプサービス１２１０は、所与の生徒の許可選好のステータスの変化に関する通知を、その変更が特定のクライアントデバイス１２０のデーモン４４０で受信される前に受信してもよい。その結果、デーモン４４０は、生徒が進捗追跡を全体で無効にした後であっても、所与の生徒の進捗追跡情報を収集し続けることができる。したがって、オンランプサービス１２１０は、リモートデータベース４６０に記憶されたフラグのセットに基づいて、進捗パイプライン２５０によって受信される進捗追跡メタデータについてゲート保持機能を実施する。
【０１４２】
いくつかの実施形態では、名簿サービスが、学校管理サービス２４０を使用して、特定の学区の各生徒について許可フラグのセットを定期的にプルし、組織に範囲を限定されたリモートデータベース４６０の許可ゾーン４６５に許可フラグのセットを記憶するように構成される。次いで、オンランプサービス１２１０は、進捗追跡メタデータ１２０２に含まれるユーザ識別子を使用して受信された進捗追跡メタデータ１２０２の各アイテムについて許可フラグのセットを照会することができる。
【０１４３】
いくつかの実施形態では、オンランプサービス１２１０は、識別サービス２６０を呼び出し、進捗追跡メタデータ１２０２で受信されたユーザ識別子を使用してディレクトリサービス識別子を要求する。ディレクトリサービス識別子は、ユーザアカウントが作成されると、ユーザ識別子に関連付けられるように登録され得る。ディレクトリサービス識別子は、ユーザアカウントの寿命にわたって一定であり、クライアントアプリケーション２１０及び／又はデーモン４４０がディレクトリサービス識別子を決して受信しないように、クライアント−サーバアーキテクチャ２００のサーバ側内でのみ使用される。その結果、デーモン４４０と進捗パイプライン２５０との間のトラフィックを覗くいかなる者も、ディレクトリサービス識別子を取得して、１つ以上のサーバに記憶された特定のＰＩＩを特定のユーザの識別子と関係付けることができない。識別サービス２６０は、ディレクトリサービス識別子をオンランプサービス１２１０に返し、オンランプサービスは、進捗追跡メタデータ１２０２に含まれるユーザ識別子を逆参照し、ユーザ識別子をディレクトリサービス識別子に置き換える。いくつかの実施形態では、許可フラグのセットは、ユーザアカウントのユーザ識別子ではなく、ディレクトリサービス識別子に対応する。その結果、ユーザ識別子は、オンランプサービス１２１０がゲート保持機能を実施する前に逆参照される。オンランプサービス１２１０が進捗追跡メタデータ１２０２の処理を終了すると、進捗追跡メタデータ１２０２は、待ち行列１２１５に送信される。
【０１４４】
他の実施形態では、ディレクトリサービス識別子の代わりに内部識別子を利用することができる。したがって、進捗追跡メタデータ１２０２は、ディレクトリサービス識別子ではなく内部識別子を使用して進捗パイプライン２５０全体にわたって追跡される。これにより、進捗パイプライン２５０は、内部識別子とディレクトリサービス識別子との間の関連付けを削除するだけで、進捗追跡情報と特定のユーザとの間の全ての関連付けを切り離すことが可能になる。
【０１４５】
いくつかの実施形態では、待ち行列１２１５は、サーバデバイス１１０に実装される待ち行列サービスである。待ち行列１２１５は、オンランプサービス１２１０と同じサーバデバイス１１０内又は異なるサーバデバイス１１０内に実装され得る。いくつかの実施形態では、待ち行列１２１５は、Ａｐａｃｈｅ（登録商標）Ｋａｆｋａ分散型ストリーミングプラットフォームなどの分散型ストリーミングサービスとして実装される。待ち行列１２１５は、オンランプサービス１２１０及び拡充サービス１２２０が非同期的に実行されることを可能にする。
【０１４６】
いくつかの実施形態では、拡充サービス１２２０は、１つ以上のサーバデバイス１１０に実装される。拡充サービス１２２０は、進捗追跡メタデータ１２０２を待ち行列１２１５から受信し、進捗追跡メタデータ１２０２を追加の情報で拡充するように構成される。いくつかの実施形態では、拡充サービス１２２０は、進捗追跡メタデータ１２０２に含まれるディレクトリサービス識別子に基づいて、学校管理サービス２４０に名簿データを要求する。名簿データは、生徒が登録された任意のクラスの１つ以上のクラス識別子、及び各クラスに登録された生徒の生徒識別子のリストを含むことができる。学校管理サービス２４０は、生の進捗追跡メタデータ１２０２内のデーモン４４０によって提供されたユーザ識別子ではなく、生徒のディレクトリサービス識別子を利用することができる。他の実施形態では、学校管理サービス２４０に照会するために、内部識別子ではなく、ユーザ識別子が利用され得る。
【０１４７】
拡充サービス１２２０はまた、リモートデータベース４６０の対応するゾーン４６５から特定のクラスの全てのアクティブなハンドアウトを取得することができる。名簿データ及びハンドアウトは、進捗追跡メタデータ１２０２に既に含まれていない場合に、進捗追跡メタデータ１２０２に追加の情報を付加するために、進捗追跡メタデータ１２０２に含まれるクラス識別子及びディレクトリサービス識別子と相互参照される。いくつかの実施形態では、拡充サービス１２２０は、進捗追跡メタデータ１２０２が、組織識別子、クラス識別子、ハンドアウト識別子、及びコンテキスト識別子、並びに暗号化された進捗追跡情報１１５０への参照を含むことを確実にする。
【０１４８】
いくつかの実施形態では、進捗追跡メタデータ１２０２は、複数のクラス識別子及び／又は複数のハンドアウト識別子に関連付けられ得る。例えば、２つの異なるクラスから２人の異なる教員が、同じコンテキストを参照する２つの異なるハンドアウトにおいて特定の生徒にアクティビティを割り当てた場合、生徒は、一方のクラスのアクティビティを完了すると、他のクラスの同じアクティビティもまた同時に完了したと認められる。拡充サービス１２２０が進捗追跡メタデータ１２０２を拡充すると、拡充サービス１２２０は、拡充された進捗追跡メタデータ１２０２を待ち行列１２２５に送信する。
【０１４９】
いくつかの実施形態では、待ち行列１２２５は、待ち行列１２１５と同様である。待ち行列１２２５は、拡充サービス１２２０と同じサーバデバイス１１０内又は異なるサーバデバイス１１０内に実装され得る。
【０１５０】
いくつかの実施形態では、進捗追跡メタデータ１２０２は、待ち行列１２２５から出て、分散型ファイルシステム１２３０に記憶される。いくつかの実施形態では、分散型ファイルシステム１２３０は、サーバノード群に実装されるようなＡｐａｃｈｅ（登録商標）Ｈａｄｏｏｐ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｆｉｌｅ  Ｓｙｓｔｅｍ（ＨＤＦＳ）である。各サーバノードは、データを記憶できる安価なディスクドライブのセットを含む。状況によっては、分散型ファイルシステム１２３０は、分散型ファイルシステム１２３０に記憶された進捗追跡メタデータ１２０２への変更を追跡するように構成された少なくとも１つのジャーナルノードを含む。ジャーナルノードは、サーバノードがクラッシュした場合に、進捗追跡メタデータ１２０２の完全性を保護する。
【０１５１】
進捗パイプライン２５０は、各組織のデータが、特定の組織に範囲が限定された別個かつ個別のリモートデータベース４６０に記憶されていても、複数の組織によって利用され得ることが理解されるであろう。その結果、分散型ファイルシステム１２３０は、１つ以上の組織の大量の進捗追跡メタデータ１２０２を記憶している。集約サービス１２４０は、進捗追跡メタデータ１２０２の全てにわたってソートし、組織によって追跡ウィンドウ中に受信された進捗追跡メタデータ１２０２を編成するように設計される。いくつかの実施形態では、集約サービス１２４０は、大規模なデータセットを処理するための演算サービスである。例えば、集約サービス１２４０は、サーバノード群に実装されるＡｐａｃｈｅ（登録商標）Ｓｐａｒｋサービスとして実装され得るが、これに限定されない。次いで、進捗追跡メタデータ１２０２は、集約サービス１２４０によって生成された１つ以上のスパークジョブで処理される。
【０１５２】
いくつかの実施形態では、追跡ウィンドウは、例えば、数分間又は数時間とすることができる。例えば、集約サービス１２４０は、１０分間のウィンドウで、分散型ファイルシステム１２３０で受信された進捗追跡メタデータ１２０２をソートすることができる。いくつかの実施形態では、集約サービス１２４０は、追跡ウィンドウに基づいてセットされたタイマーの満了時にルーチンを実行するように構成される。ルーチンが実行されると、タイマーはリセットされて、次の追跡ウィンドウの満了を待つ。
【０１５３】
いくつかの実施形態では、集約サービス１２４０は、分散型ファイルシステム１２３０のジャーナルノードを調査して、追跡ウィンドウ中に分散型ファイルシステム１２３０に記憶された進捗追跡メタデータ１２０２の全てに関連する情報を収集する。ジャーナルノードは、分散型ファイルシステム１２３０への変更を追跡し、以前の追跡ウィンドウ中に分散型ファイルシステム１２３０に記憶された全ての進捗追跡メタデータ１２０２のリストを返すことができる。集約サービス１２４０は、追跡ウィンドウ中に受信された進捗追跡メタデータ１２０２をプルし、追跡ウィンドウ中に進捗追跡メタデータ１２０２を進捗パイプライン２５０に提出する１つ以上の組織の各組織のデータ構造を生成するように構成される。データ構造は、本明細書ではキューブと呼ばれる場合がある。
【０１５４】
いくつかの実施形態では、集約サービス１２４０は、単一の組織に範囲を限定された別個かつ個別のキューブを生成する。特定の組織識別子に対応する進捗追跡メタデータ１２０２は全て、対応するキューブにソートされる。所与のキューブに記憶された進捗追跡メタデータ１２０２は、クラス識別子、ハンドアウト識別子、コンテキスト識別子、及び生徒識別子（例えば、ユーザ識別子、ディレクトリサービス識別子など）によってソートされ得る。
【０１５５】
いくつかの実施形態では、キューブは、ブロック型ストレージ１２５０に記憶される。いくつかの実施形態では、ブロック型ストレージ１２５０は、集約サービス１２４０を実装するサーバデバイス１１０に含まれるＨＤＤとすることができる。他の実施形態では、ブロック型ストレージ１２５０は、１つ以上のサーバデバイス１１０に含まれる物理的な記憶デバイスの１つ以上のセットに実装された仮想ブロック型記憶デバイスとすることができる。他の実施形態では、ブロック型ストレージ１２５０は、サーバノード群に実装されたＡｐａｃｈｅ（登録商標）Ｃａｓｓａｎｄｒａなどの分散型データベースサービスによって置き換えられ得る。また他の実施形態では、ブロック型ストレージ１２５０は、上述の分散型ファイルシステム１２３０と同様の分散型ファイルシステムによって置き換えられ得る。
【０１５６】
集約サービス１２４０は、１つ以上の対応する組織の追跡ウィンドウ中に受信された進捗追跡メタデータ１２０２を含む１つ以上のキューブを生成する。集約サービス１２４０は、各キューブへの参照を待ち行列１２４５に追加する。いくつかの実施形態では、待ち行列１２４５は、待ち行列１２１５及び１２２５と同様であり、オフランプサービス１２６０が集約サービス１２４０とは非同期的に動作することを可能にする。
【０１５７】
いくつかの実施形態では、オフランプサービス１２６０は、各キューブの参照が待ち行列１２４５から出るときにキューブを処理するように構成される。いくつかの実施形態では、オフランプサービス１２６０は、ブロック型ストレージ１２５０の所与のキューブに記憶された進捗追跡メタデータ１２０２を読み出し、各進捗追跡メタデータ１２０２のエントリを、特定のクラスに、コンテキストに、任意選択的には、進捗追跡メタデータ１２０２に含まれる、クラス識別子、コンテキスト識別子、及び／又はディレクトリサービス識別子／ユーザ識別子に基づく生徒に範囲を限定された、リモートデータベース４６０の特定のゾーン４６５に書き込むように構成されるにすぎない。その結果、オフランプサービス１２６０は、進捗追跡メタデータ１２０２をキューブよりも小さな粒度にソートする。
【０１５８】
他の実施形態では、オフランプサービス１２６０は、進捗パイプライン２５０の前のサービスによって利用されたディレクトリサービス識別を置き換えることによって進捗追跡メタデータ１２０２を逆参照し、ディレクトリサービス識別子を進捗識別子と置き換える。進捗識別子は、識別サービス２６０内のディレクトリサービス識別子に関連付けられ得るが、進捗識別子は、進捗追跡データ１１５０と特定のユーザとの間の任意の接続を断つために、ディレクトリサービス識別子から分離され得る。いくつかの実施形態では、進捗識別子は、ユーザが進捗追跡からオプトアウトした（例えば、進捗追跡を全体で無効にした）ことに応答して破棄される。例えば、組織の管理者は、学校管理サービス２４０を使用して、特定の生徒、クラス、学校、及び／又は学区全体の進捗追跡を無効にすることができる。これらの変更により、識別サービス２６０は、進捗追跡を無効にされたそれらの生徒のディレクトリサービス識別子から進捗識別子を分離することができる。進捗追跡情報がリモートデータベース４６０にまだ存在してもよいが、進捗追跡情報は、進捗識別子とディレクトリサービス識別子との間の関連付けが断たれると、特定の生徒に関係付けることができない。
【０１５９】
オフランプサービス１２６０が進捗追跡メタデータ１２０２の処理を終了すると、進捗追跡メタデータ１２０２は、保管サービス１２７０に送信される。いくつかの実施形態では、保管サービス１２７０は、少なくとも１つのサーバデバイス１１０に実装される。保管サービス１２７０は、暗号化された進捗追跡情報１１５０の参照を進捗追跡メタデータ１２０２のエントリによってプルし、進捗追跡情報１１５０を進捗ストレージ１２８０に記憶するように構成される。いくつかの実施形態では、進捗ストレージ１２８０は、ネットワークベースの記憶サービスである。進捗追跡情報１１５０は、特定のクラス識別子、コンテキスト識別子、進捗識別子、及び（任意選択的に）ハンドアウト識別子に範囲を限定された、ゾーン４６５と同様のゾーンに記憶される。
【０１６０】
いくつかの実施形態では、進捗ストレージ１２８０は、リモートデータベース４６０とは別個かつ個別であり、クライアント−サーバアーキテクチャ２００のサーバ側でのみアクセスされ得る。したがって、デーモン４４０は、進捗パイプライン２５０によってアーカイブされた進捗追跡情報１１５０への直接的な視認性を有していない。他の実施形態では、進捗ストレージ１２８０は、リモートデータベース４６０の新しいゾーン４６５に実装され、報告サービス２７０を使用してクライアントデバイス１２０に対して同期され得る。
【０１６１】
明示的に示していないが、進捗パイプライン２５０の様々なサービスは、処理中に特定の問題に遭遇した場合に、サービスによって処理されている特定の進捗追跡メタデータ１２０２を再利用するように構成され得る。いくつかの実施形態では、リトライ待ち行列が、各サービスに関連付けられ、進捗追跡メタデータ１２０２は、後の時点で処理するためにリトライ待ち行列にプッシュされ得る。例えば、識別サービス２６０などのサービスが、進捗パイプライン２５０が特定の動作を完了することを妨げるダウンタイムに遭遇している場合がある。そのような場合、サービスによって処理されるデータは、ダウンしたサービスが利用可能となり得る後の時点で処理を試みるために、リトライ待ち行列に記憶され得る。あるいは、サービスは、進捗追跡メタデータ１２０２を、サービスの入力とインタフェースされる待ち行列に戻すように単純に構成され得る。例えば、拡充サービス１２２０は、進捗追跡メタデータ１２０２を後の時点で処理されるように待ち行列１２１５に押し戻すように構成され得る。
【０１６２】
次いで、報告サービス２７０が、クライアントアプリケーション２１０及び／又はデーモン４４０からの要求に応答して進捗追跡情報１２０４を進捗ストレージ１２８０からプルして、クライアントアプリケーション２１０及び／又はデーモン４４０に提供される報告データを生成することができる。
【０１６３】
図１３は、いくつかの実施形態による、報告サービス２７０とクライアントアプリケーション２１０及び／又はデーモン４４０との間のクライアント−サーバ関係を示す。クライアントデバイス１２０に含まれるクライアントアプリケーション２１０及び／又はデーモン４４０は、サーバデバイス１１０の報告サービス２７０とインタフェースする。ハンドアウトがクラスの生徒に割り当てられた後に、教員は、課題を完了する生徒の進捗を追跡することを望む場合がある。より具体的には、クライアントアプリケーション２１０のＧＵＩは、特定のハンドアウトに関連する進捗追跡情報の表現を表示することができる。添付ファイル、ハンドイン及び／又はアクティビティはそれぞれ、各生徒の完了の進捗に関連する情報と共に表示され得る。
【０１６４】
いくつかの実施形態では、クライアントアプリケーション２１０は、クライアントデバイス１２０のディスプレイ３０２にハンドアウトの表現を表示するための入力を受信する。入力に応答して、クライアントアプリケーション２１０は、報告サービス２７０に報告を要求する。本明細書で使用するとき、報告は、進捗ストレージ１２８０からプルされた進捗追跡情報１２０４から導出された報告データを含むファイル又はデータ構造を指す場合がある。
【０１６５】
いくつかの実施形態では、報告サービス２７０は、クライアントアプリケーション２１０から報告の要求を受信する。要求は、クラス識別子、コンテキスト識別子、ユーザ識別子、及び（任意選択的に）ハンドアウト識別子を含むことができる。報告サービス２７０は、識別サービス２６０を利用して、ユーザ識別子に対応する進捗識別子を見出し、次いで、進捗ストレージ１２８０に照会して、クラス識別子、コンテキスト識別子、進捗識別子、及び（任意選択的に）ハンドアウト識別子に対応する進捗追跡情報１２０４を取得することができる。
【０１６６】
加えて、要求は、要求に関連付けられたタイムフレームを指定することができる。例えば、要求は、照会が、ハンドアウトの期限日の前の時間、ハンドアウトの期限日の後の時間、又はハンドアウトの締切日（同日を含む）までの時間に、進捗追跡情報を限定するべきかどうかを指定することができる。本明細書で使用するとき、締切日とは、ハンドアウトに添付されたコンテキストが非アクティブ化され、それにより、コンテキストを含む別のハンドアウトが生徒に割り当てられていない限り、締切日の後のそのコンテキストに関連する更なる進捗追跡をブロックする時間を指す場合がある。その結果、報告サービス２７０は、特定のクラスの生徒に対応し、特定のハンドアウトに割り当てられた特定のコンテキストのための進捗追跡情報１２０４のセットを生成する。
【０１６７】
いくつかの実施形態では、デーモン４４０は、クラスの進捗追跡情報１２０４を集約して、報告データに基づいてクラスの様々な統計値を計算する。例えば、デーモン４４０は、クラスの生徒の総数とハンドイン又はアクティビティを完了した生徒の総数とを計算することができる。デーモン４４０はまた、異なる進捗追跡情報１２０４に関連付けられたタイムスタンプを使用して、（例えば、特定のアクティビティ又はハンドインに関する全ての進捗追跡情報について最初のタイムスタンプと最後のタイムスタンプとの間の差を計算することによって）各生徒がハンドイン又はアクティビティを完了するのに要した合計時間を計算することができる。別の例として、デーモン４４０は、クイズ又は問題セットに対して提示された正答／誤答に基づいて、各生徒のスコアを計算することができる。デーモン４４０は、不合格スコアに対する合格スコアの比、クラスの全生徒又は不合格スコアの生徒数に対する合格スコアの生徒数の比、クラスの平均スコア、クラスの最低スコア及び最高スコア、スコアの集合の中間スコア及び標準分布、レターグレードにマッピングされたスコアの分布（例えば、Ａスコアの数、Ｂスコアの数など）、並びにスコア及び／又は進捗追跡情報１２０４に関連する任意の他の関連統計値を計算することができる。
【０１６８】
いくつかの実施形態では、生徒は、特定のアクティビティを完了するために何回かの試みを行うことができる。例えば、生徒が、クイズを何度も受けることができる。そのような実施形態では、報告の要求は、報告データが、生徒によって完了された各試みについての進捗追跡情報１２０４を含むべきか、又は生徒によって完了された最後の試みだけを含むべきかを指定することができる。進捗追跡情報が複数の試みのデータを含む場合、デーモン４４０は、複数の試みに関連する統計値、例えば、平均スコア、全ての試みの最高スコア、不合格であった試みに対する合格した試みの比などを計算するように構成され得る。
【０１６９】
いくつかの実施形態では、デーモン４４０はまた、例えば、進捗追跡情報に関連付けられたユーザ識別子を生徒名と関係付けるために、リモートデータベース４６０の名簿ゾーン４６５から名簿情報をダウンロードするように構成され得る。
【０１７０】
他の実施形態では、クライアントアプリケーション２１０は、進捗追跡情報１２０４を集約する、及び／又はローカルデータベース４５０の進捗追跡情報１２０４に関連する統計値を計算する、機能を実施するように構成され得る。デーモン４４０は、リモートデータベース４６０のゾーン４６５からローカルデータベース４５０への進捗追跡情報１２０４のダウンロードを容易にして、クライアントアプリケーション２１０が進捗追跡情報１２０４にアクセスできるようにするにすぎない。次いで、クライアントアプリケーション２１０は、教員に提示されたＧＵＩのフィールドにポピュレートする値を生成するために、進捗追跡情報１２０４を使用して任意の必要な分析を実施するように構成される。
【０１７１】
図１４Ａ〜図１４Ｂは、いくつかの実施形態による、クライアントアプリケーション２１０のＧＵＩ１４００を示す。ＧＵＩ１４００は、割り当てられたハンドアウトに関連する報告データを教員に提示するために使用され得る。ＧＵＩ１４００は、クライアントデバイス１２０のディスプレイ３０２に提示され得る。図１４Ａに示すように、ＧＵＩ１４００は、クライアントデバイス１２０−２などのタブレットコンピュータに表示される。ＧＵＩ１４００は、グラフィック、テキスト、アイコン、図形、入力フィールド、表示領域などを含む、いくつかの要素を含むことができる。いくつかの実施形態では、ＧＵＩ１４００は、教員がＧＵＩ３００において割り当てられたハンドアウトの要素３１２を選択したことに応答して表示される。
【０１７２】
ＧＵＩ１４００は、第１の表示領域１４１０及び第２の表示領域１４２０を含む。第１の表示領域１４１０は、ハンドアウトのタイトル、ハンドアウトの期限日、ハンドアウトが割り当てられたクラスの表示、及び教員によってハンドアウトに含まれた指示などの、ハンドアウトに含まれる情報を提示する。第２の表示領域１４２０は、教員によってハンドアウトに添付された任意のハンドイン及び／又はアクティビティに関連する情報を提示する。
【０１７３】
ハンドアウトに添付され、第２の表示領域１４２０に提示される各ハンドイン又はアクティビティはまた、ハンドイン又はアクティビティに関連する報告データとともに提示され得る。報告データは、１つ以上の要素１４２２内に表示され得る。例えば、図１４Ａに示すように、アプリケーション２に関連付けられたアクティビティは、アクティビティを完了した生徒の不合格スコアに対する合格スコアの比を表示する第１の要素１４２２−１と、生徒がアクティビティを完了するのに要した平均時間を表示する第２の要素１４２２−２と、クラスの生徒の総数に対するアクティビティを完了した生徒の数の比を表示する第３の要素１４２２−３と、を含む。
【０１７４】
加えて、教員が報告データに関するより詳細な情報を閲覧することを可能にするアイコン１４２４が、ハンドイン又はアクティビティの近傍に提示される。図１４Ｂに示すように、アイコン１４２４を選択することにより、ＧＵＩ１４００は、第２の表示領域１４２０においてハンドイン又はアクティビティの近傍に詳細な情報を表示するように更新され得る。第２の表示領域１４２０は、第１の表示領域１４１０及び第２の表示領域１４２０の両方によって以前に覆われていたディスプレイ３０２の画素を覆うように自動的に調節され得ることが理解されよう。もちろん、第２の表示領域１４２０の範囲は、図１４Ａと同じままにすることができ、又は、第１の表示領域１４１０及び／又は第２の表示領域１４２０をディスプレイ３０２の画素に対して上又は下に再配置するタッチ入力ジェスチャに応答して手動で更新され得る。例えば、第１の表示領域１４１０及び／又は第２の表示領域１４２０を上又は下にスクロールするためにスワイプジェスチャが利用され得る。
【０１７５】
図１４Ｂに示すように、クラスに登録された各個々の生徒に関連する報告データが、ＧＵＩ１４００に提示され得る。例えば、詳細な情報のエントリ１４２６は、生徒名、生徒がアクティビティに合格したか又は不合格であったかの表示、完了した場合には、各生徒が第三者アプリケーションのアクティビティを完了するのに要した時間、及びアクティビティが完了されたかどうかの表示を含む。図１４Ｂに示す情報は、ＧＵＩ１４００に提示され得る詳細な情報の種類の一例にすぎないことが理解されるであろう。他の実施形態では、詳細な情報は、他の種類の統計値又は生の進捗追跡情報（例えば、デーモン４４０によってアクションが受信された時間及びアクションに関連する情報を伴う、デーモン４４０によって追跡された各アクションの内訳）を含むことができる。また他の実施形態では、詳細な情報は、生徒の進捗を経時的に示すグラフ又はチャートなどの報告データのグラフィック表現、一連の問題に対して生徒によって提出された回答へのリンク、ハンドイン又は生徒によって実施されたアクティビティの記録へのリンクなどを含むことができる。
【０１７６】
いくつかの実施形態では、詳細な情報は、特定のコンテキストの下位区分についての進捗追跡情報の詳細な内訳を提示することができる。例えば、コンテキストは、生徒に割り当てられた問題セットの構造を説明することができる。進捗追跡情報は、問題セットの各問題に提供された生徒の回答に関連する情報を含むことができる。したがって、問題セットへの回答が親コンテキストと見なされる場合でさえも、問題セットの各問題の子コンテキストが、生徒によって提供された各個々の質問への回答を追跡することができる。したがって、詳細な情報は、教員が、各問題に与えられた特定の回答、及び回答が正しかったか又は誤っていたかを閲覧することを可能にする。ＧＵＩ１４００は、進捗追跡データのそのような視覚的表現を教員が容易に閲覧することを可能にし得る。
【０１７７】
いくつかの実施形態では、クライアントアプリケーション２１０は、クラスの各生徒の最終グレードを決定するときの、例えば教員及び管理者による、その後のレビューのために、アーカイブされたファイル又はデータ構造に報告データの結果を出力することができる。
【０１７８】
図１５は、いくつかの実施形態による、クライアントデバイス上での生徒のアクティビティを追跡するための方法１５００のフローチャートである。方法１５００は、クライアントデバイス１２０によって実行される。いくつかの実施形態では、方法１５００は、１つ以上のアプリケーションに関連付けられたアクティビティを監視するように構成されたロジックとして実装され得る。ロジックは、ハンドアウトのリソースに添付されたアクティビティを完了する生徒の進捗を監視するための、クライアントデバイス１２０のプロセッサ４１０によって実行される命令を含むことができる。いくつかの実施形態では、方法１５００は、デーモン４４０によって実装されるロジック内に実装される。
【０１７９】
１５０２において、１つ以上のアプリケーションから進捗追跡情報を受信する。いくつかの実施形態では、進捗追跡情報は、進捗追跡情報を生成したアプリケーションに対応するアプリケーション識別子、アプリケーションに関連付けられた特定のコンテキストに対応するコンテキスト識別子、進捗追跡情報が生成された時間を示すタイムスタンプ、あるいはアプリケーション内で実施された動作及び／又は動作の結果を示す情報のうちの少なくとも１つを含む。いくつかの実施形態では、進捗追跡情報は、アプリケーションによって生成されたＡＰＩコール内のデーモンによって受信される。
【０１８０】
１５０４において、進捗追跡情報をフィルタリングする。いくつかの実施形態では、クライアントデバイスにインストールされた１つ以上のアプリケーションのそれぞれについて進捗追跡が有効にされているか、又は無効にされているかの判定に基づいて、進捗追跡情報がフィルタリングされる。進捗追跡情報は、進捗追跡が無効にされている任意のアプリケーションから進捗追跡情報が受信されたときに破棄され、進捗追跡が有効にされている任意のアプリケーションから進捗追跡情報が受信されたときに処理される。他の実施形態では、１つ以上のアプリケーションに関連付けられたアクティブなコンテキストのリストが受信され、進捗追跡情報は、アクティブなコンテキストのリストと比較される。例えば、進捗追跡情報に含まれるコンテキスト識別子は、アクティブなコンテキストのリストに含まれるいくつかのコンテキスト識別子と比較される。進捗追跡情報は、進捗追跡情報がアクティブなコンテキストのリストに含まれないコンテキストに対応するときに破棄され、進捗追跡情報がアクティブなコンテキストのリストに含まれるコンテキストに対応するときに処理される。
【０１８１】
１５０６において、ネットワークからアクセス可能なリモートデータベースに進捗追跡情報を記憶する。いくつかの実施形態では、リモートデータベースは、特定の範囲に限定された異なる種類のデータを記憶するために異なるゾーンを用いるネットワークベースの記憶サービスである。進捗追跡情報を記憶する各ゾーンは、ディスクベースの暗号化によって保護され得、データへのアクセスは、認証技術及びメッセージ署名技術を使用して、信頼されたサーバに限定され得る。進捗追跡情報は、ネットワークベースの記憶サービス内の個人ゾーンに記憶され得、個人ゾーンは、クライアントデバイスにインストールされたクライアントアプリケーションに関連付けられたユーザアカウントの特定のユーザ識別子に関連付けられている。
【０１８２】
１５０８において、進捗追跡情報に関連付けられたメタデータを生成する。メタデータは、ユーザ識別子及び／又はコンテキスト識別子など、進捗追跡情報の情報のサブセットと、リモートデータベース４６０に記憶された進捗追跡情報への参照などの情報とを含むことができる。
【０１８３】
１５１０において、進捗追跡情報のメタデータを進捗パイプラインに送信する。いくつかの実施形態では、進捗パイプラインは、１つ以上の組織内の１つ以上のクラスの複数の異なる生徒に関連付けられた複数の異なるクライアントデバイスから受信された進捗追跡情報を強化し集約する。進捗パイプラインは、いくつかの異なるサーバデバイスに実装された、いくつかのサービスを含むことができる。
【０１８４】
図１６は、いくつかの実施形態による、ネットワークを介して利用可能な１つ以上のサービスを利用して進捗追跡情報を処理するための方法１６００のフローチャートである。方法１６００は、進捗パイプライン２５０によって実行される。いくつかの実施形態では、方法１６００は、進捗追跡情報又は進捗追跡情報に対応するメタデータのうちの少なくとも一方を処理するように構成されたロジックとして実装され得る。ロジックは、進捗追跡情報及び／又はメタデータを処理するための、サーバデバイス１１０のプロセッサ４１０によって実行される命令を含むことができる。いくつかの実施形態では、方法１６００は、オンランプサービス１２１０、拡充サービス１２２０、分散型ファイルシステム１２３０、集約サービス１２４０、オフランプサービス１２６０、及び保管サービス１２７０を含む１つ以上のサービスによって実装されるロジック内に実装される。
【０１８５】
１６０２において、複数のクライアントデバイスから進捗追跡情報に対応するメタデータを受信する。いくつかの実施形態では、メタデータは、リモートデータベースに記憶された進捗追跡情報への参照を含むことができる。メタデータはまた、クラス識別子、ユーザ識別子、又は進捗追跡情報に対応するコンテキスト識別子のうちの少なくとも１つを含むことができる。
【０１８６】
１６０４において、メタデータを追加の情報で拡充する。いくつかの実施形態では、追加のデータによって補足されたメタデータは、進捗追跡情報を、組織識別子、クラス識別子、ディレクトリサービス識別子、コンテキスト識別子、及び任意選択的にハンドアウト識別子に相関させる。
【０１８７】
１６０６において、特定の組織の追跡ウィンドウ中に進捗パイプラインによって受信されたメタデータのサブセットを含むデータ構造を生成する。いくつかの実施形態では、分散型ファイルシステムは、少なくとも１つのジャーナルノードを利用し、ジャーナルノードは、追跡ウィンドウ中に受信されたメタデータの全てを分散型ファイルシステムから取得することを可能にする。サービスは、追跡ウィンドウ中に進捗パイプラインにメタデータを提出した、１つ以上の組織のそれぞれに対応する異なるデータ構造にメタデータをソートする。
【０１８８】
１６０８において、データ構造を処理して、クラス識別子及び／又はコンテキスト識別子に基づいて、ソートされたメタデータを生成する。ソートはまた、ディレクトリサービス識別子又は内部識別子に基づくことができる。１６０８における動作は、１つ以上の組織のために作成された各データ構造について実施され得る。
【０１８９】
１６１０において、ソートされたメタデータに対応する進捗追跡情報を、リモートデータベースから取得される。メタデータに含まれる参照は、リモートデータベースに進捗追跡情報を要求するために利用され得る。
【０１９０】
１６１２において、進捗追跡情報を、報告サービスによってアクセス可能なメモリに記憶する。いくつかの実施形態では、進捗追跡情報は、ディレクトリサービス識別子又は内部識別子から逆参照され、進捗識別子は、進捗追跡情報に関連付けられたメタデータのディレクトリサービス識別子又は内部識別子を置き換える。進捗識別子及び進捗追跡情報は、報告サービスによってアクセス可能なネットワークベースの記憶サービスに記憶され得る。ネットワークベースの記憶サービスは、間接的に報告サービスを介する場合を除いて、クライアントデバイスによってアクセス可能でなくてもよい。
【０１９１】
図１７は、いくつかの実施形態による、本明細書で説明する様々な装置及び／又は方法を実装するために使用され得る例示的なコンピューティングデバイス１７００の詳細な図を示す。特に、詳細な図は、図１〜図１４に示され、本明細書で説明するコンピューティングデバイスに含まれ得る様々な構成要素を示す。例えば、サーバデバイス１１０、クライアントデバイス１２０、又は任意のネットワーク装置及び／若しくは消費者向け電子機器を含む任意の他のデバイスのうちの１つ以上が、コンピューティングデバイス１７００の構成要素を含むことができる。
【０１９２】
図１７に示すように、コンピューティングデバイス１７００は、コンピューティングデバイス１７００の動作全般を制御するためのマイクロプロセッサ又はコントローラを表すプロセッサ１７０２を含むことができる。コンピューティングデバイス１７００はまた、コンピューティングデバイス１７００のユーザが、コンピューティングデバイス１７００と対話することを可能にするユーザ入力デバイス１７０８を含むことができる。例えば、ユーザ入力デバイス１７０８は、ボタン、キーパッド、ダイヤル、タッチスクリーン、オーディオ入力インタフェース、ビジュアル／画像キャプチャ入力インタフェース、センサデータなどの形態をとる入力など、様々な形態をとることができる。また更に、コンピューティングデバイス１７００は、プロセッサ１７０２によって制御されることにより、ユーザに視覚情報を提示できるディスプレイ１７１０（スクリーンディスプレイ）を含むことができる。データバス１７１６は、少なくとも、記憶デバイス１７４０とプロセッサ１７０２と及びコントローラ１７１３との間のデータ転送を容易にすることができる。コントローラ１７１３は、機器制御バス１７１４を通じて様々な機器とインタフェースし、それらを制御するために使用することができる。コンピューティングデバイス１７００はまた、データリンク１７１２に接続するネットワーク／バスインタフェース１７１１を含むことができる。無線接続の場合には、ネットワーク／バスインタフェース１７１１は、無線送受信機を含むことができる。
【０１９３】
コンピューティングデバイス１７００は、記憶デバイス１７４０をも含む。このデバイスは、ディスク（単数又は複数）（例えば、ハードディスク）を含むことができ、記憶デバイス１７４０内の１つ以上のパーティションを管理する記憶管理モジュールを含む。いくつかの実施形態では、記憶デバイス１７４０は、フラッシュメモリ、半導体（ソリッドステート）メモリなどを含むことができる。コンピューティングデバイス１７００はまた、ランダムアクセスメモリ（Random Access Memory、ＲＡＭ）１７２０及び読み出し専用メモリ（Read-Only Memory、ＲＯＭ）１７２２を含むことができる。ＲＯＭ１７２２は、実行すべきプログラム、ユーティリティ又はプロセスを不揮発性方式で格納することができる。ＲＡＭ１７２０は、揮発性のデータ記憶デバイスを提供することができ、コンピューティングデバイス１７００の動作に関連する命令を記憶する。
【０１９４】
上述のように、本技術の一態様は、課題を完了する時に生徒の進捗を追跡するために、様々なソースから利用可能なデータを収集及び使用することである。本開示は、いくつかの例において、この収集されたデータは、特定の人を一意に特定する個人情報データ、又は特定の人に連絡する若しくはその所在を突き止めるために使用できる個人情報データを含み得ることを想到している。そのような個人情報データとしては、人口統計データ、ロケーションベースのデータ、電話番号、電子メールアドレス、ツイッターＩＤ、自宅の住所、ユーザの健康又はフィットネスのレベル（例えば、バイタルサイン測定値、服薬情報、運動情報）に関するデータ若しくは記録、誕生日、又は任意のその他の識別情報若しくは個人情報を挙げることができる。
【０１９５】
本開示は、本技術におけるそのような個人情報データの使用がユーザの利益になる使用であり得る点を認識するものである。例えば、個人情報データは、学校に通う個人の教育体験を向上させるために使用され得る。したがって、そのような個人情報データを使用することにより、教員が、彼らの授業又は個々の注意を生徒のニーズに合わせることを可能にする。更には、ユーザに利益をもたらす、個人情報データに関する他の使用もまた、本開示によって想到される。例えば、健康データ及びフィットネスデータは、ユーザの全般的なウェルネスについての洞察を提供するために使用することができ、あるいは、ウェルネスの目標を追求するための技術を使用している個人への、積極的なフィードバックとして使用することもできる。
【０１９６】
本開示は、そのような個人情報データの収集、分析、開示、伝送、記憶、又は他の使用に関与するエンティティが、確固たるプライバシーのポリシー及び／又は慣行を遵守するものとなることを想到する。具体的には、そのようなエンティティは、個人情報データを秘密として厳重に保守するための、業界又は政府の要件を満たしているか又は上回るものとして一般に認識されている、プライバシーのポリシー及び慣行を実装し、一貫して使用するべきである。そのようなポリシーは、ユーザによって容易にアクセス可能とするべきであり、データの収集及び／又は使用が変化するにつれて更新されるべきである。ユーザからの個人情報は、そのエンティティの合法的かつ正当な使用のために収集されるべきであり、それらの合法的使用を除いては、共有又は販売されるべきではない。更には、そのような収集／共有は、ユーザに告知して同意を得た後に実施されるべきである。更には、そのようなエンティティは、そのような個人情報データへのアクセスを保護して安全化し、その個人情報データへのアクセスを有する他者が、それらのプライバシーポリシー及び手順を遵守することを保証するための、あらゆる必要な措置を講じることを考慮するべきである。更には、そのようなエンティティは、広く受け入れられているプライバシーのポリシー及び慣行に対する自身の遵守を証明するために、第三者による評価を自らが受けることができる。更には、ポリシー及び慣行は、収集及び／又はアクセスされる具体的な個人情報データのタイプに適合されるべきであり、また、管轄権固有の考慮事項を含めた、適用可能な法令及び規格に適合されるべきである。例えば、アメリカ合衆国では、特定の健康データの収集又はアクセスは、医療保険の相互運用性と説明責任に関する法律（Health Insurance Portability and Accountability Act、ＨＩＰＡＡ）などの、連邦法及び／又は州法によって管理することができ、その一方で、他国における健康データは、他の規制及びポリシーの対象となり得るものであり、それに従って対処されるべきである。それゆえ、各国の異なる個人データのタイプに関して、異なるプライバシー慣行が保たれるべきである。
【０１９７】
前述のことがらにもかかわらず、本開示はまた、個人情報データの使用又は個人情報データへのアクセスを、ユーザが選択的に阻止する実施形態も想到する。すなわち、本開示は、そのような個人情報データへのアクセスを防止又は阻止するように、ハードウェア要素及び／又はソフトウェア要素を提供することができると想到する。例えば、進捗追跡サービスの場合において、本技術は、ユーザが、サービスの登録中又はその後のいつでも、個人情報データの収集への参加の「オプトイン」又は「オプトアウト」を選択できるように構成され得る。別の例では、ユーザが、特定の第三者アプリケーションの進捗追跡情報を提供しないように選択することができる。また別の例では、ユーザが、収集されるデータの範囲を限定すること、又は進捗追跡情報の収集を完全に禁止することを選択することができる。「オプトイン」及び「オプトアウト」の選択肢を提供することに加えて、本開示は、個人情報のアクセス又は使用に関する通知を提供することを想到する。例えば、ユーザの個人情報データにアクセスすることとなるアプリのダウンロード時にユーザに通知され、その後、個人情報データがアプリによってアクセスされる直前に再びユーザに注意してもよい。
【０１９８】
更には、本開示の意図は、個人情報データを、非意図的若しくは無許可アクセス又は使用の危険性を最小限に抑える方法で、管理及び処理するべきであるという点である。データの収集を制限し、データがもはや必要とされなくなった時点で削除することによって、危険性を最小限に抑えることができる。更には、適用可能な場合、特定の健康関連アプリケーションにおいて、ユーザのプライバシーを保護するために、データの非特定化を使用することができる。非特定化は、適切な場合には、特定の識別子（例えば、生年月日など）を除去すること、記憶されたデータの量又は特異性を制御すること（例えば、位置データを住所レベルよりも都市レベルで収集すること）、データがどのように記憶されるかを制御すること（例えば、データをユーザ全体にわたって情報集約すること）及び／又は他の方法によって、容易にすることができる。
【０１９９】
それゆえ、本開示は、１つ以上の様々な開示された実施形態を実装するための、個人情報データの使用を広範に網羅するものではあるが、本開示はまた、そのような個人情報データにアクセスすることを必要とせずに、それらの様々な実施形態を実装することもまた可能であることを想到している。すなわち、本技術の様々な実施形態は、そのような個人情報データの全て又は一部分が欠如することにより、実施不可能となるものではない。例えば、進捗追跡は、非個人情報データ、又は進捗追跡パイプラインにとって利用可能な他の非個人情報若しくは公的に利用可能な情報などの最小限の個人情報に基づいて、実装され得る。
【０２００】
説明した実施形態の様々な態様、実施形態、実装形態、又は特徴は、個別に又は任意の組み合わせで用いることができる。説明した実施形態の様々な態様をソフトウェア、ハードウェア、又はハードウェアとソフトウェアとの組み合わせにより実装することができる。更に、説明した実施形態は、非一時的コンピュータ可読媒体上のコンピュータ可読コードとして実施できる。この非一時的コンピュータ可読媒体は、その後コンピュータシステムによって読み出すことが可能なデータを記憶できる、任意のデータ記憶デバイスである。非一時的コンピュータ可読媒体の例としては、読み出し専用メモリ、ランダムアクセスメモリ、ＣＤ−ＲＯＭ、ＨＤＤ、ＤＶＤ、磁気テープ、及び光学的データ記憶デバイスが挙げられる。この非一時的コンピュータ可読媒体はまた、そのコンピュータ可読コードが分散方式で記憶及び実行されるように、ネットワーク結合されたコンピュータシステム上に分散させることもできる。
【０２０１】
前述の記載では、説明のために、記載された実施形態の完全な理解をもたらすために特定の専門用語を用いた。しかし、記述される実施形態を実施するために、具体的な詳細は必要とされないことは、当業者には明らかであろう。それゆえ、上述の具体的な実施形態の説明は、例示及び説明の目的のために提示される。それらの説明は、網羅的であることも、又は開示される厳密な形態に、説明した実施形態を限定することも意図するものではない。上記の教示を考慮すれば、多くの変更及び変形が可能であることが、当業者には明らかであろう。
【図１】
2021518940.tif 000003
【図２】
2021518940.tif 000004
【図３】
2021518940.tif 000005
【図４】
2021518940.tif 000006
【図５】
2021518940.tif 000007
【図６Ａ】
2021518940.tif 000008
【図６Ｂ】
2021518940.tif 000009
【図６Ｃ】
2021518940.tif 000010
【図６Ｄ】
2021518940.tif 000011
【図６Ｅ】
2021518940.tif 000012
【図７】
2021518940.tif 000013
【図８Ａ】
2021518940.tif 000014
【図８Ｂ】
2021518940.tif 000015
【図８Ｃ】
2021518940.tif 000016
【図９】
2021518940.tif 000017
【図１０】
2021518940.tif 000018
【図１１】
2021518940.tif 000019
【図１２】
2021518940.tif 000020
【図１３】
2021518940.tif 000021
【図１４Ａ】
2021518940.tif 000022
【図１４Ｂ】
2021518940.tif 000023
【図１５】
2021518940.tif 000024
【図１６】
2021518940.tif 000025
【図１７】
2021518940.tif 000026
【手続補正書】
【提出日】令和2年8月27日(2020.8.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
クライアントデバイス上での生徒のアクティビティを追跡するための方法であって、前記方法は、前記クライアントデバイス上で実行しているバックグラウンドプロセスによって、
前記クライアントデバイス上の１つ以上のアプリケーションから生徒のアクティビティに関連する進捗追跡情報を受信することと、
フィルタリングされた進捗追跡情報を生成するために、前記進捗追跡情報をフィルタリングすることと、
前記フィルタリングされた進捗追跡情報をリモートデータベースに記憶することと、
フィルタリングされた前記進捗追跡情報に関連付けられたメタデータを生成することと、
ネットワークを介して前記クライアントデバイスによってアクセス可能な少なくとも１つのサービスに前記メタデータを送信することと、
を含む、方法。
【請求項２】
前記１つ以上のアプリケーションの各アプリケーションは、前記アプリケーションに、前記アプリケーション内で実施された動作に応答して、前記バックグラウンドプロセスへのアプリケーションプログラミングインタフェース（ＡＰＩ）コールを生成させる、ソフトウェアフレームワークの少なくとも一部分を実装する、請求項１に記載の方法。
【請求項３】
前記進捗追跡情報をフィルタリングすることは、
前記１つ以上のアプリケーションのそれぞれについて進捗追跡が有効にされているか、又は無効にされているかを判定することと、
進捗追跡が無効にされている任意のアプリケーションから前記進捗追跡情報が受信されたときに、前記進捗追跡情報を破棄すること、又は
進捗追跡が有効にされている任意のアプリケーションから前記進捗追跡情報が受信されたときに、前記進捗追跡情報を処理して、前記フィルタリングされた進捗追跡情報を生成することと、
を含む、請求項１に記載の方法。
【請求項４】
前記進捗追跡情報をフィルタリングすることは、
前記１つ以上のアプリケーションに関連付けられたアクティブなコンテキストのリストを受信することと、
前記進捗追跡情報に含まれるコンテキスト識別子をアクティブなコンテキストの前記リストと比較することと、
前記コンテキスト識別子がアクティブなコンテキストの前記リストに含まれていないときに、前記進捗追跡情報を破棄すること、又は
前記コンテキスト識別子がアクティブなコンテキストの前記リストに含まれているときに、前記進捗追跡情報を処理して、前記フィルタリングされた進捗追跡情報を生成することと、
を含む、請求項１に記載の方法。
【請求項５】
前記リモートデータベースに記憶された前記進捗追跡情報は、前記リモートデータベースの各ゾーンのディスク暗号化を使用してセキュリティ保護されている、請求項１に記載の方法。
【請求項６】
前記リモートデータベースは、異なるデータを記憶する複数のゾーンに分割されたネットワークベースの記憶サービスであり、各ゾーンは、組織識別子、クラス識別子、ユーザ識別子、コンテキスト識別子、又はハンドアウト識別子のうちの少なくとも１つの任意の組み合わせに範囲が限定されている、請求項１に記載の方法。
【請求項７】
前記進捗追跡情報は、前記ネットワークベースの記憶サービス内の個人ゾーンに記憶されており、前記個人ゾーンは、前記クライアントデバイスにインストールされたクライアントアプリケーションに関連付けられたユーザアカウントの特定のユーザ識別子に関連付けられている、請求項６に記載の方法。
【請求項８】
前記メタデータは、前記リモートデータベース内の前記進捗追跡情報への参照と、クラス識別子、ユーザ識別子、又はコンテキスト識別子のうちの少なくとも１つと、を含む、請求項１に記載の方法。
【請求項９】
前記コンテキスト識別子は、前記メタデータに含まれている、請求項８に記載の方法。
【請求項１０】
ネットワークを介して利用可能な１つ以上のサービスを利用して進捗追跡情報を処理するように構成されたコンピューティングデバイスであって、前記コンピューティングデバイスは、
少なくとも１つのプロセッサと、
命令を記憶する少なくとも１つのメモリと、を備え、前記命令は、前記少なくとも１つのプロセッサによって実行されると、前記コンピューティングデバイスに、
複数のクライアントデバイスから進捗追跡情報に対応するメタデータを受信させ、
組織識別子によって識別される特定の組織のための追跡ウィンドウ中に受信された前記メタデータのサブセットを含むデータ構造を生成させ、
前記データ構造を処理させ、クラス識別子及びコンテキスト識別子に基づいて、ソートされたメタデータを生成させ、
ソートされた前記メタデータに対応する前記進捗追跡情報を、サービスによってアクセス可能なメモリに記憶させる、
コンピューティングデバイス。
【請求項１１】
前記少なくとも１つのプロセッサは更に、前記コンピューティングデバイスに、
前記メタデータを拡充させて、追加の情報を含めさせる、請求項１０に記載のコンピューティングデバイス。
【請求項１２】
前記追加の情報は、前記組織識別子、ディレクトリサービス識別子、又はハンドアウト識別子のうちの少なくとも１つを含む、請求項１１に記載のコンピューティングデバイス。
【請求項１３】
前記１つ以上のサービスは、オンランプサービス、拡充サービス、分散型ファイルシステム、集約サービス、オフランプサービス、及び保管サービスのうちの少なくとも１つを含む、請求項１０に記載のコンピューティングデバイス。
【請求項１４】
１つ以上のデジタルハンドアウトを割り当てられた生徒の進捗を追跡するように構成されたサーバデバイスであって、前記サーバデバイスは、
少なくとも１つのプロセッサと、
命令を記憶する少なくとも１つのメモリとを備え、前記命令は、前記少なくとも１つのプロセッサによって実行されると、前記サーバデバイスに、前記１つ以上のデジタルハンドアウトを完了する生徒の進捗を追跡するためのサービスを実装させ、前記サービスは、
前記１つ以上のデジタルハンドアウトを作成し、少なくとも１つのクライアントデバイスにインストールされた１つ以上のアプリケーションに関連付けられたコンテキストにリンクすることを可能にする、ハンドアウトサービスであって、前記１つ以上のアプリケーションの各アプリケーションは、ソフトウェアフレームワークの少なくとも一部分を実装する、ハンドアウトサービスと、
前記少なくとも１つのクライアントデバイスにインストールされた前記１つ以上のアプリケーションによって生成された進捗追跡情報を処理するように構成された複数のサービスを含む進捗パイプラインと、を含む、
サーバデバイス。
【請求項１５】
前記進捗パイプラインは、第１のサービスを含み、前記第１のサービスは、
進捗追跡情報に対応するメタデータを受信し、
ユーザ識別子をディレクトリサービス識別子又は内部識別子に置き換えることにより、前記メタデータに含まれる前記ユーザ識別子を逆参照し、
前記ユーザ識別子、前記ディレクトリサービス識別子、又は前記内部識別子のうちの１つについて進捗追跡が有効にされているか、又は無効にされているかを判定し、
前記判定に基づいて前記メタデータをフィルタリングする、
ように構成されている、請求項１４に記載のサーバデバイス。
【請求項１６】
前記進捗パイプラインは、第２のサービスを含み、前記第２のサービスは、
組織識別子、前記ディレクトリサービス識別子、前記内部識別子、又はハンドアウト識別子のうちの少なくとも１つで前記メタデータを拡充するように構成されている、請求項１５に記載のサーバデバイス。
【請求項１７】
前記進捗パイプラインは、第２のサービスを含み、前記第２のサービスは、
少なくとも１つのジャーナルノードを含む分散型ファイルシステムから、追跡ウィンドウに対応するメタデータのサブセットを取得し、
メタデータの前記サブセットに含まれる特定の組織識別子に関連付けられた、メタデータの前記サブセットを含むデータ構造を生成し、
前記データ構造を記憶サービスに記憶し、
前記データ構造に対応する参照を待ち行列にプッシュする、
ように構成されている、請求項１５に記載のサーバデバイス。
【請求項１８】
前記進捗パイプラインは、第２のサービスを含み、前記第２のサービスは、
データ構造を処理して、クラス識別子、ハンドアウト識別子、コンテキスト識別子、前記ユーザ識別子、前記ディレクトリサービス識別子、又は前記内部識別子のうちの少なくとも１つに基づいて、ソートされたメタデータを生成する、
ように構成されている、請求項１５に記載のサーバデバイス。
【請求項１９】
前記進捗パイプラインは、第２のサービスを含み、前記第２のサービスは、
前記ユーザ識別子、前記ディレクトリサービス識別子、又は前記内部識別子のうちの１つに関連付けられた進捗識別子に前記進捗追跡情報を関連付け、
前記進捗追跡情報及び前記進捗識別子をネットワークベースの記憶サービスに記憶する、
ように構成されている、請求項１５に記載のサーバデバイス。
【請求項２０】
各クライアントデバイスは、前記クライアントデバイスのローカルデータベースに記憶されたデータを、前記データが第２のクライアントデバイスによってアクセスされ得るように、リモートデータベースに対して同期させるように構成されたデーモンを含む、請求項１４に記載のサーバデバイス。
【国際調査報告】
2021518940.tif 000027
2021518940.tif 000028