JP2022500785A - プログレッシブなapiレスポンス - Google Patents

プログレッシブなapiレスポンス Download PDF

Info

Publication number
JP2022500785A
JP2022500785A JP2021515500A JP2021515500A JP2022500785A JP 2022500785 A JP2022500785 A JP 2022500785A JP 2021515500 A JP2021515500 A JP 2021515500A JP 2021515500 A JP2021515500 A JP 2021515500A JP 2022500785 A JP2022500785 A JP 2022500785A
Authority
JP
Japan
Prior art keywords
content item
response
fragment
display buffer
content
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2021515500A
Other languages
English (en)
Other versions
JP7217342B2 (ja
Inventor
ジョン・アンソニー・デベイ
アブデルラーマン・アサル
アマンディープ・シン・グラウェル
レザ・モハマド・エクバル・ロトゥン
ノーラン・オブライエン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Twitter Inc
Original Assignee
Twitter Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Twitter Inc filed Critical Twitter Inc
Publication of JP2022500785A publication Critical patent/JP2022500785A/ja
Application granted granted Critical
Publication of JP7217342B2 publication Critical patent/JP7217342B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/216Handling conversation history, e.g. grouping of messages in sessions or threads
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/248Presentation of query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/38Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • G06F16/44Browsing; Visualisation therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • G06F16/48Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/01Social networking
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/395Arrangements specially adapted for transferring the contents of the bit-mapped memory to the screen
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/234Monitoring or handling of messages for tracking messages
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/52User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail for supporting social networking services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/338Presentation of query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/50Information retrieval; Database structures therefor; File system structures therefor of still image data
    • G06F16/53Querying
    • G06F16/538Presentation of query results
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/07User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail characterised by the inclusion of specific contents
    • H04L51/18Commands or executable codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Business, Economics & Management (AREA)
  • Library & Information Science (AREA)
  • Multimedia (AREA)
  • Computing Systems (AREA)
  • Marketing (AREA)
  • Primary Health Care (AREA)
  • Health & Medical Sciences (AREA)
  • Economics (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Resources & Organizations (AREA)
  • General Business, Economics & Management (AREA)
  • Computer Hardware Design (AREA)
  • Strategic Management (AREA)
  • Tourism & Hospitality (AREA)
  • Computational Linguistics (AREA)
  • Information Transfer Between Computers (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

コンテンツアイテムをインクリメンタルに受信およびレンダリングするための、コンピュータ記憶媒体上に符号化された方法、システム、およびコンピュータプログラムである。一つの例示的なシステムは、サーバ、ユーザデバイス、およびユーザデバイス上で実行されているクライアントを含む。クライアントは、サーバにコンテンツ要求を送信する。クライアントは、複数の断片においてコンテンツ要求のレスポンスをインクリメンタルに受信する。複数の断片がレスポンス全体を構成する。断片が、コンテンツアイテムとコンテンツアイテムを記述するメタデータとを含み、コンテンツアイテムがレンダリング可能であるとともに、1つまたは複数のデータオブジェクトによって定義される。クライアントは、断片が受信されるとき、断片のコンテンツアイテムをディスプレイバッファにインクリメンタルにレンダリングする。コンテンツアイテムは、メタデータによって決定された順序でレンダリングされる。クライアントは、ユーザデバイスのディスプレイ上にディスプレイバッファの全部または一部を表示する。

Description

本明細書は、ソーシャル・メッセージング・プラットフォームに関し、特に、ソーシャル・メッセージング・プラットフォームからのコンテンツ要求に対するレスポンスの断片をインクリメンタルに受信およびレンダリングするための技術に関する。
ソーシャル・メッセージング・プラットフォームおよびネットワーク接続のパーソナルコンピューティングデバイスにより、ユーザは、コンテンツを作成して、リアルタイムに複数のデバイスで共有できる。
ポピュラーなソーシャル・メッセージング・プラットフォームは一般に、メッセージを草案し、同期的におよび非同期的に、他のユーザにメッセージを投稿するユーザのための機能を提供する。ポピュラーなソーシャル・メッセージング・プラットフォームの例は、フェイスブック、ピンタレスト、およびツイッターを含む(「フェイスブック」は、フェイスブック社の商標である。「ピンタレスト」は、ピンタレスト社の商標である。「ツイッター」は、ツイッター社の商標である。)。
一般に、コンピューティングデバイス上のクライアントソフトウェアが、コンテンツ要求をソーシャル・メッセージング・プラットフォームに送信するとき、クライアントソフトウェアは、デバイスのユーザにレスポンスの一部を提示する前に、要求に対する全てのレスポンスの受信を待たなければならない。
本明細書は、クライアントソフトウェアが、ソーシャル・メッセージング・プラットフォームからのコンテンツ要求に対するレスポンスの断片を受信およびレンダリングできるようにする技術を説明する。
例示的なシステムは、ソーシャル・メッセージング・プラットフォーム、ユーザデバイス、ユーザデバイス上で実行されているソーシャル・メッセージング・プラットフォームのクライアントソフトウェアを実装するように構成されたサーバを含む。クライアントソフトウェアは、サーバにコンテンツ要求を送信するように構成される。クライアントソフトウェアは、ユーザデバイス上のネットワークスタックのトランスポート層から複数の断片において、インクリメンタルにサーバからコンテンツ要求に対するレスポンスを受信する。複数の断片は、レスポンス全体を構成する。レスポンスは、コンテンツアイテムおよびコンテンツアイテムを記述するメタデータを含む。各コンテンツアイテムは、レンダリング可能であり、1つまたは複数のデータオブジェクトによって定義される。クライアントソフトウェアは、断片を受信すると断片のコンテンツアイテムをディスプレイバッファにインクリメンタルにレンダリングする。このことは、メタデータによって決定された順序でディスプレイバッファにコンテンツアイテムを配置することを含む。ディスプレイバッファは、ユーザデバイスのメモリのデータ構造である。次いで、クライアントソフトウェアは、ユーザデバイスのディスプレイ上にディスプレイバッファの全部または一部を表示する。
本明細書は、システム、装置、およびコンピュータプログラム構成要素に関して、「構成される」という用語を使用する。特定の動作またはアクションを実行するように構成された1つまたは複数のコンピュータのシステムとは、システムが、ソフトウェア、ファームウェア、ハードウェア、または動作中にシステムに動作またはアクションを実行させるそれらの組み合わせにインストールされていることを意味する。特定の動作またはアクションを実行するように構成された1つまたは複数のコンピュータプログラムとは、1つまたは複数のプログラムが、データ処理装置によって実行されると、装置に動作またはアクションを実行させる命令を含むことを意味する。特定の動作またはアクションを実行するように構成された専用の論理回路とは、回路が動作またはアクションを実行する電子ロジックを有することを意味する。
本明細書に記載の主題は、以下の利点の1つまたは複数を実現するために、特定の実施形態で実装され得る。低帯域接続のユーザデバイスは、レスポンス全体を受信する前に、レスポンス中のコンテンツアイテムをプログレッシブにレンダリングできる。このことは、低帯域接続では、レスポンス全体の受信に、いくつかのラウンドトリップ、すなわち、TCP接続がレスポンスペイロード全体を配信するのに必要なラウンドトリップ数が必要になり得るため、有利である。
一方、高帯域接続のユーザデバイスは、単一のラウンドトリップで小さいレスポンスおよび大きいレスポンスの両方を受信およびレンダリングできる。換言すれば、本明細書に記載の主題は、ユーザの帯域幅に関わらず、レスポンス時間を最適化することである。
本明細書の主題の1つまたは複数の実施形態の詳細は、添付の図面および以降の説明に記載される。主題の他の特徴、態様、および利点は、発明の詳細な説明、図面、および特許請求の範囲から明らかになるであろう。
例示的なソーシャル・メッセージング・プラットフォームの図である。 コンテンツ要求に対するレスポンスを構成するための例示的なプロセスのフローチャートである。 コンテンツ要求に対するレスポンスの断片をインクリメンタルに受信およびレンダリングするための例示的なプロセスのフローチャートである。 レスポンスの2つ以上の断片にわたるコンテンツアイテムを受信およびレンダリングするための例示的なプロセスのフローチャートである。様々な図面における同様の参照番号および名称は、同様の要素を示す。
図1は、例示的なオンラインのソーシャル・メッセージング・プラットフォーム100と、1つまたは複数のワイヤードまたはワイヤレスのデータ通信ネットワーク120を介してプラットフォームとインタラクトするように構成された例示的なユーザデバイス104a〜104nとを示す。クライアントソフトウェア106a〜106nにおいて実装されるプログレッシブ・レンダリング・モジュール108a〜108nは、後述されるように、プラットフォームからのコンテンツアイテム、例えばメッセージをインクリメンタルに受信およびレンダリングするように構成される。
プラットフォームのユーザ102a〜102nは、プラットフォームを使用するために、クライアントソフトウェアがインストールされているユーザデバイス104a〜104nを使用する。ユーザは、それぞれのユーザデバイス上のそれぞれのクライアントソフトウェアを使用してソーシャル・メッセージング・プラットフォームとインタラクトできる。
ユーザば、プラットフォーム上の、アカウントのアカウント所持者またはアカウントの認証済みユーザであってよい。プラットフォームは、個人、事業者、または他のエンティティの数百万のアカウントを有し得る。
いくつかの実施形態では、プラットフォームは、アカウント所持者ではないユーザ、あるいは、プラットフォームのアカウントにログインしていないユーザによるプラットフォームの使用を許可する。プラットフォームがそのようなユーザによる使用を許可する場合、プラットフォームは、そのようなユーザがメッセージを投稿すること、あるいは一時的なアカウントまたは識別子とユーザを関連付けることによってプラットフォームの他の機能を使用することを許可する。
ユーザデバイスは、任意のインターネット接続デバイス、例えば、ラップトップまたはデスクトップコンピュータ、スマートフォン、または電子タブレットであってよい。ユーザデバイスは、モバイルネットワークを介して、インターネットサービスプロバイダ(ISP)を介して、またはそれ以外でインターネットに接続できる。
各ユーザデバイスは、クライアントまたはクライアントソフトウェア106a〜106nと呼ばれる、ソフトウェアを用いて構成され、ソフトウェアは動作中、ユーザがメッセージを投稿および受信すること、ユーザのストリームを視聴およびキュレートすること、ならびにコンテンツアイテムのリストを視聴してインタラクトすることができるように、プラットフォームにアクセスできる。任意の特定のユーザデバイス上で、クライアントは、ウェブブラウザ、あるいはウェブブラウザによってレンダリングされたHTML(ハイパーテキストマークアップ言語)ドキュメントであってよい。あるいは、クライアントは、JavaScriptコードまたはJavaコードであるか、JavaScriptコードまたはJavaコードを含んでもよい。または、クライアントは、専用ソフトウェア、例えば、プラットフォームと特別に機能するように設計された、インストールされたアプリまたはインストールされたアプリケーションなどであってよい。または、クライアントは、例えば、ショートメッセージングサービス(SMS)インターフェース、インスタント・メッセージング・インターフェース、電子メールベースのインターフェース、あるいはAPI機能ベースのインターフェースであるか、それらを含んでもよい。
クライアントは、ユーザデバイスのディスプレイ上のグラフィカルユーザインターフェースのウィンドウ内で、プラットフォームからのメッセージおよびストリームを含む、ディスプレイバッファの全部または一部を表示する。ディスプレイバッファは、ユーザデバイスのディスプレイを駆動するために使用されるデータ、例えばビットマップなどを含む、メモリの一部である。ディスプレイバッファのメッセージおよびストリームは、レンダリングされたビットマップ形態であってよく、あるいは、ディスプレイのビューポートに移動するときにオンザフライでレンダリングされ得る、部分レンダリングまたはプレレンダリングされた形態であってよい。
クライアントのグラフィカルユーザインターフェースは、スクロール要素またはスクロール機能を含むことができる。スクロール要素は、クライアントのユーザから入力を受信するコントロールである。例えば、ユーザデバイスがマウスを用いたデスクトップコンピュータである場合、ユーザは、スクロール要素をクリックおよびドラッグできる。ユーザデバイスがスマートフォンである場合、ユーザは、指でユーザデバイスのスクリーンを単にスワイプできる。クリックおよびドラッグ、またはスワイプに応じて、クライアントは、ディスプレイバッファのどの部分がクライアントによって表示されるかを変える。
クライアントは、プログレッシブ・レンダリング・モジュール108a〜108nを含む。プログレッシブ・レンダリング・モジュールは、コンテンツアイテムの断片を受信する際、その断片をインクリメンタルに受信し、プログレッシブにレンダリングするように構成される。
オンラインのソーシャル・メッセージング・プラットフォームは、多数の異なる種類のユーザデバイスから、ワイヤードまたはワイヤレスネットワーク120を介した接続をサポートする1つまたは複数のサーバとして動作する、1つまたは複数の場所の1つまたは複数のコンピュータ上で実装される。プラットフォームには数百万のアカウントがあり、クライアントとプラットフォームの間でいつでも数十万から数百万の接続が確立または使用されている。
プラットフォームおよびクライアントは、ユーザが、プラットフォームを使用してメッセージ122をプラットフォームに投稿する、およびプラットフォームを使用して他のユーザによって投稿されたメッセージ124を受信することができるように構成される。
いくつかの実施形態では、プラットフォームは、送信者および受信者がメッセージの個人的な交換を維持できるような、プラットフォームの1人または複数人の他のユーザに直接メッセージを送信するための、ユーザのための機能を提供する。
プラットフォームは、ホームフィードメッセージストリームでユーザにコンテンツ、通常はメッセージを提供するように構成される。メッセージは通常、ユーザがフォローしているアカウントからのメッセージであり、受信者は、フォローしているアカウントによって投稿されたメッセージを受信するように登録しており、オプションで、そのようなアカウントが関与しているコンテンツ、承認済みコンテンツなどであることを意味する。オプションでは、プラットフォームは、例えば、プラットフォームユーザによるトピックについて投稿されたメッセージの数によって表される、特定の現在関心のあるトピックについてのメッセージ、あるいは、受信者が投稿または関与したメッセージ、ならびに選択された広告、公共サービスのアナウンス、または宣伝されたコンテンツなどによって表される、受信者にとって明らかに関心のあるトピックについて投稿されたメッセージなど、受信者に関心がある可能性が高いとプラットフォームが判断したメッセージを、受信者のユーザのホームフィードストリームに含めるように構成される。
プラットフォームは、リアルタイムに、すなわち最小の遅延で、ユーザがメッセージを交換できるように構成される。プラットフォームはまた、ユーザが以前に投稿されたメッセージに、数時間または数日、あるいはそれ以上のオーダーで応答できるように構成されている。プラットフォームは、本質的にユーザ間のライブ会話になり得るものを容易にするために、短い時間フレーム以内で1人または複数人の他のユーザに投稿されたメッセージを表示するように構成される。
プラットフォームはまた、ユーザがプラットフォーム上のコンテンツを検索できるように構成される。検索は、1つまたは複数の検索基準、例えば、1つまたは複数の検索用語またはキーフレーズを満たす複数のフォローアカウントまたはパブリックアカウントからのメッセージを返すことができる。プラットフォームはまた、ユーザが他のユーザのアカウントを検索できるように構成される。
このように、プラットフォームの基本的なメッセージング機能は、少なくとも、新規のメッセージを投稿すること、クライアント要求についてのメッセージストリームを提供すること、アカウントを管理すること、アカウント、メッセージ、およびストリームの間の関係性を管理すること、ならびに、クライアントのユーザがどのようにメッセージに関与しており、他のコンテンツに関与しそうであるかを示すクライアントからの関与データを受信することを含む。プラットフォームはまた、コンテンツへのユーザのアクセスを特徴づけするとともに、インデックス付けしたデータをアカウント保持者に提供できる、コンテンツアイテムおよびアクセスデータをインデックス付けを行う。
一般に、プラットフォームに投稿されたメッセージは、メッセージ作成者によって提供されたコンテンツを表すデータを含む。メッセージは、コンテンツデータを格納するコンテナデータタイプのインスタンスであってよい。メッセージに格納され得るデータのタイプは、テキスト、グラフィックス、画像、動作、および例えば、ユニフォームリソースロケータ(URL)などのコンピュータコード、を含む。メッセージはまた、メッセージのカテゴライズやトピックへのメッセージの関連付けに役立つキーフレーズ、例えば、ハッシュタグを含むことができる。メッセージはまた、プラットフォームで許可されている内容に応じて、メッセージ作成者のアカウント所持者によって編集可能なまたは編集可能ではないメタデータを含ことができる。メッセージメタデータの例には、作成者の日時、メッセージを提出したときのユーザデバイスの地理的位置が含まれる。いくつかの実施形態では、どのようなメタデータがクライアントによってプラットフォームに提供されるかは、ユーザまたはアカウント所持者によって制御されたプライバシー設定によって決定される。
1人のアカウント所持者によって作成されたメッセージは、他のアカウント、他のメッセージ、またはその両方を参照することがある。例えば、メッセージは、別のアカウントによって作成された別のメッセージへの返信として作成されることがある。メッセージはまた、ユーザによって最初に投稿されたメッセージへの返信としてユーザによって作成されることがある。メッセージはまた、別のアカウントによって作成された、および別のアカウントから受信したメッセージの再発行であることがある。通常、メッセージに参照されるアカウントは、アカウントの名前など、メッセージに可視コンテンツとして表示され、メッセージにメタデータとしても表示されることがある。結果として、参照されるアカウントは、プラットフォームにおいてインタラクティブである。例えば、ユーザは、メッセージストリームに表示されるアカウント名とインタラクトして、そのアカウントのメッセージストリームにナビゲートできる。プラットフォームはまた、ユーザが特定のメッセージをプライベートとして指定できるようにし、プライベートメッセージは、作成および受信アカウントのメッセージストリームでのみ表示される。
通常、メッセージはマイクロブログ記事であり、例えば、マイクロブログ記事の作成者が、メッセージの受信者が誰であるかを必ずしも指定する必要なく、または知る必要さえないなど、いくつかの点で電子メールメッセージとは異なる。
ストリームは、1つまたは複数のストリーム基準を満たすプラットフォーム上のメッセージのストリームである。ストリームは、1つまたは複数のアカウントによって投稿されたメッセージを含むように、ストリーム基準によって定義され得る。例えば、要求元のアカウント保持者のためのストリームのコンテンツは、(i)アカウント保持者によって作成されたメッセージ、(ii)要求先のアカウント保持者がフォローする他のアカウントによって作成されたメッセージ、(iii)要求先のアカウント保持者を参照する他のアカウントによって作成されたメッセージ、あるいは(iv)アカウント保持者のメッセージストリームに含まれる第三者によって提供されたメッセージのうちの1つまたは複数を含み得る。ストリームのメッセージは、作成者の日時によって時系列で並べ替えても、時系列の逆順に並べ替えてもよい。ストリームは、他の方法で、例えば、アカウント所持者との計算で予測された関連性に従って、または時間と関連性スコアの何らかの組み合わせに従って順序付けしてもよい。
ストリームは、潜在的に多数のメッセージを含み得る。処理効率と要求元のアカウント所持者のビューの利便性との両方のために、プラットフォームは通常、ストリーム基準を満たすメッセージのサブセットを識別して、ストリームが生成されると要求元のクライアントに送信する。ストリーム内の残りのメッセージはストリームリポジトリに維持され、クライアント要求によってアクセスされ得る。
プラットフォームサーバ110a〜110m上の配信モジュール112a〜112mは、メッセージストリームを構築して、それらを、例えば、フロントエンドサーバを介して要求元のクライアントに提供する。ストリームの要求に応答して、それぞれの配信モジュールは、リアルタイムにストリームを構築するか、生成済みのストリームの一部または全部にストリームリポジトリからアクセスする。配信モジュールは、ストリームリポジトリに生成したストリームを格納する。アカウント保持者は、自身のストリームの一部、またはセキュリティ設定に基づいてアクセスが許可された一部の他のアカウントのストリームを要求してよい。ストリームが多数のメッセージを含む場合、配信モジュールは通常、要求元のクライアントに送信するためのメッセージのサブセットを識別し、その場合、メッセージの残りがストリームリポジトリに維持され、クライアントが要求したときに送信される。
配信モジュールは、レスポンスの断片が、クライアントによってインクリメンタルに受信、レンダリング、表示され得るように、コンテンツ要求に対するレスポンスを構築できる。このプロセスは、図2を参照してより詳細に説明される。
図2は、コンテンツ要求に対するレスポンスを構築するための例示的なプロセス200のフローチャートである。プロセスは、図1のオンラインのソーシャル・メッセージング・プラットフォームのプラットフォームサーバによって実行され得る。より詳細には、プロセスは、プラットフォームサーバ上の配信モジュールによって実行され得る。
配信モジュールは、クライアントからのコンテンツ要求に応答するコンテンツアイテムと、そのコンテンツアイテムを記述するメタデータとを取得する(210)。
配信モジュールは、レスポンスの最初の断片に、コンテンツアイテムを記述するメタデータを配置する(220)。メタデータは、各コンテンツアイテムのためのシーケンス識別子を含むことができる。シーケンス識別子は、他のコンテンツアイテムに対する、コンテンツアイテムがレンダリングされるべきユーザデバイスのディスプレイバッファの場所を指定する。メタデータがレスポンスの最初の断片にあるので、クライアントは、クライアントがレスポンス内の全てのコンテンツアイテムを受信する前に、ディスプレイバッファの指定された場所にコンテンツアイテムをレンダリングできる。
配信モジュールは、メタデータの後にコンテンツアイテムを配置する(230)。より詳細には、コンテンツアイテムを定義する1つまたは複数のデータオブジェクト、あるいはレスポンス中のコンテンツアイテムに先行するコンテンツアイテムを定義するデータオブジェクトに、各コンテンツアイテムをレンダリングする必要のあるデータを配置する。このようにデータを構築することによって、配信モジュールは、クライアントがそのコンテンツアイテムを受信した時点で、クライアントが任意の所与のコンテンツアイテムをレンダリングするために必要なすべてのデータを確実に受信するようにする。結果的に、クライアントは、全てのコンテンツアイテムが受信される前に、1つまたは複数のコンテンツアイテムをレンダリングおよび表示できる。
図3は、コンテンツアイテムをインクリメンタルにレンダリングするための例示的なプロセス300のフローチャートである。プロセスは、ユーザデバイス上のクライアントによって実行され得る。
クライアントはホストサーバにコンテンツの要求を送信する(310)。
ホストサーバは、クライアントに構造化されたレスポンスを送信する。関心のあるシナリオでは、クライアントは、レスポンス全体を一緒に構成する複数の断片においてレスポンスを受信する(320)。クライアントは、ネットワークスタックが、レスポンス全体をクライアントに提供する前に、例えば、トランスポート層からユーザデバイス上のネットワークスタックから断片を取得する。
ネットワークスタックのトランスポート層は、ユーザデバイス上で実行されているアプリケーションにデータ通信サービスを一緒に提供するソフトウェアのいくつかの層のうちの一つである。特に、トランスポート層は、アプリケーションのためのホストトゥホストの通信サービスを提供するプロトコルのセットを実装する。トランスポート層プロトコルの一例は、転送制御プロトコル(TCP)である。別の例は、ユーザデータグラムプロトコル(UDP)です。クライアントによって取得された断片は、使用される具体的なプロトコルに応じて、1つまたは複数のセグメントあるいは1つまたは複数のデータグラムからなる。
レスポンスの断片は、コンテンツアイテム、およびコンテンツアイテムを記述するメタデータを含む。各コンテンツアイテムが表示のためにレンダリング可能であり、1つまたは複数のデータオブジェクトによって定義される。例えば、特定のコンテンツアイテムは、ジェイソン(JSON: JavaScript Object Notation)オブジェクトによって定義され得る。JSONは、構造化データをシリアル化するためのテキスト形式である。人が読めるテキストを使用して、属性-値のペアと配列データ型で構成されるデータオブジェクトを送信する。
コンテンツアイテムを記述するメタデータは、各コンテンツアイテムについて、シーケンス識別子を含み得る。特定のコンテンツアイテムのためのシーケンス識別子は、レスポンス中の他のコンテンツアイテムに対する、およびディスプレイバッファに以前にレンダリングされたレスポンス中のコンテンツアイテムに対する、コンテンツアイテムのディスプレイバッファの場所を指定する。例えば、シーケンス識別子は、コンテンツアイテムが、ディスプレイバッファにおいて、第1のコンテンツアイテムの「下に」かつ第2のコンテンツアイテムの「上に」レンダリングされるべきであると指定することがある。いくつかの実施形態では、シーケンス識別子は、コンテンツアイテムに関連するタイムスタンプに基づく、あるいは、該タイムスタンプである。タイムスタンプは、コンテンツアイテムが、他のコンテンツアイテムに対して作成された時間を示すことができる。この場合、コンテンツアイテムは、時系列順または時系列の逆順でディスプレイバッファに配置され得る。
あるいは、コンテンツアイテムのためのシーケンス識別子は、ユーザがどの程度コンテンツアイテムを気に入るか、またはどの程度コンテンツアイテムとインタラクトする可能性があるかについての推定に基づくことができる。例えば、ソーシャル・メッセージング・プラットフォームのプラットフォームサーバは、特定のユーザが、第2のコンテンツアイテムよりも第1のコンテンツアイテムを気に入る、もしくは第1のコンテンツアイテムとインタラクトする可能性が高いと決定できる。そのようなケースでは、第1のコンテンツアイテムに対するシーケンス識別子が、ユーザが第1のコンテンツアイテムを見る可能性が高い、あるいは最初に見る可能性が高いように、第2のコンテンツアイテムの「上に」第1のコンテンツアイテムが配置されるべきであることを指定してもよい。ホストサーバは、同様のコンテンツアイテムとのユーザの以前のインタラクションを分析することによって、ユーザが特定のコンテンツアイテムを気に入り、特定のコンテンツアイテムとインタラクトする可能性を決定できる。
断片がメタデータによって決定されたディスプレイバッファに順に取得されるように、クライアントはインクリメンタルに、断片のコンテンツアイテムをディスプレイバッファにレンダリングする。
コンテンツアイテムの各々は、個別にレンダリング可能である。換言すれば、レスポンス中の各コンテンツアイテムをレンダリングする必要のあるデータは、コンテンツアイテムを定義する1つまたは複数のデータオブジェクトに、あるいは、レスポンスに先行して見つかるデータ、例えば、現在の断片またはレスポンスの以前に受信された断片に含まれる。結果的に、クライアントは、クライアントがレスポンス全体を受信する前に個別のコンテンツアイテムをレンダリングできる。
いくつかの実施形態では、クライアントは、レスポンスの最初の断片のメタデータを受信し、メタデータはレスポンスの各コンテンツアイテムに対するそれぞれのシーケンス識別子に加えて、レスポンスのコンテンツアイテムの総数を含む。この情報に伴い、クライアントは、最初の断片のコンテンツアイテムをレンダリングし、レスポンスの後続の断片の各コンテンツアイテムのためのそれぞれのプレースホルダをディスプレイバッファに含めることができる。後に、クライアントは、後続の断片からコンテンツアイテムをレンダリングする際に、それぞれのプレースホルダを置き換えることができる。クライアントは、対応するコンテンツアイテムが、例えば、コンテンツアイテムのシーケンス識別子によって定義された場所に表示されるように、ディスプレイバッファにプレースホルダを作成できる。
コンテンツアイテムのレンダリングにおいて、クライアントは通常、コンテンツアイテムを定義するデータオブジェクトまたはオブジェクトの開始を識別し、次いでコンテンツアイテムを定義するデータオブジェクトまたはオブジェクトの終わりを識別する。いくつかの場合、特定のコンテンツアイテムを定義するデータオブジェクトまたはオブジェクトは、レスポンスの単一の断片に完全に含まれる。他の場合、それらは2つ以上の断片にわたる。
最後に、クライアントはユーザデバイスのディスプレイ上にディスプレイバッファの全部または一部を表示する(340)。ディスプレイバッファがプレースホルダを有する実施形態では、いくつかのコンテンツアイテムが依然としてレンダリングされる必要があることをユーザに示すために、クライアントはそのプレースホルダを表示できる。プレースホルダは、表示の際に垂直方向の高さが固定されていることが好ましいのに対し、入ってくるコンテンツアイテムは通常、垂直方向の高さが可変である。クライアントがコンテンツアイテムのプレースホルダを置き換えるとき、クライアントは、ビューポートのアイテムが、ビューポートから離れる方向に、ディスプレイバッファのサイズを拡張することによって垂直に移動しないようにできる。すなわち、プレースホルダがビューポートの上にある場合、クライアントは、ディスプレイバッファを拡大できる。プレースホルダがビューポートの下にある場合、クライアントは、ディスプレイバッファを縮小できる。クライアントは、ユーザ入力に基づいて、例えば、クライアントのユーザインターフェースへのスクロール入力に基づいて、ディスプレイバッファのどの部分を表示するか決定できる。
いくつかの実施形態では、クライアントは、多数の隣接するプレースホルダに代わり、単一のプレースホルダを挿入および表示する。
図4は、レスポンスの2つ以上の断片にわたるコンテンツアイテムをレンダリングするための例示的なプロセス400のフローチャートである。プロセス400は、ユーザデバイス上で実行されているクライアントによって実行され得る。
クライアントは、レスポンスの次の断片を取得する(410)。クライアントは、断片が新規のコンテンツアイテムの最初の部分を含むかどうかを判定する(420)。クライアントは、断片のデータオブジェクト識別子を探すことによってその決定を行うことができる。例えば、コンテンツアイテムがJSONオブジェクトによって定義される場合、クライアントは、JSONオブジェクトの開始を示す開き中括弧についての断片を探すことができる。断片が新規のコンテンツアイテムの最初の部分を含まない場合、クライアントはレスポンスの次の断片を取得する(410)。
断片が新規のコンテンツアイテムの最初の部分を含まない場合、クライアントは、取得した断片、すなわち現在の断片および以前に取得した断片が、新規のコンテンツアイテム全体を含むかどうかを判定する(430)。すなわち、クライアントは、新規のコンテンツアイテムの全ての部分を取得しているかどうかを判定する。クライアントは、この決定を行うために、データオブジェクト識別子について断片を探すことができる。
クライアントが新規のコンテンツアイテムの全ての部分を取得していないと決定する場合、レスポンスの次の断片を取得し(440)、該次の断片および以前に取得した断片が、新規のコンテンツアイテム全体を含むかどうかを再度判定する(430)。コンテンツアイテムがレスポンスの2つ以上の断片にわたることができるので、クライアントはこのプロセスを数回繰り返すことがある。
クライアントは、新規のコンテンツアイテムの全ての部分を取得していると決定する場合、これらの部分を組み立てる。クライアントは、受信時に部分を組み立てることができ、あるいは全ての部分を受信した後に全ての部分を一度に組み立てることができる。いくつかの場合、コンテンツアイテムは、レスポンスの単一の断片に完全に含まれることがある。そのような場合、組み立ては不要である。
クライアントは、ユーザデバイス上でディスプレイバッファの組み立てたコンテンツアイテムをレンダリングする(460)。その後、単一の断片が複数のコンテンツアイテムを含むことができるので、クライアントは、現在の断片が新規のコンテンツアイテムの任意の一部を含むかどうかを判定する(420)。含まない場合、クライアントは、レスポンスの次の断片を取得する(410)。
いくつかの場合、クライアントがインクリメンタルにデータを受信してレンダリングする間、レスポンスが部分的に失敗することがある。例えば、100個のコンテンツアイテムを有するレスポンスが、クライアントが20個のコンテンツアイテムだけを受信した後に失敗することがある。例えば、トランスポート層プロトコルがUDPである場合に、そのような失敗が起きることがある。UDPが通信チャネルを必要としないため、基盤となるネットワークの信頼性が低下する可能性がある。
これが起きると、いくつかの実施形態では、エラーはインラインで表示され、すなわち、残りの80個のコンテンツアイテムが表示されていたはずの場所にエラーが表示される。クライアントのユーザは、残りの80個のコンテンツアイテムのロードを再試行するために、グラフィカルユーザインターフェースのエラーメッセージとインタラクトできる。
クライアントが正常な形ではないコンテンツアイテムを受信する場合、すなわち、クライアントが欠損したデータでコンテンツアイテムを受信する場合、クライアントはサイレントにコンテンツをドロップできる。
主題の実施形態および、本明細書に記載のアクションおよび動作は、本明細書に記載の構造およびその構造的均等物を含む、デジタル電子回路、有形の具現化されたコンピュータソフトウェアまたはファームウェア、コンピュータハードウェア、またはそれらの1つまたは複数の組み合わせで実現され得る。本明細書に記載の主題の実施形態は、1つまたは複数のコンピュータプログラムとして、すなわちデータ処理装置によって実行される、あるいはデータ処理装置の動作を制御するための有形の非一時的な記憶媒体上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実現され得る。代わりにまたは加えて、プログラム命令は、人工的に生成された伝搬信号、例えば、データ処理装置によって実行するためにレシーバ装置に適切に送るための情報を符号化するように生成されたマシン生成の電子的、光学的、または電磁気的信号上に符号化され得る。コンピュータ記憶媒体は、マシン可読の記憶デバイス、マシン可読の記憶基盤、ランダムまたはシリアルアクセスメモリデバイス、あるいはそれらの1つまたは複数の組み合わせであるか、その一部であってよい。コンピュータ記憶媒体は、伝搬信号ではない。
「データ処理装置」という用語は、例えば、プログラム可能なプロセッサ、コンピュータ、または複数のプロセッサまたはコンピュータを含む、データを処理するための、全ての種類の装置、デバイスおよび機械を包含する。データ処理装置は、例えば、FPGA(フィールドプログラマブルゲートアレイ)、ASIC(特定用途組み込み回路)、またはGPU(グラフィック処理ユニット)などの特定用途の論理回路を含むことができる。装置はまた、ハードウェアに加えて、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、あるいはそれらの1つまたは複数の組み合わせを構成するコードなど、コンピュータプログラムのための実行環境を作成するコードを含む。
プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、エンジン、スクリプト、またはコードとも呼ばれるまたは記載されるコンピュータプログラムは、コンパイル型またはインタブリタ型の言語、あるいは宣言型または手続型言語など、プログラミング言語の任意の形式で記述され、スタンドアロンプログラムまたはモジュール、コンポーネント、エンジン、サブルーチン、あるいは、1つまたは複数の場所でデータ通信ネットワークによって統合された1つまたは複数のコンピュータを含むコンピューティング環境での実行に適した他のユニットを含む、任意の形式で展開され得る。
コンピュータプログラムは、必ずではないが、ファイルシステムのファイルに対応してもよい。コンピュータプログラムは、他のプログラムまたはデータ、例えば、マークアップ言語文書に格納された1つまたは複数のスクリプトなどを、当該プログラム専用の単一ファイルに、あるいは、1つまたは複数のモジュール、サブプログラム、またはコードの一部を格納する複数のファイルなど、複数の協調したファイルに維持するファイルの一部に格納され得る。
本明細書に記載の処理および論理フローは、入力データに対して動作して出力を生成する動作を実行するために1つまたは複数のコンピュータプログラムを実行する1つまたは複数のコンピュータによって実行され得る。処理および論理フローはまた、専用論理回路、例えば、FPGA、ASIC、またはGPUによって、あるいは、専用論理回路および1つまたは複数のプログラムされたコンピュータの組み合わせによって実行され得る。
コンピュータプログラムの実行に適したコンピュータは、汎用または専用のマイクロプロセッサ、または汎用のマイクロプロセッサおよび専用のマイクロプロセッサ、あるいは、任意の他の種類の中央処理ユニットに基づくことができる。一般に、中央処理ユニットは、読み取り専用メモリまたはランダムアクセスメモリまたはその両方から命令およびデータを受信する。コンピュータの必須要素は、命令を実行するための中央処理ユニット、および命令およびデータを格納するための1つまたは複数のメモリデバイスであってよい。中央処理ユニットおよびメモリは、専用論理回路によって補足される、または専用論理回路に組み込まれ得る。
一般に、コンピュータはまた、1つまたは複数の大容量記憶デバイスからデータを受信するように、または1つまたは複数の大容量記憶デバイスにデータを伝送するように、1つまたは複数の大容量記憶デバイスを含むか、動作可能に接続され得る。大容量記憶デバイスは、例えば、磁気、磁気光学、または光学ディスク、あるいはソリッドステートドライブであってよい。しかしながら、コンピュータはそのようなデバイスを有する必要はない。さらに、コンピュータは、ほんの数例を挙げると、携帯電話、個人情報端末(PDA)、モバイルオーディオまたはビデオプレイヤ、ゲームコンソール、全地球測位システム(GPS)受信機、または例えばユニバーサルシリアルバス(USB)フラッシュドライブなどのポータブルストレージデバイスなどの他のデバイスに組み込まれることができる。
ユーザとのインタラクションを提供するために、本明細書の主題の実施形態は、ユーザに情報を表示するためのディスプレイデバイス、例えば、LCD(液晶ディスプレイ)モニタ、
および、ユーザが入力をコンピュータに提供できる入力デバイス、例えば、キーボードおよびマウス、トラックボール、またはタッチパッドなどのポインティングデバイスを実装するか、それらと通信できるように構成される。他の種類のデバイスを使用して、ユーザとのインタラクションを提供でき、例えば、ユーザに提供するフィードバックは、視覚フィードバック、音響フィードバック、または触覚フィードバックなどの任意の形式のセンサフィードバックであってよく、ユーザからの入力は、音響、会話、または触覚入力を含む任意の形式で受信され得る。加えて、コンピュータは、例えば、ウェブブラウザから受信した要求に応答して、ユーザデバイス上のウェブブラウザにウェブページを送信することによって、あるいは、例えば、スマートフォンまたは電子タブレットなどユーザデバイス上で実行されているアプリとインタラクトすることによって、ユーザによって使用されるデバイスに文書を送信、およびデバイスから文書を受信することによって、ユーザとインタラクトできる。また、コンピュータは、テキストメッセージまたは他の形式のメッセージを個人用デバイス、例えば、メッセージングアプリケーションを実行されているスマートフォンに送信することによって、および返信としてユーザから応答メッセージを受信することによってユーザとインタラクトできる。
本明細書に記載の主題の実施形態は、データサーバとしての、バックエンド構成要素、アプリケーションサーバなどのミドルウェア構成要素、グラフィカルユーザインターフェース、ウェブブラウザ、または本明細書に記載の主題の実施形態とそれを通してユーザがインタラクトできるアプリなどのフロントエンド構成要素、あるいは、そのような1つまたは複数のバックエンド構成要素、ミドルウェア構成要素、またはフロントエンド構成要素の組み合わせを含むコンピューティングシステムにおいて実装され得る。システムの構成要素は、通信ネットワークなどのデジタルデータ通信の形態または媒体によって相互接続され得る。通信ネットワークの例には、ローカルエリアネットワーク(LAN)、およびインターネットなどのワイドエリアネットワーク(WAN)を含まれる。
コンピューティングシステムは、クライアントおよびサーバを含み得る。クライアントおよびサーバは通常、互いに離れており、一般に通信ネットワークを介してやり取りする。クライアントおよびサーバの関係は、それぞれのコンピュータ上で実行している、かつ互いにクライアント-サーバ関係を有するコンピュータプログラムによって発生する。いくつかの実施形態では、サーバは、クライアントとして動作するデバイスにデータを表示する、および該デバイスとインタラクトするユーザからユーザ入力を受信する目的で、HTMLページなどのデータをユーザデバイスに送信する。ユーザインタラクションの結果など、ユーザデバイスにおいて生成されるデータは、デバイスからサーバにおいて受信され得る。
上述した実施形態に加えて、以下の実施形態がまた進歩的である。
実施形態1は、ユーザデバイス上で実行されているソーシャル・メッセージング・プラットフォームのクライアントソフトウェアによって実行される方法であって、
1つまたは複数のコンピュータと1つまたは複数の記憶デバイスとを備えるサーバに、コンテンツ要求を送信するステップであって、サーバがソーシャル・メッセージング・プラットフォームを実装するように構成される、ステップと、
ユーザデバイス上のネットワークスタックのトランスポート層から複数の断片において、サーバからコンテンツ要求のレスポンスをインクリメンタルに受信するステップであって、複数の断片がレスポンス全体を構成し、レスポンスが、コンテンツアイテムとコンテンツアイテムを記述するメタデータとを含み、各コンテンツアイテムがレンダリング可能であるとともに、1つまたは複数のデータオブジェクトによって定義される、ステップと、
断片が受信されるとき、断片のコンテンツアイテムをディスプレイバッファにインクリメンタルにレンダリングするステップであって、メタデータによって決定された順序でコンテンツアイテムをディスプレイバッファに配置することを含み、ディスプレイバッファがユーザデバイスのメモリのデータ構造である、ステップと、
ユーザデバイスのディスプレイ上にディスプレイバッファの全部または一部を表示するステップとを含む、方法である。
実施形態2は、クライアントソフトウェアは、スタンドアロンアプリであるか、ユーザデバイス上にインストールされたウェブブラウザで実行されるJavaスクリプトプログラムである、実施形態1に記載の方法である。
実施形態3は、コンテンツアイテムを記述するメタデータは、各コンテンツアイテムに対して、レスポンスの他のコンテンツアイテムに対する、およびディスプレイバッファに以前にレンダリングされたレスポンスのコンテンツアイテムに対する、コンテンツアイテムのディスプレイバッファの場所を指定するシーケンス識別子を含む、実施形態1または2に記載の方法である。
実施形態4は、それぞれのコンテンツアイテムのシーケンス識別子が、他のコンテンツアイテムに対する、コンテンツアイテムの作成された時間に対応する、実施形態3に記載の方法である。
実施形態5は、メタデータがレスポンスの最初の断片において受信され、レスポンスのコンテンツアイテムの総数を含み、方法はさらに、
最初の断片のコンテンツアイテムをディスプレイバッファにレンダリングし、レスポンスの後続の断片の各コンテンツアイテムのためのそれぞれのプレースホルダをディスプレイバッファに含めるステップと、
後続の断片のコンテンツアイテムをレンダリングするときに、それぞれのプレースホルダを再配置するステップとを含む、実施形態1〜4のいずれか一つに記載の方法である。
実施形態6は、メタデータはさらに、各コンテンツアイテムについて、シーケンス識別子を含み、それぞれのプレースホルダは、対応するコンテンツアイテムのシーケンス識別子によって指定されたディスプレイバッファの場所に作成される、実施形態5に記載の方法である。
実施形態7は、断片が受信されるときに断片のコンテンツアイテムをインクリメンタルにレンダリングするステップが、
第1の断片が特定のコンテンツアイテムの最初の部分のみを含むと決定するステップと、
特定のコンテンツアイテムの残りを含む第2の断片を受信するステップと、
最初の部分と特定のコンテンツアイテムの残りを組み合わせるステップと、
ディスプレイバッファに組み合わせたコンテンツアイテムをレンダリングするステップとを含む、実施形態1〜6のいずれか一つに記載の方法である。
実施形態8は、1つまたは複数のデータオブジェクトは、JSONオブジェクトであり、断片が受信されるときに断片のコンテンツアイテムをインクリメンタルにレンダリングするステップは、各コンテンツアイテムに対して、
コンテンツアイテムを定義するJSONオブジェクトの開始を識別するステップと、
コンテンツアイテムを定義するJSONオブジェクトの終わりを識別するステップとを含む、実施形態7に記載の方法である。
実施形態9は、レスポンスの断片の各々は、クライアントソフトウェアに、トランスポート層プロトコルによって提供される1つまたは複数のトランスポート層セグメントを含む、実施形態1〜8のいずれか一つに記載の方法である。
実施形態10は、各レスポンスでは、レスポンスの各コンテンツアイテムをレンダリングする必要のあるデータが、コンテンツアイテムを定義する1つまたは複数のデータオブジェクトに含まれるか、あるいは、レスポンスにおいて以前に受信されたコンテンツアイテムを定義する1つまたは複数のデータオブジェクトに含まれる、実施形態1〜9のいずれか一つに記載の方法である。
実施形態11は、サーバは遠隔のサーバである、実施形態1〜10のいずれか一つに記載の方法である。
実施形態12は、
1つまたは複数のコンピュータおよび1つまたは複数の記憶デバイスを備えるサーバであって、ソーシャル・メッセージング・プラットフォームを実装するように構成されたサーバと
ユーザデバイスと、
ユーザデバイス上で実行されているソーシャル・メッセージング・プラットフォームのクライアントソフトウェアとを含む、システムであって、
クライアントソフトウェアが、実施形態1〜11のいずれか一つに記載の方法を実行するように構成される、システムである。
実施形態13は、命令を格納する1つまたは複数の非一時的コンピュータ可読記憶媒体であって、命令が、1つまたは複数のコンピュータによって実行されると、1つまたは複数のコンピュータに実施形態1〜11のいずれか一つに記載の方法を実行させるように動作可能である、1つまたは複数の非一時的コンピュータ可読記憶媒体である。
実施形態14は、
1つまたは複数のコンピュータと、ソーシャル・メッセージング・プラットフォームを実装するように構成された1つまたは複数の記憶デバイスとを備えるシステムであって、1つまたは複数の記憶デバイスが、1つまたは複数のコンピュータによって実行されるとき、1つまたは複数のコンピュータに動作を実行させる命令を格納し、動作が、
ソーシャル・メッセージング・プラットフォームのクライアントソフトウェアからコンテンツ要求を受信するステップであって、クライアントソフトウェアがユーザデバイス上で実行されている、ステップと、
(i)コンテンツ要求に対応するコンテンツアイテム、(ii)コンテンツアイテムを記述するメタデータ、および(iii)コンテンツアイテムをレンダリングする必要のあるデータを取得するステップであって、コンテンツアイテムを記述するメタデータが、各コンテンツアイテムに対して、他のコンテンツアイテムに対する、コンテンツアイテムがレンダリングされるべきユーザデバイスのディスプレイバッファの場所を指定するシーケンス識別子を含む、ステップと、
コンテンツ要求に対するレスポンスを生成するステップであって、
レスポンスの最初の断片にメタデータを配置するステップと、
コンテンツアイテムを定義する1つまたは複数のデータオブジェクトに、またはレスポンスのコンテンツアイテムに先行するコンテンツアイテムを定義する1つまたは複数のデータオブジェクトに、各コンテンツアイテムをレンダリングする必要のあるデータを配置するステップとを含む、ステップと、
クライアントソフトウェアにレスポンスを送信するステップとを含む、システムである。
本明細書は多数の特定の実施形態の詳細を含むが、これらは、任意の発明の範囲についての、または請求されているまたは請求される可能性のある特許請求の範囲についての限定として解釈されるべきではなく、特定の発明の特定の実施形態を指すことのある特徴の説明である。個別の実施形態の文脈で本明細書に説明されたある特徴はまた、単位の実施形態に組み合わせて実装され得る。反対に、単位の実施形態の文脈で説明された種々の特徴が、複数の実施形態で個別に、あるいは任意の適切なサブコンビネーションにおいて実装され得る。その上、特徴が、ある組み合わせにおける振る舞いとして上述されていても、そのように特許請求の範囲に最初に記載されていてさえ、請求された組み合わせからの1つまたは複数の特徴が、ある場合では組み合わせから切り取ることができ、特許請求の範囲は、サブコンビネーションまたはサブコンビネーションの変形に向けられることがある。
同様に、動作が、特定の順序で図面に示され、特許請求の範囲に記載されているが、このことは、そのような動作が、所望の結果を得るために、示された特定の順序でまたはシーケンシャルな順序で、実行される必要がある、または全ての示された動作が実行される必要があると解釈されるべきではない。ある状況では、マルチタスクおよび並列処理が有利である。また、上述した実施形態における種々のシステムモジュールおよび構成要素の分離は、そのような分離が全ての実施形態において必要であると理解されるべきではなく、説明されたプログラム構成要素およびシステムは通常、単一のソフトウェア製品に統合される、または複数のソフトウェア製品にパッケージングされると理解されるべきである。
主題の特定の実施形態が説明されている。他の実施形態は、以降の特許請求の範囲にある。例えば、特許請求の範囲に記載のアクションは、異なる順序で実行され、依然として所望の結果を達成できる。一例として、添付の図面に示されたプロセスは、所望の結果を達成するために、示された特定の順序、またはシーケンシャルな順序を必ずしも必要としない。いくつかの場合、マルチタスクおよび並列処理が有利である。
100 ソーシャル・メッセージング・プラットフォーム
104a〜104n ユーザデバイス
106a〜106n クライアントソフトウェア
108a〜108n プログレッシブ・レンダリング・モジュール
110a〜110m プラットフォームサーバ
112a〜112m 配信モジュール

Claims (24)

1つまたは複数のコンピュータおよび1つまたは複数の記憶デバイスを備えるサーバであって、ソーシャル・メッセージング・プラットフォームを実装するように構成されたサーバと、
ユーザデバイスと、
前記ユーザデバイス上で実行されている前記ソーシャル・メッセージング・プラットフォームのクライアントソフトウェアとを含む、システムであって、
前記クライアントソフトウェアは、動作を実行するように構成され、前記動作が、
前記サーバにコンテンツ要求を送信するステップと、
前記ユーザデバイス上のネットワークスタックのトランスポート層から複数の断片において、前記サーバから前記コンテンツ要求のレスポンスをインクリメンタルに受信するステップであって、前記複数の断片がレスポンス全体を構成し、前記レスポンスが、コンテンツアイテムと前記コンテンツアイテムを記述するメタデータとを含み、各コンテンツアイテムがレンダリング可能であるとともに、1つまたは複数のデータオブジェクトによって定義される、ステップと、
前記断片が受信されるとき、前記断片の前記コンテンツアイテムをディスプレイバッファにインクリメンタルにレンダリングするステップであって、前記メタデータによって決定された順序で前記コンテンツアイテムを前記ディスプレイバッファに配置することを含み、前記ディスプレイバッファが前記ユーザデバイスのメモリのデータ構造である、ステップと、
前記ユーザデバイスのディスプレイ上に前記ディスプレイバッファの全部または一部を表示するステップと
を含む、システム。
前記クライアントソフトウェアは、スタンドアロンアプリであるか、前記ユーザデバイス上にインストールされたウェブブラウザで実行されるJavaスクリプトプログラムである、請求項1に記載のシステム。
前記コンテンツアイテムを記述する前記メタデータは、各コンテンツアイテムに対して、前記レスポンスの他のコンテンツアイテムに対する、および前記ディスプレイバッファに以前にレンダリングされたレスポンスのコンテンツアイテムに対する、前記コンテンツアイテムの前記ディスプレイバッファの場所を指定するシーケンス識別子を含む、請求項1に記載のシステム。
それぞれのコンテンツアイテムのシーケンス識別子が、他のコンテンツアイテムに対する、前記コンテンツアイテムの作成された時間に対応する、請求項3に記載のシステム。
前記メタデータは、前記レスポンスの最初の断片において受信され、前記レスポンスのコンテンツアイテムの総数を含み、前記動作はさらに、
前記最初の断片の前記コンテンツアイテムを前記ディスプレイバッファにレンダリングし、前記レスポンスの後続の断片の各コンテンツアイテムのためのそれぞれのプレースホルダを前記ディスプレイバッファに含めるステップと、
前記後続の断片の前記コンテンツアイテムをレンダリングするときに、前記それぞれのプレースホルダを再配置するステップとを含む、請求項1に記載のシステム。
前記メタデータはさらに、各コンテンツアイテムについて、シーケンス識別子を含み、それぞれのプレースホルダは、対応するコンテンツアイテムの前記シーケンス識別子によって指定された前記ディスプレイバッファの場所に作成される、請求項5に記載のシステム。
前記断片が受信されるときに前記断片の前記コンテンツアイテムをインクリメンタルにレンダリングするステップは、
第1の断片が特定のコンテンツアイテムの最初の部分のみを含むと決定するステップと、
前記特定のコンテンツアイテムの残りを含む第2の断片を受信するステップと、
前記最初の部分と前記特定のコンテンツアイテムの前記残りを組み合わせるステップと、
前記ディスプレイバッファに前記組み合わせたコンテンツアイテムをレンダリングするステップと
を含む、請求項1に記載のシステム。
前記1つまたは複数のデータオブジェクトは、JSONオブジェクトであり、前記断片が受信されるときに前記断片の前記コンテンツアイテムをインクリメンタルにレンダリングするステップは、各コンテンツアイテムに対して、
前記コンテンツアイテムを定義するJSONオブジェクトの開始を識別するステップと、
前記コンテンツアイテムを定義する前記JSONオブジェクトの終わりを識別するステップと
を含む、請求項7に記載のシステム。
前記レスポンスの前記断片の各々は、前記クライアントソフトウェアに、トランスポート層プロトコルによって提供される1つまたは複数のトランスポート層セグメントを含む、請求項1に記載のシステム。
各レスポンスでは、前記レスポンスの各コンテンツアイテムをレンダリングする必要のあるデータが、前記コンテンツアイテムを定義する前記1つまたは複数のデータオブジェクトに含まれるか、あるいは、前記レスポンスにおいて以前に受信されたコンテンツアイテムを定義する1つまたは複数のデータオブジェクトに含まれる、請求項1に記載のシステム。
前記サーバは遠隔のサーバである、請求項1に記載のシステム。
ユーザデバイス上で実行されているソーシャル・メッセージング・プラットフォームのクライアントソフトウェアによって実行される方法であって、
1つまたは複数のコンピュータと1つまたは複数の記憶デバイスとを備えるサーバに、コンテンツ要求を送信するステップであって、前記サーバが前記ソーシャル・メッセージング・プラットフォームを実装するように構成される、ステップと、
前記ユーザデバイス上のネットワークスタックのトランスポート層から複数の断片において、前記サーバから前記コンテンツ要求のレスポンスをインクリメンタルに受信するステップであって、前記複数の断片がレスポンス全体を構成し、前記レスポンスが、コンテンツアイテムと前記コンテンツアイテムを記述するメタデータとを含み、各コンテンツアイテムがレンダリング可能であるとともに、1つまたは複数のデータオブジェクトによって定義される、ステップと、
前記断片が受信されるとき、前記断片の前記コンテンツアイテムをディスプレイバッファにインクリメンタルにレンダリングするステップであって、前記メタデータによって決定された順序で前記コンテンツアイテムを前記ディスプレイバッファに配置することを含み、前記ディスプレイバッファが前記ユーザデバイスのメモリのデータ構造である、ステップと、
前記ユーザデバイスのディスプレイ上に前記ディスプレイバッファの全部または一部を表示するステップと
を含む、方法。
前記クライアントソフトウェアは、スタンドアロンアプリであるか、前記ユーザデバイス上にインストールされたウェブブラウザで実行されるJavaスクリプトプログラムである、請求項12に記載の方法。
前記コンテンツアイテムを記述する前記メタデータは、各コンテンツアイテムに対して、前記レスポンスの他のコンテンツアイテムに対する、および前記ディスプレイバッファに以前にレンダリングされたレスポンスのコンテンツアイテムに対する、前記コンテンツアイテムの前記ディスプレイバッファの場所を指定するシーケンス識別子を含む、請求項12に記載の方法。
それぞれのコンテンツアイテムのシーケンス識別子が、他のコンテンツアイテムに対する、前記コンテンツアイテムの作成された時間に対応する、請求項14に記載の方法。
前記メタデータは、前記レスポンスの最初の断片において受信され、前記レスポンスのコンテンツアイテムの総数を含み、前記方法はさらに、
前記最初の断片の前記コンテンツアイテムを前記ディスプレイバッファにレンダリングし、前記レスポンスの後続の断片の各コンテンツアイテムのためのそれぞれのプレースホルダを前記ディスプレイバッファに含めるステップと、
前記後続の断片の前記コンテンツアイテムをレンダリングするときに、前記それぞれのプレースホルダを再配置するステップとを含む、請求項12に記載の方法。
前記メタデータはさらに、各コンテンツアイテムについて、シーケンス識別子を含み、それぞれのプレースホルダは、対応するコンテンツアイテムの前記シーケンス識別子によって指定された前記ディスプレイバッファの場所に作成される、請求項16に記載の方法。
前記断片が受信されるときに前記断片の前記コンテンツアイテムをインクリメンタルにレンダリングするステップは、
第1の断片が特定のコンテンツアイテムの最初の部分のみを含むと決定するステップと、
前記特定のコンテンツアイテムの残りを含む第2の断片を受信するステップと、
前記最初の部分と前記特定のコンテンツアイテムの前記残りを組み合わせるステップと、
前記ディスプレイバッファに前記組み合わせたコンテンツアイテムをレンダリングするステップと
を含む、請求項12に記載の方法。
前記1つまたは複数のデータオブジェクトは、JSONオブジェクトであり、前記断片が受信されるときに前記断片の前記コンテンツアイテムをインクリメンタルにレンダリングするステップは、各コンテンツアイテムに対して、
前記コンテンツアイテムを定義するJSONオブジェクトの開始を識別するステップと、
前記コンテンツアイテムを定義する前記JSONオブジェクトの終わりを識別するステップと
を含む、請求項18に記載の方法。
前記レスポンスの前記断片の各々は、前記クライアントソフトウェアに、トランスポート層プロトコルによって提供される1つまたは複数のトランスポート層セグメントを含む、請求項12に記載の方法。
各レスポンスでは、前記レスポンスの各コンテンツアイテムをレンダリングする必要のあるデータが、前記コンテンツアイテムを定義する前記1つまたは複数のデータオブジェクトに含まれるか、あるいは、前記レスポンスにおいて以前に受信されたコンテンツアイテムを定義する1つまたは複数のデータオブジェクトに含まれる、請求項12に記載の方法。
前記サーバは遠隔のサーバである、請求項12に記載の方法。
命令を格納する1つまたは複数の非一時的コンピュータ可読記憶媒体であって、前記命令が、1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに動作を実行させるように動作可能であり、前記動作が、
1つまたは複数のコンピュータと1つまたは複数の記憶デバイスとを備えるサーバに、コンテンツ要求を送信するステップであって、前記サーバがソーシャル・メッセージング・プラットフォームを実装するように構成される、ステップと、
前記1つまたは複数のコンピュータ上のネットワークスタックのトランスポート層から複数の断片において、前記サーバから前記コンテンツ要求のレスポンスをインクリメンタルに受信するステップであって、前記複数の断片がレスポンス全体を構成し、前記レスポンスが、コンテンツアイテムと前記コンテンツアイテムを記述するメタデータとを含み、各コンテンツアイテムがレンダリング可能であるとともに、1つまたは複数のデータオブジェクトによって定義される、ステップと、
前記断片が受信されるとき、前記断片の前記コンテンツアイテムをディスプレイバッファにインクリメンタルにレンダリングするステップであって、前記メタデータによって決定された順序で前記コンテンツアイテムを前記ディスプレイバッファに配置することを含み、前記ディスプレイバッファが前記1つまたは複数のコンピュータのメモリのデータ構造である、ステップと、
前記1つまたは複数のコンピュータのディスプレイ上に前記ディスプレイバッファの全部または一部を表示するステップと
を含む、1つまたは複数の非一時的コンピュータ可読記憶媒体。
1つまたは複数のコンピュータと、ソーシャル・メッセージング・プラットフォームを実装するように構成された1つまたは複数の記憶デバイスとを備えるシステムであって、前記1つまたは複数の記憶デバイスが、1つまたは複数のコンピュータによって実行されるとき、前記1つまたは複数のコンピュータに動作を実行させる命令を格納し、前記動作が、
前記ソーシャル・メッセージング・プラットフォームのクライアントソフトウェアからコンテンツ要求を受信するステップであって、前記クライアントソフトウェアがユーザデバイス上で実行されている、ステップと、
(i)前記コンテンツ要求に対応するコンテンツアイテム、(ii)前記コンテンツアイテムを記述するメタデータ、および(iii)前記コンテンツアイテムをレンダリングする必要のあるデータを取得するステップであって、前記コンテンツアイテムを記述する前記メタデータが、各コンテンツアイテムに対して、他のコンテンツアイテムに対する、前記コンテンツアイテムがレンダリングされるべき前記ユーザデバイスのディスプレイバッファの場所を指定するシーケンス識別子を含む、ステップと、
前記コンテンツ要求に対するレスポンスを生成するステップであって、
前記レスポンスの最初の断片に前記メタデータを配置するステップと、
前記コンテンツアイテムを定義する1つまたは複数のデータオブジェクトに、または前記レスポンスの前記コンテンツアイテムに先行するコンテンツアイテムを定義する1つまたは複数のデータオブジェクトに、各コンテンツアイテムをレンダリングする必要のある前記データを配置するステップとを含む、ステップと、
前記クライアントソフトウェアに前記レスポンスを送信するステップと
を含む、システム。
JP2021515500A 2018-09-19 2019-09-19 プログレッシブなapiレスポンス Active JP7217342B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/136,093 US20200089779A1 (en) 2018-09-19 2018-09-19 Progressive API Responses
US16/136,093 2018-09-19
PCT/US2019/052019 WO2020061373A1 (en) 2018-09-19 2019-09-19 Progressive api responses

Publications (2)

Publication Number Publication Date
JP2022500785A true JP2022500785A (ja) 2022-01-04
JP7217342B2 JP7217342B2 (ja) 2023-02-02

Family

ID=68136541

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021515500A Active JP7217342B2 (ja) 2018-09-19 2019-09-19 プログレッシブなapiレスポンス

Country Status (8)

Country Link
US (2) US20200089779A1 (ja)
EP (1) EP3854036A1 (ja)
JP (1) JP7217342B2 (ja)
KR (1) KR20210089145A (ja)
CN (1) CN112913195A (ja)
BR (1) BR112021004736A8 (ja)
DE (1) DE202019005788U1 (ja)
WO (1) WO2020061373A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11170064B2 (en) * 2019-03-05 2021-11-09 Corinne David Method and system to filter out unwanted content from incoming social media data
US20230359483A1 (en) * 2020-12-25 2023-11-09 Beijing Baidu Netcom Science And Technology Co., Ltd. Method for applet page rendering, electronic device and storage medium

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004287631A (ja) * 2003-03-20 2004-10-14 Konami Co Ltd ダウンロードサービスシステム、端末、指令列の実行方法、ならびに、プログラム
JP2014123355A (ja) * 2012-12-19 2014-07-03 Hon Hai Precision Industry Co Ltd データエンコード伝送システム及びその方法
US9282145B2 (en) * 2013-09-20 2016-03-08 Yottaa Inc. Systems and methods for managing loading priority or sequencing of fragments of a web object
JP2018113645A (ja) * 2017-01-13 2018-07-19 富士通株式会社 通信装置、通信システム、通信方法、および、通信プログラム
US10178147B1 (en) * 2014-01-02 2019-01-08 Instart Logic, Inc. Client-side location address translation

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5977977A (en) * 1995-08-04 1999-11-02 Microsoft Corporation Method and system for multi-pass rendering
US20040237082A1 (en) * 2003-05-22 2004-11-25 Alcazar Mark A. System, method, and API for progressively installing software application
US8180029B2 (en) * 2007-06-28 2012-05-15 Voxer Ip Llc Telecommunication and multimedia management method and apparatus
US9990439B2 (en) * 2007-08-14 2018-06-05 Nbcuniversal Media, Llc Flexible method and system for providing digital content
US20090049373A1 (en) * 2007-08-14 2009-02-19 Nbc Universal, Inc. Method and system for user receipt of digital content
CN101802823A (zh) * 2007-08-20 2010-08-11 诺基亚公司 用于流式多媒体数据的分段的元数据和位标
US20090089448A1 (en) * 2007-09-28 2009-04-02 David Sze Mobile browser with zoom operations using progressive image download
US20100070643A1 (en) * 2008-09-11 2010-03-18 Yahoo! Inc. Delivery of synchronized metadata using multiple transactions
US9043276B2 (en) * 2008-10-03 2015-05-26 Microsoft Technology Licensing, Llc Packaging and bulk transfer of files and metadata for synchronization
US8996547B2 (en) * 2008-10-31 2015-03-31 Microsoft Technology Licensing, Llc Dynamic fragmentation of digital media
US20100115575A1 (en) * 2008-11-03 2010-05-06 At&T Intellectual Property I, L.P. System and method for recording and distributing media content
US8412841B1 (en) * 2009-08-17 2013-04-02 Adobe Systems Incorporated Media content streaming using stream message fragments
US9917874B2 (en) * 2009-09-22 2018-03-13 Qualcomm Incorporated Enhanced block-request streaming using block partitioning or request controls for improved client-side handling
US8631436B2 (en) * 2009-11-25 2014-01-14 Nokia Corporation Method and apparatus for presenting media segments
WO2011066691A1 (en) * 2009-12-04 2011-06-09 Streamocean, Inc. System and method to deliver multimedia content for display through network
US8321426B2 (en) * 2010-04-30 2012-11-27 Hewlett-Packard Development Company, L.P. Electronically linking and rating text fragments
US20130080268A1 (en) * 2011-09-26 2013-03-28 Unicorn Media, Inc. Multi-platform media syndication customization
US8863165B2 (en) * 2010-11-01 2014-10-14 Gracenote, Inc. Method and system for presenting additional content at a media system
US20120131609A1 (en) * 2010-11-19 2012-05-24 Media Patents, S.L. Methods, apparatus and systems for delivering and receiving data
US9860572B2 (en) * 2011-06-08 2018-01-02 Koninklijke Kpn N.V. Spatially segmented content delivery
US9256859B2 (en) * 2011-07-26 2016-02-09 Salesforce.Com, Inc. Systems and methods for fragmenting newsfeed objects
US20130080579A1 (en) * 2011-09-26 2013-03-28 Unicorn Media, Inc. Dynamically-executed syndication services
US20130230292A1 (en) * 2012-03-02 2013-09-05 Care Cam Innovations, Llc Apparatus, Method and Computer-Readable Storage Medium for Media Processing and Delivery
US9276989B2 (en) * 2012-03-30 2016-03-01 Adobe Systems Incorporated Buffering in HTTP streaming client
US20130285937A1 (en) * 2012-04-27 2013-10-31 Mobitv, Inc Connected multi-screen video management
US20140123159A1 (en) * 2012-10-31 2014-05-01 Telefonaktiebolaget L M Ericsson (Publ) Providing Content On Demand
US11233841B2 (en) * 2013-03-15 2022-01-25 Yottaa, Inc. Systems and methods for configuration-based optimization by an intermediary
US9710469B2 (en) * 2013-03-15 2017-07-18 Comcast Cable Communications, Llc Efficient data distribution to multiple devices
US9432427B2 (en) * 2013-07-25 2016-08-30 Futurewei Technologies, Inc. System and method for effectively controlling client behavior in adaptive streaming
KR20150029913A (ko) * 2013-09-11 2015-03-19 한국전자통신연구원 청크 단위로 콘텐트를 전달하는 콘텐트 시스템 및 방법
EP3105903B1 (en) * 2014-02-13 2019-08-07 Koninklijke KPN N.V. Requesting multiple chunks from a network node on the basis of a single request message
US10423481B2 (en) * 2014-03-14 2019-09-24 Cisco Technology, Inc. Reconciling redundant copies of media content
US9483780B2 (en) * 2014-03-27 2016-11-01 Google Inc. Providing content using integrated objects
FR3019428A1 (fr) * 2014-03-31 2015-10-02 Orange Dispositif et procede de commande a distance de la restitution de contenus multimedia
WO2016057188A1 (en) * 2014-10-09 2016-04-14 Wrap Media, LLC Active receipt wrapped packages accompanying the sale of products and/or services
US11303691B2 (en) * 2015-02-02 2022-04-12 Vmware, Inc. Streaming progress updates and results of rest API operations
US10223136B2 (en) * 2016-09-30 2019-03-05 Salesforce.Com, Inc. Generating content objects using an integrated development environment
US10157102B2 (en) * 2016-12-29 2018-12-18 Whatsapp Inc. Techniques to scan and reorganize media files to remove gaps
US10999391B2 (en) * 2017-10-30 2021-05-04 Sony Interactive Entertainment LLC Dynamic filtering and amelioration of content stream manifests

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004287631A (ja) * 2003-03-20 2004-10-14 Konami Co Ltd ダウンロードサービスシステム、端末、指令列の実行方法、ならびに、プログラム
JP2014123355A (ja) * 2012-12-19 2014-07-03 Hon Hai Precision Industry Co Ltd データエンコード伝送システム及びその方法
US9282145B2 (en) * 2013-09-20 2016-03-08 Yottaa Inc. Systems and methods for managing loading priority or sequencing of fragments of a web object
US10178147B1 (en) * 2014-01-02 2019-01-08 Instart Logic, Inc. Client-side location address translation
JP2018113645A (ja) * 2017-01-13 2018-07-19 富士通株式会社 通信装置、通信システム、通信方法、および、通信プログラム

Also Published As

Publication number Publication date
DE202019005788U1 (de) 2022-01-31
EP3854036A1 (en) 2021-07-28
WO2020061373A1 (en) 2020-03-26
US20200089779A1 (en) 2020-03-19
US20230021023A1 (en) 2023-01-19
BR112021004736A8 (pt) 2022-11-22
BR112021004736A2 (pt) 2021-06-01
CN112913195A (zh) 2021-06-04
JP7217342B2 (ja) 2023-02-02
KR20210089145A (ko) 2021-07-15

Similar Documents

Publication Publication Date Title
US11533356B2 (en) Establishing a trust association
US10122663B2 (en) Proxy email server for routing messages
US9509644B2 (en) System and method for sharing content in an instant messaging application
US20170308251A1 (en) User Interface with Media Wheel Facilitating Viewing of Media Objects
US20190266207A1 (en) Selective Presentation Of Content Types And Sources In Search
US9063972B1 (en) Increasing user retention and re-engagement in social networking services
AU2010315627A1 (en) Mechanism for adding content from a search to a document or message
US20230021023A1 (en) Progressive api responses
US8972402B1 (en) Ranking users and posts in social networking services
KR102206494B1 (ko) 내장된 미디어에 관련하여 부가 콘텐트를 제공
US10785183B2 (en) Composing social media messages referencing multiple messages
US9160800B1 (en) Integrating web services with a content item
US9256343B1 (en) Dynamically modifying an electronic article based on commentary
US9503411B1 (en) Ranking posts based on a prioritized list of recipients
US20190095542A1 (en) Method and system of dynamic website creation through url parameter analysis
JP2022504271A (ja) クライアントソフトウェアバックオフ

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210405

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210405

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220627

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220810

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20221223

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230123

R150 Certificate of patent or registration of utility model

Ref document number: 7217342

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150