本出願による方法及び装置の代表的な適用例を、本セクションで説明する。これらの例は、前後関係を追加し、説明する実施形態の理解を助けることのみを目的として提供される。それゆえ、説明する実施形態は、これらの具体的な詳細の一部又は全てを伴わずに実践することができる点が、当業者には明らかとなるであろう。他の実例では、説明する実施形態を不必要に不明瞭化することを回避するために、周知のプロセスステップは、詳細には説明されていない。他の適用例が可能であり、それゆえ以下の実施例は、限定的なものとして解釈されるべきではない。
以下の「発明を実施するための形態では、記載の一部を成し、説明する実施形態に係る具体的な実施形態が例示として示される添付の図面が参照される。これらの実施形態は、説明する実施形態を当業者が実施し得る程度に詳細に説明されるが、これらの実施例は限定するものとして理解されず、したがって、他の実施形態を使用してもよく、説明する実施形態の趣旨及び範囲から逸脱することなく変更を行ってもよい。
デジタル教室は、生徒に提供されたコンピューティングデバイスにインストールされた対話式アプリケーションの豊かな環境内で学習する新しい機会を生徒に提供する。デバイスは、生徒が、ブラウザによってアクセスされるか又は特殊なアプリケーションによって提供される情報とオンラインで対話することを可能にし得るが、これらのアクティビティの利点は通常、これらのアクティビティを追跡することの困難な性質によって失われる。その結果、これらの教材を統一された教室アーキテクチャに組み込むための新しい技術が望まれる。
教室環境は、いくつかのデバイス及びアプリケーションを教員及び生徒に提供することができ、これらは、教員が、教員によって容易に監視され得るこれらのアプリケーションを使用して、生徒のアクティビティを割り当てることを可能にする。教員が、生徒に割り当てるために、ソフトウェアフレームワークを実装する1つ以上の第三者アプリケーションによって提供されたコンテキストによって定義されたアクティビティを組み込んだハンドアウトを作成する。第三者アプリケーションは、これらのコンテキストに関連付けられたアクティビティを完了する生徒の進捗を追跡し、進捗追跡情報をデバイスのバックグラウンドプロセスに提供するように構成される。バックグラウンドプロセス及び/又はクライアントアプリケーションは、進捗追跡情報を処理するように設計された1つ以上のネットワークサービスとインタフェースすることができる。処理された進捗追跡情報は、ハンドアウトを割り当てられた各生徒の進捗を示す、教員に表示するための報告データを生成するために照会され得る。
これらの実施形態及び他の実施形態について、図1~図17を参照して以下で論じる。それらの図に関して本明細書で与えられる詳細な説明が説明のみを目的とし、限定的であると見なされるべきではないことを当業者は容易に理解するであろう。
図1は、いくつかの実施形態による、教室環境内で動作するように設計されたネットワーク環境100を示す。ネットワーク環境100は、ネットワーク150を介して通信するように構成された別個かつ個別のいくつかのコンピューティングデバイスを含む。ネットワーク環境100は、サーバデバイス110及びクライアントデバイス120を含む。図1に示すように、クライアントデバイス120は、ラップトップコンピュータ120-1及び120-5、タブレットコンピュータ120-2、120-3、及び120-4、並びにモバイルデバイス120-6を含むことができるが、これらに限定されない。ネットワーク環境100は、デスクトップコンピュータ、ウェアラブルデバイス(例えば、スマートウォッチ)、パーソナルデジタルアシスタントなどの他の種類のクライアントデバイス120を含み得ることが理解されるであろう。
以下の用語は、この文書全体にわたって使用され得る。クラスは、特定の教科又はアクティビティを教わるために定期的に集まる個人のグループを指す。クラスは、1人以上の教員と、クラスに登録された何人かの生徒とを含むことができる。教室環境は、クラスに関連付けられたユーザのグループによって利用される関連するデバイスのグループを指す。学校は、教員のグループによって教えられるいくつかのクラスの管理集合を指す。学区は、1つ以上の学校を管理する組織を指す。
いくつかの実施形態では、教員は、1つ以上のデバイスを利用してクラス内の生徒に教材を頒布する。図1に示すように、教員は、クライアントデバイス120-1などのラップトップコンピュータ又はクライアントデバイス120-2などのタブレットコンピュータを利用して、生徒のための教材を作成することができる。いくつかの実施形態では、ラップトップコンピュータ及び/又はタブレットコンピュータは、生徒のための対話式の課題を作成するように構成されたアプリケーションを含む。課題は、第1のサーバデバイス110-1から利用可能なウェブサイト、又は第2のサーバデバイス110-2に記憶されたドキュメントへのハイパーリンクなど、ネットワーク150を介して利用可能な教材へのリンクを含むことができる。アプリケーションはまた、教員が課題を生徒に容易に配布することを可能にし得る。生徒は、クライアントデバイス120-3及び120-4などのタブレットコンピュータ、クライアントデバイス120-5などのラップトップコンピュータ、並びに/又はクライアントデバイス120-6などのモバイルデバイスを利用して、課題にアクセスし、各課題に含まれる教材を閲覧することができる。
いくつかの実施形態では、第3のサーバデバイス110-3が、様々なクライアントデバイス120に含まれるアプリケーションによって利用される1つ以上のサービスをホストする。例えば、第3のサーバデバイス110-3は、課題を定義するデータ構造又はファイルをネットワークベースの記憶リソースにアップロードするサービスをホストすることができる。別の例として、第3のサーバデバイス110-3は、どのクライアントデバイス120が特定の教室環境に登録されているかを追跡するサービスをホストすることができる。更に別の例として、第3のサーバデバイス110-3は、特定の課題に対応する各生徒の進捗を追跡するサービスをホストすることができる。いくつかの実施形態では、アプリケーション(単数又は複数)によって利用されるサービスは、2つ以上のサーバデバイス110でホストされ得る。加えて、サービスは、異なるサービスプロバイダによってホストされ得る。例えば、第1のサービスプロバイダによって維持される第1のサーバデバイス110-は、ネットワークベースの記憶サービスをホストするように構成され得、第2のサービスプロバイダによって維持される第2のサーバデバイス110-2は、学校管理サービスをホストするように構成され得る。
教室環境内の様々なクライアントデバイス120によって実行されるアプリケーションのソフトウェアフレームワークの説明が、以下に記載される。加えて、本明細書に記載されるアプリケーションによって利用され、1つ以上のサーバデバイス110でホストされる様々なサービスの説明が、以下に記載される。
図2は、いくつかの実施形態による、教室環境内でのクライアントデバイス120の進捗追跡を可能にするように実装されたクライアント-サーバアーキテクチャ200を示す。クライアント-サーバアーキテクチャ200は、クライアントデバイス120に実装され、かつ、ネットワーク150を介してアクセス可能なサーバデバイス110に実装された、いくつかのサービスと対話するように構成された、クライアントアプリケーション205を含む。クライアント-サーバアーキテクチャ200は、教員が、クライアントデバイス120にインストールされた1つ以上の第三者アプリケーションによって提供される豊富な対話式教材を含む課題を作成すること、並びにクラスの課題に後れないようにする際の生徒の取り組みを教員が監視できるようにシームレスな進捗追跡を統合することが可能になる。
いくつかの実施形態では、クライアントアプリケーション205は、クライアントデバイス120に含まれるプロセッサによって実行されるように構成されたバイナリ実行形式である。バイナリ実行形式は、ターゲットオペレーティングシステムを実行するように設計されたターゲットハードウェアプラットフォームなどの特定の動作環境内で動作するように設計され得る。その結果、クライアントアプリケーション205は、異なる動作環境のためにコンパイルされた、複数のバージョンのソースコードを使用して実装され得る。例えば、クライアントアプリケーション205の第1のバージョンは、ラップトップコンピュータ120-1のために設計され得、クライアントアプリケーション205の第2のバージョンは、タブレットコンピュータ120-2のために設計され得る。
いくつかの実施形態では、クライアントアプリケーション205は、ネットワーク150を介して1つ以上のサービスと接続するように設計される。サービスは、ハンドアウトサービス220、ハンドインサービス230、学校管理サービス240、進捗パイプライン250、識別サービス260、及び報告サービス270を含むことができるが、これらに限定されない。クライアントアプリケーション205は、サービスによって実装されるアプリケーションプログラミングインタフェース(Application Programming Interface;API)によってサービスにアクセスするように構成され得る。例えば、ウェブベースのサービスは、SOAP(Simple Object Access Protocol)を使用して、あるいはサービスに関連付けられたリソースにクライアントアプリケーション205がアクセスすること及び/又はクライアントアプリケーション205がリソース上で動作することを可能にするREST(REpresentational State Transfer protocol)を使用して、APIを実装することができる。APIは、クライアントアプリケーション205が、サービスへのデータの送信、及び/又はサービスからのデータの受信を行うことを可能にし得る。APIコールはまた、サービスに、様々な動作を実施させること、及び/又は追加のAPIコールを使用して追加のサービスを呼び出させることもできる。
他の実施形態では、クライアントアプリケーション205は、クライアントデバイス120のブラウザ内に表示されるウェブベースのアプリケーションである。クライアントアプリケーション205は、ウェブサイトに関連付けられたサーバに要求される一連のリソース(例えば、ハイパーテキストマークアップ言語(HTML)ドキュメント、画像、スクリプトなど)を含むことができる。ブラウザは、リソースを受信し、リソースを解釈して、クライアントデバイス120のディスプレイにウェブサイトの表現を表示する。したがって、クライアントアプリケーション205は、異なるオペレーティングシステムを実行する複数の異なるクライアントデバイス120にクライアントアプリケーション205を表示できるという点で、プラットフォームから独立している。
いくつかの実施形態では、クライアントアプリケーション205は、APIゲートウェイ210を介して1つ以上のサービスとインタフェースする。APIゲートウェイ210は、サーバデバイス110によって実装され、クライアントデバイス120から受信されたAPIコールをクライアント-サーバアーキテクチャ200内の様々なサービスにリダイレクトする。他の実施形態では、APIゲートウェイ210は、省略されるか又は選択的に迂回され、クライアントデバイス120は、APIコールをサービスに直接送信する。
いくつかの実施形態では、クライアントアプリケーション205は、教員がクラスのためのハンドアウトを作成することを可能にする。ハンドアウトは、クラスの生徒に公開されることを意図した課題に関連する情報を含むファイル又はデータ構造を指す。ハンドアウトは、ハンドアウト識別子と、課題のタイトルと、課題を完了する方法に関する生徒のためのテキストベースの指示を含む、課題の本文と、課題の期限と、課題に関連付けられた添付ファイルのリストと、を含むいくつかのフィールドを含むことができる。ハンドアウトは、特定のクライアントデバイス120で作成され、ローカルで記憶され得る。添付ファイルは、ファイル(例えば、ドキュメント、画像、動画など)と、生徒が提出することになっているファイルのためのプレースホルダと、生徒が課題の一部として完了することになっているアクティビティと、を含むことができる。アクティビティは、クラスキットソフトウェアフレームワークの一部分を実装する第三者アプリケーションを使用して実施される。アクティビティの例としては、デジタルの書籍又は教科書のある章を読むこと、クイズを受けるか又は問題セットに回答すること、対話式ゲームのプレイ又はデジタル実験の実施などのタスクを実施するのに費やした時間を追跡することなどを挙げることができるが、これらに限定されない。
いくつかの実施形態では、クライアント-サーバアーキテクチャ200は、ハンドアウトサービス220を含む。ハンドアウトサービス220は、ハンドアウトを管理するように構成される。いくつかの実施形態では、ハンドアウトサービス220は、教員が複数のデバイスで作業することを可能にするために、1つのクライアントデバイス120で作成されたハンドアウトを別のクライアントデバイス120と同期するように構成される。いくつかの実施形態では、ハンドアウトサービス220は、ハンドアウトを生徒のリストに公開することを可能にするように構成される。ハンドアウトを公開するとは、ハンドアウト内の情報を別個のクライアントデバイス120での生徒による閲覧のために利用可能にすることと、ハンドアウトの添付ファイルに関連する様々なバックエンド動作を処理することと、を指す。
いくつかの実施形態では、クライアント-サーバアーキテクチャ200はまた、ハンドインサービス230を含むことができる。ハンドインは、ファイル又はデータ構造のためのプレースホルダを指し、これは、課題を完了するために、ファイル又はデータ構造を作成して提出するように生徒が指示されていることを示す。生徒は、課題完了の要件を満たすために、ファイル又はデータ構造を作成し、ファイル又はデータ構造をハンドインサービス230に提出することができる。
いくつかの実施形態では、クライアント-サーバアーキテクチャ200はまた、クラスの構造に関連する学区の管理情報を管理するように構成された学校管理サービス240を含むことができる。例えば、学校管理サービス240は、どの教員が複数のクラスのそれぞれに割り当てられているかを示す記録を維持することができる。記録はまた、どの生徒が複数のクラスのそれぞれに登録されているかを示すことができる。各教員又は各生徒は、教員識別子又は生徒識別子をそれぞれ割り当てられ得る。学区によって作成された各クラスは、クラス識別子に関連付けられ得る。次いで、各クラス識別子について、クラスに登録された生徒の生徒識別子の名簿を列挙する別個の記録を作成することができる。いくつかの実施形態では、関係データベースは、1つ以上のテーブルにおいて教員識別子及び/又は生徒識別子をクラス識別子に関連付ける。関係データベースは、構造化クエリ言語(SQL)又は他の何らかの種類のクエリ言語を使用して照会されて、様々なクラスの構造を識別する情報を返すことができる。
いくつかの実施形態では、学校管理サービス240は、学区の管理者が、クラスを作成し、クラスに登録される生徒を指定することを可能にする、管理インタフェースを含む。管理インタフェースは、例えば、各クラスの名簿を変更するために、資格情報の提供を管理者に要求する、ウェブベースのインタフェースとすることができる。他の実施形態では、学校管理サービス240は、学区がクライアント-サーバアーキテクチャ200とは別個に維持する別個かつ個別の学校情報システムからデータをダウンロードするための、インタフェースを含む。クラス及び名簿は、学校情報システムから自動的にダウンロードされ得る。
いくつかの実施形態では、クライアント-サーバアーキテクチャ200はまた、進捗パイプライン250を含むことができる。進捗パイプライン250は、教員によって公開されたハンドアウトに記載された課題を生徒が完了したときに進捗追跡に関連する情報を管理するための安全なアーキテクチャを提供する。生徒のクライアントデバイス120は、クライアントデバイス120にインストールされた1つ以上の第三者アプリケーションに関連するアクティビティを監視するように構成されたバックグラウンドプロセス(すなわち、デーモン)を含むことができる。デーモンは、1つ以上の公開されたハンドアウトにおいて指定された課題を完了する際に生徒によってなされた進捗を追跡し、各生徒の進捗に関連する情報を進捗パイプライン250に送信する。進捗パイプライン250は、進捗情報を集約及び記憶して、教員がクラスの1人以上の生徒についての包括的な報告を閲覧することを可能にする。
いくつかの実施形態では、進捗パイプライン250は、異なるサーバデバイス110で実行しているいくつかの別個のサービスとして実装され、パイプライン方式のデータフローにおいて進捗情報を処理するように構造化される。他の実施形態では、進捗パイプライン250は、単一のサーバデバイス110で実行しているいくつかのサービスによって実装され得る。
いくつかの実施形態では、クライアント-サーバアーキテクチャ200はまた、識別サービス260を含むことができる。識別サービス260は、特定のクライアントデバイス120に関連するデータを、教室環境内の特定の人々(例えば、教員又は生徒)に関連付けることを可能にする。いくつかの実施形態では、識別サービス260は、様々なユーザ識別子又はデバイス識別子を、クライアント-サーバアーキテクチャ200のサーバ側に範囲が限定されたディレクトリサービス識別子に関連付ける。識別サービス260の使用は、特定の範囲(例えば、教室環境)の外側で利用される任意の識別子から、デーモンによって収集された個人識別情報を分離することにより、データの完全性を保護する。したがって、ユーザのテストのスコアがどうであるかなどのデータを、同じサービスプロバイダによって提供される音楽共有サービスでどの種類の音楽を生徒が好んで聞くかなど、その範囲の外側の他の情報に紐づけることができない。そのような個人識別情報の完全性は、ほとんどの生徒が未成年であり、また特定の年齢の脆弱なユーザのデータを保護するときに考慮される特別な配慮事項が存在し得ることを考えると、特に重要となり得る。
いくつかの実施形態では、ディレクトリサービス識別子は、特定のサービスプロバイダによって1つ以上のデバイスのユーザに関連付けられた静的な識別子である。ディレクトリサービス識別子は、ユーザを特定のユーザアカウントに関連付けるためにクライアントデバイスによって使用されるユーザ識別子に関連付けられ得る。ディレクトリサービス識別子は、特定のユーザアカウントのユーザに関連付けられ、クライアントデバイスに公表された、外部識別子に関連付けられ得る。ディレクトリサービス識別子は、特定のユーザの内部識別子に関連付けられ得る。内部識別子は、ディレクトリサービス識別子から分離され得、次いで、新しい内部識別子が、ディレクトリサービス識別子に関連付けられ得る。いくつかの実施形態では、内部識別子を新しい内部識別子で置き換えることは、これらのデータを1つ以上のサーバデバイス110から削除する必要なしに、特定の記憶されたデータと特定のユーザ又はユーザアカウントとの間の関連付けを断つために利用され得る。
いくつかの実施形態では、クライアント-サーバアーキテクチャ200はまた、何人かの生徒によって完了されたアクティビティの進捗に関連する集約データをコンパイルし、教員によってレビューされるようにクライアントデバイス120に提供することを可能にする、報告サービス270を含むことができる。報告サービス270はまた、進捗情報に関連する統計データを生成するために、複数の生徒から受信された進捗情報を分析することができる。例えば、報告サービス270は、何人の生徒が特定のアクティビティを完了したかに関連する統計値を生成することができる。報告サービス270はまた、アクティビティに関連する結果(例えば、クイズアクティビティの正しく回答された質問の数、クイズを完了するのに要した時間など)を追跡することができる。他の実施形態では、クライアントアプリケーション205は、個々の生徒の報告データを報告サービス270から受信し、クライアントアプリケーション205は、報告データを集約する、及び/又はクラスの統計値を計算する。
クライアントアプリケーション205は、クライアント-サーバアーキテクチャ200の記載されたサービスのいくつか又は全てと対話するように構成され得ることが理解されるであろう。例えば、クライアントアプリケーション205は、ハンドアウトサービス220、ハンドインサービス230、進捗パイプライン250、及び報告サービス270へのコールを生成するように構成され得る。いくつかの実施形態では、クライアントアプリケーション205は、学校管理サービス240及び/又は識別サービス260などの、サービスのサブセットと対話するように構成されない。代わりに、他のサービスが、クライアントアプリケーション205からのコールの受信に応答して、これらのサービスへのコールを生成することができる。
図3は、いくつかの実施形態による、クライアントアプリケーション205のGUI300を示す。GUI300は、クライアントデバイス120のディスプレイ302上で教員に提示され得る。図3に示すように、GUI300は、クライアントデバイス120-2などのタブレットコンピュータに表示される。GUI300は、グラフィック、テキスト、アイコン、図形、入力フィールド、出力フィールド、表示領域などを含む、いくつかの要素を含むことができる。
いくつかの実施形態では、GUI300は、第1の表示領域310、第2の表示領域320、及び第3の表示領域330を含む。第1の表示領域310は、教員によって以前に作成されたハンドアウトの表現を表示するために利用される。第2の表示領域320は、特定の教員に関連付けられたクラスの表現を表示するために利用される。図3に示すように、第1の表示領域310は、ディスプレイ302に含まれる画素の第1の部分を占め、第2の表示領域320は、ディスプレイ302に含まれる画素の第2の部分を占める。
第1の表示領域310は、ユーザアカウントに関連付けられた別個かつ個別のハンドアウトを表す要素312を示すヘッダを含む。ハンドアウトは、教員、管理者、又は他の役割に関連付けられたアカウントによって作成され得る。いくつかの実施形態では、各要素312は、ハンドアウトのタイトルと、ハンドアウトに関連付けられた期限日の記述子と、何人の生徒がハンドアウトを完了したかの表示とを含む、ボックスによって定義される。例えば、第1の要素312-1は、課題「動植物」の第1のハンドアウトに関連付けられ、このハンドアウトは、3月12日が期限日であり、全ての生徒が完了しており、第2の要素312-2は、課題「テスト準備」の第2のハンドアウトに関連付けられ、このハンドアウトは、3月15日が期限日であり、ハンドアウトを割り当てられた22人の生徒のうちの7人のみが完了している。他の実施形態では、要素312は、異なる形態をとり得ることが理解されるであろう。例えば、要素312は、期限日及び/又は完了インジケータを省略することができる。あるいは、要素312は、期限日及び/又は完了インジケータに加えて又はその代わりに情報を含むことができる。加えて、要素312は、ハンドアウトに割り当てられた異なるアクティビティを表す画像又はアイコンなどのグラフィックを含むことができる。場合によっては、グラフィックは、要素312の背景として動画を再生すること、又はハンドアウトに添付された画像のスライドショーを示すことなどによって、アニメーション化され得る。
第2の表示領域320は、特定の教員のユーザアカウントに関連付けられた別個かつ個別のクラスを表す要素322を示すヘッダを含む。いくつかの実施形態では、各要素322は、クラスのタイトルと、クラスに割り当てられたハンドアウトの数の記述子とを含む、ボックスによって定義される。例えば、第1の要素322-1は、クラス「科学A」に関連付けられ、このクラスには、2つのハンドアウトが割り当てられ、第2の要素322-2は、クラス「数学A」に関連付けられ、このクラスには、3つのハンドアウトが割り当てられ、第3の要素322-3は、クラス「数学B」に関連付けられ、このクラスには、ハンドアウトが割り当てられていない(ハンドアウトは0個である)。他の実施形態では、要素322は、異なる形態をとり得ることが理解されるであろう。例えば、要素322は、クラスに割り当てられたハンドアウトの数のインジケータを省略することができる。あるいは、要素322は、クラスのタイトル及びクラスに割り当てられたハンドアウトの数のインジケータに加えて又はその代わりに情報を含むことができる。例えば、要素322は、クラスに登録された生徒の数を含むことができる。加えて、要素322は、クラスに関連する特定の教科又は学科を示すためにコード化された画像又は背景色などのグラフィックを含むことができる。
いくつかの実施形態では、教員は、クライアントデバイス120の入力インタフェースを使用して特定のクラス(又は複数のクラス)を選択することができる。例えば、教員は、タッチインタフェースを使用して、その教員に関連付けられた利用可能なクラスのうちの1つに関連付けられた要素322を選択することができる。特定の要素322を選択すると、選択された要素322は、アクティブ化され、第1の表示領域310の要素312は、第2の表示領域320の選択された要素322によって表されるクラスに関連付けられたハンドアウトを反映するように更新されてもよい。選択された要素322(例えば、現在アクティブ化されている要素)は、要素322がアクティブであることを示すために強調表示され得る。強調表示は、要素のサイズを大きくする、要素322に関連付けられた色を変更する、要素322の境界の色又は太さを変更する、選択された要素322の周囲にボックスを表示するなどによって実装され得る。図3に示すように、第1の要素322-1は、アクティブ化され、第2の要素322-2及び第3の要素322-3よりも大きく示される。
いくつかの実施形態では、第1の表示領域310及び/又は第2の表示領域320には、全てのクラス及び/又は特定のクラスに割り当てられた全てのハンドアウトをディスプレイ302の範囲内に提示するには十分な余地が存在しない場合があることが理解されるであろう。そのような場合、クライアントデバイス205のユーザは、タッチジェスチャなどの入力コマンドを使用して、追加の要素を表示することができる。例えば、いくつかの要素が表示されていないことを示すアイコンを表示することができる。追加の要素は、ユーザがアイコンを選択したことに応答して、第1の表示領域310又は第2の表示領域320に表示される。別の例では、ユーザが、スワイプタッチジェスチャを使用して、追加の要素を表示するように水平にスクロールすることができる一方、他の要素は、特定の表示領域内で移動されるか又は特定の表示領域から除外される。
第3の表示領域330は、ディスプレイ302の上端縁の近傍に位置する。第3の表示領域330は、クライアントアプリケーション205のユーザが、ユーザアカウントにサインインし、特定のクラスの新しいハンドアウトを生成すること、又は以前に生成され、クライアントデバイス120にローカルで及び/又はサーバデバイス110にリモートで記憶されたハンドアウトを編集することを可能にする、要素を含む。いくつかの実施形態では、第3の表示領域330は隠れており、例えば、垂直スワイプタッチジェスチャを使用して、第3の表示領域330を露わにさせるなどの、ユーザ入力に応答して表示され得る。
第1のアイコン332が、第3の表示領域330の左側の近傍に表示される。第1のアイコン332は、ユーザによって選択されると、クライアントアプリケーション205に、教員に関連付けられたユーザアカウントにサインインするための資格情報の入力をユーザに促させることができる。いくつかの実施形態では、第1の表示領域310及び第2の表示領域320は、ユーザが第1のアイコン332を使用して特定のユーザアカウントにサインインするまで隠れている。いくつかの実施形態では、クライアントアプリケーション205が起動すると、ユーザアカウントにサインインするための資格情報の入力ユーザに促す別個のインタフェースがユーザに対して表示される。GUI300は、ユーザが特定のユーザアカウントに首尾よくサインインしたときにのみ、ディスプレイ302に表示される。次いで、第1のアイコン332は、ユーザアカウントからサインアウトするために及び/又は異なるユーザアカウントにサインインするために使用され得る。
第2のアイコン334が、第3の表示領域330の右側の近傍に表示される。第2のアイコン334は、ユーザによって選択されると、クライアントアプリケーション205に、新しいハンドアウトに関連する情報を記憶するために、クライアントデバイス120のファイルシステムにファイル又はデータ構造を生成させることができる。いくつかの実施形態では、新しいファイル又はデータ構造は、第2の表示領域320で選択されたアクティブなクラスに自動的に関連付けられる。次いで、教員は、異なるGUIを使用してファイル又はデータ構造に情報を追加することができ、これについては、図6A~図6Eを参照して以下でより詳細に説明する。
第3のアイコン336が、第3の表示領域330の右側の近傍に表示される。第3のアイコン336は、ユーザによって選択されると、クライアントアプリケーション205に、以前に生成されたハンドアウトのファイル又はデータ構造に記憶された情報を取得させることができる。いくつかの実施形態では、第1の表示領域310の要素312の1つが、選択基準に基づいて自動的に、又はユーザによって提供される入力に応答して手動でのいずれかで、アクティブ化される。例えば、特定のクラスを表す要素322がアクティブ化されると、そのクラスについて記憶された全てのハンドアウトのうちハンドアウトの期限日と現在の日付との最小の差に基づいて、要素312が、自動的に選択されてアクティブ化され得る。あるいは、要素312が、特定の要素312に対応するディスプレイ302の領域でのタッチジェスチャ入力(例えば、タップ入力)に応答して、アクティブ化されるように手動で選択され得る。図3には明示的に示していないが、第1の表示領域310で選択された要素312(例えば、現在アクティブされている要素)は、選択された要素312がアクティブであることを示すために強調表示され得る。第3のアイコン336の選択に応答して、図6A~図6Eを参照して以下でより詳細に説明する異なるGUIは、クライアントデバイス120によって表示され、アクティブな要素312に関連付けられたファイル又はデータ構造からのデータをポピュレートされ得る。
いくつかの実施形態では、第1の表示領域310は、準備中のハンドアウト及び生徒のリストに公開されたハンドアウトの表現を含む。場合によって、要素312は、要素312によって表されるハンドアウトが公開されているか、又はまだ公開されていない(すなわち、依然として教員によって準備中である)かの表示を含むことができる。
上述し、また図3に示すGUI300は、クライアントアプリケーション205のために設計されたGUIの例示的な実施形態にすぎないことが理解されるであろう。他の実施形態では、クライアントアプリケーション205のGUIは、他の形態をとることができる。GUIの外観及び感触はまた、特定のオペレーティングシステム又はターゲット環境に関連付けられた標準的な表示要素に対応してもよい。さらに、また他の実施形態では、クライアントアプリケーション205は、クライアントデバイス120のブラウザに表示されるウェブベースのアプリケーションである。そのような実施形態では、GUI300は、1つ以上のハイパーテキストマークアップ言語(Hypertext Markup Language;HTML)ドキュメントに含まれる複数のHTML要素を含むことができる。そのような要素の表現は、クライアントデバイス120でのブラウザアプリケーションの実装に、場合によってはブラウザアプリケーションに関連付けられたユーザの好みに、依存する場合がある。
図4は、いくつかの実施形態による、ハンドアウトサービス220とクライアントアプリケーション205及び/又はデーモン440との間のクライアント-サーバ関係を示す。ハンドアウトサービス220は、教員が、ハンドアウトを作成し、教員に関連付けられたクラスに登録された生徒のリストに割り当てるための手段を提供する。上述のように、クライアントアプリケーション205は、ユーザアカウントに関連付けられた資格情報の提供をユーザに促すように構成される。ユーザアカウントが教員に関連付けられている場合、クライアントアプリケーション205は、教員が、クライアントデバイス120のメモリ420にハンドアウトのファイル又はデータ構造を生成することを可能にする。いくつかの実施形態では、これらのファイル又はデータ構造は、ネットワークベースの記憶サービスに対して同期させることができ、これにより、教員が、複数のクライアントデバイス120からハンドアウトに関連する情報にアクセスすることを可能にする。
図4に示すように、クライアントデバイス120は、プロセッサ410、ディスプレイ302、及びメモリ420を含む。メモリ420は、オペレーティングシステム430、クライアントアプリケーション205、デーモン440、及びローカルデータベース445を含む。デーモン440は、クライアントアプリケーション205が、デーモン440と非同期的に通信して特定のタスクを実施することを可能にする、APIを実装するバックグラウンドプロセスである。それらのタスクのうちの1つは、ローカルデータベース445にファイルを作成するように動作する。
いくつかの実施形態では、デーモン440は、ローカルデータベース450を維持する。いくつかの実施形態では、教員は、クライアントアプリケーション205を使用してハンドアウトの新しいファイル又はデータ構造を作成することができる。クライアントアプリケーション205は、デーモン440によって維持されるローカルデータベース450にハンドアウトのファイル又はデータ構造を作成するようにデーモン440に要求する。教員は、図6A~図6Eを参照して以下でより詳細に論じるGUI600を使用して、ハンドアウトのファイル又はデータ構造をポピュレートすることができる。
いくつかの実施形態では、デーモン440は、ローカルデータベース450のファイル又はデータ構造をリモートデータベース460に同期させるように構成される。リモートデータベース460は、いくつかのサーバデバイス110に実装された、クラウドベースのデータベースサービスなどの分散型データベースとすることができる。デーモン440は、ファイル又はデータ構造が複数のクライアントデバイス120を使用してアクセス及び/又は修正され得るように、ローカルデータベース450のファイル又はデータ構造をリモートバージョンのファイル又はデータ構造と同期させるために、リモートデータベース460とインタフェースする。同期メカニズムについては、図5を参照して以下でより詳細に説明する。
ハンドアウトがリモートデータベース460に対して同期されると、次いで、教員は、クライアントアプリケーション205の異なるバージョンを使用して、異なるクライアントデバイス120に切り替え、新しいクライアントデバイス120を使用して、リモートサーバ110に記憶されたハンドアウトのバージョンにアクセスすることができる。新しいクライアントデバイス120に記憶されたリソースのローカルコピーへの任意の変更が、リモートデータベース上のハンドアウトのバージョンを更新するためにリモートデータベース460に対して同期される。次いで、これらの変更は、以前のクライアントデバイス120上のクライアントアプリケーション205にプッシュされて、初期のクライアントデバイス120上のローカルデータベース450内のローカルリソースのコピーを更新する。
例えば、教員が、ラップトップコンピュータ120-1上のクライアントアプリケーション205を開き、ラップトップコンピュータ120-1のメモリに記憶されるハンドアウトのローカルバージョンを作成することができる。ラップトップコンピュータ120-1上のデーモン440は、ハンドアウトのローカルバージョンのコピーをリモートデータベース460に送信して、ハンドアウトをリモートデータベース460に記憶されたハンドアウトのバージョンと同期させる。次いで、教員は、タブレットコンピュータ120-2上の別個のクライアントアプリケーション205を開き、教員のユーザアカウントの資格情報を提供する。タブレットコンピュータ120-2上のクライアントアプリケーション205を開くことにより、デーモン440は、リモートデータベース460に記憶されたハンドアウトのリモートバージョンをタブレットコンピュータ120-2のメモリにダウンロードし、そこで、タブレットコンピュータ120-2上のクライアントアプリケーション205は、ハンドアウトのローカルコピーにアクセスし、タブレットコンピュータ120-2のメモリ内のハンドアウトのローカルコピーを修正することができる。ハンドアウトのローカルコピーへの任意の修正は、リモートデータベース460に記憶されたハンドアウトのバージョンが最新のものとなるように、リモートデータベース460に対して同期され得る。次に教員がラップトップコンピュータ120-1上のクライアントアプリケーション205を開くと、クライアントアプリケーション205は、デーモン440に、ハンドアウトの現在のバージョンをリモートデータベース460に要求し、リモートデータベースは、リモートデータベース460に記憶されたハンドアウトのバージョンをラップトップコンピュータ120-1のデーモン440に送信して、ハンドアウトのローカルバージョンとしてラップトップコンピュータ120-1のメモリに記憶する。
いくつかの実施形態では、ハンドアウトサービス220は、サーバデバイス110のプロセッサによって実行されるように構成された、サーバデバイス110のメモリに記憶された命令セットとして実装される。ハンドアウトサービス220は、教員に関連付けられたクライアントデバイス120と生徒に関連付けられたクライアントデバイス120との間でのハンドアウトの配布を管理する。いくつかの実施形態では、ハンドアウトサービス220は、リモートデータベース460を使用してハンドアウトの配布を実装する。ハンドアウトサービス220は、リモートデータベース460にゾーン465を作成する。各ゾーン465は、特定のクラスに範囲を限定される。あるいは、各ゾーン465は、生徒のグループに範囲を限定される。教員に関連付けられた各クラスは、生徒の異なるグループに関連付けられ得る。
教員は、クライアントデバイスのローカルデータベース450にハンドアウトを作成することができる。ハンドアウトは、リモートデータベース460の教員のための個人ゾーン465-1に対して同期される。特定のハンドアウトが準備され、生徒のグループに割り当てる準備が整うと、教員は、クライアントアプリケーション205を利用してハンドアウトを公開して、ハンドアウトを生徒のグループに割り当てることができる。クライアントアプリケーション205は、ハンドアウトの公開をハンドアウトサービス220に要求する。次いで、ハンドアウトサービス220は、ハンドアウトのコピーを、ハンドアウトにおいて指定された生徒のグループに範囲を限定されたリモートデータベース460の新しいゾーン465-2にコピーする。新しいゾーン465-2の範囲内の各生徒は、生徒のグループの各生徒によって制御されるクライアントデバイス120のデーモン440が、公開されたハンドアウトのコピーをその生徒のクライアントデバイス120のローカルメモリに対して同期することにように、新しいゾーン465-2をサブスクライブする。
ハンドアウトサービス220はまた、リモートデータベース460に記憶されたハンドアウトのリソースを識別するために利用され得るハンドアウト識別子を生成することが理解されるであろう。いくつかの実施形態では、ハンドアウトが公開されると、ハンドアウト識別子が生成される。他の実施形態では、ハンドアウトが作成されると、ハンドアウト識別子が生成される。次いで、ハンドアウトのリソースは、新しいゾーン465-2にコピーされ、ハンドアウトが公開されると、教員の個人ゾーン465-1から削除される。
図5は、いくつかの実施形態による、デーモン440によって実装される同期メカニズムを示す。図5に示すように、デーモン440は、リモートデータベース460のフロントエンドを提供するデータベースサービス510とネットワーク150を介してインタフェースするように構成される。データベースサービス510は、サーバデバイス110に実装され得る。いくつかの実施形態では、リモートデータベース460は、特定の組織又は学区の範囲に制限される。したがって、リモートデータベース460内に記憶された情報は全て、特定の学区に関するものである。そのような実施形態では、データベースサービス510は、異なる組織又は学区の複数のリモートデータベース460を管理するように構成される。様々な実施形態では、リモートデータベース460は、サービスプロバイダによって管理されるクラウドベースの分散型データベースサービスである。
いくつかの実施形態では、データベースサービス510は、リモートデータベース460内に実装された複数の異なるゾーン465にファイルを記憶するように構成される。学区の各教員及び/又は各生徒は、リモートデータベース460内の個人ゾーンとして異なるゾーン465を割り当てられ得る。個人ゾーン465は、特定のユーザアカウントに関連付けられたファイル又はデータ構造を記憶することができる。加えて、学区によって作成された各クラスは、クラスに関連付けられた全ての生徒及び教員とリソースを共有するためのクラスゾーン465を割り当てられ得る。代替的な実施形態では、ゾーン465は、クラスのサブセットであり得るか又は2つ以上のクラスに登録され得る、生徒及び/又は教員のグループについて作成され得る。クラスゾーン465は、特定のクラスに関連付けられた生徒及び/又は他の教員にハンドアウトを公開するために利用され得る。ゾーン465は、組織、クラス、又は個人(例えば、教員又は生徒)に範囲を限定され得る。ゾーン465はまた、異なるデータのために利用され得る。
いくつかの実施形態では、データベースサービス510は、各ゾーン465の範囲内のユーザ(例えば、教員及び/又は生徒)のリストを示す、各ゾーン465に対するサブスクリプションを維持する。データベースサービス510は、ゾーン465内のリソースが更新されるたびに、ゾーン465をサブスクライブするユーザの各クライアントデバイス120に通知をプッシュすることができる。特定のクライアントデバイス120のデーモン440は、通知を受信し、更新されたリソースをゾーン465からダウンロードして、ローカルデータベース450のリソース522のローカルコピーを更新する。
クライアント-サーバアーキテクチャ200の1つ以上のサービスによって必要とされるいくつかの機能を実装するために、異なる種類のゾーンを作成して同期メカニズムを利用できることが理解されるであろう。例えば、ゾーンは、ハンドアウト、ハンドイン、第三者アプリケーションに関連付けられたブックマークされたコンテキスト、クラスの名簿情報、進捗追跡情報などを記憶するように作成され得る。更に、上述の各ゾーンは、単一のユーザに(すなわち、個人ゾーンとして)又は複数のユーザに範囲を限定され得る。例えば、ハンドアウトゾーン465は、ハンドアウトに関連するデータ(例えば、添付ファイル、生徒によってアップロードされたハンドインのリソースなど)を記憶するために作成され、ハンドアウトにおいて識別された生徒のグループに範囲を限定され得る。進捗ゾーン465が、何人かの生徒の進捗情報を記憶するために作成される。進捗ゾーン465は、クラスに、又はクラスに公開された特定のハンドアウトに範囲を限定され得る。名簿ゾーン465が、組織のクラス構造に関連するデータを記憶するために作成される。名簿ゾーン465は、組織に範囲を限定され得る。
図6A~図6Eは、いくつかの実施形態による、クライアントアプリケーション205のGUI600を示す。GUI600は、クラスに割り当てるように教員が準備しているハンドアウトに記憶された情報を編集するために使用され得る。GUI600は、クライアントデバイス120のディスプレイ302に提示され得る。図6Aに示すように、GUI600は、クライアントデバイス120-2などのタブレットコンピュータに表示される。GUI600は、グラフィック、テキスト、アイコン、図形、入力フィールド、表示領域などを含む、いくつかの要素を含むことができる。いくつかの実施形態では、GUI600は、教員がGUI300の第2のアイコン334又は第3のアイコン336を選択したことに応答して表示される。
GUI600は、第1の表示領域610、第2の表示領域620、及び第3の表示領域630を含む。第1の表示領域610は、特定のクラス又は生徒のグループの教員によって作成されたハンドアウトに関連する情報を表示するために利用される。第2の表示領域620は、ハンドアウトの添付ファイルを表示するために利用される。図6に示すように、第1の表示領域610は、ディスプレイ302に含まれる画素の第1の部分を占め、第2の表示領域620は、ディスプレイ302に含まれる画素の第2の部分を占める。第3の表示領域630は、ディスプレイ302に含まれる画素の第3の部分を占める。いくつかの実施形態では、第3の表示領域630は隠され隠れていてもよく、第3の表示領域630は、スワイプタッチジェスチャを使用してディスプレイ302の上端縁の近傍に第3の表示領域630を出現させることなど、ユーザ入力に応答して表示される。
図6Aに示すように、第1の表示領域610は、ハンドアウトを割り当てられる生徒のグループを示すためのインタフェースを含む。インタフェースは、ラベル(例えば、「To:」)、ユーザインタフェース要素612、及びユーザインタフェース要素614を示す。教員が、生徒(単数又は複数)の識別子をユーザインタフェース要素612にタイピングするか、又はユーザインタフェース要素614を選択し、リストから生徒のグループを選択するかのいずれかにより、ハンドアウトを割り当てられる生徒のグループを指定することができる。
いくつかの実施形態では、ユーザインタフェース要素614を選択することにより、クライアントアプリケーション205は、クライアントアプリケーション205にサインインした教員に関連付けられたクラスの名簿データを要求する。名簿データは、教員に関連付けられた任意のクラスに登録された全ての生徒の識別子を含む。クライアントアプリケーション205は、学校管理サービス240に識別子のリストを要求することができる。あるいは、クライアントアプリケーション205は、クライアントデバイス120のローカルメモリ420から識別子のリストを取得することができる。例えば、名簿サービスは、リモートデータベース460の名簿ゾーン465に名簿データを記憶する学校管理サービス240に名簿データを定期的に要求することができる。名簿ゾーン465は、特定のクラスに範囲を限定され得、教員は、その教員に関連付けられたそれらのクラスの名簿ゾーン465をサブスクライブすることができる。したがって、同期メカニズムによって、デーモン440は、クライアントデバイス120のローカルデータベース450に名簿データをダウンロードし、そこでは、同データが、クライアントアプリケーション205によってアクセスされ得る。
第1の表示領域610はまた、生徒が、ハンドアウトに添付されたアクティビティを完了し、ハンドアウトに割り当てられた任意のハンドインを提出する期限日を示す、インタフェースを含む。インタフェースは、ラベル(例えば、「期限日:」)及びユーザインタフェース要素616を示す。ユーザインタフェース要素616は、課題を完了する日付(例えば、期間)を表示することができる。ユーザインタフェース要素616を選択することにより、教員に日付を選択させるカレンダーの表現を表示することができる。
第1の表示領域610はまた、ハンドアウトのタイトル及び本文を変更するために教員によって編集され得るいくつかのテキストフィールドを含む。例えば、図6Aに示すように、教員は、ハンドアウトのタイトル「動植物(Flora & Fauna)」を指定し、課題を完了する方法に関して生徒に与えられる指示のセットを書いている。
第2の表示領域620は、第1のアイコン622及び第2のアイコン624と呼ばれる一対のユーザインタフェース要素を含む。第1のアイコン622は、ハンドインのためのプレースホルダをハンドアウトに追加するために教員によって選択され得る。第2のアイコン624は、アクティビティをハンドアウトに追加するために教員によって選択され得る。ハンドアウトに対する任意の添付ファイルが、第1のアイコン622及び第2のアイコン624の下に列挙され得る。図6Aに示すように、このハンドアウトには現在、ハンドインのためのプレースホルダ又はアクティビティが添付されていない。
図6Bに示すように、ハンドインのためのプレースホルダをハンドアウトに添付することにより、第2の表示領域620のボックス640が、いくつかのユーザインタフェース要素をポピュレートされる。例えば、第1のユーザインタフェース要素642は、ハンドインのオプションを編集することを可能にし、第2のユーザインタフェース要素644は、ハンドインに関連する情報を表示し、第3のユーザインタフェース要素646は、ユーザがハンドインに関するより詳細な情報を表示することを可能にし、第4のユーザインタフェース要素648は、ユーザがハンドアウトの添付ファイルを並び替えること又はハンドインのためのプレースホルダをハンドアウトから削除する(例えば、添付から外す)ことを可能にする。いくつかの実施形態では、第2のユーザインタフェース要素644は、ハンドインのリソースの表現のサムネイル画像と、サムネイル画像の隣に位置し、ハンドインに関連する情報を提供するテキストと、を含む。例えば、テキストは、ハンドインのタイトル、及びハンドインのために生成されるリソースの種類を示すことができる。この情報が省略されてもよいこと又は本明細書に記載される情報の代わりに追加の情報が含まれてもよいことが理解されるであろう。
図6Aに戻ると、第2のアイコン624を選択することにより、クライアントアプリケーション205は、教員がアクティビティをハンドアウトに添付することを可能にする、ユーザインタフェース要素を含むインタフェースを表示する。アクティビティの種類としては、第三者アプリケーションを用いて完了されるアクティビティ、添付ファイルの閲覧又は編集によって実施されるアクティビティ、ブラウザアプリケーション内のブックマーク又はリンクに関連付けられたネットワークリソースの閲覧によって完了されるアクティビティ、及びマルチメディアファイル(例えば、画像、動画など)の閲覧によって完了されるアクティビティを挙げることができる。
図6Cに示すように、ユーザがGUI600の第2のアイコン624を選択したことに応答して、ボックス650を表示することができる。ボックス650は、教員がアプリケーションアクティビティをハンドアウトに関連付けることを可能にする、第1のユーザインタフェース要素652を含む。例えば、第三者アプリケーションは、クイズを生徒に提示し、クイズに含まれる質問に回答するように生徒に促すように構成され得る。別の例として、第三者アプリケーションは、タスク(例えば、プログラムのソースコードを書く、ゲームをプレイする、画像を外国語の単語と一致させるなど)を実施する指示に生徒が従うことを含む、対話式授業を生徒に提供することができる。また別の例として、第三者アプリケーションは、デジタルの書籍又は教科書の1つ以上の節を読むために、書籍又は教科書のテキストを生徒に提示することができる。
ボックス650は、教員がファイルをハンドアウトに添付することを可能にする、第2のユーザインタフェース要素654を含む。ファイルは、ドキュメント、スプレッドシート、プレゼンテーション(例えば、スライドデッキ)、ソースコード、又はクライアントデバイス120上のアプリケーションによって閲覧できる任意の他の形式のファイルを含むことができる。添付されたファイルは、生徒によって典型的に読まれるか又は閲覧される教材を教員が配布することを可能にする。いくつかの実施形態では、教員は、単一のファイルがクラスの全ての生徒の間で共有される(共同制作オプションと呼ばれる)か、又はファイルのクローン(例えば、コピー)が、各生徒と個別に共有されるかを指定することができる。教員はまた、添付されたファイルを読み出し専用状態にする、又は生徒がファイルを編集するための読み出し-書き込みアクセスを生徒に可能にする、ファイルに関連付けられた権限を指定することができる。
ボックス660は、教員がブックマーク又はリンクをハンドアウトに添付することを可能にする、第3のユーザインタフェース要素666を含む。ブックマーク又はリンクは、インターネットなどのネットワークを介してアクセス可能なリソースのユニフォームリソースロケータ(Uniform Resource Locator;URL)を指定するハイパーリンクを指す。リンクは、生徒が、授業に関連し得るウェブサイトを閲覧することを可能にし得る。
ボックス650は、教員がマルチメディアファイルをハンドアウトに添付することを可能にする、第4のユーザインタフェース要素658を含む。マルチメディアファイルは、写真、スライドショー、動画、又は仮想現実データ若しくは3次元モデルなどの他の種類のマルチメディアを含むことができる。次いで、マルチメディアファイルは、クライアントデバイス120にインストールされた、画像ビューワアプリケーションなどのアプリケーションを使用して生徒によって閲覧され得る。
ユーザが第1のユーザインタフェース要素652を選択して、第三者アプリケーションに関連付けられたアクティビティをハンドアウトに添付すると、ボックス650は、図6Dに示すようにボックス660と置き換えられ得る。ボックス660により、教員は、アプリケーションのリストからアクティビティのための第三者アプリケーションを選択することが可能になる。
いくつかの実施形態では、ボックス660は、利用可能なアプリケーションのリストから任意のアプリケーションを選択するための第1のユーザインタフェース要素662を含む。しかし、場合によっては、いくつかの第三者アプリケーションは、第三者アプリケーション内のアクティビティを完了する、生徒の進捗を追跡するための1つ以上のサービスに進捗データを第三者アプリケーションが提供することを可能にする、クラスキットソフトウェアフレームワークの少なくとも一部分を実装することができる。クラスキットソフトウェアフレームワークの少なくとも一部分を実装するこれらの第三者アプリケーションは、本明細書では進捗アプリケーションと呼ばれる場合がある。ソフトウェアフレームワークの少なくとも一部分を実装する進捗アプリケーションは、第1のユーザインタフェース要素662の下方にある個々のユーザインタフェース要素に別個に列挙され得る。例えば、第2のユーザインタフェース要素664は、教員が第1の進捗アプリケーションのアクティビティを添付することを可能にし、第3のユーザインタフェース要素666は、教員が第2の進捗アプリケーションのアクティビティを添付することを可能にし、第4のユーザインタフェース要素668は、教員が第3の進捗アプリケーションのアクティビティを添付することを可能にする。
いくつかの実施形態では、第三者アプリケーションは、クラスキットソフトウェアフレームワークの少なくとも一部分を実装し、それは、第三者アプリケーションに対話機能を組み込むための手段を提供する。例えば、クラスキットソフトウェアフレームワークは、ソフトウェア開発者が、アプリケーションに関連付けられたコンテキストを定義することを可能にする。本明細書で使用するとき、コンテキストは、アプリケーションの構造を記述するメタデータを指す。例えば、デジタル教科書が、デジタル教科書内の章、節、ページ、問題セット、及び同様の構造を定義するコンテキストを使用して記載され得る。一般に、コンテキストは、第三者アプリケーションのアクティビティを定義することを可能にするメタデータを定義する。
コンテキストはまた、アプリケーション内のアクティビティの進捗を追跡することを可能にする。例えば、デジタル教科書の例を参照し直すと、教員は、教科書の章を読むことに関連するアクティビティを定義することができる。コンテキストは、アクティビティを定義するときに教員が割り当てることを望む、デジタル教科書の特定の章又は節を教員が指定することを可能にさせる。したがって、GUI600を使用してアクティビティを指定するときに、クライアントアプリケーション205は、そのコンテキストを調査して、第三者アプリケーション内でどのアクティビティが完了され得るかを決定することができる。
いくつかの実施形態では、教員は、1つ以上の第三者アプリケーションに関連付けられた利用可能なコンテキストのリストを手動で検索し、様々なハンドアウトに教員が割り当てたいコンテキストのセットを選択することができる。コンテキストのセットは、教員がそれらのコンテキストに関連付けられたアクティビティをハンドアウトに添付できるようにするために、メモリ420に保存され、クライアントアプリケーション205に関連付けられ得る。
他の実施形態では、クライアントデバイス120にインストールされた各進捗アプリケーションは、進捗アプリケーションによって提供される利用可能なコンテキストをデーモン440に通知することができる。教員は、クライアントアプリケーション205を利用して、1つ以上の進捗アプリケーションによって公開される利用可能なコンテキストのリストをブラウズし、お気に入りコンテキストとしていくつかのコンテキストを選択することができる。例えば、ボックス660の第1のユーザインタフェース要素662を選択することにより、教員は、クライアントデバイス120にインストールされた進捗アプリケーションによって提供される、利用可能なコンテキストの全てをブラウズすることができる。次いで、教員は、特定のコンテキストを教員のお気に入りコンテキストとして選択することができる。教員によってお気に入りとして選択された利用可能なコンテキストのサブセットは、クライアントデバイス120のローカルデータベース450に記憶され得る。教員によって選択されたお気に入りコンテキストはまた、教員に範囲を限定されたリモートデータベース460の個人ゾーン465に対して同期され得る。次いで、ボックス660の追加のユーザインタフェース要素は、特定のお気に入りコンテキストに対応する各ユーザインタフェース要素によって表示され得る。次いで、教員は、特定のお気に入りコンテキストを選択して、ハンドアウトに添付することができる。
図6Eに示すように、第2のユーザインタフェース要素654を選択することにより、クライアントアプリケーション205は、添付されたファイルに関連付けられたオプションを教員が指定することを可能にする、2つのユーザインタフェース要素を含むボックス670を表示する。いくつかの実施形態では、オプションは、ファイル共有の権限及びファイルが共同制作であるかどうかを含む。例えば、図6Eに示すように、ユーザインタフェース要素672が、ファイルが共同制作であるかどうかを教員が示すことを可能にする。このオプションは、ファイルが複数のユーザの間で単一のリソースとして共有されるかどうか、又はファイルのコピーが各ユーザと個別に共有されるかどうかを決定する。ユーザインタフェース要素674が、教員がファイルのリソースの権限を変更することを可能にする。リソースが読み出し専用である場合、生徒は、リソースを編集することができないが、リソースが読み出し-書き込みである場合、生徒は、ファイルを編集することができる。
図6Eに明示的に示していない追加のユーザインタフェース要素が、ボックス670に含まれ得ることが理解されるであろう。例えば、他のユーザインタフェース要素は、教員が、ローカルメモリ420に記憶されたファイルを指定して、ハンドアウトに添付することを可能にし得る。
図7は、いくつかの実施形態による、ハンドアウトサービス220と、クラスの複数の生徒に関連付けられたいくつかのクライアントアプリケーション(単数又は複数)205及び/又はデーモン(単数又は複数))440との間のクライアント-サーバ関係を示す。図7に示すように、クラスは、クラスに登録されたL人の生徒を含むことができ、各生徒は、1つ以上のクライアントデバイス120へのアクセスを有する。上述のように、ハンドアウトサービス220は、教員が、教員によって制御される複数の異なるクライアントデバイス120を使用してハンドアウトを作成及び管理することを可能にするように構成される。加えて、ハンドアウトサービス220はまた、生徒のグループに関連付けられた複数の追加のクライアントデバイス120に含まれるクライアントアプリケーション205にハンドアウトを配布するのを支援するように構成される。
いくつかの実施形態では、教員は、ハンドアウトの準備を終了し、次いで、閲覧して完了するようにハンドアウトを生徒のグループに割り当てるためにハンドアウトを公開することができる。ハンドアウトサービス220は、ハンドアウトを、ハンドアウトにおいて指定された生徒のグループに範囲を限定されたリモートデータベース460のハンドアウトゾーン465にコピーする。教員がハンドアウトを公開したことに応答して、ハンドアウトサービス220は、リモートデータベース460のハンドアウトゾーン465が更新されたことを、様々な経路710によって、生徒に関連付けられた各クライアントデバイス120に通知する。経路710は、特定のクライアントデバイス120のネットワークインタフェースの宛先アドレスに関連付けられたネットワーク経路を参照することができる。
通知は、各クライアントデバイス120に含まれるデーモン440によって受信され得る。次いで、デーモン440は、ハンドアウトゾーン465からクライアントデバイス120のローカルデータベース450にデータをダウンロードする。いくつかの実施形態では、ハンドアウトサービス220は、クラスの生徒のユーザ識別子を取得するために、学校管理サービス240を利用する。ユーザ識別子は、所与のクラスの生徒に関連付けられた各クライアントデバイス120に、別個の通知サービスを使用して通知を送信するために利用され得る。
いくつかの実施形態では、生徒のグループは、学校管理サービス240によって識別され得、学校管理サービスは、ハンドアウトサービス220からの要求を受信したことに応答して、特定のクラスに登録された生徒の識別子のリストを返すように構成される。他の実施形態では、名簿サービスは、学校管理サービス240とインタフェースして、組織に範囲を限定されたリモートデータベース460の名簿ゾーン465に名簿データを作成することができる。次いで、ハンドアウトサービス220は、学校管理サービス240から名簿データを直接取得する代わりに、リモートデータベース460から名簿データにアクセスすることができる。
ハンドアウトを公開する要求に応答して、ハンドアウトサービス220は、教員に範囲を限定された個人ゾーン465から、クラスの生徒のグループに範囲を限定されたハンドアウトゾーン465にハンドアウトをコピーすることができる。ハンドアウトのコピーがハンドアウトゾーン465に記憶されると、ハンドアウトサービス220は、ハンドアウトゾーン465をサブスクライブする生徒に関連付けられた任意のクライアントデバイスに変更の通知を送信する。ハンドアウトゾーン465に関連付けられた生徒のクライアントデバイス120に含まれるデーモン440は、ハンドアウトサービス220からの通知の受信に応答して、ハンドアウトゾーン465に記憶されたハンドアウトのコピーをクライアントデバイス120のローカルメモリに自動的にダウンロードする。次いで、ハンドアウトは、生徒がアクティビティを完了すること、及び/又はハンドアウトに添付された教材を閲覧することができるように、生徒のクライアントデバイス120のクライアントアプリケーション205によって閲覧され得る。
図8A~図8Cは、いくつかの実施形態による、生徒に関連付けられたクライアントデバイス120上のクライアントアプリケーション210によって実装されるGUI800を示す。GUI800は、GUI600とは異なる。クライアントアプリケーション210は、教員ではなく生徒に関連付けられたユーザアカウントにユーザがサインインしたことに応答して、GUI800を表示するように構成され得る。GUI800は、生徒が、クラスの教員によって生徒のグループに割り当てられた、クラスのハンドアウトを閲覧することを可能にする。
いくつかの実施形態では、GUI800は、第1の表示領域810、第2の表示領域820、及び第3の表示領域830を含む。第1の表示領域810は、特定のクラスの生徒に割り当てられたハンドアウトの表現を表示するために利用される。第2の表示領域820は、生徒が登録されたクラスの表現を表示するために利用される。図8Aに示すように、第1の表示領域810は、ディスプレイ302に含まれる画素の第1の部分を占め、第2の表示領域820は、ディスプレイ302に含まれる画素の第2の部分を占める。
第1の表示領域810は、選択されたクラスの生徒に割り当てられた別個かつ個別のハンドアウトを表す要素812を示すヘッダを含む。いくつかの実施形態では、各要素812は、ハンドアウトのタイトル、ハンドアウトに関連付けられた期限日の記述子、及び生徒がハンドアウトを完了したかどうかの表示を含む、ボックスによって定義される。例えば、第1の要素812-1は、課題「動植物」の第1のハンドアウトに関連付けられ、このハンドアウトは、3月12日が期限日であり、この生徒は完了しており、第2の要素812-2は、課題「テスト準備」の第2のハンドアウトに関連付けられ、このハンドアウトは、3月15日が期限日であり、この生徒は完了していない。他の実施形態では、要素812は異なる形態をとり得ることが理解されるであろう。例えば、要素812は、期限日及び/又は完了インジケータを省略することができる。あるいは、要素812は、期限日及び/又は完了インジケータに加えて又はその代わりに情報を含むことができる。加えて、要素812は、ハンドアウトに割り当てられた異なるアクティビティを表す画像又はアイコンなどのグラフィックを含むことができる。場合によっては、グラフィックは、要素812の背景として動画を再生すること、又はハンドアウトに添付された画像のスライドショーを示すことなどによって、アニメーション化され得る。
第2の表示領域820は、生徒が登録されている別個かつ個別のクラスを表す要素822を示すヘッダを含む。生徒は、クラスの教員によってどのハンドアウトが生徒に割り当てられたかを第1の表示領域810で見るために、特定の要素822を選択することができる。いくつかの実施形態では、各要素822は、クラスのタイトルと、クラスの生徒に割り当てられたハンドアウトの数の記述子と、を含むボックスによって定義される。例えば、第1の要素822-1は、クラス「科学A」に関連付けられ、このクラスは、2つのハンドアウト期限を有し、第2の要素822-2は、クラス「数学A」に関連付けられ、このクラスは、ハンドアウト期限を有しておらず(ハンドアウトは0個であり)、第3の要素822-3は、クラス「英語A」に関連付けられ、このクラスは、1つのハンドアウト期限を有する。他の実施形態では、要素822は異なる形態をとり得ることが理解されるであろう。例えば、要素822は、クラスの生徒に割り当てられたハンドアウトの数のインジケータを省略することができる。
いくつかの実施形態では、生徒は、クライアントデバイス120の入力インタフェースを使用して特定のクラスを選択することができる。例えば、生徒は、タッチインタフェースを使用して、その生徒が登録されている利用可能なクラスのうちの1つに関連付けられた要素822を選択することができる。要素822が選択されると、要素822はアクティブ化され、第1の表示領域810の要素812は、第2の表示領域820の選択された要素822によって表されるクラスに関連付けられたハンドアウトを反映するように更新されてもよい。選択された要素822(例えば、現在アクティブ化されている要素)は、要素822がアクティブであることを示すために強調表示され得る。強調表示は、要素のサイズを大きくする、要素822又は要素822の境界に関連付けられた色を変更する、選択された要素822の周囲にボックスを表示するなどによって実装され得る。図8Aに示すように、第1の要素822-1は、アクティブ化され、第2の要素822-2及び第3の要素822-3よりも大きく示される。
第3の表示領域830は、ディスプレイ302の上端縁の近傍に位置する。第3の表示領域830は、クライアントアプリケーション210のユーザが生徒のユーザアカウントにサインインすることを可能にする、要素を含む。いくつかの実施形態では、第3の表示領域830は隠れており、例えば、垂直スワイプタッチジェスチャを使用して、第3の表示領域830を露わにさせるなどの、ユーザ入力に応答して表示され得る。
第1のアイコン832が、第3の表示領域830の左側の近傍に表示される。第1のアイコン832は、ユーザによって選択されると、クライアントアプリケーション210に、生徒のユーザアカウントにサインインするための資格情報の入力をユーザに促させることができる。いくつかの実施形態では、第1の表示領域810及び第2の表示領域820は、ユーザが第1のアイコン832を使用して特定のユーザアカウントにサインインするまで隠れている。いくつかの実施形態では、クライアントアプリケーション210が起動すると、ユーザアカウントにサインインするための資格情報の入力をユーザに促す別個のインタフェースがユーザに対して表示される。GUI800は、ユーザが特定のユーザアカウントに首尾よくサインインしたときにのみ、ディスプレイ302に表示される。次いで、第1のアイコン832は、ユーザアカウントからサインアウトするために及び/又は異なるユーザアカウントにサインインするために使用され得る。
特定のクラスのハンドアウトを表す特定の要素812を選択することにより、GUI800は、図8Bに示すように、ハンドアウトを表すデータによって更新される。第1の表示領域840は、ハンドアウトのタイトル、ハンドアウトの期限日、ハンドアウトが割り当てられたクラスの表示、及び教員によってハンドアウトに含まれた指示などの、ハンドアウトに含まれる情報を提示する。第2の表示領域850は、教員によってハンドアウトに添付された任意のハンドイン及び/又はアクティビティに関連する情報を提示する。
第2の表示領域850内のアクティビティを選択することにより、異なるアプリケーションのアクティビティが開かれる。アクティビティが特定のファイル形式の添付ファイルである場合、そのファイル形式に対応するアプリケーションが、添付ファイルを閲覧するために開かれる。アクティビティがブックマーク又はリンクである場合、ウェブブラウザアプリケーションが開かれ、ブックマーク又はリンクのURLによって指定されたリソースが、取得される。アクティビティがマルチメディアファイルである場合、マルチメディアアプリケーションが、マルチメディアファイルを閲覧するために開かれる。しかし、アクティビティが進捗アプリケーションに関連付けられている場合(例えば、アクティビティが、進捗アプリケーションによって提供され、お気に入りコンテキストとして教員によって選択されたコンテキストに関連付けられている場合)、進捗アプリケーションは、アクティビティを完了するために開かれる。いくつかの実施形態では、進捗アプリケーションは、アクティビティを完了するときに生徒の進捗を追跡するためのクラスキットソフトウェアフレームワークの少なくとも一部分を実装する。
図8Cに示すように、第1の進捗アプリケーションのGUI860が、ディスプレイ302上で生徒に提示される。GUI860は、画素データとして提示される情報の形態で出力を提供することができる。図8Cに示すように、第1の進捗アプリケーションのGUI860は、生徒が特定の教科を学習するのを助けるテキスト及びグラフィックを提供することができる。GUI860は、要素を含むことができ、それらの要素のいくつかは対話式であってもよい。例えば、生徒は、木に関するより詳細な情報を表示するために、木の画像を選択することができる。図8Cに示す第三者ソフトウェアは、例示のみを目的として示されており、ソフトウェアの設計は、いかなる特定の種類の学習ソフトウェアにも限定されないことが理解されるであろう。実際に、クラスキットソフトウェアフレームワークを実装できるソフトウェアの多様性は大きい。
図9は、いくつかの実施形態による、ハンドインサービス230とクラスの複数の生徒のいくつかのクライアントアプリケーション(単数又は複数)210及び/又はデーモン(単数又は複数)440との間のクライアント-サーバ関係を示す。図9に示すように、クラスは、クラスに登録されたL人の生徒を含むことができ、各生徒は、1つ以上のクライアントデバイス120へのアクセスを有する。ハンドインサービス230は、生徒の対応するグループに割り当てられた1つ以上のハンドアウトに含まれるハンドインの管理を支援するように構成される。
いくつかの実施形態では、ハンドインのためのプレースホルダを含むハンドアウトが公開されると、ハンドアウトのプレースホルダは、生徒がハンドインに対応するファイルを提出することを要求されていることを示す。ここでも、生徒は、クライアントデバイス120上の1つ以上のアプリケーションを使用して、ハンドインのファイルを生成する。次いで、生徒は、クライアントアプリケーション205を使用してハンドインを提出することができる。あるいは、クライアントアプリケーション205は、生徒が第三者アプリケーションからハンドインを提出することを可能にする、第三者アプリケーションに追加されたGUI要素(例えば、アプリケーション拡張)を作成することができる。
いくつかの実施形態では、生徒によって作成されたドキュメントは、生徒が異なるクライアントデバイス120からドキュメントにアクセスできるように、リモートデータベース460の個人ゾーン465-1に対して同期され得る。生徒がドキュメントをハンドインとして提出することを選択すると、ハンドインサービスは、生徒に範囲を限定された個人ゾーン465-1から、クラスに範囲を限定されたハンドインゾーン465-2に、任意選択的にハンドインに対応する特定のハンドアウトにも、ドキュメントをコピーすることができる。生徒の個人ゾーン465-1からハンドインゾーン465-2にドキュメントを移動させることにより、教員はドキュメントを閲覧することができる。いくつかの実施形態では、ドキュメントはまた、生徒に範囲を限定された個人ゾーン465-1から削除され、生徒は、ハンドインゾーン465-2に記憶されたドキュメントのコピーへの読み出し専用アクセスを承諾される。その結果、ドキュメントがハンドインとして提出されると、生徒はもはやドキュメントを編集することができない。
いくつかの実施形態では、特定のハンドアウトに関連付けられた生徒のグループは、学校管理サービス240によって識別され得、学校管理サービスは、ハンドインサービス230からの要求を受信したことに応答して、特定のクラスに登録された生徒の識別子のリストを返すように構成される。他の実施形態では、名簿サービスは、学校管理サービス240とインタフェースして、組織に範囲を限定されたリモートデータベース460のゾーン465に名簿データを作成することができる。次いで、ハンドインサービス230は、学校管理サービス240から名簿データを直接取得する代わりに、リモートデータベース460から名簿データにアクセスすることができる。
図10は、いくつかの実施形態による、進捗パイプライン250とクライアントアプリケーション210及び/又はデーモン440との間のクライアント-サーバ関係を示す。クラスキットソフトウェアフレームワークの利点を教室環境内で完全に実現するためには、関連付けられたクライアントデバイス120を使用する各生徒のアクティビティを追跡するための手段が必要となる。デーモン440及び進捗パイプライン250は、クラスキットソフトウェアフレームワークの少なくとも一部を実装する任意の第三者アプリケーションにそのような機能を提供する。
図10に示すように、クライアントデバイス120が、プロセッサ410と、ソフトウェア及びデータを含むメモリ420と、を含む。クライアントデバイス120のメモリ420は、オペレーティングシステム430、クライアントアプリケーション210、デーモン440、及び1つ以上の進捗アプリケーション1010を含む。デーモン440は、クラスキットソフトウェアフレームワークによって進捗アプリケーション1010と通信するAPIを実装する。
いくつかの実施形態では、1つ以上の進捗アプリケーション1010はそれぞれ、進捗アプリケーション1010によって提供される1つ以上のコンテキストに関連付けられた進捗を追跡するための、クラスキットソフトウェアフレームワークの少なくとも一部分を実装する。クラスキットソフトウェアフレームワークは、進捗アプリケーション1010のソースコードに追加されるソースコード、進捗アプリケーション1010によって利用される機能のライブラリのソースコード、及び進捗アプリケーション1010のソースコードにリンクされ得るコンパイルされた機能のライブラリのうちの少なくとも1つを含む。ソフトウェアフレームワークは、クライアントデバイス120のバックグラウンドで実行しているデーモン440に対するAPIコールを生成する、進捗アプリケーション1010のソースコードに含まれる機能を提供する。APIコールは、進捗アプリケーション1010内でユーザによって実施される動作に関連する進捗追跡情報を含む。
ソフトウェア開発者は、進捗追跡機能を進捗アプリケーション1010内に実装するために、進捗アプリケーション1010のソースコード内にAPIコールを実装することができる。例えば、ドキュメント閲覧アプリケーションでは、ソースコードは、ユーザが新しいページに移動するたびにユーザがドキュメントの特定のページを読んだことを示すAPIコールを生成するように構成され得る。ソフトウェア開発者はまた、クライアントアプリケーション210内のハンドアウトに添付され、進捗アプリケーション1010を利用するアクティビティを教員が作成することを可能にするために、進捗アプリケーション1010の構造を指定する進捗アプリケーション1010の1つ以上のコンテキストを定義することができる。各コンテキストは、標準の言語(例えば、定義済みキーワード)及び/又はフォーマットを使用して、進捗アプリケーション1010の構造を定義するデータ構造である。
単一の進捗アプリケーション1010は、2つ以上のコンテキストに関連付けられ得ることが理解されるであろう。例えば、教科書アプリケーションが、異なるファイル又はデータ構造に記憶された複数の教科書を閲覧するために実装され得る。異なるコンテキストが、異なる教科書のそれぞれについて定義され得る。各コンテキストは、教科書のタイトル、教科書の作成者、教科書の版、教科書の章の数、教科書の各章の説明、各章に含まれる節の説明、各節に含まれる各ページの説明、各章又は各節内の問題セットの説明などを含む、教科書の目次などを定義するなど、対応する教科書の特定のレイアウトを定義することができる。次いで、教員は、これらのコンテキストを使用して、特定のコンテキストに関連付けられた特定のアクティビティを選択し、これらの選択されたアクティビティをクラスの生徒に割り当てられるハンドアウトに添付することができる。
デーモン440は、進捗アプリケーション1010からAPIコールを受信するように構成される。APIコールは、進捗アプリケーション1010内で生成された進捗追跡情報を含むことができる。いくつかの実施形態では、進捗追跡を有効にする、又は無効にすることができる。デーモン440は、進捗追跡が無効にされているときに、進捗アプリケーション1010から受信された進捗追跡情報を無視するように構成される。しかし、進捗追跡が有効にされている場合、デーモン440は、進捗追跡情報を処理するように構成される。いくつかの実施形態では、デーモン440は、2つ以上のAPIコールにより受信された進捗追跡情報を集約した後に、1つ以上の進捗アプリケーション1010から受信されて集約された進捗追跡情報を処理する。
いくつかの実施形態では、進捗追跡は、個々の進捗アプリケーション1010について有効に又は無効にされ得る。したがって、第1のアプリケーションの進捗追跡を有効にすることができ、第2のアプリケーションの進捗追跡を無効にすることができる。したがって、デーモン440は、進捗追跡が無効にされているアプリケーションからの任意の進捗追跡情報をフィルタリングして除外し、進捗追跡が有効にされているアプリケーションの進捗追跡情報のみを処理するように構成される。
いくつかの実施形態では、クライアントデバイス120にインストールされた全ての進捗アプリケーション1010の進捗追跡は、クライアントアプリケーション210のインストール時に自動的に有効にされる。したがって、クライアントデバイス120のユーザは、進捗追跡情報の収集を防止するために、クライアントデバイス120又はクライアントデバイス120にインストールされた個々の第三者アプリケーションの進捗追跡を無効にすることを要求され、これは、オプトアウトポリシーと呼ばれる場合がある。他の実施形態では、クライアントデバイス120にインストールされた全ての第三者アプリケーション1010の進捗追跡は、クライアントアプリケーション210のインストール時に自動的に無効にされる。したがって、クライアントデバイス120のユーザは、進捗追跡情報の収集を可能にするために、クライアントデバイス120又はクライアントデバイス120にインストールされた個々の第三者アプリケーションの進捗追跡を有効にすることを要求され、これは、オプトインポリシーと呼ばれることがある。
進捗追跡情報としては、進捗アプリケーション1010を使用してクライアントデバイス120のユーザによって完了された動作を識別する情報を挙げることができるが、これに限定されない。例えば、進捗追跡情報としては、ユーザがデジタル教科書の特定の章を閲覧したこと又は読んだこと、進捗アプリケーション1010のGUIによってユーザに提示されたいくつかの問題を完了したこと、進捗アプリケーション1010の対話式要素のリンクをクリックしたり、同対話式要素と対話したりするなどの動作を完了したこと、などを示す情報を挙げることができる。
進捗追跡情報は、個人識別情報(Personally Identifying Information;PII)を含むことができる。このPIIは、機密情報とみなされる場合があり、したがって、クライアントデバイス120からサーバデバイス110に送信されるときに、この情報をセキュリティ保護するようにデーモン440によって配慮される。いくつかの実施形態では、特定の生徒に範囲を限定された進捗ゾーン465が、ユーザアカウントに関連付けられた各生徒の進捗追跡情報を記憶するために利用される。進捗追跡情報は、クライアントデバイス120のメモリ420に記憶され、ローカルで暗号化される。進捗追跡情報はまた、リモートデータベース460の進捗ゾーン465においてリモートで暗号化され得る。進捗追跡情報は、異なる暗号キーによってローカル又はリモートで暗号化され得る。加えて、デーモン440は、リモートデータベース460に転送中の進捗追跡情報を暗号化するように構成され得る。転送中の暗号化に使用される暗号キーは、ローカル又はリモートで利用される暗号キーとは異なり得る。その結果、進捗追跡情報は、様々な形態の認証(例えば、生体認証、パスコードの入力をユーザに要求するなど)を使用してローカルでセキュリティ保護され得、進捗追跡情報は、安全な伝送機構としての相互TLSなどの追加の認証形態を使用して、リモートで(すなわちサーバ側で)セキュリティ保護され得る。
図11は、いくつかの実施形態による、デーモン440による進捗追跡情報のフィルタリングを示す。いくつかの実施形態では、デーモン440は、1人以上の教員によって生徒に割り当てられた1つ以上のハンドアウトに関連付けられたアクティブなコンテキストのセットに基づいて、進捗アプリケーション1010から受信された進捗追跡情報をフィルタリングするように構成される。デーモン440は、生徒(又はクラス)に現在割り当てられている1つ以上のハンドアウトの添付ファイルに基づいて、アクティブなコンテキストのリスト1170を追跡することができる。いくつかの実施形態では、期限日を既にすぎているハンドアウトの添付ファイルは、教員によって閉じられ(例えば、非アクティブ化され)、アクティブなコンテキストのリスト1170から除去され得る。デーモン440は、アクティブなコンテキストのリスト1170に基づいて、進捗アプリケーション1010から受信された進捗追跡情報をフィルタリングするように構成される。
例えば、第1の教員は、第1の進捗アプリケーション1010-1の第1のコンテキストに関連付けられたアクティビティを含む第1のハンドアウトを特定の生徒に割り当てることができ、第2の教員は、第2の進捗アプリケーション1010-2の第2のコンテキストに関連付けられたアクティビティを含む第2のハンドアウトを特定の生徒に割り当てることができる。第1の進捗アプリケーション1010-1の第1のコンテキスト及び第2の進捗アプリケーション1010-2の第2のコンテキストは、アクティブなコンテキストと見なされる。しかし、生徒は、任意のアクティブなコンテキストに関連付けられていない第3の進捗アプリケーション1010-3を使用してもよく、デーモン440は、第3の進捗アプリケーション1010-3から受信された任意の進捗追跡情報1140をフィルタリングして除外して(例えば、無視して)、不要な進捗追跡データの収集を避けるように構成され得る。同様に、デーモン440はまた、異なる非アクティブなコンテキストに関連付けられ、第1の進捗アプリケーション1010-1及び/又は第2の進捗アプリケーション1010-2から受信された任意の進捗追跡情報をフィルタリングして除外することができる。例えば、アクティブなコンテキストは、マクベスの電子書籍の構造を定義してもよく、非アクティブなコンテキストは、ロメオとジュリエットの電子書籍の構造を定義してもよい。進捗アプリケーション1010においてマクベスの電子書籍が開いている間に受信された任意の進捗追跡情報は、デーモン440によって処理され、進捗アプリケーション1010においてロメオとジュリエットの電子書籍が開いている間に受信された追跡情報は、フィルタリングして除外され無視される。
図11に示すように、第1の進捗アプリケーション1010-1から受信され、アクティブなコンテキストのリスト1170に含まれる第1のコンテキストに関連付けられた第1の進捗追跡情報1110は、デーモン440によって処理される。いくつかの実施形態では、デーモン440は、第1の進捗追跡情報1110を、進捗追跡情報1150-1としてローカルデータベース450に記憶する。進捗追跡情報1150-1は、同期メカニズムによって、生徒に範囲を限定されたリモートデータベース460の進捗ゾーン465にアップロードされる。同様に、第2の進捗アプリケーション1010-2から受信され、アクティブなコンテキストのリスト1170に含まれる第2のコンテキストに関連付けられた第2の進捗追跡情報1120は、デーモン440によって処理される。第2の進捗追跡情報1120は、進捗追跡情報1150-2としてローカルデータベース450に記憶される。ここでも、進捗追跡情報1150-2は、同期メカニズムによって、生徒に範囲を限定されたリモートデータベース460の進捗ゾーン465にアップロードされる。
しかし、第2の進捗アプリケーション1010-2から受信され、アクティブなコンテキストのリスト1170に含まれない第3のコンテキストに関連付けられた第3の進捗追跡情報1130が、デーモン440によって無視される。同様に、第3の進捗アプリケーション1010-3から受信され、アクティブなコンテキストのリスト1170に含まれない第4のコンテキストに関連付けられた第4の進捗追跡情報1140がまた、デーモン440によって無視される。
デーモン440はまた、暗号化された進捗追跡情報1150に関連付けられたメタデータ1160を作成する。メタデータ1160は、リモートデータベース460の暗号化された進捗追跡情報1150への参照、及び進捗追跡情報に関連付けられたコンテキストのコンテキスト識別子を含むことができる。いくつかの実施形態では、メタデータ1160は、クラス識別子、コンテキストに対応するハンドアウト識別子、進捗追跡情報1150を生成した進捗アプリケーション1010に対応するアプリケーション識別子、又はクライアントデバイス120のユーザアカウントにサインインしたユーザに関連付けられたユーザ識別子など、進捗パイプライン250によって利用され得る追加の情報を含む。その結果、進捗パイプライン250は、PIIを含み得る実際の進捗追跡情報を処理しない。代わりに、進捗パイプライン250は、進捗追跡情報に関連付けられたメタデータ1160を処理するにすぎず、実際の進捗追跡情報は、暗号化され、リモートデータベース460の個人進捗ゾーン465に記憶されたままである。
他の実施形態では、メタデータ1160ではなく、実際の進捗追跡情報が、暗号化されているか又は暗号化されていないかのいずれかで、進捗パイプライン250に提供され得ることが理解されるであろう。しかし、これらの実施形態は、進捗追跡情報に含まれるPIIにより低いセキュリティをもたらす場合がある。
アクティブなコンテキストの受信により、その特定のコンテキストに関連する進捗の追跡が、デーモン440に暗示的に許可されることが理解されるであろう。コンテキストがアクティブなコンテキストのリスト1170から除去されると、暗示的な許可が取り消され、したがって、デーモンは、そのコンテキストに関連付けられた進捗を追跡しない。
図12は、いくつかの実施形態による進捗パイプライン250を示す。進捗パイプライン250は、1つ以上のサーバデバイス110に実装される。いくつかの実施形態では、進捗パイプライン250の各構成要素が、異なるサーバデバイス110に実装される。場合によっては、進捗パイプライン250の特定の構成要素が、本明細書でクラスタと呼ばれる場合もある、サーバノード群に実装される。
図12に示すように、進捗パイプライン250は、1つ以上のクライアントデバイス120に含まれるデーモン440からネットワーク150を介して進捗追跡メタデータ1202を受信する。進捗パイプライン250は、ネットワークアドレスに関連付けられた1つ以上のサービスとして実装され得る。ネットワークアドレスに送信されたメッセージが、対応するサービスによって処理される。
いくつかの実施形態では、オンランプサービス1210は、1つ以上のデーモン440から進捗追跡メタデータ1202を受信する。進捗追跡メタデータ1202は、特定の生徒の進捗追跡情報1150に関連する情報を含む。いくつかの実施形態では、進捗追跡メタデータ1202は、クライアントアプリケーション210のユーザアカウントに関連付けられたユーザ識別子と、進捗追跡情報1150に対応する特定のコンテキストのコンテキスト識別子と、を含む。
いくつかの実施形態では、オンランプサービス1210は、進捗追跡が特定のユーザについて有効にされているかどうかをチェックするように構成される。管理者は、学校管理サービス240によって、所与の生徒の進捗を追跡する許可について、特定の生徒の選好を変更することができる。オンランプサービス1210は、所与の生徒の許可選好のステータスの変化に関する通知を、その変更が特定のクライアントデバイス120のデーモン440で受信される前に受信してもよい。その結果、デーモン440は、生徒が進捗追跡を全体で無効にした後であっても、所与の生徒の進捗追跡情報を収集し続けることができる。したがって、オンランプサービス1210は、リモートデータベース460に記憶されたフラグのセットに基づいて、進捗パイプライン250によって受信される進捗追跡メタデータについてゲート保持機能を実施する。
いくつかの実施形態では、名簿サービスが、学校管理サービス240を使用して、特定の学区の各生徒について許可フラグのセットを定期的にプルし、組織に範囲を限定されたリモートデータベース460の許可ゾーン465に許可フラグのセットを記憶するように構成される。次いで、オンランプサービス1210は、進捗追跡メタデータ1202に含まれるユーザ識別子を使用して受信された進捗追跡メタデータ1202の各アイテムについて許可フラグのセットを照会することができる。
いくつかの実施形態では、オンランプサービス1210は、識別サービス260を呼び出し、進捗追跡メタデータ1202で受信されたユーザ識別子を使用してディレクトリサービス識別子を要求する。ディレクトリサービス識別子は、ユーザアカウントが作成されると、ユーザ識別子に関連付けられるように登録され得る。ディレクトリサービス識別子は、ユーザアカウントの寿命にわたって一定であり、クライアントアプリケーション210及び/又はデーモン440がディレクトリサービス識別子を決して受信しないように、クライアント-サーバアーキテクチャ200のサーバ側内でのみ使用される。その結果、デーモン440と進捗パイプライン250との間のトラフィックを覗くいかなる者も、ディレクトリサービス識別子を取得して、1つ以上のサーバに記憶された特定のPIIを特定のユーザの識別子と関係付けることができない。識別サービス260は、ディレクトリサービス識別子をオンランプサービス1210に返し、オンランプサービスは、進捗追跡メタデータ1202に含まれるユーザ識別子を逆参照し、ユーザ識別子をディレクトリサービス識別子に置き換える。いくつかの実施形態では、許可フラグのセットは、ユーザアカウントのユーザ識別子ではなく、ディレクトリサービス識別子に対応する。その結果、ユーザ識別子は、オンランプサービス1210がゲート保持機能を実施する前に逆参照される。オンランプサービス1210が進捗追跡メタデータ1202の処理を終了すると、進捗追跡メタデータ1202は、待ち行列1215に送信される。
他の実施形態では、ディレクトリサービス識別子の代わりに内部識別子を利用することができる。したがって、進捗追跡メタデータ1202は、ディレクトリサービス識別子ではなく内部識別子を使用して進捗パイプライン250全体にわたって追跡される。これにより、進捗パイプライン250は、内部識別子とディレクトリサービス識別子との間の関連付けを削除するだけで、進捗追跡情報と特定のユーザとの間の全ての関連付けを切り離すことが可能になる。
いくつかの実施形態では、待ち行列1215は、サーバデバイス110に実装される待ち行列サービスである。待ち行列1215は、オンランプサービス1210と同じサーバデバイス110内又は異なるサーバデバイス110内に実装され得る。いくつかの実施形態では、待ち行列1215は、Apache(登録商標)Kafka分散型ストリーミングプラットフォームなどの分散型ストリーミングサービスとして実装される。待ち行列1215は、オンランプサービス1210及び拡充サービス1220が非同期的に実行されることを可能にする。
いくつかの実施形態では、拡充サービス1220は、1つ以上のサーバデバイス110に実装される。拡充サービス1220は、進捗追跡メタデータ1202を待ち行列1215から受信し、進捗追跡メタデータ1202を追加の情報で拡充するように構成される。いくつかの実施形態では、拡充サービス1220は、進捗追跡メタデータ1202に含まれるディレクトリサービス識別子に基づいて、学校管理サービス240に名簿データを要求する。名簿データは、生徒が登録された任意のクラスの1つ以上のクラス識別子、及び各クラスに登録された生徒の生徒識別子のリストを含むことができる。学校管理サービス240は、生の進捗追跡メタデータ1202内のデーモン440によって提供されたユーザ識別子ではなく、生徒のディレクトリサービス識別子を利用することができる。他の実施形態では、学校管理サービス240に照会するために、内部識別子ではなく、ユーザ識別子が利用され得る。
拡充サービス1220はまた、リモートデータベース460の対応するゾーン465から特定のクラスの全てのアクティブなハンドアウトを取得することができる。名簿データ及びハンドアウトは、進捗追跡メタデータ1202に既に含まれていない場合に、進捗追跡メタデータ1202に追加の情報を付加するために、進捗追跡メタデータ1202に含まれるクラス識別子及びディレクトリサービス識別子と相互参照される。いくつかの実施形態では、拡充サービス1220は、進捗追跡メタデータ1202が、組織識別子、クラス識別子、ハンドアウト識別子、及びコンテキスト識別子、並びに暗号化された進捗追跡情報1150への参照を含むことを確実にする。
いくつかの実施形態では、進捗追跡メタデータ1202は、複数のクラス識別子及び/又は複数のハンドアウト識別子に関連付けられ得る。例えば、2つの異なるクラスから2人の異なる教員が、同じコンテキストを参照する2つの異なるハンドアウトにおいて特定の生徒にアクティビティを割り当てた場合、生徒は、一方のクラスのアクティビティを完了すると、他のクラスの同じアクティビティもまた同時に完了したと認められる。拡充サービス1220が進捗追跡メタデータ1202を拡充すると、拡充サービス1220は、拡充された進捗追跡メタデータ1202を待ち行列1225に送信する。
いくつかの実施形態では、待ち行列1225は、待ち行列1215と同様である。待ち行列1225は、拡充サービス1220と同じサーバデバイス110内又は異なるサーバデバイス110内に実装され得る。
いくつかの実施形態では、進捗追跡メタデータ1202は、待ち行列1225から出て、分散型ファイルシステム1230に記憶される。いくつかの実施形態では、分散型ファイルシステム1230は、サーバノード群に実装されるようなApache(登録商標)Hadoop Distributed File System(HDFS)である。各サーバノードは、データを記憶できる安価なディスクドライブのセットを含む。状況によっては、分散型ファイルシステム1230は、分散型ファイルシステム1230に記憶された進捗追跡メタデータ1202への変更を追跡するように構成された少なくとも1つのジャーナルノードを含む。ジャーナルノードは、サーバノードがクラッシュした場合に、進捗追跡メタデータ1202の完全性を保護する。
進捗パイプライン250は、各組織のデータが、特定の組織に範囲が限定された別個かつ個別のリモートデータベース460に記憶されていても、複数の組織によって利用され得ることが理解されるであろう。その結果、分散型ファイルシステム1230は、1つ以上の組織の大量の進捗追跡メタデータ1202を記憶している。集約サービス1240は、進捗追跡メタデータ1202の全てにわたってソートし、組織によって追跡ウィンドウ中に受信された進捗追跡メタデータ1202を編成するように設計される。いくつかの実施形態では、集約サービス1240は、大規模なデータセットを処理するための演算サービスである。例えば、集約サービス1240は、サーバノード群に実装されるApache(登録商標)Sparkサービスとして実装され得るが、これに限定されない。次いで、進捗追跡メタデータ1202は、集約サービス1240によって生成された1つ以上のスパークジョブで処理される。
いくつかの実施形態では、追跡ウィンドウは、例えば、数分間又は数時間とすることができる。例えば、集約サービス1240は、10分間のウィンドウで、分散型ファイルシステム1230で受信された進捗追跡メタデータ1202をソートすることができる。いくつかの実施形態では、集約サービス1240は、追跡ウィンドウに基づいてセットされたタイマーの満了時にルーチンを実行するように構成される。ルーチンが実行されると、タイマーはリセットされて、次の追跡ウィンドウの満了を待つ。
いくつかの実施形態では、集約サービス1240は、分散型ファイルシステム1230のジャーナルノードを調査して、追跡ウィンドウ中に分散型ファイルシステム1230に記憶された進捗追跡メタデータ1202の全てに関連する情報を収集する。ジャーナルノードは、分散型ファイルシステム1230への変更を追跡し、以前の追跡ウィンドウ中に分散型ファイルシステム1230に記憶された全ての進捗追跡メタデータ1202のリストを返すことができる。集約サービス1240は、追跡ウィンドウ中に受信された進捗追跡メタデータ1202をプルし、追跡ウィンドウ中に進捗追跡メタデータ1202を進捗パイプライン250に提出する1つ以上の組織の各組織のデータ構造を生成するように構成される。データ構造は、本明細書ではキューブと呼ばれる場合がある。
いくつかの実施形態では、集約サービス1240は、単一の組織に範囲を限定された別個かつ個別のキューブを生成する。特定の組織識別子に対応する進捗追跡メタデータ1202は全て、対応するキューブにソートされる。所与のキューブに記憶された進捗追跡メタデータ1202は、クラス識別子、ハンドアウト識別子、コンテキスト識別子、及び生徒識別子(例えば、ユーザ識別子、ディレクトリサービス識別子など)によってソートされ得る。
いくつかの実施形態では、キューブは、ブロック型ストレージ1250に記憶される。いくつかの実施形態では、ブロック型ストレージ1250は、集約サービス1240を実装するサーバデバイス110に含まれるHDDとすることができる。他の実施形態では、ブロック型ストレージ1250は、1つ以上のサーバデバイス110に含まれる物理的な記憶デバイスの1つ以上のセットに実装された仮想ブロック型記憶デバイスとすることができる。他の実施形態では、ブロック型ストレージ1250は、サーバノード群に実装されたApache(登録商標)Cassandraなどの分散型データベースサービスによって置き換えられ得る。また他の実施形態では、ブロック型ストレージ1250は、上述の分散型ファイルシステム1230と同様の分散型ファイルシステムによって置き換えられ得る。
集約サービス1240は、1つ以上の対応する組織の追跡ウィンドウ中に受信された進捗追跡メタデータ1202を含む1つ以上のキューブを生成する。集約サービス1240は、各キューブへの参照を待ち行列1245に追加する。いくつかの実施形態では、待ち行列1245は、待ち行列1215及び1225と同様であり、オフランプサービス1260が集約サービス1240とは非同期的に動作することを可能にする。
いくつかの実施形態では、オフランプサービス1260は、各キューブの参照が待ち行列1245から出るときにキューブを処理するように構成される。いくつかの実施形態では、オフランプサービス1260は、ブロック型ストレージ1250の所与のキューブに記憶された進捗追跡メタデータ1202を読み出し、各進捗追跡メタデータ1202のエントリを、特定のクラスに、コンテキストに、任意選択的には、進捗追跡メタデータ1202に含まれる、クラス識別子、コンテキスト識別子、及び/又はディレクトリサービス識別子/ユーザ識別子に基づく生徒に範囲を限定された、リモートデータベース460の特定のゾーン465に書き込むように構成されるにすぎない。その結果、オフランプサービス1260は、進捗追跡メタデータ1202をキューブよりも小さな粒度にソートする。
他の実施形態では、オフランプサービス1260は、進捗パイプライン250の前のサービスによって利用されたディレクトリサービス識別を置き換えることによって進捗追跡メタデータ1202を逆参照し、ディレクトリサービス識別子を進捗識別子と置き換える。進捗識別子は、識別サービス260内のディレクトリサービス識別子に関連付けられ得るが、進捗識別子は、進捗追跡データ1150と特定のユーザとの間の任意の接続を断つために、ディレクトリサービス識別子から分離され得る。いくつかの実施形態では、進捗識別子は、ユーザが進捗追跡からオプトアウトした(例えば、進捗追跡を全体で無効にした)ことに応答して破棄される。例えば、組織の管理者は、学校管理サービス240を使用して、特定の生徒、クラス、学校、及び/又は学区全体の進捗追跡を無効にすることができる。これらの変更により、識別サービス260は、進捗追跡を無効にされたそれらの生徒のディレクトリサービス識別子から進捗識別子を分離することができる。進捗追跡情報がリモートデータベース460にまだ存在してもよいが、進捗追跡情報は、進捗識別子とディレクトリサービス識別子との間の関連付けが断たれると、特定の生徒に関係付けることができない。
オフランプサービス1260が進捗追跡メタデータ1202の処理を終了すると、進捗追跡メタデータ1202は、保管サービス1270に送信される。いくつかの実施形態では、保管サービス1270は、少なくとも1つのサーバデバイス110に実装される。保管サービス1270は、暗号化された進捗追跡情報1150の参照を進捗追跡メタデータ1202のエントリによってプルし、進捗追跡情報1150を進捗ストレージ1280に記憶するように構成される。いくつかの実施形態では、進捗ストレージ1280は、ネットワークベースの記憶サービスである。進捗追跡情報1150は、特定のクラス識別子、コンテキスト識別子、進捗識別子、及び(任意選択的に)ハンドアウト識別子に範囲を限定された、ゾーン465と同様のゾーンに記憶される。
いくつかの実施形態では、進捗ストレージ1280は、リモートデータベース460とは別個かつ個別であり、クライアント-サーバアーキテクチャ200のサーバ側でのみアクセスされ得る。したがって、デーモン440は、進捗パイプライン250によってアーカイブされた進捗追跡情報1150への直接的な視認性を有していない。他の実施形態では、進捗ストレージ1280は、リモートデータベース460の新しいゾーン465に実装され、報告サービス270を使用してクライアントデバイス120に対して同期され得る。
明示的に示していないが、進捗パイプライン250の様々なサービスは、処理中に特定の問題に遭遇した場合に、サービスによって処理されている特定の進捗追跡メタデータ1202を再利用するように構成され得る。いくつかの実施形態では、リトライ待ち行列が、各サービスに関連付けられ、進捗追跡メタデータ1202は、後の時点で処理するためにリトライ待ち行列にプッシュされ得る。例えば、識別サービス260などのサービスが、進捗パイプライン250が特定の動作を完了することを妨げるダウンタイムに遭遇している場合がある。そのような場合、サービスによって処理されるデータは、ダウンしたサービスが利用可能となり得る後の時点で処理を試みるために、リトライ待ち行列に記憶され得る。あるいは、サービスは、進捗追跡メタデータ1202を、サービスの入力とインタフェースされる待ち行列に戻すように単純に構成され得る。例えば、拡充サービス1220は、進捗追跡メタデータ1202を後の時点で処理されるように待ち行列1215に押し戻すように構成され得る。
次いで、報告サービス270が、クライアントアプリケーション210及び/又はデーモン440からの要求に応答して進捗追跡情報1204を進捗ストレージ1280からプルして、クライアントアプリケーション210及び/又はデーモン440に提供される報告データを生成することができる。
図13は、いくつかの実施形態による、報告サービス270とクライアントアプリケーション210及び/又はデーモン440との間のクライアント-サーバ関係を示す。クライアントデバイス120に含まれるクライアントアプリケーション210及び/又はデーモン440は、サーバデバイス110の報告サービス270とインタフェースする。ハンドアウトがクラスの生徒に割り当てられた後に、教員は、課題を完了する生徒の進捗を追跡することを望む場合がある。より具体的には、クライアントアプリケーション210のGUIは、特定のハンドアウトに関連する進捗追跡情報の表現を表示することができる。添付ファイル、ハンドイン及び/又はアクティビティはそれぞれ、各生徒の完了の進捗に関連する情報と共に表示され得る。
いくつかの実施形態では、クライアントアプリケーション210は、クライアントデバイス120のディスプレイ302にハンドアウトの表現を表示するための入力を受信する。入力に応答して、クライアントアプリケーション210は、報告サービス270に報告を要求する。本明細書で使用するとき、報告は、進捗ストレージ1280からプルされた進捗追跡情報1204から導出された報告データを含むファイル又はデータ構造を指す場合がある。
いくつかの実施形態では、報告サービス270は、クライアントアプリケーション210から報告の要求を受信する。要求は、クラス識別子、コンテキスト識別子、ユーザ識別子、及び(任意選択的に)ハンドアウト識別子を含むことができる。報告サービス270は、識別サービス260を利用して、ユーザ識別子に対応する進捗識別子を見出し、次いで、進捗ストレージ1280に照会して、クラス識別子、コンテキスト識別子、進捗識別子、及び(任意選択的に)ハンドアウト識別子に対応する進捗追跡情報1204を取得することができる。
加えて、要求は、要求に関連付けられたタイムフレームを指定することができる。例えば、要求は、照会が、ハンドアウトの期限日の前の時間、ハンドアウトの期限日の後の時間、又はハンドアウトの締切日(同日を含む)までの時間に、進捗追跡情報を限定するべきかどうかを指定することができる。本明細書で使用するとき、締切日とは、ハンドアウトに添付されたコンテキストが非アクティブ化され、それにより、コンテキストを含む別のハンドアウトが生徒に割り当てられていない限り、締切日の後のそのコンテキストに関連する更なる進捗追跡をブロックする時間を指す場合がある。その結果、報告サービス270は、特定のクラスの生徒に対応し、特定のハンドアウトに割り当てられた特定のコンテキストのための進捗追跡情報1204のセットを生成する。
いくつかの実施形態では、デーモン440は、クラスの進捗追跡情報1204を集約して、報告データに基づいてクラスの様々な統計値を計算する。例えば、デーモン440は、クラスの生徒の総数とハンドイン又はアクティビティを完了した生徒の総数とを計算することができる。デーモン440はまた、異なる進捗追跡情報1204に関連付けられたタイムスタンプを使用して、(例えば、特定のアクティビティ又はハンドインに関する全ての進捗追跡情報について最初のタイムスタンプと最後のタイムスタンプとの間の差を計算することによって)各生徒がハンドイン又はアクティビティを完了するのに要した合計時間を計算することができる。別の例として、デーモン440は、クイズ又は問題セットに対して提示された正答/誤答に基づいて、各生徒のスコアを計算することができる。デーモン440は、不合格スコアに対する合格スコアの比、クラスの全生徒又は不合格スコアの生徒数に対する合格スコアの生徒数の比、クラスの平均スコア、クラスの最低スコア及び最高スコア、スコアの集合の中間スコア及び標準分布、レターグレードにマッピングされたスコアの分布(例えば、Aスコアの数、Bスコアの数など)、並びにスコア及び/又は進捗追跡情報1204に関連する任意の他の関連統計値を計算することができる。
いくつかの実施形態では、生徒は、特定のアクティビティを完了するために何回かの試みを行うことができる。例えば、生徒が、クイズを何度も受けることができる。そのような実施形態では、報告の要求は、報告データが、生徒によって完了された各試みについての進捗追跡情報1204を含むべきか、又は生徒によって完了された最後の試みだけを含むべきかを指定することができる。進捗追跡情報が複数の試みのデータを含む場合、デーモン440は、複数の試みに関連する統計値、例えば、平均スコア、全ての試みの最高スコア、不合格であった試みに対する合格した試みの比などを計算するように構成され得る。
いくつかの実施形態では、デーモン440はまた、例えば、進捗追跡情報に関連付けられたユーザ識別子を生徒名と関係付けるために、リモートデータベース460の名簿ゾーン465から名簿情報をダウンロードするように構成され得る。
他の実施形態では、クライアントアプリケーション210は、進捗追跡情報1204を集約する、及び/又はローカルデータベース450の進捗追跡情報1204に関連する統計値を計算する、機能を実施するように構成され得る。デーモン440は、リモートデータベース460のゾーン465からローカルデータベース450への進捗追跡情報1204のダウンロードを容易にして、クライアントアプリケーション210が進捗追跡情報1204にアクセスできるようにするにすぎない。次いで、クライアントアプリケーション210は、教員に提示されたGUIのフィールドにポピュレートする値を生成するために、進捗追跡情報1204を使用して任意の必要な分析を実施するように構成される。
図14A~図14Bは、いくつかの実施形態による、クライアントアプリケーション210のGUI1400を示す。GUI1400は、割り当てられたハンドアウトに関連する報告データを教員に提示するために使用され得る。GUI1400は、クライアントデバイス120のディスプレイ302に提示され得る。図14Aに示すように、GUI1400は、クライアントデバイス120-2などのタブレットコンピュータに表示される。GUI1400は、グラフィック、テキスト、アイコン、図形、入力フィールド、表示領域などを含む、いくつかの要素を含むことができる。いくつかの実施形態では、GUI1400は、教員がGUI300において割り当てられたハンドアウトの要素312を選択したことに応答して表示される。
GUI1400は、第1の表示領域1410及び第2の表示領域1420を含む。第1の表示領域1410は、ハンドアウトのタイトル、ハンドアウトの期限日、ハンドアウトが割り当てられたクラスの表示、及び教員によってハンドアウトに含まれた指示などの、ハンドアウトに含まれる情報を提示する。第2の表示領域1420は、教員によってハンドアウトに添付された任意のハンドイン及び/又はアクティビティに関連する情報を提示する。
ハンドアウトに添付され、第2の表示領域1420に提示される各ハンドイン又はアクティビティはまた、ハンドイン又はアクティビティに関連する報告データとともに提示され得る。報告データは、1つ以上の要素1422内に表示され得る。例えば、図14Aに示すように、アプリケーション2に関連付けられたアクティビティは、アクティビティを完了した生徒の不合格スコアに対する合格スコアの比を表示する第1の要素1422-1と、生徒がアクティビティを完了するのに要した平均時間を表示する第2の要素1422-2と、クラスの生徒の総数に対するアクティビティを完了した生徒の数の比を表示する第3の要素1422-3と、を含む。
加えて、教員が報告データに関するより詳細な情報を閲覧することを可能にするアイコン1424が、ハンドイン又はアクティビティの近傍に提示される。図14Bに示すように、アイコン1424を選択することにより、GUI1400は、第2の表示領域1420においてハンドイン又はアクティビティの近傍に詳細な情報を表示するように更新され得る。第2の表示領域1420は、第1の表示領域1410及び第2の表示領域1420の両方によって以前に覆われていたディスプレイ302の画素を覆うように自動的に調節され得ることが理解されよう。もちろん、第2の表示領域1420の範囲は、図14Aと同じままにすることができ、又は、第1の表示領域1410及び/又は第2の表示領域1420をディスプレイ302の画素に対して上又は下に再配置するタッチ入力ジェスチャに応答して手動で更新され得る。例えば、第1の表示領域1410及び/又は第2の表示領域1420を上又は下にスクロールするためにスワイプジェスチャが利用され得る。
図14Bに示すように、クラスに登録された各個々の生徒に関連する報告データが、GUI1400に提示され得る。例えば、詳細な情報のエントリ1426は、生徒名、生徒がアクティビティに合格したか又は不合格であったかの表示、完了した場合には、各生徒が第三者アプリケーションのアクティビティを完了するのに要した時間、及びアクティビティが完了されたかどうかの表示を含む。図14Bに示す情報は、GUI1400に提示され得る詳細な情報の種類の一例にすぎないことが理解されるであろう。他の実施形態では、詳細な情報は、他の種類の統計値又は生の進捗追跡情報(例えば、デーモン440によってアクションが受信された時間及びアクションに関連する情報を伴う、デーモン440によって追跡された各アクションの内訳)を含むことができる。また他の実施形態では、詳細な情報は、生徒の進捗を経時的に示すグラフ又はチャートなどの報告データのグラフィック表現、一連の問題に対して生徒によって提出された回答へのリンク、ハンドイン又は生徒によって実施されたアクティビティの記録へのリンクなどを含むことができる。
いくつかの実施形態では、詳細な情報は、特定のコンテキストの下位区分についての進捗追跡情報の詳細な内訳を提示することができる。例えば、コンテキストは、生徒に割り当てられた問題セットの構造を説明することができる。進捗追跡情報は、問題セットの各問題に提供された生徒の回答に関連する情報を含むことができる。したがって、問題セットへの回答が親コンテキストと見なされる場合でさえも、問題セットの各問題の子コンテキストが、生徒によって提供された各個々の質問への回答を追跡することができる。したがって、詳細な情報は、教員が、各問題に与えられた特定の回答、及び回答が正しかったか又は誤っていたかを閲覧することを可能にする。GUI1400は、進捗追跡データのそのような視覚的表現を教員が容易に閲覧することを可能にし得る。
いくつかの実施形態では、クライアントアプリケーション210は、クラスの各生徒の最終グレードを決定するときの、例えば教員及び管理者による、その後のレビューのために、アーカイブされたファイル又はデータ構造に報告データの結果を出力することができる。
図15は、いくつかの実施形態による、クライアントデバイス上での生徒のアクティビティを追跡するための方法1500のフローチャートである。方法1500は、クライアントデバイス120によって実行される。いくつかの実施形態では、方法1500は、1つ以上のアプリケーションに関連付けられたアクティビティを監視するように構成されたロジックとして実装され得る。ロジックは、ハンドアウトのリソースに添付されたアクティビティを完了する生徒の進捗を監視するための、クライアントデバイス120のプロセッサ410によって実行される命令を含むことができる。いくつかの実施形態では、方法1500は、デーモン440によって実装されるロジック内に実装される。
1502において、1つ以上のアプリケーションから進捗追跡情報を受信する。いくつかの実施形態では、進捗追跡情報は、進捗追跡情報を生成したアプリケーションに対応するアプリケーション識別子、アプリケーションに関連付けられた特定のコンテキストに対応するコンテキスト識別子、進捗追跡情報が生成された時間を示すタイムスタンプ、あるいはアプリケーション内で実施された動作及び/又は動作の結果を示す情報のうちの少なくとも1つを含む。いくつかの実施形態では、進捗追跡情報は、アプリケーションによって生成されたAPIコール内のデーモンによって受信される。
1504において、進捗追跡情報をフィルタリングする。いくつかの実施形態では、クライアントデバイスにインストールされた1つ以上のアプリケーションのそれぞれについて進捗追跡が有効にされているか、又は無効にされているかの判定に基づいて、進捗追跡情報がフィルタリングされる。進捗追跡情報は、進捗追跡が無効にされている任意のアプリケーションから進捗追跡情報が受信されたときに破棄され、進捗追跡が有効にされている任意のアプリケーションから進捗追跡情報が受信されたときに処理される。他の実施形態では、1つ以上のアプリケーションに関連付けられたアクティブなコンテキストのリストが受信され、進捗追跡情報は、アクティブなコンテキストのリストと比較される。例えば、進捗追跡情報に含まれるコンテキスト識別子は、アクティブなコンテキストのリストに含まれるいくつかのコンテキスト識別子と比較される。進捗追跡情報は、進捗追跡情報がアクティブなコンテキストのリストに含まれないコンテキストに対応するときに破棄され、進捗追跡情報がアクティブなコンテキストのリストに含まれるコンテキストに対応するときに処理される。
1506において、ネットワークからアクセス可能なリモートデータベースに進捗追跡情報を記憶する。いくつかの実施形態では、リモートデータベースは、特定の範囲に限定された異なる種類のデータを記憶するために異なるゾーンを用いるネットワークベースの記憶サービスである。進捗追跡情報を記憶する各ゾーンは、ディスクベースの暗号化によって保護され得、データへのアクセスは、認証技術及びメッセージ署名技術を使用して、信頼されたサーバに限定され得る。進捗追跡情報は、ネットワークベースの記憶サービス内の個人ゾーンに記憶され得、個人ゾーンは、クライアントデバイスにインストールされたクライアントアプリケーションに関連付けられたユーザアカウントの特定のユーザ識別子に関連付けられている。
1508において、進捗追跡情報に関連付けられたメタデータを生成する。メタデータは、ユーザ識別子及び/又はコンテキスト識別子など、進捗追跡情報の情報のサブセットと、リモートデータベース460に記憶された進捗追跡情報への参照などの情報とを含むことができる。
1510において、進捗追跡情報のメタデータを進捗パイプラインに送信する。いくつかの実施形態では、進捗パイプラインは、1つ以上の組織内の1つ以上のクラスの複数の異なる生徒に関連付けられた複数の異なるクライアントデバイスから受信された進捗追跡情報を強化し集約する。進捗パイプラインは、いくつかの異なるサーバデバイスに実装された、いくつかのサービスを含むことができる。
図16は、いくつかの実施形態による、ネットワークを介して利用可能な1つ以上のサービスを利用して進捗追跡情報を処理するための方法1600のフローチャートである。方法1600は、進捗パイプライン250によって実行される。いくつかの実施形態では、方法1600は、進捗追跡情報又は進捗追跡情報に対応するメタデータのうちの少なくとも一方を処理するように構成されたロジックとして実装され得る。ロジックは、進捗追跡情報及び/又はメタデータを処理するための、サーバデバイス110のプロセッサ410によって実行される命令を含むことができる。いくつかの実施形態では、方法1600は、オンランプサービス1210、拡充サービス1220、分散型ファイルシステム1230、集約サービス1240、オフランプサービス1260、及び保管サービス1270を含む1つ以上のサービスによって実装されるロジック内に実装される。
1602において、複数のクライアントデバイスから進捗追跡情報に対応するメタデータを受信する。いくつかの実施形態では、メタデータは、リモートデータベースに記憶された進捗追跡情報への参照を含むことができる。メタデータはまた、クラス識別子、ユーザ識別子、又は進捗追跡情報に対応するコンテキスト識別子のうちの少なくとも1つを含むことができる。
1604において、メタデータを追加の情報で拡充する。いくつかの実施形態では、追加のデータによって補足されたメタデータは、進捗追跡情報を、組織識別子、クラス識別子、ディレクトリサービス識別子、コンテキスト識別子、及び任意選択的にハンドアウト識別子に相関させる。
1606において、特定の組織の追跡ウィンドウ中に進捗パイプラインによって受信されたメタデータのサブセットを含むデータ構造を生成する。いくつかの実施形態では、分散型ファイルシステムは、少なくとも1つのジャーナルノードを利用し、ジャーナルノードは、追跡ウィンドウ中に受信されたメタデータの全てを分散型ファイルシステムから取得することを可能にする。サービスは、追跡ウィンドウ中に進捗パイプラインにメタデータを提出した、1つ以上の組織のそれぞれに対応する異なるデータ構造にメタデータをソートする。
1608において、データ構造を処理して、クラス識別子及び/又はコンテキスト識別子に基づいて、ソートされたメタデータを生成する。ソートはまた、ディレクトリサービス識別子又は内部識別子に基づくことができる。1608における動作は、1つ以上の組織のために作成された各データ構造について実施され得る。
1610において、ソートされたメタデータに対応する進捗追跡情報を、リモートデータベースから取得される。メタデータに含まれる参照は、リモートデータベースに進捗追跡情報を要求するために利用され得る。
1612において、進捗追跡情報を、報告サービスによってアクセス可能なメモリに記憶する。いくつかの実施形態では、進捗追跡情報は、ディレクトリサービス識別子又は内部識別子から逆参照され、進捗識別子は、進捗追跡情報に関連付けられたメタデータのディレクトリサービス識別子又は内部識別子を置き換える。進捗識別子及び進捗追跡情報は、報告サービスによってアクセス可能なネットワークベースの記憶サービスに記憶され得る。ネットワークベースの記憶サービスは、間接的に報告サービスを介する場合を除いて、クライアントデバイスによってアクセス可能でなくてもよい。
図17は、いくつかの実施形態による、本明細書で説明する様々な装置及び/又は方法を実装するために使用され得る例示的なコンピューティングデバイス1700の詳細な図を示す。特に、詳細な図は、図1~図14に示され、本明細書で説明するコンピューティングデバイスに含まれ得る様々な構成要素を示す。例えば、サーバデバイス110、クライアントデバイス120、又は任意のネットワーク装置及び/若しくは消費者向け電子機器を含む任意の他のデバイスのうちの1つ以上が、コンピューティングデバイス1700の構成要素を含むことができる。
図17に示すように、コンピューティングデバイス1700は、コンピューティングデバイス1700の動作全般を制御するためのマイクロプロセッサ又はコントローラを表すプロセッサ1702を含むことができる。コンピューティングデバイス1700はまた、コンピューティングデバイス1700のユーザが、コンピューティングデバイス1700と対話することを可能にするユーザ入力デバイス1708を含むことができる。例えば、ユーザ入力デバイス1708は、ボタン、キーパッド、ダイヤル、タッチスクリーン、オーディオ入力インタフェース、ビジュアル/画像キャプチャ入力インタフェース、センサデータなどの形態をとる入力など、様々な形態をとることができる。また更に、コンピューティングデバイス1700は、プロセッサ1702によって制御されることにより、ユーザに視覚情報を提示できるディスプレイ1710(スクリーンディスプレイ)を含むことができる。データバス1716は、少なくとも、記憶デバイス1740とプロセッサ1702と及びコントローラ1713との間のデータ転送を容易にすることができる。コントローラ1713は、機器制御バス1714を通じて様々な機器とインタフェースし、それらを制御するために使用することができる。コンピューティングデバイス1700はまた、データリンク1712に接続するネットワーク/バスインタフェース1711を含むことができる。無線接続の場合には、ネットワーク/バスインタフェース1711は、無線送受信機を含むことができる。
コンピューティングデバイス1700は、記憶デバイス1740をも含む。このデバイスは、ディスク(単数又は複数)(例えば、ハードディスク)を含むことができ、記憶デバイス1740内の1つ以上のパーティションを管理する記憶管理モジュールを含む。いくつかの実施形態では、記憶デバイス1740は、フラッシュメモリ、半導体(ソリッドステート)メモリなどを含むことができる。コンピューティングデバイス1700はまた、ランダムアクセスメモリ(Random Access Memory、RAM)1720及び読み出し専用メモリ(Read-Only Memory、ROM)1722を含むことができる。ROM1722は、実行すべきプログラム、ユーティリティ又はプロセスを不揮発性方式で格納することができる。RAM1720は、揮発性のデータ記憶デバイスを提供することができ、コンピューティングデバイス1700の動作に関連する命令を記憶する。
上述のように、本技術の一態様は、課題を完了する時に生徒の進捗を追跡するために、様々なソースから利用可能なデータを収集及び使用することである。本開示は、いくつかの例において、この収集されたデータは、特定の人を一意に特定する個人情報データ、又は特定の人に連絡する若しくはその所在を突き止めるために使用できる個人情報データを含み得ることを想到している。そのような個人情報データとしては、人口統計データ、ロケーションベースのデータ、電話番号、電子メールアドレス、ツイッターID、自宅の住所、ユーザの健康又はフィットネスのレベル(例えば、バイタルサイン測定値、服薬情報、運動情報)に関するデータ若しくは記録、誕生日、又は任意のその他の識別情報若しくは個人情報を挙げることができる。
本開示は、本技術におけるそのような個人情報データの使用がユーザの利益になる使用であり得る点を認識するものである。例えば、個人情報データは、学校に通う個人の教育体験を向上させるために使用され得る。したがって、そのような個人情報データを使用することにより、教員が、彼らの授業又は個々の注意を生徒のニーズに合わせることを可能にする。更には、ユーザに利益をもたらす、個人情報データに関する他の使用もまた、本開示によって想到される。例えば、健康データ及びフィットネスデータは、ユーザの全般的なウェルネスについての洞察を提供するために使用することができ、あるいは、ウェルネスの目標を追求するための技術を使用している個人への、積極的なフィードバックとして使用することもできる。
本開示は、そのような個人情報データの収集、分析、開示、伝送、記憶、又は他の使用に関与するエンティティが、確固たるプライバシーのポリシー及び/又は慣行を遵守するものとなることを想到する。具体的には、そのようなエンティティは、個人情報データを秘密として厳重に保守するための、業界又は政府の要件を満たしているか又は上回るものとして一般に認識されている、プライバシーのポリシー及び慣行を実装し、一貫して使用するべきである。そのようなポリシーは、ユーザによって容易にアクセス可能とするべきであり、データの収集及び/又は使用が変化するにつれて更新されるべきである。ユーザからの個人情報は、そのエンティティの合法的かつ正当な使用のために収集されるべきであり、それらの合法的使用を除いては、共有又は販売されるべきではない。更には、そのような収集/共有は、ユーザに告知して同意を得た後に実施されるべきである。更には、そのようなエンティティは、そのような個人情報データへのアクセスを保護して安全化し、その個人情報データへのアクセスを有する他者が、それらのプライバシーポリシー及び手順を遵守することを保証するための、あらゆる必要な措置を講じることを考慮するべきである。更には、そのようなエンティティは、広く受け入れられているプライバシーのポリシー及び慣行に対する自身の遵守を証明するために、第三者による評価を自らが受けることができる。更には、ポリシー及び慣行は、収集及び/又はアクセスされる具体的な個人情報データのタイプに適合されるべきであり、また、管轄権固有の考慮事項を含めた、適用可能な法令及び規格に適合されるべきである。例えば、アメリカ合衆国では、特定の健康データの収集又はアクセスは、医療保険の相互運用性と説明責任に関する法律(Health Insurance Portability and Accountability Act、HIPAA)などの、連邦法及び/又は州法によって管理することができ、その一方で、他国における健康データは、他の規制及びポリシーの対象となり得るものであり、それに従って対処されるべきである。それゆえ、各国の異なる個人データのタイプに関して、異なるプライバシー慣行が保たれるべきである。
前述のことがらにもかかわらず、本開示はまた、個人情報データの使用又は個人情報データへのアクセスを、ユーザが選択的に阻止する実施形態も想到する。すなわち、本開示は、そのような個人情報データへのアクセスを防止又は阻止するように、ハードウェア要素及び/又はソフトウェア要素を提供することができると想到する。例えば、進捗追跡サービスの場合において、本技術は、ユーザが、サービスの登録中又はその後のいつでも、個人情報データの収集への参加の「オプトイン」又は「オプトアウト」を選択できるように構成され得る。別の例では、ユーザが、特定の第三者アプリケーションの進捗追跡情報を提供しないように選択することができる。また別の例では、ユーザが、収集されるデータの範囲を限定すること、又は進捗追跡情報の収集を完全に禁止することを選択することができる。「オプトイン」及び「オプトアウト」の選択肢を提供することに加えて、本開示は、個人情報のアクセス又は使用に関する通知を提供することを想到する。例えば、ユーザの個人情報データにアクセスすることとなるアプリのダウンロード時にユーザに通知され、その後、個人情報データがアプリによってアクセスされる直前に再びユーザに注意してもよい。
更には、本開示の意図は、個人情報データを、非意図的若しくは無許可アクセス又は使用の危険性を最小限に抑える方法で、管理及び処理するべきであるという点である。データの収集を制限し、データがもはや必要とされなくなった時点で削除することによって、危険性を最小限に抑えることができる。更には、適用可能な場合、特定の健康関連アプリケーションにおいて、ユーザのプライバシーを保護するために、データの非特定化を使用することができる。非特定化は、適切な場合には、特定の識別子(例えば、生年月日など)を除去すること、記憶されたデータの量又は特異性を制御すること(例えば、位置データを住所レベルよりも都市レベルで収集すること)、データがどのように記憶されるかを制御すること(例えば、データをユーザ全体にわたって情報集約すること)及び/又は他の方法によって、容易にすることができる。
それゆえ、本開示は、1つ以上の様々な開示された実施形態を実装するための、個人情報データの使用を広範に網羅するものではあるが、本開示はまた、そのような個人情報データにアクセスすることを必要とせずに、それらの様々な実施形態を実装することもまた可能であることを想到している。すなわち、本技術の様々な実施形態は、そのような個人情報データの全て又は一部分が欠如することにより、実施不可能となるものではない。例えば、進捗追跡は、非個人情報データ、又は進捗追跡パイプラインにとって利用可能な他の非個人情報若しくは公的に利用可能な情報などの最小限の個人情報に基づいて、実装され得る。
説明した実施形態の様々な態様、実施形態、実装形態、又は特徴は、個別に又は任意の組み合わせで用いることができる。説明した実施形態の様々な態様をソフトウェア、ハードウェア、又はハードウェアとソフトウェアとの組み合わせにより実装することができる。更に、説明した実施形態は、非一時的コンピュータ可読媒体上のコンピュータ可読コードとして実施できる。この非一時的コンピュータ可読媒体は、その後コンピュータシステムによって読み出すことが可能なデータを記憶できる、任意のデータ記憶デバイスである。非一時的コンピュータ可読媒体の例としては、読み出し専用メモリ、ランダムアクセスメモリ、CD-ROM、HDD、DVD、磁気テープ、及び光学的データ記憶デバイスが挙げられる。この非一時的コンピュータ可読媒体はまた、そのコンピュータ可読コードが分散方式で記憶及び実行されるように、ネットワーク結合されたコンピュータシステム上に分散させることもできる。
前述の記載では、説明のために、記載された実施形態の完全な理解をもたらすために特定の専門用語を用いた。しかし、記述される実施形態を実施するために、具体的な詳細は必要とされないことは、当業者には明らかであろう。それゆえ、上述の具体的な実施形態の説明は、例示及び説明の目的のために提示される。それらの説明は、網羅的であることも、又は開示される厳密な形態に、説明した実施形態を限定することも意図するものではない。上記の教示を考慮すれば、多くの変更及び変形が可能であることが、当業者には明らかであろう。