IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ▲騰▼▲訊▼科技(深▲セン▼)有限公司の特許一覧

特表2024-544647データ処理方法、装置、機器、及びコンピュータプログラム
<>
  • 特表-データ処理方法、装置、機器、及びコンピュータプログラム 図1
  • 特表-データ処理方法、装置、機器、及びコンピュータプログラム 図2
  • 特表-データ処理方法、装置、機器、及びコンピュータプログラム 図3
  • 特表-データ処理方法、装置、機器、及びコンピュータプログラム 図4
  • 特表-データ処理方法、装置、機器、及びコンピュータプログラム 図5
  • 特表-データ処理方法、装置、機器、及びコンピュータプログラム 図6
  • 特表-データ処理方法、装置、機器、及びコンピュータプログラム 図7
  • 特表-データ処理方法、装置、機器、及びコンピュータプログラム 図8
  • 特表-データ処理方法、装置、機器、及びコンピュータプログラム 図9
  • 特表-データ処理方法、装置、機器、及びコンピュータプログラム 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-12-03
(54)【発明の名称】データ処理方法、装置、機器、及びコンピュータプログラム
(51)【国際特許分類】
   G06F 8/38 20180101AFI20241126BHJP
   G06F 9/451 20180101ALI20241126BHJP
【FI】
G06F8/38
G06F9/451
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024532534
(86)(22)【出願日】2023-05-06
(85)【翻訳文提出日】2024-05-30
(86)【国際出願番号】 CN2023092457
(87)【国際公開番号】W WO2024021743
(87)【国際公開日】2024-02-01
(31)【優先権主張番号】202210893349.7
(32)【優先日】2022-07-27
(33)【優先権主張国・地域又は機関】CN
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.ANDROID
2.JAVASCRIPT
3.PYTHON
4.iOS
5.FLUTTER
(71)【出願人】
【識別番号】517392436
【氏名又は名称】▲騰▼▲訊▼科技(深▲セン▼)有限公司
【氏名又は名称原語表記】TENCENT TECHNOLOGY (SHENZHEN) COMPANY LIMITED
【住所又は居所原語表記】35/F,Tencent Building,Kejizhongyi Road,Midwest District of Hi-tech Park,Nanshan District, Shenzhen,Guangdong 518057,CHINA
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100150197
【弁理士】
【氏名又は名称】松尾 直樹
(72)【発明者】
【氏名】黄 ▲為▼▲偉▼
(72)【発明者】
【氏名】黄 思程
(72)【発明者】
【氏名】▲孫▼ ▲広▼▲東▼
(72)【発明者】
【氏名】▲鄭▼ ▲樹▼▲誠▼
(72)【発明者】
【氏名】▲鐘▼ 霆融
(72)【発明者】
【氏名】黄 ▲寧▼源
(72)【発明者】
【氏名】李 ▲順▼
(72)【発明者】
【氏名】▲劉▼ 卓旻
(72)【発明者】
【氏名】朱 斌
(72)【発明者】
【氏名】李 伯坤
(72)【発明者】
【氏名】黄 ▲燦▼▲輝▼
(72)【発明者】
【氏名】▲馮▼ 科棉
(72)【発明者】
【氏名】余 朝忠
(72)【発明者】
【氏名】古 思▲シン▼
(72)【発明者】
【氏名】卓 ▲偉▼
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AC13
5B376BC21
(57)【要約】
本願の実施例は、データ処理方法、装置、機器、及び読み取り可能な記憶媒体を開示し、方法は、サブプログラムアプリケーションに対するインタラクション操作に応答して、インタラクション操作が指示するインターフェースレンダリング指令を生成するステップであって、前記インターフェースレンダリング指令は、前記インタラクション操作に対応するインタラクションインターフェースをレンダリングすることに用いられる、ステップと、もしインターフェースレンダリング指令が指示するレンダリングフレームワークがモバイルアプリケーションプログラム開発フレームワークであるなら、第1通信ポートによってインターフェースレンダリング指令をサブプログラムアプリケーションの実行環境まで送信するステップと、実行環境において、インターフェースレンダリング指令に基づいて第2通信ポートを呼び出し、第2通信ポートによってモバイルアプリケーションプログラム開発フレームワークを呼び出し、モバイルアプリケーションプログラム開発フレームワークに基づいてインタラクション操作に対応するインタラクションインターフェースをレンダリングするステップであって、第2通信ポートは、第2プログラム言語と第3プログラム言語との間の通信ポートであり、第3プログラム言語は、モバイルアプリケーションプログラム開発フレームワークが対応する開発言語である、ステップと、インタラクションインターフェースを出力するステップと、を含む。
【特許請求の範囲】
【請求項1】
コンピュータ機器により実行される、データ処理方法であって、
サブプログラムアプリケーションに対するインタラクション操作に応答して、前記インタラクション操作が指示するインターフェースレンダリング指令を生成するステップであって、前記インターフェースレンダリング指令は、前記インタラクション操作に対応するインタラクションインターフェースをレンダリングすることに用いられる、ステップと、
もし前記インターフェースレンダリング指令が指示するレンダリングフレームワークがモバイルアプリケーションプログラム開発フレームワークであるなら、第1通信ポートによって前記インターフェースレンダリング指令を前記サブプログラムアプリケーションの実行環境まで送信するステップであって、前記サブプログラムアプリケーションの実行環境は、ネイティブアプリケーションの実行環境であり、前記ネイティブアプリケーションは、前記サブプログラムアプリケーションのホストアプリケーションであり、前記第1通信ポートは、第1プログラム言語と第2プログラム言語との間の通信ポートであり、前記第1プログラム言語は、前記インターフェースレンダリング指令が対応するプログラム言語を指し、前記第2プログラム言語は、前記ネイティブアプリケーションが対応するプログラム言語を指し、前記モバイルアプリケーションプログラム開発フレームワークは、ネイティブオペレーティングシステム上でネイティブインタラクションインターフェースを構築することに用いられる、ステップと、
前記実行環境において、前記インターフェースレンダリング指令に基づいて第2通信ポートを呼び出し、前記第2通信ポートによって前記モバイルアプリケーションプログラム開発フレームワークを呼び出し、前記モバイルアプリケーションプログラム開発フレームワークに基づいて前記インタラクション操作に対応するインタラクションインターフェースをレンダリングし、前記第2通信ポートは、前記第2プログラム言語と第3プログラム言語との間の通信ポートであり、前記第3プログラム言語は、前記モバイルアプリケーションプログラム開発フレームワークが対応する開発言語である、ステップと、
前記インタラクションインターフェースを出力するステップと、を含む、データ処理方法。
【請求項2】
サブプログラムアプリケーションに対するインタラクション操作に応答して、前記インタラクション操作が指示するインターフェースレンダリング指令を生成するステップは、
前記サブプログラムアプリケーションに対するインタラクション操作に応答して、前記サブプログラムアプリケーションのページレンダリングテンプレートファイルを取得するステップと、
テンプレートパーサーを呼び出し、前記テンプレートパーサーに基づいて前記ページレンダリングテンプレートファイルに対して解析を行って第1解析結果を得て、前記第1解析結果に基づいて前記インタラクション操作が対応するスタイルシャドウ構造ツリーを生成するステップであって、前記スタイルシャドウ構造ツリーは、N個のシャドウノードで構成され、各々のシャドウノードは、1つのページ要素の要素カプセル化情報を含み、Nは、正の整数であり、前記ページ要素は、前記インタラクションインターフェースを構築することに用いられる要素を指す、ステップと、
前記スタイルシャドウ構造ツリーを含むレンダリング指令を生成し、前記スタイルシャドウ構造ツリーを含むレンダリング指令を前記インタラクション操作が指示するインターフェースレンダリング指令として決定するステップと、を含む、請求項1に記載の方法。
【請求項3】
前記実行環境において、前記インターフェースレンダリング指令に基づいて前記インタラクション操作に対応するページ要素構造ツリーを作成するステップであって、前記ページ要素構造ツリーはN個の要素ノードで構成され、1つの要素ノードは1つのページ要素に対応し、各々の要素ノードは、要素ノードに対応するページ要素のスタイル記述データを記述することに用いられる要素記述データを含み、前記ページ要素は、前記インタラクションインターフェースを構築することに用いられる要素を指す、ステップと、
前記ページ要素構造ツリー作成の完了に応答して、前記実行環境において、前記インターフェースレンダリング指令に基づいて第2通信ポートを呼び出すステップを実行するステップと、をさらに含む、請求項1に記載の方法。
【請求項4】
前記インターフェースレンダリング指令は、前記インタラクション操作が対応するスタイルシャドウ構造ツリーを含み、前記スタイルシャドウ構造ツリーは、N個のシャドウノードで構成され、各々のシャドウノードは、1つのページ要素の要素カプセル化情報を含み、
前記実行環境において、前記インターフェースレンダリング指令に基づいて前記インタラクション操作に対応するページ要素構造ツリーを作成するステップは、
スタイルルール集合を取得するステップであって、前記スタイルルール集合は、各々のページ構成要素にそれぞれ対応する要素スタイルルールを含み、前記ページ構成要素は、前記サブプログラムアプリケーションのアプリケーションインターフェースを構成することに用いられる構成要素を指し、前記アプリケーションインターフェースは、前記インタラクションインターフェースを含む、ステップと、
N個のシャドウノードのうちの各々のシャドウノードSに対して、以下の操作を実行するステップであって、前記シャドウノードSに含まれる要素カプセル化情報は、要素カプセル化情報Kであり、Nとiのいずれも正の整数であり、前記操作は、
前記スタイルルール集合において、前記要素カプセル化情報Kにマッチングする要素スタイルルールを決定し、前記マッチングする要素スタイルルールを前記シャドウノードSに対応するノード要素スタイルとして決定する操作と、
スタイル変換ルールに従って、前記シャドウノードSに対応するノード要素スタイルを変換し、シャドウノードSに対応する要素記述データを得る操作と、を含む、ステップと、
前記N個のシャドウノードにそれぞれ対応する要素記述データを決定したときに、各々のシャドウノードをすべて要素ノードとして決定し、対応する要素記述データを含むN個の要素ノードで構成される構造ツリーを、前記インタラクション操作に対応するページ要素構造ツリーとして決定するステップと、を含む、請求項3に記載の方法。
【請求項5】
スタイルルール集合を取得するステップは、
ページスタイル構成表を取得するステップであって、前記ページスタイル構成表は、前記各々のページ構成要素の属性定義情報を含む、ステップと、
スタイルパーサーを呼び出し、前記スタイルパーサーに基づいて、前記ページスタイル構成表中に含まれる属性定義情報に対して解析を行って第2解析結果を得て、前記第2解析結果に基づいて前記スタイルルール集合を生成するステップと、を含む、請求項4に記載の方法。
【請求項6】
前記要素カプセル化情報Kは、前記シャドウノードSのノードカテゴリ情報を含み、前記スタイルルール集合中に含まれる各々のページ構成要素にそれぞれ対応する要素スタイルルールは、構成カテゴリ情報を含み、
前記スタイルルール集合において、前記要素カプセル化情報Kにマッチングする要素スタイルルールを決定することは、
スタイルルール集合中の各要素スタイルルールが含む構成カテゴリ情報のうち、前記シャドウノードSのノードカテゴリ情報にマッチングする構成カテゴリ情報をマッチングする構成カテゴリ情報として決定するステップと、
前記スタイルルール集合中の前記マッチングする構成カテゴリ情報が対応する要素スタイルルールを、前記シャドウノードSの候補要素スタイルルールとして決定するステップと、
前記候補要素スタイルルールに基づき、前記要素カプセル化情報Kにマッチングする前記要素スタイルルールを決定するステップと、を含む、請求項4に記載の方法。
【請求項7】
前記候補要素スタイルルールの数は、少なくとも2つであり、
前記候補要素スタイルルールに基づき、前記要素カプセル化情報Kにマッチングする前記要素スタイルルールを決定するステップは、
前記少なくとも2つの候補要素スタイルルールのうちの各々の候補要素スタイルルールCに対して、jは正の整数であり、以下の操作を実行するステップであって、前記操作は、
前記候補要素スタイルルールCに対応するスタイル優先度属性Dを取得する操作と、
前記スタイル優先度属性Dに基づき、前記候補要素スタイルルールCに対応する優先度重みを決定する操作と、を含む、ステップと、
前記少なくとも2つの候補要素スタイルルールにそれぞれ対応する優先度重みを決定したときに、少なくとも2つ優先度重みのうちの最大優先度重みが対応する候補要素スタイルルールを、前記要素カプセル化情報Kにマッチングする前記要素スタイルルールとして決定するステップと、を含む、請求項6に記載の方法。
【請求項8】
前記スタイル優先度属性Dは、価値属性、及びレア属性を含み、
前記スタイル優先度属性Dに基づき、前記候補要素スタイルルールCに対応する優先度重みを決定する前記ステップは、
前記レア属性に対応するレア値を取得するステップと、
もし前記価値属性が価値有効属性であり、かつ前記レア値がレア閾値よりも大きいなら、第1重み区間中の前記レア値にマッチングする第1重み値を、前記候補要素スタイルルールCに対応する優先度重みとして決定するステップと、
もし前記価値属性が価値有効属性であり、かつ前記レア値が前記レア閾値よりも小さいなら、第2重み区間中の前記レア値にマッチングする第2重み値を、前記候補要素スタイルルールCに対応する優先度重みとして決定するステップであって、前記第2重み区間中の重み値は、前記第1重み区間中の重み値よりも小さい、ステップと、
もし前記価値属性が価値無効属性であり、かつ前記レア値がレア閾値よりも大きいなら、第3重み区間中の前記レア値にマッチングする第3重み値を、前記候補要素スタイルルールCに対応する優先度重みとして決定するステップであって、前記第3重み区間中の重み値は、前記第2重み区間中の重み値よりも小さい、ステップと、
もし前記価値属性が価値無効属性であり、かつ前記レア値がレア閾値よりも小さいなら、第4重み区間中の前記レア値にマッチングする第4重み値を、前記候補要素スタイルルールCに対応する優先度重みとして決定するステップであって、前記第4重み区間中の重み値は、前記第3重み区間中の重み値よりも小さい、ステップと、を含む、請求項7に記載の方法。
【請求項9】
前記モバイルアプリケーションプログラム開発フレームワークに基づいて前記インタラクション操作に対応するインタラクションインターフェースをレンダリングすることは、
前記N個の要素ノードのうちの各々の要素ノードSに対して、以下の操作を実行するステップであって、前記操作は、
前記第2通信ポートに基づいて、前記第3プログラム言語の分離された動作環境において前記要素ノードSに対応するプログラムオブジェクトを作成する操作と、
前記要素ノードSに対応するプログラムオブジェクトに基づいて、前記要素ノードSに対応する要素記述データに対してマウント操作処理を行い、前記要素ノードSに対応するマウントオブジェクトを得る操作と、を含む、ステップと、
前記N個の要素ノードにそれぞれ対応するマウントオブジェクトを決定したときに、対応するマウントオブジェクトを含むN個の要素ノードで構成される構造ツリーを、前記インタラクション操作に対応する要素マウント構造ツリーとして決定するステップと、
前記モバイルアプリケーションプログラム開発フレームワークに基づいて、前記要素マウント構造ツリーに対してレンダリング処理を行い、前記インタラクションインターフェースを得るステップと、を含む、請求項4に記載の方法。
【請求項10】
前記モバイルアプリケーションプログラム開発フレームワークに基づいて、前記要素マウント構造ツリーに対してレンダリング処理を行い、前記インタラクションインターフェースを得るステップは、
前記モバイルアプリケーションプログラム開発フレームワークに基づいて、前記要素マウント構造ツリーに対してインターフェースレイアウト処理を行い、前記インタラクションインターフェースのインタラクションインターフェースレイアウト情報を得るステップと、
前記インタラクションインターフェースレイアウト情報に従ってインターフェース描画を行い、描画インターフェースを得て、前記描画インターフェースを前記インタラクションインターフェースとして決定するステップと、を含む、請求項9に記載の方法。
【請求項11】
前記インタラクションインターフェースを出力するステップは、
前記インタラクションインターフェースにラスタライゼーション処理を行って、ラスタライズ処理インターフェースを得るステップと、
前記ラスタライズ処理インターフェースを出力するステップと、を含む、請求項1に記載の方法。
【請求項12】
前記サブプログラムアプリケーションのメインレンダリングスレッドは、開発ロジックサブスレッドとインターフェースレンダリングサブスレッドとを含み、前記インタラクション操作が指示するインターフェースレンダリング指令を生成するステップ、及び前記実行環境において、前記インターフェースレンダリング指令に基づいて前記インタラクション操作に対応するページ要素構造ツリーを作成するステップは、いずれも前記開発ロジックサブスレッドにおいて実行され、前記実行環境において、前記インターフェースレンダリング指令に基づいて第2通信ポートを呼び出し、前記第2通信ポートによって前記モバイルアプリケーションプログラム開発フレームワークを呼び出し、前記モバイルアプリケーションプログラム開発フレームワークに基づいて前記インタラクション操作に対応するインタラクションインターフェースをレンダリングすることは、前記インターフェースレンダリングサブスレッドにおいて実行される、請求項1~3のいずれか1項に記載の方法。
【請求項13】
データ処理装置であって、
指令生成モジュールと、指令送信モジュールと、ポート呼び出しモジュールと、インターフェースレンダリングモジュールと、インターフェース出力モジュールと、を含み、
前記指令生成モジュールは、サブプログラムアプリケーションに対するインタラクション操作に応答して、前記インタラクション操作が指示するインターフェースレンダリング指令を生成することに用いられ、前記インターフェースレンダリング指令は、前記インタラクション操作に対応するインタラクションインターフェースをレンダリングすることに用いられ、
前記指令送信モジュールは、もし前記インターフェースレンダリング指令が指示するレンダリングフレームワークがモバイルアプリケーションプログラム開発フレームワークであるなら、第1通信ポートによって前記インターフェースレンダリング指令を前記サブプログラムアプリケーションの実行環境まで送信し、前記サブプログラムアプリケーションの実行環境は、ネイティブアプリケーションの実行環境であり、前記ネイティブアプリケーションは、前記サブプログラムアプリケーションのホストアプリケーションであり、前記第1通信ポートは、第1プログラム言語と第2プログラム言語との間の通信ポートであり、前記第1プログラム言語は、前記インターフェースレンダリング指令が対応するプログラム言語を指し、前記第2プログラム言語は、前記ネイティブアプリケーションが対応するプログラム言語を指し、
前記ポート呼び出しモジュールは、前記実行環境において、前記インターフェースレンダリング指令に基づいて第2通信ポートを呼び出すことに用いられ、
前記インターフェースレンダリングモジュールは、前記第2通信ポートによって前記モバイルアプリケーションプログラム開発フレームワークを呼び出し、前記モバイルアプリケーションプログラム開発フレームワークに基づいて前記インタラクション操作に対応するインタラクションインターフェースをレンダリングすることに用いられ、前記第2通信ポートは、前記第2プログラム言語と第3プログラム言語との間の通信ポートであり、前記第3プログラム言語は、前記モバイルアプリケーションプログラム開発フレームワークが対応する開発言語であり、
前記インターフェース出力モジュールは、前記インタラクションインターフェースを出力することに用いられる、データ処理装置。
【請求項14】
コンピュータ機器であって、プロセッサと、メモリと、ネットワークポートと、を含み、
前記プロセッサは、前記メモリ、及び前記ネットワークポートに連結され、前記ネットワークポートは、ネットワーク通信機能を提供することに用いられ、前記メモリは、コンピュータプログラムを記憶することに用いられ、前記プロセッサは、前記コンピュータプログラムを呼び出すことで、前記コンピュータ機器に請求項1~12のいずれか1項に記載の方法を実行させることに用いられる、コンピュータ機器。
【請求項15】
コンピュータ読み取り可能な記憶媒体であって、前記コンピュータ読み取り可能な記憶媒体中にコンピュータプログラムが記憶されており、前記コンピュータプログラムは、プロセッサでロードされ、且つ請求項1~12のいずれか1項に記載の方法を実行するのに適している、コンピュータ読み取り可能な記憶媒体。
【請求項16】
コンピュータプログラム製品であって、前記コンピュータプログラム製品は、コンピュータプログラムを含み、前記コンピュータプログラムは、コンピュータ読み取り可能な記憶媒体中に記憶され、前記コンピュータプログラムは、プロセッサで読み取られ且つ実行されることで、前記プロセッサを有するコンピュータ機器に請求項1~12のいずれか1項に記載の方法を実行させるのに適している、コンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、2022年7月27日に中国特許庁に提出された、出願番号が第202210893349.7号、発明の名称が「データ処理方法、装置、機器、及び読み取り可能な記憶媒体」である中国特許出願の優先権を主張しており、その全部の内容は、引用によって本願に組み込まれている。
【0002】
本願は、コンピュータの技術分野に関し、特に、データ処理方法、装置、機器、及び読み取り可能な記憶媒体に関する。
【背景技術】
【0003】
コンピュータ技術の持続的な発展に伴い、多種多様なアプリケーションプログラム(Application、APP)が、次々と登場しており、これらのアプリケーションプログラムについて、応用するためにはスマート端末機器(例えば、スマートフォン)上にAPPをインストールする必要がある。しかし、スマート端末機器上に大量のAPPをインストールすると、大量の内部メモリが占有されることになり、スマート端末機器の動作に影響する可能性が非常に高くなる。
【0004】
上記の課題に基づいて、サブプログラムアプリケーション(例えば、ミニプログラムアプリケーション)が、時代の要請に応じて登場した。サブプログラムアプリケーションは、ダウンロードしてインストールすることを必要とせずに使用することができる1種のアプリケーションである。現在、サブプログラムアプリケーションの使用がますます広く行われるに伴い、サブプログラムアプリケーションについての要件もますます高くなっている。例えば、サブプログラムアプリケーションの表示ページの品質についての要求がますます高くなっている。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本願の実施例は、データ処理方法、装置、機器、及び読み取り可能な記憶媒体を提供し、サブプログラムアプリケーションのレンダリング業務においてレンダリング効率を高めると同時に、レンダリング品質を向上させることができる。
【課題を解決するための手段】
【0006】
本願の実施例は、データ処理方法を提供し、
サブプログラムアプリケーションに対するインタラクション操作に応答して、インタラクション操作が指示するインターフェースレンダリング指令を生成するステップであって、前記インターフェースレンダリング指令は、前記インタラクション操作に対応するインタラクションインターフェースをレンダリングすることに用いられる、ステップと、
もしインターフェースレンダリング指令が指示するレンダリングフレームワークがモバイルアプリケーションプログラム開発フレームワークであるなら、第1通信ポートによってインターフェースレンダリング指令をサブプログラムアプリケーションの実行環境まで送信するステップであって、前記サブプログラムアプリケーションの実行環境は、ネイティブアプリケーションの実行環境であり、ネイティブアプリケーションは、サブプログラムアプリケーションのホストアプリケーションであり、第1通信ポートは、第1プログラム言語と第2プログラム言語との間の通信ポートであり、第1プログラム言語は、インターフェースレンダリング指令が対応するプログラム言語を指し、第2プログラム言語は、ネイティブアプリケーションが対応するプログラム言語を指し、モバイルアプリケーションプログラム開発フレームワークは、ネイティブオペレーティングシステム上でネイティブインタラクションインターフェースを構築することに用いられる、ステップと、
実行環境において、インターフェースレンダリング指令に基づいて第2通信ポートを呼び出し、第2通信ポートによってモバイルアプリケーションプログラム開発フレームワークを呼び出し、モバイルアプリケーションプログラム開発フレームワークに基づいてインタラクション操作に対応するインタラクションインターフェースをレンダリングするステップであって、第2通信ポートは、第2プログラム言語と第3プログラム言語との間の通信ポートであり、第3プログラム言語は、モバイルアプリケーションプログラム開発フレームワークが対応する開発言語である、ステップと、
インタラクションインターフェースを出力するステップと、を含む。
【0007】
本願の実施例は、データ処理装置をさらに提供し、指令生成モジュールと、指令送信モジュールと、ポート呼び出しモジュールと、フレームワーク呼び出しモジュールと、インターフェースレンダリングモジュールと、インターフェース出力モジュールと、を含み、
前記指令生成モジュールは、サブプログラムアプリケーションに対するインタラクション操作に応答して、インタラクション操作が指示するインターフェースレンダリング指令を生成することに用いられ、前記インターフェースレンダリング指令は、前記インタラクション操作に対応するインタラクションインターフェースをレンダリングすることに用いられ、
前記指令送信モジュールは、もしインターフェースレンダリング指令が指示するレンダリングフレームワークがモバイルアプリケーションプログラム開発フレームワークであるなら、第1通信ポートによってインターフェースレンダリング指令をサブプログラムアプリケーションの実行環境まで送信することに用いられ、前記サブプログラムアプリケーションの実行環境は、ネイティブアプリケーションの実行環境であり、ネイティブアプリケーションは、サブプログラムアプリケーションのホストアプリケーションであり、第1通信ポートは、第1プログラム言語と第2プログラム言語との間の通信ポートであり、第1プログラム言語は、インターフェースレンダリング指令が対応するプログラム言語を指し、第2プログラム言語は、ネイティブアプリケーションが対応するプログラム言語を指し、
前記ポート呼び出しモジュールは、実行環境において、インターフェースレンダリング指令に基づいて第2通信ポートを呼び出すことに用いられ、
前記フレームワーク呼び出しモジュールは、第2通信ポートによってモバイルアプリケーションプログラム開発フレームワークを呼び出すことに用いられ、第2通信ポートは、第2プログラム言語と第3プログラム言語との間の通信ポートであり、第3プログラム言語は、モバイルアプリケーションプログラム開発フレームワークが対応する開発言語であり、
前記インターフェースレンダリングモジュールは、モバイルアプリケーションプログラム開発フレームワークに基づいてインタラクション操作に対応するインタラクションインターフェースをレンダリングすることに用いられ、
前記インターフェース出力モジュールは、インタラクションインターフェースを出力することに用いられる。
【0008】
本願の実施例は、コンピュータ機器をさらに提供し、プロセッサと、メモリとを含み、
メモリにコンピュータプログラムが記憶されており、コンピュータプログラムは、プロセッサにより実行されるときに、プロセッサに本願の実施例における方法を実行させる。
【0009】
本願の実施例は、コンピュータ読み取り可能な記憶媒体をさらに提供し、コンピュータ読み取り可能な記憶媒体は、コンピュータプログラムを記憶しており、コンピュータプログラムは、プログラム指令を含み、プログラム指令は、プロセッサにより実行されるときに、本願の実施例における方法を実行する。
【0010】
本願の実施例は、コンピュータプログラム製品をさらに提供し、該コンピュータプログラム製品は、コンピュータプログラムを含み、該コンピュータプログラムは、コンピュータ読み取り可能な記憶媒体中に記憶される。コンピュータ機器のプロセッサは、コンピュータ読み取り可能な記憶媒体から該コンピュータプログラムを読み取り、プロセッサは、該コンピュータプログラムを実行して、該コンピュータ機器に本願の実施例における方法を実行させる。
【図面の簡単な説明】
【0011】
図1】本願の実施例が提供するネットワークアーキテクチャ図である。
図2】本願の実施例が提供するサブプログラムアプリケーションに対してインターフェースレンダリングを行うシーン模式図である。
図3】本願の実施例が提供するデータ処理方法のフロー模式図である。
図4】本願の実施例が提供する構造ツリーの生成のフロー模式図である。
図5】本願の実施例が提供する異言語通信のアーキテクチャ図である。
図6】本願の実施例が提供するレンダリングスレッドのフレームワークの模式図である。
図7】本願の実施例が提供するロジックサブスレッド、及びレンダリングサブスレッドのスレッドアーキテクチャ図である。
図8】本願の実施例が提供するサブプログラムアプリケーションに対してレンダリングを行うロジックフロー模式図である。
図9】本願の実施例が提供するデータ処理装置の構造模式図である。
図10】本願の実施例が提供するコンピュータ機器の構造模式図である。
【発明を実施するための形態】
【0012】
以下、本願の実施例における図面と併せて、本願の実施例における技術的解決手段について明確で完全に記述する。もちろん、記述される実施例は、本願の一部の実施例に過ぎず、全部の実施例ではない。本願における実施例に基づいて、当業者が創造的な努力を行わない前提の下で獲得するすべての他の実施例は、いずれも本願が保護する範囲に属する。
【0013】
サブプログラムアプリケーション(例えば、ミニプログラムアプリケーション)の現在のレンダリング業務において、採用されるレンダリングエンジンには、レンダリング工程が比較的長く、内部メモリが比較的大きく占有されるという課題が存在する。これは、レンダリング効率が低下するという課題をもたらすだけではなく、同時にスマート端末機器においてレンダリングにより得られた表示ページを表示するときに、表示されるページの品質が依然として品質の要件を満たすことができず、品質が十分に高くないという課題を招いている。
【0014】
本願の実施例が提供する解決手段は、ネイティブアプリケーションやサブプログラムアプリケーションなどの関連する技術的概念に関し、理解を容易にするために、以下、ネイティブアプリケーションやサブプログラムアプリケーションなどの関連する技術的概念について優先的に述べる。
【0015】
サブプログラムアプリケーション:ダウンロードしてインストールすることを必要とせずに使用することができる1種のアプリケーションであり、サブプログラムアプリケーションは、ダウンロードしてインストールすることを必要とせずにネイティブアプリケーションと同様な機能を実現することができる。サブプログラムアプリケーションは、他のプログラムにより呼び出されることが可能であり、ある機能を実現した後に、サブプログラムアプリケーションは、自動的に呼び出しプログラムに戻ることになる。通常の場合、これは、別のネイティブアプリケーション内に寄生して動作することができ、該サブプログラムアプリケーションがあるネイティブアプリケーション内に寄生して動作するときに、寄生されるこのネイティブアプリケーションは、該サブプログラムアプリケーションのホストアプリケーションと呼ばれてもよい。例示的には、ホストアプリケーションは、独立して動作するソーシャルアプリケーション(例えば、インスタントメッセージングアプリケーション)であってもよいが、これに限定されるものではなく、ミニプログラムアプリケーションは、サブプログラムアプリケーションのうちの1種であってもよい。例えば、ネイティブアプリケーション内にホスティングされるショッピングアプリケーション、リアルタイム料理注文アプリケーションなどのミニプログラムアプリケーションは、いずれもサブプログラムアプリケーションとしてもよい。
【0016】
ネイティブアプリケーション:ネイティブの解決手段又は技術であり、現在のオペレーティングシステム(例えば、iOSオペレーティングシステム、androidオペレーティングシステムなど)で直接動作するアプリケーションプログラムを指してもよい。例示的には、ネイティブアプリケーションは、独立して動作するオーディオ・ビデオアプリケーション、ソーシャルアプリケーションやショッピングアプリケーションなどであってもよいが、これらに限定されるものではない。
【0017】
理解すべき点として、サブプログラムアプリケーションの使用範囲がますます広くなっているため、サブプログラムアプリケーションに対しての要求もますます高くなっている。例示的には、サブプログラムアプリケーションが日々発展するに伴い、ミニプログラムアプリケーションの表示ページのレンダリング品質についてのユーザの要求がますます高くなり、ミニプログラムアプリケーションのレンダリング品質がネイティブに相当し得ることが要求されている。一方、ミニプログラムアプリケーションを含むこれらのサブプログラムアプリケーションのレンダリング品質を向上させるために、本願の実施例は、データ処理方法を提案しており、具体的には、本願の実施例は、サブプログラムアプリケーションのレンダリング業務において、モバイルアプリケーションプログラム開発フレームワークを導入し、モバイルアプリケーションプログラム開発フレームワークによってサブプログラムアプリケーションのインターフェースに対してレンダリングを行うことを可能にする。ここで、ここでのモバイルアプリケーションプログラム開発フレームワークは、Flutterフレームワークを指してもよく、理解を容易にするために、以下、Flutterフレームワークについて説明する。
【0018】
Flutterフレームワーク:Flutterフレームワークは、クロスプラットフォームモバイルUI(User Interface、ユーザインターフェース)フレームワークを指してもよく、これは、ネイティブオペレーティングシステム(例えば、iOS、androidシステム)上で高品質のネイティブユーザインターフェース(ネイティブユーザインターフェースは、ユーザとインタラクションを生じさせることに用いられるインターフェースを指してもよいため、ネイティブユーザインターフェースは、ネイティブインタラクションインターフェースと呼ばれてもよい。)を迅速に構築することができ、開発者は、Dart言語によってFlutterアプリケーション(ネイティブアプリケーション)を開発することができる。
【0019】
理解を容易にするために、図1に参照されるように、図1は、本願の実施例が提供するネットワークアーキテクチャ図である。図1に示すように、該ネットワークアーキテクチャは、業務サーバー1000と、端末機器クラスターとを含んでもよい。端末機器クラスターは、1つ又は複数の端末機器を含んでもよく、ここでは、端末機器の数に対して限定を行わない。図1に示すように、複数の端末機器は、端末機器100a、端末機器100b、端末機器100c、…、及び端末機器100nを含んでもよい。図1に示すように、端末機器100a、端末機器100b、端末機器100c、…、及び端末機器100nは、それぞれ業務サーバー1000とネットワーク接続を行うことができ、それにより、各々の端末機器は該ネットワークによって業務サーバー1000との間に接続されてデータインタラクションを行うことを容易にすることができる。
【0020】
理解できる点として、図1に示す各々の端末機器は、いずれもアプリケーションをインストールしていてもよく、該アプリケーションが各端末機器において動作するときに、それぞれ図1に示す業務サーバー1000との間でデータインタラクションを行って、業務サーバー1000が各々の端末機器からの業務データを受信することを可能にしてもよい。ここで、該アプリケーションは、文字、画像、オーディオ、及びビデオなどを表示するデータ情報機能を有するアプリケーションを含んでもよく、例示的には、該アプリケーションは、ソーシャルアプリケーション、教育アプリケーション、ビデオアプリケーション、及びエンターテイメントアプリケーションなどであってもよい。ここで、該アプリケーションは、独立したアプリケーションであってもよく、端末機器内にインストールされ、且つ端末機器の現在のオペレーティングシステムにおいて動作してもよく、該アプリケーションはまた、ネイティブアプリケーションと呼ばれてもよい。
【0021】
本願の実施例における端末機器は、スマートフォン、タブレットコンピュータ、ノート型コンピュータ、ラップトップコンピュータ、スマートテレビ、スマートスピーカー、デスクトップコンピュータ、スマートウォッチ、スマート車載、スマート音声インタラクション機器、スマート家電などマルチメディアデータ処理機能(例えば、ビデオデータ再生機能、音楽データ再生機能、テキストデータ再生機能)を持つマート端末を含んでもよいが、これらに限定されるものではない。例えば、図1に示す端末機器100aを例にすると、端末機器100a内には上記のアプリケーションが統合されていてもよく、このとき、端末機器100aは、該アプリケーションによって業務サーバー1000との間でデータインタラクションを行ってもよい。本願における業務サーバー1000は、これらのアプリケーションに基づき業務データを取得してもよく、例えば、業務サーバー1000は、ユーザのバインドアカウントによって業務データを取得してもよい。ここで、バインドアカウントは、ユーザがアプリケーションにおいてバインドするアカウントを指してもよく、ユーザは、それに対応するバインドアカウントによってアプリケーションにログインしたり、データをアップロードしたり、データを取得したりするなどをしてもよい。一方、業務サーバーは、そのバインドアカウントによってユーザのログイン状態、アップロードしたデータを取得したり、ユーザにデータを送信したりするなどをしてもよい。
【0022】
理解すべき点として、本願におけるアプリケーション(例えば、ソーシャルアプリケーション)は、あるサブプログラムアプリケーション(例えば、ミニプログラムアプリケーション)のホストアプリケーションとしてもよく、該サブプログラムアプリケーションは、該ホストアプリケーション内に寄生して動作してもよく、該サブプログラムアプリケーションがホストアプリケーションにおいて動作するときに、このとき、端末機器は、該ホストアプリケーションにおけるサブプログラムアプリケーションによって業務サーバー1000との間でデータインタラクションを行ってもよい。本願の実施例における業務サーバー1000は、これらのアプリケーション(ホストアプリケーション、サブプログラムアプリケーション)に基づき業務データを取得してもよく、例えば、業務サーバー1000は、ユーザのバインドアカウントによって業務データを取得してもよい。ここで、バインドアカウントは、ユーザがホストアプリケーションにおいてバインドするアカウントを指してもよく(又は、ユーザがサブプログラムアプリケーションにおいてバインドするアカウント)、ユーザは、これに対応するバインドアカウントによってアプリケーションにログインしたり、データをアップロードしたり、データを取得したりするなどをしてもよい。一方、業務サーバーは、そのバインドアカウントによってユーザのログイン状態、アップロードしたデータを取得したり、ユーザにデータを送信したりするなどをしてもよい。
【0023】
理解すべき点として、ユーザがサブプログラムアプリケーションにおいてインタラクション操作を生じさせるときに、端末機器は、該インタラクション操作を業務サーバー1000に送信してもよい。本願の実施例における業務サーバー1000は、レンダリングフレームワーク(上記のFlutterフレームワークを含む。)に基づいてインターフェースレンダリングを行って、該インタラクション操作に対応するインタラクションインターフェースを得た後に、該インタラクションインターフェースを端末機器に戻してもよい。一方、端末機器は、該インタラクションインターフェースを出力して表示してもよい。いくつかの実施例では、上記のレンダリングフレームワークは、グラフィックスレンダリング機能を実現することができる各種のアーキテクチャであってもよい。端末機器は、レンダリングフレームワークによって可視化アプリケーション(例えば、サブプログラムアプリケーション)のグラフィックスユーザインターフェースをスクリーン上に表示してもよい。具体的には、ユーザがサブプログラムアプリケーションにおいてインタラクション操作(例えば、サブプログラムアプリケーションの起動操作やある物品の詳細を調べる操作など)を生じさせるときに、端末機器は、サブプログラムアプリケーションに対するこのインタラクション操作に応答して、該インタラクション操作が指示するインターフェースレンダリング指令を生成してもよく、その後、端末機器は、該インターフェースレンダリング指令を業務サーバー1000まで送信してもよい。業務サーバー1000は、該インターフェースレンダリング指令中において指示するレンダリングフレームワークがどのようなフレームワークであるかを問い合わせてもよく、もし該インターフェースレンダリング指令が指示するレンダリングフレームワークが上記のモバイルアプリケーションプログラム開発フレームワーク(例えば、上記のFlutterフレームワーク)であるなら、業務サーバーは、第1通信ポートによって該インターフェースレンダリング指令をサブプログラムアプリケーションに対応する実行環境(ホストアプリケーションの実行環境として理解してもよい。実行環境は、ホストアプリケーションの開発プログラム言語の実行環境として理解してもよく、例示的には、もしホストアプリケーションがC/C++を採用して開発されるものであるなら、該ホストアプリケーションの実行環境は、C/C++の実行環境として理解してもよい。この場合、該サブプログラムアプリケーションの実行環境も、C/C++の実行環境として理解してもよい。)まで送信してもよい。ここで、上記の第1通信ポートは、サブプログラムアプリケーション(例えば、ミニプログラムアプリケーション)の開発プログラム言語(これは、第1プログラム言語と呼ばれてもよい。)とホストアプリケーションの開発プログラム言語(これは、第2プログラム言語と呼ばれてもよい。)との間の通信ポートとして理解してもよい。例示的には、サブプログラムアプリケーションがミニプログラムアプリケーションである場合を例にすると、もしミニプログラムアプリケーションを開発する第1プログラム言語がJavaScript、第2プログラム言語がC/C++であり、JavaScriptとC/C++との間では、JSBindingポートによって通信を行ってもよい(例えば、JavaScriptとC/C++との間では、JSBindingポートによって、互いの呼び出しを行ってもよい。)なら、該JSBindingポートは、上記の第1通信ポートとしてもよい。
【0024】
さらに、該実行環境において、上記のインターフェースレンダリング指令に基づいて第2通信ポートを呼び出してもよい。ここで、該第2通信ポートは、ホストアプリケーションの開発プログラム言語(これは、第2プログラム言語と呼ばれてもよい。)とモバイルアプリケーションプログラムフレームワークの開発プログラム言語(例えば、Flutterフレームワークの開発プログラム言語が挙げられ、これは、第3プログラム言語と呼ばれてもよい。)との間の通信ポートであってもよい。例示的には、もし第2プログラム言語がC/C++、第3プログラム言語がDartであり、C/C++とDartとの間では、ローカル拡張ポート(Native Extension、Dart API)、及びDart FFIという2つのネイティブC/C++と通信するポートによって通信を行ってもよい(例えば、DartとC/C++との間では、Dart API、又はDart FFIによって互いの呼び出しを行ってもよい。)なら、該Dart API、又はDart FFIは、上記の第2通信ポートとしてもよい。
【0025】
理解すべき点として、実行環境において、上記の第2通信ポートによって、上記のモバイルアプリケーションプログラム開発フレームワーク呼び出してもよく、該モバイルアプリケーションプログラム開発フレームワークに基づいて、該インタラクション操作が対応するインタラクションインターフェースをレンダリングすることができる。その後、業務サーバー1000は、該インタラクションインターフェースを端末機器まで戻してもよく、そうすると、端末機器は、端末表示インターフェース内に該インタラクションインターフェースを表示してもよい(すなわち、該インタラクションインターフェースを出力する。)。
【0026】
理解すべき点として、上記の2つのポート(第1通信ポートと第2通信ポート)によって、サブプログラムアプリケーション(例えば、ミニプログラムアプリケーション)のホストアプリケーションがサブプログラムアプリケーションとモバイルアプリケーションプログラム開発フレームワークとの間の通信のブリッジとなることを可能にし、それによって、通信のブリッジに基づいてサブプログラムアプリケーション中にモバイルアプリケーションプログラム開発フレームワーク(Flutterフレームワーク)を導入することができ、サブプログラムアプリケーションのレンダリング業務において、モバイルアプリケーションプログラム開発フレームワークを非常によく利用してレンダリングを行うことを可能にする。Flutterフレームワークのレンダリングフローが簡便であるため、サブプログラムアプリケーションのレンダリング効率を向上させることができ、同時に、Flutterフレームワークがネイティブユーザインターフェースを構築する能力を備えるため、Flutterフレームワークによってレンダリングされて得られたサブプログラムアプリケーションのインタラクションインターフェースは、その品質がネイティブ品質とはほぼ差がなく、かなり高い品質を備える。よって、モバイルアプリケーションプログラム開発フレームワークを導入することによって、サブプログラムアプリケーションのレンダリング業務において、レンダリング効率を高めると同時に、レンダリング品質を向上させることができる。
【0027】
理解できる点として、本願の実施例が提供する方法は、コンピュータ機器で実行されてもよく、コンピュータ機器は、端末機器、又は業務サーバーを含むが、これらに限定されるものではない。ここで、業務サーバーは、独立した物理サーバーであってもよく、複数の物理サーバーからなるサーバークラスター、又は分散式システムであってもよく、クラウドサービス、クラウドデータベース、クラウドコンピューティング、クラウド関数、クラウド記憶、ネットワークサービス、クラウド通信、ミドルウェアサービス、ドメイン名サービス、セキュリティサービス、CDN、及びビッグデータや人工知能プラットフォームなどの基本的なクラウドコンピューティングサービスを提供するクラウドサーバーであってもよい。
【0028】
ここで、ユーザ端末、及び業務サーバーは、有線又は無線通信方式によって直接又は間接的に接続されてもよく、本願はここで限定をしない。
【0029】
説明する必要がある点として、本願の具体的な実施形態では、ユーザ情報、ユーザデータなどのユーザに関連するデータ(例えば、上記のユーザのバインドアカウントやユーザがアップロードするデータなど)に関しては、ユーザが与える権限を取得した上で処理するものである。つまり、本願の実施例が具体的な製品、又は技術内に適用されるときに、ユーザの許可、又は同意を獲得する必要があり、かつ関連するデータの収集、使用や処理は、関連する国や地域の関連する法律規制や標準に遵守しなければならない。
【0030】
説明する必要がある点として、本願の実施例において、「Aに対応するB」、「Aに対応付けられるB」、又は「BはAに対応付けられる」、「Aに基づきBを決定する」のような記述に関しては、いずれも、AとBとは関連付けられていることを表すことができる。なお、Aに基づきBを決定するとは、Aのみに基づきBを決定することを意味するわけではなく、他の情報とともにAに基づきBを決定することを指してもよい。
【0031】
いくつかの実施例では、理解できる点として、上記のコンピュータ機器(例えば、上記の業務サーバー1000、端末機器100a、端末機器100bなど)は、1つの分散式システムにおける1つのノードであってもよい。ここで、該分散式システムは、ブロックチェーンシステムであってもよく、該ブロックチェーンシステムは、該複数のノードがネットワーク通信の形式によって接続されて形成された分散式システムであってもよい。ここで、ノードの間は、ピアツーピア(P2P、Peer To Peer)ネットワークを構成してもよく、P2Pプロトコルは、伝送制御プロトコル(TCP、Transmission Control Protocol)プロトコルの上で動作する1つのアプリケーションレイヤープロトコルである。分散式システムにおいて、任意の形式のコンピュータ機器、例えば業務サーバー、端末機器などの電子機器は、すべて該ピアツーピアネットワークに加入することによって、該ブロックチェーンシステムにおける1つのノードとなることができる。理解を容易にするために、以下、ブロックチェーンの概念について説明する。ブロックチェーンは、分散式データ記憶、ピアツーピア伝送、コンセンサスメカニズム、及び暗号化アルゴリズムなどのコンピュータ技術の1種の新しい応用モードであり、主に、データを時系列に整理し、且つ暗号化して台帳にし、これを改ざんや偽造ができないようにすることに用いられ、同時に、データの検証、記憶や更新を行うことができる。コンピュータ機器がブロックチェーンのノードであるときに、ブロックチェーンの改ざん不能特性や偽造防止特性のため、本願におけるデータ(例えば、ユーザがアップロードするデータ、レンダリングして得られたインタラクションインターフェースなど)に真正性、及び安全性を備えさせることができ、それによって、これらのデータに基づいて関連するデータ処理を行った後に得られた結果をより確実にすることができる。
【0032】
本願の実施例は、クラウド技術、人工知能、スマート交通、運転支援などを含むがこれらに限定されない各種のシーンに応用することができる。理解を容易にするために、図2に併せて参照されるように、図2は、本願の実施例が提供するサブプログラムアプリケーションに対してインターフェースレンダリングを行うシーン模式図である。ここで、図2に示す業務サーバーは、上記の業務サーバー1000であってもよく、かつ図2に示す端末機器Mは、上記の図1が対応する実施例の端末機器クラスターにおいて選定された任意の1つの端末機器であってもよく、例えば、該端末機器は、上記の端末機器100bであってもよい。
【0033】
ここで、本願の実施例は、サブプログラムアプリケーションがミニプログラムアプリケーションである場合を例として説明する。具体的には、本願の実施例は、ソーシャルアプリケーション(ネイティブアプリケーション)がゲームアプリケーション(ゲームアプリケーションは、ミニプログラムアプリケーションである。)のホストアプリケーションであり、ユーザがソーシャルアプリケーションによって該ゲームアプリケーションを起動して動作させることができる場合を例にする。図2に示すように、ユーザmがゲームアプリケーションを起動した後に、現在、ユーザmのゲームアプリケーションにおけるプレーヤーキャラクターがスカイダイビングの降下状態にあり、今のところ落下傘がまだ開いていないと仮定すると、ユーザmは、傘開きコントロールをクリックすることで落下傘を開くことができる。ユーザmが傘開きコントロールをクリックするときに、該ユーザmのクリックトリガー操作は、1つのインタラクション操作として理解してもよく、端末機器Mは、該インタラクション操作に対してインターフェースレンダリング指令を生成し、且つ該インターフェースレンダリング指令を業務サーバーまで送信してもよい。その後、業務サーバーは、該インターフェースレンダリング指令を受信した後に、該傘開きコントロールがトリガーする業務データにレンダリングを行ってもよく、それによって、1枚のレンダリング画像(レンダリング図レイヤー)を得て、該インタラクション操作が対応するインタラクションインターフェースとしてもよい。
【0034】
例えば、業務サーバーが該インターフェースレンダリング指令を受信した後に、もし該インターフェースレンダリング指令が指示するレンダリングフレームワークがモバイルアプリケーションプログラム開発フレームワーク(ここで、Flutterフレームワークを例にする)であるなら、業務サーバーは、ゲームアプリケーションの開発プログラム言語(ここで、JavaScriptを例にする)、及びソーシャルアプリケーションの開発プログラム言語(ここで、C/C++を例にする)を取得し、且つ2つの開発プログラム言語の間の通信ポートを取得してもよい。該通信ポートに基づいて、業務サーバーは、該インターフェースレンダリング指令をホストアプリケーションの実行環境まで送信してもよく、その後、該実行環境において、Flutterフレームワークの開発プログラム言語(ここで、Dartを例にする)を取得し、且つソーシャルアプリケーションの開発プログラム言語とFlutterフレームワークの開発プログラム言語との間の通信ポートを取得することができ、該通信ポートに基づいて、Flutterフレームワークを呼び出すことができ、該Flutterフレームワークに基づいて傘開きコントロールがトリガーする業務データにレンダリングを行って、図2に示すレンダリング図レイヤー(インタラクションインターフェース)を得ることができる。
【0035】
さらに、業務サーバーは、該レンダリング図レイヤーを端末機器まで戻してもよく、端末機器は、端末表示インターフェースにおいて、該レンダリング図レイヤー(インタラクションインターフェース)を表示してもよい。理解すべき点として、ユーザmは、該傘開きコントロールをクリックした後に、端末機器Mの表示インターフェース上で該Ftutterフレームワークに基づいてレンダリングされたレンダリング図レイヤーを調べることができる。図2に示すように、該レンダリング図レイヤーにおけるプレーヤーキャラクターの落下傘は、既に開状態にある。
【0036】
さらに、図3に参照されるように、図3は、本願の実施例が提供するデータ処理方法のフロー模式図である。該方法は、端末機器(例えば、上記の図1に示す端末機器クラスターにおけるいずれかの端末機器、例えば端末機器100a)、又は業務サーバー(例えば、上記の図1に示す業務サーバー1000)で実行されてもよいし、端末機器と業務サーバーとの両方で実行されてもよい。理解を容易にするために、本実施例では、該方法が上記の端末機器で実行される場合を例として説明する。ここで、該データ処理方法は、少なくとも以下のステップS101~ステップS104を含んでもよい。
【0037】
ステップS101:サブプログラムアプリケーションに対するインタラクション操作に応答して、インタラクション操作が指示するインターフェースレンダリング指令を生成し、上記インターフェースレンダリング指令は、上記インタラクション操作に対応するインタラクションインターフェースをレンダリングすることに用いられる。
【0038】
本願の実施例では、端末機器において、アプリケーションが配置されてもよく、該アプリケーションは、ビデオアプリケーション、ソーシャルアプリケーションや教育アプリケーションなどであってもよい。ユーザが該端末機器を使用すると、ユーザは、該端末機器において該アプリケーションを起動することができ、例えば、ユーザは、該アプリケーションをクリックし、且つ起動コントロールをクリックすることで、該アプリケーションを動作させることができる。ここで、該アプリケーションは、現在の端末機器の現在のオペレーティングシステム内にインストールして動作できるネイティブアプリケーションであってもよく、該アプリケーション内には、異なるサブプログラムが埋め込まれてもよい。これらのサブプログラムは、インストールしてダウンロードすることを必要とせず、これらは、いずれも該アプリケーションに依存して動作する。つまり、該アプリケーションは、これらのサブプログラムのホストアプリケーションである。本願の実施例では、該サブプログラムをサブプログラムアプリケーションと呼ぶことができ、ユーザは、アプリケーションにおいて該サブプログラムアプリケーションを起動し、且つこれに相応する操作を行ってもよい。この場合、該インタラクション操作は、ユーザがサブプログラムアプリケーションにおいて生じさせるいずれかの操作(例えば、起動操作、ある物品について調べる操作、コメントを調べる操作など)を指してもよい。ユーザが該サブプログラムアプリケーションにあるインタラクション操作を生じさせるときに、端末機器は、該インタラクション操作に応答して、該インタラクション操作に対するインターフェースレンダリング指令を生成してもよい。例示的には、ミニプログラムアプリケーションは、サブプログラムアプリケーションの1種としてもよく、つまり、ショッピングアプリケーション、リアルタイム料理注文アプリケーションなどのミニプログラムアプリケーションは、いずれも、サブプログラムアプリケーションと呼ばれてもよい。これは、いずれもホストアプリケーション内に寄生し、ホストアプリケーションにおいて動作してもよい。
【0039】
ここで、該インターフェースレンダリング指令内には、該インタラクション操作に対する業務データが含まれてもよく、これらの業務データは、具体的には、スタイルシャドウ構造ツリーを含んでもよい。具体的には、サブプログラムアプリケーションに対するインタラクション操作に応答して、該インタラクション操作が指示するインターフェースレンダリング指令を生成する具体的な実現方式について、以下のようであってもよい。ユーザが該サブプログラムアプリケーションにインタラクション操作を生じさせるときに、端末機器は、サブプログラムアプリケーションに対するインタラクション操作に応答して、サブプログラムアプリケーションのページレンダリングテンプレートファイルを取得してもよい。その後、テンプレートパーサー(またはテンプレート解析を行う解析器)を呼び出してもよく、テンプレートパーサーに基づいてページレンダリングテンプレートファイルに解析を行ってもよく、解析結果に基づいてインタラクション操作が対応するスタイルシャドウ構造ツリーを生成してもよい。ここで、スタイルシャドウ構造ツリーは、N個のシャドウノードで構成され、各々のシャドウノードは、1つのページ要素の要素カプセル化情報を含み、Nは、正の整数であり、ページ要素は、インタラクションインターフェースを構築することに用いられる要素を指す。その後、スタイルシャドウ構造ツリーを含むレンダリング指令を生成してもよく、スタイルシャドウ構造ツリーを含むレンダリング指令をインタラクション操作が指示するインターフェースレンダリング指令として決定してもよい。
【0040】
理解できる点として、サブプログラムアプリケーションがミニプログラムアプリケーションである場合を例とすると、上記のページレンダリングテンプレートファイルは、ミニプログラムアプリケーションのページ内容を記述することに用いられるテンプレートファイルを指してもよい。これは、具体的には、ミニプログラムアプリケーションのレンダリングフローにおいて、WXML(WeiXin Markup Language)内で提供されるテンプレートファイルを指してもよい。ここで、WXMLは、フレームワークが設計する1つのタグ言語であり、これを基本コンポーネントとイベントシステムと併せてページの構造を構築することができる。本願におけるテンプレートパーサーは、ミニプログラムアプリケーションにおけるコンポーネント管理フレームワーク(例えば、Exparserフレームワーク)を指してもよく、該Exparserフレームワークに基づいてページレンダリングテンプレートファイルをロードし、且つページレンダリングテンプレートファイルを解析することができ、それによって、解析結果に基づいてインタラクション操作が対応するスタイルシャドウ構造ツリーを生成することができる。ここで、ここでのスタイルシャドウ構造ツリーは、shadow treeを指してもよく、shadow treeは、具体的には、カプセル化のために生じた構造ツリーとして理解してもよい。shadow treeは、1つのコンポーネントが自分の「影」(非表示形式)を有することを可能にし、この「影」は、メインドキュメントにおいて勝手にアクセスすることができず、その具体的な作用は、コンポーネント内部構造を非表示にすること、及びコンポーネント内でのみ有効であるスタイルを追加することである。つまり、上記のスタイルシャドウ構造ツリーは、複数のノード(これは、シャドウノードと呼ばれてもよい。)で構成されるものとして理解してもよく、一方、各々のノードは、主にそれぞれのコンポーネントの非表示のカプセル化情報(ここで、あるインタラクション操作に対して、各々のノードは、実際には、あるページにおけるそれぞれのページ要素のカプセル化情報として理解してもよく、この場合、各々のノードに含まれるカプセル化情報は、要素カプセル化情報と呼ばれてもよい。)を含み、該スタイルシャドウ構造ツリーに基づいて、インターフェースレンダリング指令を生成することができる。
【0041】
ステップS102:もしインターフェースレンダリング指令が指示するレンダリングフレームワークがモバイルアプリケーションプログラム開発フレームワークであるなら、第1通信ポートによってインターフェースレンダリング指令をサブプログラムアプリケーションの実行環境まで送信する。ここで、上記サブプログラムアプリケーションの実行環境は、ネイティブアプリケーションの実行環境であり、ネイティブアプリケーションは、サブプログラムアプリケーションのホストアプリケーションであり、第1通信ポートは、第1プログラム言語と第2プログラム言語との間の通信ポートであり、第1プログラム言語は、インターフェースレンダリング指令が対応するプログラム言語を指し、第2プログラム言語は、ネイティブアプリケーションが対応するプログラム言語を指し、モバイルアプリケーションプログラム開発フレームワークは、ネイティブオペレーティングシステム上でネイティブインタラクションインターフェースを構築することに用いられる。
【0042】
本願の実施例では、サブプログラムアプリケーションの各々のページについて、開発者は、レンダリングフレームワークを指定してもよい。サブプログラムアプリケーションがミニプログラムアプリケーションである場合を例とすると、ここでのレンダリングフレームワークは、ページビューフレームワーク(webviewフレームワーク)と、モバイルアプリケーションプログラム開発フレームワーク(Fltutterフレームワーク)とを含んでもよい。上記のインターフェースレンダリング指令内には、該開発者が指定するレンダリングフレームワークが含まれてもよい。もし該レンダリングフレームワークが該モバイルアプリケーションプログラム開発フレームワークであるなら、端末機器は、該サブプログラムアプリケーションの開発プログラム言語(これは、第1プログラム言語と呼ばれてもよく、例示的には、ミニプログラムアプリケーションを例とすると、該開発プログラム言語は、JacaScriptを指してもよい。)、及び該ホストアプリケーションの開発プログラム言語(これは、第2プログラム言語と呼ばれてもよく、例示的には、該開発プログラム言語は、C/C++を指してもよい。)を取得してもよい。一般的に言えば、第1プログラム言語、及び第2プログラム言語は、2つの異なるプログラム言語であり、一方、サブプログラムアプリケーションがホストアプリケーション中にホスティングして動作する必要があるため、第1プログラム言語、及び第2プログラム言語は、通信を行うことができる言語を指してもよい。すなわち、第1プログラム言語と第2プログラム言語が異なるときに、第1プログラム言語と第2プログラム言語との間に通信ポートが存在し、それによって、通信を行う。ここで、第1プログラム言語がJacaScriptであり、かつ第2プログラム言語がC/C++である場合を例とすると、JacaScriptとC/C++との間では、JSBindingメカニズムによって通信を行ってもよく、この場合、該第1通信ポートは、JSBindingとして決定することができる。当然ながら、第1プログラム言語と第2プログラム言語が他の言語であるときに、第1通信ポートは、具体的なシーンの状況に基づき決定してもよく、ここでは、例を挙げて説明しているにすぎない。
【0043】
理解すべき点として、端末機器は、第1プログラム言語と第2プログラム言語との間の第1通信ポートを取得し、且つ該第1通信ポートに基づいて該インターフェースレンダリング指令をサブプログラムアプリケーションの実行環境まで送信してもよい。ここで、該サブプログラムアプリケーションがホストアプリケーション中に寄生して動作するため、該サブプログラムアプリケーションの実行環境は、実際には、ホストアプリケーションの実行環境として理解してもよく、具体的には、ホストアプリケーションの実行環境は、開発プログラム言語の実行環境(例えば、上記の第2プログラム言語の実行環境)を指してもよい。上記の第1通信ポートに基づいて、サブプログラムアプリケーションの開発プログラム言語とホストアプリケーションの開発プログラム言語が異なっても、上記の第1通信ポートに基づいてインターフェースレンダリング指令をサブプログラムアプリケーションの実行環境まで送信することができる。ここで、該実行環境において、サブプログラムアプリケーション(例えば、ミニプログラムアプリケーション)の基礎レイヤーレンダリングフレームワークが含まれてもよく、この場合、該実行環境において、サブプログラムアプリケーションのインターフェースレンダリングを行ってもよい。
【0044】
ステップS103:実行環境において、インターフェースレンダリング指令に基づいて第2通信ポートを呼び出し、第2通信ポートによってモバイルアプリケーションプログラム開発フレームワークを呼び出し、モバイルアプリケーションプログラム開発フレームワークに基づいてインタラクション操作に対応するインタラクションインターフェースをレンダリングする。第2通信ポートは、第2プログラム言語と第3プログラム言語との間の通信ポートであり、第3プログラム言語は、モバイルアプリケーションプログラム開発フレームワークが対応する開発言語である。
【0045】
本願の実施例では、実行環境において、インターフェースレンダリング指令に基づいて第2通信ポートを呼び出し、且つ第2通信ポートによって上記のモバイルアプリケーションプログラム開発フレームワークを呼び出してもよく、該モバイルアプリケーションプログラム開発フレームワークに基づいて、インターフェースレンダリングを行ってもよい。具体的には、本願の実施例では、インターフェースレンダリング指令に基づいてインタラクション操作に対応するレンダリングデータを生成した後に、更にモバイルアプリケーションプログラム開発フレームワークを呼び出し、レンダリングデータにレンダリングを行ってもよい。ここで、ここでのレンダリングデータは、具体的には、ページ要素構造ツリーを指してもよい。具体的には、第2通信ポートを呼び出す前に、本願の実施例では、実行環境において、インターフェースレンダリング指令に基づいてインタラクション操作に対応するページ要素構造ツリーを作成してもよい。ここで、ページ要素構造ツリーは、N個の要素ノードで構成され、1つの要素ノードは、1つのページ要素に対応し、各々の要素ノードは、要素記述データを含み、1つの要素記述データとは、1つのページ要素のスタイル記述データを指し、ページ要素は、インタラクションインターフェースを構築することに用いられる要素を指す。ページ要素構造ツリー作成の完了に応答して、実行環境において、インターフェースレンダリング指令に基づいて第2通信ポートを呼び出すステップを実行してもよい。
【0046】
理解すべき点として、上記の要素記述データは、ページ要素のスタイル記述データを指してもよく、これらのページ要素によって、1つのページを構成することができる。具体的には、要素記述データは、widgetを指してもよく、各々のwidgetは、UIを構成するための1つの基本モジュールとして理解してもよく、これらのwidgetを組み合わせて組み立てることによって、各種の複雑なインターフェースを形成することができる。一方、Flutterフレームワークにおいて、widgetの各種の組み合わせによってUIの構築を非常に簡単に完了することができる。この場合、本願の実施例は、インターフェースレンダリング指令に基づいて、各々のページ要素のために対応するスタイル記述データを決定してもよく、1つのスタイル記述データは、1つのノード(これは、要素ノードと呼ばれてもよい。)に対応してもよく、これらの要素ノードに基づき、上記のページ要素構造ツリーを構築して得ることができる(このように、ページ要素構造ツリーは、widget Treeとして理解することができる。)。該ページ要素構造ツリーの作成に成功したときに、上記の第2通信ポートを呼び出し、且つ該第2通信ポートに基づいてモバイルアプリケーションプログラム開発フレームワークを呼び出し、更に該モバイルアプリケーションプログラム開発フレームワークに基づいて該ページ要素構造ツリーにレンダリングを行ってもよい。
【0047】
ここで、上記によって分かるように、上記のインターフェースレンダリング指令内には、インタラクション操作が対応するスタイルシャドウ構造ツリー(スタイルシャドウ構造ツリーは、N個のシャドウノードで構成され、各々のシャドウノードは、1つのページ要素の要素カプセル化情報を含む。)が含まれているが、一方、本願の実施例では、実際には、スタイルシャドウ構造ツリーに基づいてページ要素構造ツリーを生成してもよい(各々のシャドウノード内の情報を変換して、1つの要素記述データを得て、さらに要素記述データを含む1つの要素ノードを得ることができ、それによって、要素ノードで構築されて得られるページ要素構造ツリーを構成することができる。)。具体的には、スタイルシャドウ構造ツリーに基づいてページ要素構造ツリーを生成する具体的な実現方式については、後続の図4が対応する実施例における記述を参照することができる。
【0048】
さらに、ページ要素構造ツリーを生成した後に、実行環境において、第2通信ポートに基づいてモバイルアプリケーションプログラム開発フレームワークを呼び出し、且つ該モバイルアプリケーションプログラム開発フレームワーク、及び該ページ要素構造ツリーに基づいて該インタラクション操作に対応するインタラクションインターフェースをレンダリングしてもよい。ページ要素構造ツリーの要素ノードが要素ノードSを含む場合を例とすると、その具体的な実現過程は、以下を含んでもよい。第2通信ポートに基づいて、第3プログラム言語の分離された動作環境において要素ノードSに対応するプログラムオブジェクトを作成してもよい。要素ノードSに対応するプログラムオブジェクトに基づいて、要素ノードSに対応する要素記述データにマウント操作処理を行って、要素ノードSに対応するマウントオブジェクトを得てもよい。N個の要素ノードにそれぞれ対応するマウントオブジェクトを決定したときに、対応するマウントオブジェクトを含むN個の要素ノードで構成される構造ツリーを、インタラクション操作に対応する要素マウント構造ツリーとして決定してもよい。モバイルアプリケーションプログラム開発フレームワークに基づいて、要素マウント構造ツリーにレンダリング処理を行って、インタラクションインターフェースを得てもよい。
【0049】
理解できる点として、ここでのマウント操作処理は、具体的には、Mount操作処理を指してもよく、レンダリングのロジック実現において、各々の要素ノードについて、第2通信ポートによって、第3プログラム言語の分離された動作環境内で1つの対応するプログラムオブジェクト(第3プログラム言語がDartである場合を例とすると、Dart Isolateという分離された内部メモリにおいて、対応するDartオブジェクトを作成することができ、該Dartオブジェクトは、該ノードに対応するプログラムオブジェクトと呼ぶことができる。)を作成してもよい。該プログラムオブジェクトは、該要素ノードに対応するwidget(要素記述データ)オブジェクトによって保有されてもよく、該過程は、マウント処理として理解することができる。つまり、該プログラムオブジェクトに基づいて要素記述データにマウント操作処理を行っており、よって、各々の要素ノードに対応するマウントオブジェクトを得ることができる。さらにマウントオブジェクトのそれぞれのノードを含む要素マウント構造ツリー(widget tree mount)を得ることができる。該モバイルアプリケーションプログラム開発フレームワークに基づいて、要素マウント構造ツリーにレンダリング処理を行って、インタラクションインターフェースを得ることができる。
【0050】
ここで、該モバイルアプリケーションプログラム開発フレームワークに基づいて、要素マウント構造ツリーにレンダリング処理を行って、インタラクションインターフェースを得ることができる具体的な実現方式は、以下の通りであってもよい。モバイルアプリケーションプログラム開発フレームワークに基づいて、要素マウント構造ツリーにインターフェースレイアウト処理を行って、インタラクションインターフェースのインタラクションインターフェースレイアウト情報を得ることができる。その後、インタラクションインターフェースレイアウト情報に従ってインターフェース描画処理を行って、描画インターフェースを得ることができる。その後、描画インターフェースをインタラクションインターフェースとして決定することができる。
【0051】
ステップS104:インタラクションインターフェースを出力する。
【0052】
本願の実施例では、上記のインタラクションインターフェースについて、もし上記のインタラクションインターフェースがラスタライゼーション処理を受けていないインターフェースであるなら、さらにインターフェース品質を向上させるために、該インタラクションインターフェースにラスタライゼーション処理を行い、ラスタライズ処理インターフェースを得た後に、さらに該ラスタライズ処理インターフェースを出力してもよい。一方、もし上記のインタラクションインターフェースがラスタライゼーション処理を受けたインターフェースであるなら、該インタラクションインターフェースを直接出力してもよい。
【0053】
本願の実施例において、サブプログラムアプリケーション(例えば、ミニプログラムアプリケーション)のインターフェースレンダリング業務において、モバイルアプリケーションプログラム開発フレームワークが導入されている。具体的には、サブプログラムアプリケーションのインタラクション操作に対し、該インタラクション操作に応答して、該インタラクション操作が指示するインターフェースレンダリング指令を生成することができる。もし該インターフェースレンダリング指令が指示するレンダリングフレームワークが上記のモバイルアプリケーションプログラム開発フレームワークであるなら、第1通信ポートによって該インターフェースレンダリング指令を該サブプログラムアプリケーションの実行環境まで送信することができる。ここで、理解できる点として、サブプログラムアプリケーションは、他のネイティブアプリケーション(第2プログラム言語に基づいて開発されたアプリケーションであって、該ネイティブアプリケーションは、第2プログラム言語に対応し、該ネイティブアプリケーションは、ホストアプリケーションと呼ばれてもよい。)内にホスティングして動作するアプリケーションである。この場合、該サブプログラムアプリケーションの実行環境は、実際には、ホストアプリケーションの実行環境として理解してもよい。該インターフェースレンダリング指令が対応するプログラム言語は、第1プログラム言語であり、もし2種の言語の間で通信を行うのが望ましいなら、第1通信ポートによって通信を行ってもよい。その後、該実行環境において、上記のインターフェースレンダリング指令に基づいて第2通信ポートを呼び出してもよく、該第2通信ポートによって、モバイルアプリケーションプログラム開発フレームワークを呼び出すことができ、該モバイルアプリケーションプログラム開発フレームワークに基づいて、該インタラクション操作が対応するインタラクションインターフェースをレンダリングすることができる。ここで、モバイルアプリケーションプログラム開発フレームワークが第3プログラム言語に基づいて開発されたフレームワークであるため、モバイルアプリケーションプログラム開発フレームワークを呼び出すことを可能にするために、第2通信ポートに基づいて第2プログラム言語と第3プログラム言語との間で通信を行ってもよい。このように、第1通信ポート、及び第2通信ポートによって、ネイティブアプリケーションの実行環境を1つの通信のブリッジと呼ぶようにしてもよい。第1プログラム言語と第2プログラム言語との間で通信を行わせることができることにより、第1プログラム言語に基づいて開発されるサブプログラムアプリケーションがモバイルアプリケーションプログラム開発フレームワークに有効に呼び出されることを可能にする。理解すべき点として、該モバイルアプリケーションプログラム開発フレームワークは、ネイティブオペレーティングシステム上でネイティブインタラクションインターフェースを構築することに用いられるフレームワークであり、これは、レンダリングフローが簡便であるという特点を備えているため、効率的なレンダリング性能を備えている。同時に、これがレンダリングするインターフェースは、ネイティブインターフェースに相当し得ることから、かなり高いレンダリング品質を備えている。この場合、本願は、モバイルアプリケーションプログラム開発フレームワークをサブプログラムアプリケーションのインターフェースレンダリング業務中に導入した後に、モバイルアプリケーションプログラム開発フレームワークの効率的なレンダリング性能によって、サブプログラムアプリケーションのインタラクションインターフェースのためにネイティブに近い表示品質を提供することができ、サブプログラムアプリケーションのインターフェースレンダリング業務において、レンダリング効率を高めると同時に、レンダリング品質を向上させることができる。
【0054】
さらに、図4に参照されるように、図4は、本願の実施例が提供する構造ツリー生成のフロー模式図である。ここで、該フローは、上記の図3が対応する実施例においてページ要素構造ツリーを生成するフローに対応してもよい。該ページ要素構造ツリーは、具体的には、インターフェースレンダリング指令内のスタイルシャドウ構造ツリー(スタイルシャドウ構造ツリーは、N個のシャドウノードで構成され、各々のシャドウノードは、1つのページ要素の要素カプセル化情報を含む。)に基づいて生成されてもよい。ここでスタイルシャドウ構造ツリーのN個のシャドウノードがシャドウノードSを含み、シャドウノードSに含まれる要素カプセル化情報が要素カプセル化情報K(Nとiのいずれも正の整数である。)である場合を例として、ページ要素構造ツリーを生成する具体的な実現方式について説明する。図4に示すように、該フローは、少なくとも以下のステップS401~ステップS404を含んでもよい。
【0055】
ステップS401:スタイルルール集合を取得する。スタイルルール集合は、各々のページ構成要素にそれぞれ対応する要素スタイルルールを含み、ページ構成要素は、サブプログラムアプリケーションのアプリケーションインターフェースを構成することに用いられる構成要素を指し、アプリケーションインターフェースは、インタラクションインターフェースを含む。
【0056】
具体的には、スタイルルール集合は、サブプログラムアプリケーション(例えば、ミニプログラムアプリケーション)のアプリケーションインターフェースの要素スタイルを規定することに用いられる集合を指してもよい。これは、アプリケーションインターフェースの各々のページ構成要素の要素スタイルルールを含んでおり、要素スタイルルールは、セレクタ、属性、及び値で構成されてもよく、具体的には、セレクタのタイプ、アイデンティティ(Identification、id)、クラス(class)、背景色、フォント属性、輪郭、及び枠などを含んでもよい。ページ構成要素は、ページを構成することに用いられるそれぞれの要素(例えば、タイトル、画像、テキストなど)を指してもよい。スタイルルール集合について、具体的には、RuleSetを指してもよく、RuleSetは、ページスタイル表に基づいて生成されてもよい。つまり、具体的には、スタイルルール集合を取得する具体的な実現方式について、以下のようであってもよい。ページスタイル構成表を取得する。ここで、ページスタイル構成表は、各々のページ構成要素の属性定義情報を含んでもよい。その後、スタイルパーサーを呼び出してもよい。スタイルパーサーに基づいて、ページスタイル構成表中に含まれる属性定義情報に解析を行ってもよい。解析結果に基づいてスタイルルール集合を生成してもよい。ここで、サブプログラムアプリケーションがミニプログラムアプリケーションである場合を例とすると、ここでのスタイルパーサーは、ミニプログラム基本ライブラリ内に含まれてもよい。これは、具体的には、ページスタイル表解析を行うことで、RuleSetを生成することに専用に用いられるコンポーネントを指してもよく、該スタイルパーサーに基づいて、ページスタイル構成表に解析を自動的に行って、RuleSetを得ることができる。ここでのページスタイル構成表は、ページスタイル表と呼ばれてもよく、レンダリング業務において、ページスタイル表は、ページスタイルを制御し、且つスタイル情報をページ内容から分けることを許可することに用いられるマークアップ言語の1種である。ここで、スタイルは、フォーマットであり、具体的には、ページにおける文字のサイズ、色や画像の位置などを指してもよく、いずれも、ページ内容を設定するスタイルである。本願においては、ページスタイルを定義する1つのファイルを作ってもよく、該ファイルは、該ページスタイル構成表としてもよく、ミニプログラムアプリケーションのレンダリング業務において、該ページスタイル構成表を直接導入(又は挿入)してもよい。一方、上記のスタイルパーサーは、該ページスタイル構成表に解析を行って、それによって、上記のスタイルルール集合を生成してもよい。
【0057】
ステップS402:スタイルルール集合において、要素カプセル化情報Kにマッチングする要素スタイルルールを決定し、上記マッチングする要素スタイルルールをシャドウノードSに対応するノード要素スタイルとして決定する。
【0058】
具体的には、シャドウノードSについて、本願の実施例は、要素カプセル化情報Kに基づいて、スタイルルール集合中からマッチングする要素スタイルルールを選択してもよい。ここで、本願の実施例は、具体的には、シャドウノードのtag(タグ)、アイデンティティ(id)やclass(カテゴリ)などの情報に基づきRuleSet内からマッチングする要素スタイルルールを選択してもよい。例えば、classに基づいてマッチングする要素スタイルルールを選択する場合を例とし、シャドウノードの要素カプセル化情報中のclassが「into」であると仮定すると、RuleSet中からclassが「into」である要素スタイルルールを問い合わせることができ、該要素スタイルルールは、マッチングする要素スタイルルールとしてもよい。ここで、要素カプセル化情報KがシャドウノードSのノードカテゴリ情報を含み、スタイルルール集合中に含まれる各々のページ構成要素にそれぞれ対応する要素スタイルルールが構成カテゴリ情報を含む場合を例とすると、スタイルルール集合において、要素カプセル化情報Kにマッチングする要素スタイルルールを決定する具体的な実現方式については、以下のようであってもよい。スタイルルール集合が対応する要素スタイルルールが含む構成カテゴリ情報のうち、シャドウノードSのノードカテゴリ情報にマッチングする構成カテゴリ情報をマッチングする構成カテゴリ情報として決定してもよい。その後、スタイルルール集合中の上記マッチングする構成カテゴリ情報が対応する要素スタイルルールを、シャドウノードSの候補要素スタイルルールとして決定してもよく、候補要素スタイルルールに基づき、要素カプセル化情報Kにマッチングする要素スタイルルールを決定することができる。理解すべき点として、ここでのノードカテゴリ情報、及び構成カテゴリ情報は、いずれも、ある種類のプログラム言語に基づく、カテゴリを確かめることに用いられるフィールドを指してもよい。該フィールドに基づいて、シャドウノードが属するカテゴリを明らかにすることができ、スタイルルールが属するカテゴリがどの種類であるかを明らかにすることもできる。当然ながら、ここでは、ノードカテゴリ情報に基づいてスタイルルールをマッチングする方式を、例を挙げて説明するにすぎないが、実際には、具体的なシーンは、異なるマッチング方式に対応してもよく、例えば、スタイルをマッチングする方式について、ノードのtagやidなどの情報に基づき、RuleSet中からスタイル(例えば、tag、id、及びclassに基づき共同でマッチングする。)をマッチングしてもよいが、本願はこれを限定しない。
【0059】
さらに、ここで、候補要素スタイルルールの数は少なくとも2つである。少なくとも2つの候補要素スタイルルール内に候補要素スタイルルールC(jは正の整数である。)が含まれる場合を例とすると、候補要素スタイルルールに基づき、要素カプセル化情報Kにマッチングするマッチング要素スタイルルールを決定する具体的な実現方式については、以下のようであってもよい。候補要素スタイルルールCに対応するスタイル優先度属性Dを取得してもよい。スタイル優先度属性Dに基づき、候補要素スタイルルールCに対応する優先度重みを決定してもよい。少なくとも2つの候補要素スタイルルールにそれぞれ対応する優先度重みを決定したときに、少なくとも2つの優先度重みのうちの最大優先度重みが対応する候補要素スタイルルールを、要素カプセル化情報Kにマッチングするマッチング要素スタイルルールとして決定してもよい。
【0060】
ここで、スタイル優先度属性Dが価値属性、及びレア属性を含む場合を例とするとスタイル優先度属性Dに基づき、候補要素スタイルルールCに対応する優先度重みを決定する具体的な実現方式については、以下のようであってもよい。レア属性に対応するレア値を取得してもよい。もし価値属性が価値有効属性であり、かつレア値がレア閾値よりも大きいなら、第1重み区間中のレア値にマッチングする第1重み値を、候補要素スタイルルールCに対応する優先度重みとして決定してもよい。一方、もし価値属性が価値有効属性であり、かつレア値がレア閾値よりも小さいなら、第2重み区間中のレア値にマッチングする第2重み値を、候補要素スタイルルールCに対応する優先度重みとして決定してもよい。ここで、第2重み区間中の重み値は、第1重み区間中の重み値よりも小さく、もし価値属性が価値無効属性であり、かつレア値がレア閾値よりも大きいなら、第3重み区間中のレア値にマッチングする第3重み値を、候補要素スタイルルールCに対応する優先度重みとして決定してもよい。ここで、第3重み区間中の重み値は、第2重み区間中の重み値よりも小さく、もし価値属性が価値無効属性であり、かつレア値がレア閾値よりも小さいなら、第4重み区間中のレア値にマッチングする第4重み値を、候補要素スタイルルールCに対応する優先度重みとして決定してもよい。ここで、第4重み区間中の重み値は、第3重み区間中の重み値よりも小さい。
【0061】
理解できる点として、スタイルシャドウ構造ツリーの構築を完了した後に、各々のシャドウノードのtag、idやclassなどの情報に基づき、スタイルルール集合内からスタイルをマッチングして候補要素スタイルルールを得てもよい。その後、該候補要素スタイルルールの数が少なくとも2つであるときに、各々の候補要素スタイルルールが対応するスタイル優先度属性に基づき、それぞれに対応する優先度重みを決定してもよく、重みが最も高いスタイルは、シャドウノード中に応用することができる。ここで、各々の候補要素スタイルルールは、いずれも、スタイルの属性パラメータ(例えば、位置属性、順序属性など)を含むことになり、ここでのスタイル優先度属性は、候補要素スタイルルールに含まれる定義属性パラメータのうち、スタイル優先度を決めることに用いられる属性パラメータを指してもよい。これは、具体的には、スタイル定義位置属性(inline style / wxss)、順序属性、価値属性(価値有効属性と価値無効属性とを含んでもよく、重要属性、すなわち、該スタイルが重要であるか否かとして理解してもよく、該スタイルが重要属性であれば、該価値属性は、価値有効属性であってもよく、該スタイルが非重要属性であれば、該価値属性は、価値無効属性であってもよい。)、特殊性属性(specificity、具体的には、スタイルルールに含まれるセレクタの特殊性属性を指してもよく、各々のスタイルルールについて、いずれも、セレクタの特殊性を算出することになり、それによって、要素属性声明に矛盾がある場合に正しい表示を行うことを可能にする。)などを指してもよく、スタイル定義位置属性、順序属性、価値属性、及び特殊性属性のうちの1種、又は複数種の属性に基づき、各々の候補要素スタイルルールの優先度重みを決定することができる。
【0062】
特殊性が、スタイルルールが特殊であるか否か(レアであるか否か)に用いられてもよいため、ここで、特殊性属性をレア属性と呼ぶことができる。優先度重みのときに価値属性とレア属性との両方に基づき共同で決定する場合を例とすると、スタイル優先度属性Dは、価値属性、及びレア属性を含んでもよい。本願においては、レア属性に対応するレア値を取得してもよく、レア値が大きいほど、該候補要素スタイルルールに対応する優先度重みも高くなることになる。当然ながら、候補要素スタイルルールに対応する優先度重みについて、価値属性とレア値との両方に基づいて共同で決定されるものであり、この場合、価値属性が価値有効属性である場合、レア値が大きいほど、優先度重みが大きく、レア値がレア閾値よりも大きいときに、第1重み区間中のレア値にマッチングする重み値を、候補要素スタイルルールCに対応する優先度重みとして決定してもよい。レア値がレア閾値よりも小さいときに、このときの優先度重みは、上記の場合よりも若干小さくすべきであり、この場合、第2重み区間(第2重み区間中の重み値が第1重み区間中の重み値よりも小さい。)中のレア値にマッチングする重み値を、候補要素スタイルルールCに対応する優先度重みとして決定してもよい。同様に、価値属性が価値無効属性であるときに、レア値がレア閾値よりも大きいときに、このときの優先度重みは、上記の第2種の場合よりも若干小さくすべきであり、この場合、第3重み区間(第3重み区間中の重み値が上記の第2重み区間中の重み値よりも小さい。)中のレア値にマッチングする重み値を、候補要素スタイルルールCに対応する優先度重みとして決定してもよい。レア値がレア閾値よりも小さいときに、このときの優先度重みは、上記の第3種の場合よりも若干小さくすべきであり、この場合、第4重み区間(第4重み区間中の重み値が上記の第3重み区間中の重み値よりも小さい。)中のレア値にマッチングする重み値を、候補要素スタイルルールCに対応する優先度重みとして決定してもよい。
【0063】
さらに、最大優先度重みが対応する候補要素スタイルルールを、該シャドウノードのマッチング要素スタイルルールとして決定してもよい。各々のシャドウノードのマッチング要素スタイルルールを決定した後に、これらのマッチング要素スタイルルールを各々のシャドウノードのノード要素スタイルとして決定してもよい。
【0064】
ステップS403:スタイル変換ルールに従って、シャドウノードSに対応するノード要素スタイルを変換し、シャドウノードSに対応する要素記述データを得る。
【0065】
具体的には、スタイル変換ルール(又は、スタイル変換標準と呼ばれる。)に従って、シャドウノードSに対応するノード要素スタイルを変換してもよく、それによって、シャドウノードSに対応する要素記述データを得ることができ、同様な方式を採用すると、各々のシャドウノードにそれぞれ対応する要素記述データを得ることができる。具体的には、上記によって分かるように、ここでの要素記述データは、1つのページ要素を記述することに用いられる構成データを指してもよく、要素記述データは、具体的には、各々のノード要素スタイルに対応するwidgetを指してもよい。ノード要素スタイルとwidgetにおいては、相応な変換標準が存在し、該変換標準は、スタイルを相応なwidgetに変換してもよいし、widgetを相応なスタイルに変換してもよい。この場合、本願の実施例は、該スタイル変換ルール(又は、スタイル変換標準と呼ばれる。)を取得してもよく、該スタイル変換ルールに基づいて、各々のシャドウノードのマッチング要素スタイルルールから、対応するwidget(すなわち、要素記述データ)を生成してもよい。
【0066】
ステップS404:N個のシャドウノードにそれぞれ対応する要素記述データを決定したときに、各々のシャドウノードをすべて要素ノードとして決定し、対応する要素記述データを含むN個の要素ノードで構成される構造ツリーを、インタラクション操作に対応するページ要素構造ツリーとして決定する。
【0067】
具体的には、N個のシャドウノードにそれぞれ対応する要素記述データを決定したときに、各々のシャドウノードをすべて要素ノードとして決定し、且つ対応する要素記述データを含むN個の要素ノードで構成される構造ツリーを、ページ要素構造ツリー(widget tree)として決定してもよい。
【0068】
本願の実施例において、上記の2つのポート(第1通信ポートと第2通信ポート)によって、サブプログラムアプリケーション(例えば、ミニプログラムアプリケーション)のホストアプリケーションがサブプログラムアプリケーションとモバイルアプリケーションプログラム開発フレームワークとの間の通信のブリッジとなることを可能にする。それにより、通信のブリッジに基づいて、サブプログラムアプリケーション中にモバイルアプリケーションプログラム開発フレームワーク(Flutterフレームワーク)を導入してもよく、サブプログラムアプリケーションのレンダリング業務において、モバイルアプリケーションプログラム開発フレームワークを上手に利用してレンダリングを行ってもよい。Flutterフレームワークのレンダリングフローが簡便であるため、サブプログラムアプリケーションのレンダリング効率を向上させることができ、同時に、Flutterフレームワークがネイティブユーザインターフェースを構築する能力を備えるため、Flutterフレームワークによってレンダリングされて得られたサブプログラムアプリケーションのインタラクションインターフェースは、その品質がネイティブ品質とはほぼ差がなく、かなり高い品質を備える。そのため、モバイルアプリケーションプログラム開発フレームワークを導入することによって、サブプログラムアプリケーションのレンダリング業務において、レンダリング効率を高めると同時に、レンダリング品質を向上させることができる。
【0069】
さらに、理解を容易にするために、図5に参照されるように、図5は、本願の実施例が提供する異言語通信のアーキテクチャ図である。ここで、該アーキテクチャは、具体的には、第1プログラム言語と第3プログラム言語との間の異言語通信アーキテクチャを指してもよい。
【0070】
ここで、第1プログラム言語は、サブプログラムアプリケーション(例えば、ミニプログラムアプリケーション)の開発プログラム言語を指してもよく、該開発プログラム言語は、アプリケーションを開発する機能を備えるいずれかのプログラム言語、例えば、JavaScript、C/C++、Pythonなどを指してもよい。一般的に言えば、ミニプログラムアプリケーションについて言うと、ミニプログラムアプリケーションの開発プログラム言語は、一般には、JavaScriptを指し、ミニプログラムアプリケーションのポートレイヤーも、いずれも、JavaScriptを使用してプログラミングされる。第2プログラム言語は、サブプログラムアプリケーションのホストアプリケーション(ネイティブアプリケーション)の開発プログラム言語を指してもよく、該開発プログラム言語は、アプリケーションを開発する機能を備えるいずれかのプログラム言語、例えば、JavaScript、C/C++、Pythonなどを指してもよく、本願の実施例において、該第2プログラム言語は、具体的には、C/C++を指してもよい。第3プログラム言語は、上記のモバイルアプリケーションプログラム開発フレームワークの開発プログラム言語を指してもよく、本願の実施例において、モバイルアプリケーションプログラム開発フレームワークは、具体的には、Fltutterフレームワークを指してもよい。Fltutterフレームワークは、Dart言語を採用してプログラミングされ、この場合、該第3プログラム言語は、具体的には、Dart言語を指してもよい。
【0071】
理解すべき点として、本願の実施例における第1通信ポートは、第1プログラム言語と第2プログラム言語との間の通信ポートを指してもよく、例えば、これは、具体的には、JavaScriptとC/C++との間の通信ポート(例えば、JSBindingメカニズム)を指してもよく、第2通信ポートは、第2プログラム言語と第3プログラム言語との間の通信ポートを指してもよい。例えば、これは、具体的には、DartとC/C++との間の通信ポート(例えば、Dart API、又はDart FFI。Dart FFIの性能が比較的良好であるため、Dart FFIを優先的に第2通信ポートとしてもよい。)を指してもよい。該第2プログラム言語を通信のブリッジとすることによって、第1プログラム言語と第3プログラム言語との間で通信を行うことを実現することができ、すなわち、サブプログラムアプリケーションにおいて、Flutterフレームワークを有効に導入することを実現できる。
【0072】
上記によって分かるように、本願の実施例では、モバイルアプリケーションプログラム開発フレームワークを導入し、サブプログラムアプリケーションのインターフェースにレンダリングを行ってもよい。当然ながら、本願の実施例では、同時に残りのレンダリングフレームワーク(例えば、ページビューフレームワーク、すなわち、webviewフレームワーク)に基づいてサブプログラムアプリケーション(例えば、ミニプログラムアプリケーション)のインターフェースにレンダリングを行ってもよい。同様なインターフェースレンダリング指令について、本願の実施例は、それぞれモバイルアプリケーションプログラム開発フレームワークとwebviewフレームワークに基づいて同時にレンダリングを行ってもよい。もしモバイルアプリケーションプログラム開発フレームワークが先にレンダリングを完了するなら、モバイルアプリケーションプログラム開発フレームワークが得たレンダリング画像を出力して表示することができ、もしwebviewフレームワークが優先的にレンダリングを完了するなら、webviewフレームワークが得たレンダリング画像を出力して表示することができる。よって、サブプログラムアプリケーションの応答効率を非常によく高めると同時に、レンダリング品質を確保することができる。
【0073】
理解すべき点として、webviewフレームワークに基づくレンダリングフロー中について、サブプログラムアプリケーション(例えば、ミニプログラムアプリケーション)は、ロジックレイヤー(AppService)とビューレイヤー(webview)とに基づいて分けられるデュアルスレッドモデルであり、JSロジック(バックグラウンドプログラムロジックであって、ここで、サブプログラムアプリケーションがJavaScriptを採用して開発を行う場合を例とすると、そのバックグラウンドプログラムロジックは、JSロジックであってもよい。)、DOMツリー(shadow treeとして理解してもよい。)の作成、ページスタイル表の解析、スタイルマッチング、レイアウト、及び描画などのステップについては、いずれも主スレッドにおいて発生する。主スレッドでは、タスクが多すぎて、並列度は十分に高くなく、効率が低下してしまい、同時に、JSタスクに非常に時間がかかるため、インターフェースのフリーズを引き起こすことがある。なお、分けられるスレッドの間でJSBridgeによって通信を頻繁に行う必要があり、かつ2本のスレッドの間で状態を同期化し、かつツリー構造をメンテナンスする必要があり、これには大量の通信コストがかかることとなる。
【0074】
上記の課題の発生を減少させ、インターフェースの流暢さを高めるために、本願の実施例では、サブプログラムアプリケーション(例えば、ミニプログラムアプリケーション)のレンダリングフレームワークにおいて、新たなスレッド(具体的には、レンダリングスレッドと呼ばれてもよい。)を作成する。本願の実施例は、ビュー(wxml)とロジック(jsロジック)とを同時にロジックレイヤー(AppService)において動作させることができる一方で、内部において実現されることから、ビューのレイアウト、及びレンダリングは、新たなスレッドにおいて生じてもよい。一部のロジック(例えば、レイアウト、レンダリング)などを新たなスレッドに分割することによって、機器のマルチコアCPUを十分に利用することができ、それによって、並列度を向上させ、インターフェースレンダリング、及びインタラクションの流暢さを高め、レンダリングにかかる時間、及び遅延を減少させることができる。
【0075】
理解を容易にするために、図6に併せて参照されるように、図6は、本願の実施例が提供するレンダリングスレッドのフレームワーク模式図である。ここで、図6に示すフレームワークは、サブプログラムアプリケーションがミニプログラムアプリケーションであることを例とすると、サブプログラムアプリケーションのレンダリングスレッドのフレームワークについて説明する模式図であってもよい。図6に示すように、ミニプログラムアプリケーションのレンダリングフレームワークについて、全体的にはロジックサブスレッド(AppServiceサブスレッド)、インターフェースレンダリングサブスレッド、及びラスタライゼーションサブスレッド(Rasterサブスレッド)に分けることができる。理解を容易にするために、以下、それぞれのサブスレッドを具体的に説明する。
【0076】
ロジックサブスレッド:該ロジックサブスレッドにおいて、ミニプログラムJSロジック、ミニプログラムフレームワーク操作ノード操作、スタイル計算などのロジックを実行することができる。ここで、ミニプログラムJSロジックは、具体的には、shadow treeを作成し、且つインターフェースレンダリング指令を生成するステップを含んでもよい。ミニプログラムフレームワーク操作ノードは、具体的には、実行環境が該インターフェースレンダリング指令を受信した後に、RuleSetを生成し、且つ上記のshadow treeに解析を行うステップを含んでもよい。スタイル計算は、具体的には、実行環境においてshadow treeの各々のノードのためにスタイルマッチングを行い、各々のノードのマッチングスタイルルールを算出するステップを含んでもよい。
【0077】
レンダリングサブスレッド:該レンダリングサブスレッドにおいて、スタイルアプリケーション、レイアウト(Layout)、及び描画(Paint)などのロジックを含むことができる。ここで、上記のロジックサブスレッドにおいてマッチングされた各々のノードのマッチングスタイルルールについて、レンダリングサブスレッドにおいてそれを応用し、且つスタイルに対応するwidgetを生成し、widget treeを得ることができる。その後、widget treeに対しノードごとにMount操作を行った後に、Flutterフレームワークに伝達して、それにレイアウト、及び描画処理を行い、描画インターフェースを生み出すことができる。
【0078】
ラスタライゼーションサブスレッド:上記のFlutterフレームワークが描画することにより得られた描画インターフェースについて、ラスタライゼーションサブスレッド内にサブミットしてラスタライゼーション処理を行うことができ、最終的に得られたラスタライズ処理インターフェースは、端末機器が表示を行うことに用いられ得る。
【0079】
ここで、上記のそれぞれのサブスレッドにおけるそれぞれのステップの具体的な実現方式について、上記の図3図4が対応する実施例における記述を参照することができるため、ここでは再度詳しく説明しない。
【0080】
理解すべき点として、上記によって分かるように、本願のサブプログラムアプリケーション(例えば、ミニプログラムアプリケーション)のメインレンダリングスレッドは、開発ロジックサブスレッド(AppServiceサブスレッド)とインターフェースレンダリングサブスレッド(レンダリングサブスレッド)とを含んでもよい。インタラクション操作が指示するインターフェースレンダリング指令を生成するステップ、及び実行環境において、インターフェースレンダリング指令に基づいてインタラクション操作に対応するページ要素構造ツリー(widget tree)を作成するステップについては、いずれも、開発ロジックサブスレッドにおいて実行されてもよい。実行環境において、インターフェースレンダリング指令に基づいて第2通信ポートを呼び出し、第2通信ポートによってモバイルアプリケーションプログラム開発フレームワークを呼び出し、モバイルアプリケーションプログラム開発フレームワークに基づいてインタラクション操作に対応するインタラクションインターフェースをレンダリングする(具体的には、マウント操作(スタイルアプリケーション)、レイアウト、及び描画を含んでもよい。)ステップは、インターフェースレンダリングサブスレッドにおいて実行されてもよい。
【0081】
本願の実施例において、一部のロジック(例えば、レイアウト、描画)をレンダリングサブスレッド内で分割して実行することによって、機器のマルチコアCPUを十分に利用することができ、それによって、並列度を向上させることができ、インターフェースレンダリング、及びインタラクションの流暢さを向上させることができる。同時に、分けられたデュアルスレッドモデルではなくシングルスレッドを採用してレンダリングを行うことで、頻繁な通信によりもたらされる通信損失を減少させることができ、ツリー構造の安定性を非常によくメンテナンスすることができるため、安全なコントロールをすると同時に、レンダリングにかかる時間、及び遅延を低減させることができる。
【0082】
上記のロジックサブスレッドとレンダリングサブスレッドに基づいて、安全性を向上させるために、本願では、元々webview側で動作していた基本ライブラリ(ミニプログラムアプリケーションの基本ライブラリ)、及び内蔵コンポーネントのいずれもロジックサブスレッド内の1つの新しいサブドメインの下で動作させてもよいため、開発者のプログラムと分離して、安全性を向上させることができる。
【0083】
理解を容易にするために、図7に併せて参照されるように、図7は、本願の実施例が提供するロジックサブスレッド、及びレンダリングサブスレッドのスレッドアーキテクチャ図である。ここで、図7に示すスレッドアーキテクチャは、サブプログラムアプリケーションがミニプログラムアプリケーションであることを例とするスレッドアーキテクチャである。図7に示すように、ロジックレイヤーサブスレッドにおいては、サブドメイン1、サブドメイン2、メインドメイン、クライアント、レンダリングフレームワーク、及びJS開発標準(JS VMであって、JSBindingポートを提供することができ、ここでは、ミニプログラムアプリケーションの開発プログラム言語がJavaScriptであることを例とすると、この場合、ここでの開発標準は、JS開発標準を指してもよく、ミニプログラムアプリケーションの開発プログラム言語が他のプログラム言語であるときに、該開発標準は、これに対応する開発標準であってもよい。)が含まれてもよい。サブドメイン1においては、具体的には、ミニプログラムアプリケーションのwxmlテンプレート、ミニプログラム内蔵コンポーネント、コンポーネント管理フレームワーク(例えば、Exparser)、JS通信ポート(例えば、上記のJSBindingポート)が含まれてもよい。サブドメイン2においては、具体的には、ミニプログラムJSロジックコード、ミニプログラムの基本ライブラリ、JSブリッジ(例えば、JS Bridge)を含んでもよい。サブドメイン1、サブドメイン2、及びメインエディタの任意の2つの間は、相互通信を行ってもよい。ロジックサブスレッド中のクライアントは、具体的には、ホストアプリケーションを指してもよく、レンダリングフレームワークは、本願で提案された新たなレンダリングフレームワーク(モバイルアプリケーションプログラム開発フレームワークに基づいてレンダリングを行うレンダリングフレームワーク)であってもよい。理解すべき点として、本願の実施例は、元々webview側で動作していた基本ライブラリ(ミニプログラムアプリケーションの基本ライブラリ)、及び内蔵コンポーネントのいずれも、ロジックサブスレッド内の1つの新しいサブドメインの下で動作させることにより、開発者のプログラムと分離し、安全性を向上させることができる。
【0084】
理解すべき点として、レンダリングサブスレッドは、実際には、UIサブスレッドであり、該UIサブスレッド内には、モバイルアプリケーションプログラム開発フレームワーク、レンダリングエンジン、及びJS開発標準が含まれてもよく、ロジックサブスレッド内で得られたレンダリングデータ(例えば、マウント処理後の構造ツリー)については、レンダリングサブスレッドまでサブミットしてもよく、レンダリングサブスレッドは、レンダリングエンジンに基づいて、それにレンダリング処理を行ってもよい。
【0085】
本願の実施例において、一部のロジック(例えば、レイアウト、描画)をレンダリングサブスレッド内で分割して実行することによって、機器のマルチコアCPUを十分に利用することができ、それによって、並列度を向上させることができ、インターフェースレンダリング、及びインタラクションの流暢さを向上させることができる。同時に、分けられたデュアルスレッドモデルではなくシングルスレッドを採用してレンダリングを行うことで、頻繁な通信によりもたらされる通信損失を減少させることができ、ツリー構造の安定性を非常によくメンテナンスすることができ、安全なコントロールを確実にすると同時に、レンダリングにかかる時間、及び遅延を低減させることができる。
【0086】
さらに、理解を容易にするために、図8に併せて参照されるように、図8は、本願の実施例が提供するサブプログラムアプリケーションにレンダリングを行うロジックフロー模式図である。ここで、図8に示すレンダリングのロジックフローは、サブプログラムアプリケーションがミニプログラムアプリケーションであることを例として説明するロジックフローであってもよい。図8に示すように、ミニプログラムアプリケーションのレンダリングアーキテクチャについては、主にロジックサブスレッド(AppServiceサブスレッド)、レンダリングサブスレッド、及びラスタライゼーションサブスレッドを含んでもよい。ここで、ロジックサブスレッド内には、スタイル表挿入モジュール、スタイル表解析モジュール、スタイルルール集合生成モジュール、テンプレート解析モジュール、構造ツリー作成モジュール、及びスタイルマッチングモジュールが含まれてもよく、レンダリングサブスレッド内には、マウント処理モジュール、レイアウトモジュール、及び描画モジュールが含まれてもよく、ラスタライゼーションサブスレッド内には、ラスタライゼーションモジュール、及び表示モジュールが含まれてもよい。理解を容易にするために、以下、それぞれのモジュールについて具体的に説明する。
【0087】
ロジックサブスレッドについて、インターフェースレンダリング指令を受信した後に、テンプレート解析モジュール内のExparserフレームワークは、ページレンダリングテンプレートファイルをロードして解析し、解析結果を構造ツリー作成モジュールまで伝送することができる。構造ツリー作成モジュールは、解析結果に基づいてスタイルシャドウ構造ツリー(shadow tree)を作成することができる。同時に、ロジックサブスレッド内のスタイル表挿入モジュールは、ページスタイル表を挿入することができ、スタイル表解析モジュールについては、ページスタイル表を解析して、解析結果をスタイルルール集合生成モジュールまで送信することができる。スタイルルール集合生成モジュールにおいては、上記の解析結果に基づいてスタイルルール集合(例えば、RuleSet)を生成することができる。さらに、ロジックサブスレッド内のスタイルマッチングモジュール内では、shadow tree中のシャドウノードをトラバースすることができ(例えば、プレオーダートラバース)、各々のシャドウノードが解析フロー(inflateフロー)、及びスタイル再計算フロー(RecalcStyleフロー)に入ることを可能にする。RecalcStyleフローにおいては、シャドウノードのtag、id、classなどの情報に基づき、RuleSet内からスタイルをマッチングすることができる。マッチングしたスタイルは、候補要素スタイルルールとしてもよく、マッチングしたスタイルは、スタイル定義位置、順序、重要か否か、及びspcificity(特殊性)などの情報に基づき、その優先度重みを決定することができ、重みが高い候補スタイルは、ノード上に応用することができる。その後、スタイルマッチングモジュール内では、各々のノードのスタイルが対応するwidgetを生成することができることにより、widget tree(ページ要素構造ツリー)を得ることができる。
【0088】
レンダリングサブスレッドについて、上記の生成したwidget treeは、レンダリングサブスレッドにサブミットされることができ、レンダリングサブスレッド中のマウント処理モジュールによって、widget tree中の各々のノードをトラバースすることができ(例えば、ポストオーダートラバース)、トラバースによってノードにMount操作を1つずつ実行し(例えば、Dart FFIポートによってDart Isolate内で対応するDartオブジェクトを作成し、且つwidgetに保有させてもよい。)、Mount操作を実行することによって要素マウント構造ツリーを生成することができる。その後、該要素マウント構造ツリーは、レイアウトモジュールにサブミットされてもよく、該レイアウトモジュールにおいては、Flutterフレームワークに基づいてそれにレイアウト処理を行うことができる。描画モジュールにおいては、Flutterフレームワークに基づいてそれに描画処理を行うことができる。
【0089】
ラスタライゼーションサブスレッドについて、上記の描画処理で得られた画像は、ラスタライゼーションサブスレッド内にサブミットされてもよく、ラスタライゼーションモジュールによって、これに対してラスタライゼーション処理を行って、ラスタライズ処理インターフェースを得ることができる。その後、これを表示モジュールまで伝送した後に、表示モジュールによって、ラスタライズ処理インターフェースを出力して表示することができる。
【0090】
本願の実施例において、第1通信ポート、及び第2通信ポートによって、サブプログラムアプリケーション(例えば、ミニプログラムアプリケーション)のホストアプリケーションがサブプログラムアプリケーションとモバイルアプリケーションプログラム開発フレームワークとの間の通信のブリッジとなることを可能にする。それによって、通信のブリッジに基づいてサブプログラムアプリケーション中にモバイルアプリケーションプログラム開発フレームワーク(Flutterフレームワーク)を導入することができ、サブプログラムアプリケーションのレンダリング業務において、モバイルアプリケーションプログラム開発フレームワークを上手に利用してレンダリングを行うことができる。Flutterフレームワークのレンダリングフローが簡便であるため、サブプログラムアプリケーションのレンダリング効率を向上させることができる。同時に、Flutterフレームワークがネイティブユーザインターフェースを構築する能力を備えているため、Flutterフレームワークによってレンダリングされて得られたサブプログラムアプリケーションのインタラクションインターフェースは、その品質がネイティブ品質とはほぼ差がなく、かなり高い品質を備えている。そのため、モバイルアプリケーションプログラム開発フレームワークを導入することによって、サブプログラムアプリケーションのレンダリング業務において、レンダリング効率を高めると同時に、レンダリング品質を向上させることができる。同時に、一部のロジック(例えば、レイアウト、描画)をレンダリングサブスレッド内で分割して実行することによって、機器のマルチコアCPUを十分に利用することができ、それによって、並列度を向上させることができ、インターフェースレンダリング、及びインタラクションの流暢さを向上させることができる。同時に、分けられたデュアルスレッドモデルではなくシングルスレッドを採用してレンダリングを行うことで、頻繁な通信によりもたらされる通信損失を減少させることができ、ツリー構造の安定性を上手にメンテナンスすることができ、安全なコントロールを確実にすると同時に、レンダリングに係る時間、及び遅延を低減させることができる。
【0091】
さらに、図9に参照されるように、図9は、本願の実施例が提供するデータ処理装置の構造模式図である。該データ処理装置は、コンピュータ機器において動作する1つのコンピュータプログラム(プログラムコードを含む)である。例えば、該データ処理装置は、1つのアプリケーションソフトウェアであり、該データ処理装置は、図3に示す方法を実行することに用いられ得る。図9に示すように、該データ処理装置1は、指令生成モジュール11、指令送信モジュール12、ポート呼び出しモジュール13、フレームワーク呼び出しモジュール14、インターフェースレンダリングモジュール15、及びインターフェース出力モジュール16を含んでもよい。
【0092】
指令生成モジュール11は、サブプログラムアプリケーションに対するインタラクション操作に応答して、インタラクション操作が指示するインターフェースレンダリング指令を生成することに用いられ、上記インターフェースレンダリング指令は、上記インタラクション操作に対応するインタラクションインターフェースをレンダリングすることに用いられ、
指令送信モジュール12は、もしインターフェースレンダリング指令が指示するレンダリングフレームワークがモバイルアプリケーションプログラム開発フレームワークであるなら、第1通信ポートによってインターフェースレンダリング指令をサブプログラムアプリケーションの実行環境まで送信することに用いられ、ここで、上記サブプログラムアプリケーションの実行環境は、ネイティブアプリケーションの実行環境であり、ネイティブアプリケーションは、サブプログラムアプリケーションのホストアプリケーションであり、第1通信ポートは、第1プログラム言語と第2プログラム言語との間の通信ポートであり、第1プログラム言語は、インターフェースレンダリング指令が対応するプログラム言語を指し、第2プログラム言語は、ネイティブアプリケーションが対応するプログラム言語を指し、
ポート呼び出しモジュール13は、実行環境において、インターフェースレンダリング指令に基づいて第2通信ポートを呼び出すことに用いられ、
フレームワーク呼び出しモジュール14は、第2通信ポートによってモバイルアプリケーションプログラム開発フレームワークを呼び出すことに用いられ、第2通信ポートは、第2プログラム言語と第3プログラム言語との間の通信ポートであり、第3プログラム言語は、モバイルアプリケーションプログラム開発フレームワークが対応する開発言語であり、
インターフェースレンダリングモジュール15は、モバイルアプリケーションプログラム開発フレームワークに基づいてインタラクション操作に対応するインタラクションインターフェースをレンダリングすることに用いられ、
インターフェース出力モジュール16は、インタラクションインターフェースを出力することに用いられる。
【0093】
ここで、指令生成モジュール11、指令送信モジュール12、ポート呼び出しモジュール13、フレームワーク呼び出しモジュール14、インターフェースレンダリングモジュール15、及びインターフェース出力モジュール16の具体的な実現方式は、上記の図3が対応する実施例におけるステップS101~ステップS104の記述を参照することができるため、ここでは再度詳しく説明しない。
【0094】
いくつかの実施例では、指令生成モジュール11は、テンプレート取得ユニット111、シャドウツリー生成ユニット112、及び指令生成ユニット113を含んでもよい。
【0095】
テンプレート取得ユニット111は、サブプログラムアプリケーションに対するインタラクション操作に応答して、サブプログラムアプリケーションのページレンダリングテンプレートファイルを取得することに用いられ、
シャドウツリー生成ユニット112は、テンプレートパーサーを呼び出し、テンプレートパーサーに基づいてページレンダリングテンプレートファイルに対して解析を行って第1解析結果を得て、上記第1解析結果に基づいてインタラクション操作が対応するスタイルシャドウ構造ツリーを生成することに用いられ、スタイルシャドウ構造ツリーは、N個のシャドウノードで構成され、各々のシャドウノードは、1つのページ要素の要素カプセル化情報を含み、Nは、正の整数であり、ページ要素は、インタラクションインターフェースを構築することに用いられる要素を指し、
指令生成ユニット113は、スタイルシャドウ構造ツリーを含むレンダリング指令を生成し、スタイルシャドウ構造ツリーを含むレンダリング指令をインタラクション操作が指示するインターフェースレンダリング指令として決定することに用いられる。
【0096】
ここで、テンプレート取得ユニット111、シャドウツリー生成ユニット112、及び指令生成ユニット113の具体的な実現方式は、上記の図3が対応する実施例におけるステップS101の記述を参照することができるため、ここでは再度詳しく説明しない。
【0097】
いくつかの実施例では、データ処理装置1は、要素ツリー生成モジュール17、及びステップ実行モジュール18をさらに含んでもよい。
【0098】
要素ツリー生成モジュール17は、実行環境において、インターフェースレンダリング指令に基づいてインタラクション操作に対応するページ要素構造ツリーを作成することに用いられ、ページ要素構造ツリーは、N個の要素ノードで構成され、1つの要素ノードは、1つのページ要素に対応し、各々の要素ノードは、要素記述データを含み、1つの要素記述データは、1つのページ要素のスタイル記述データを指し、ページ要素は、インタラクションインターフェースを構築することに用いられる要素を指し、
ステップ実行モジュール18は、ページ要素構造ツリー作成の完了に応答して、実行環境において、インターフェースレンダリング指令に基づいて第2通信ポートを呼び出すステップを実行することに用いられる。
【0099】
ここで、要素ツリー生成モジュール17、及びステップ実行モジュール18の具体的な実現方式は、上記の図3が対応する実施例におけるステップS103の記述を参照することができるため、ここでは再度詳しく説明しない。
【0100】
いくつかの実施例では、インターフェースレンダリング指令は、インタラクション操作が対応するスタイルシャドウ構造ツリーを含み、スタイルシャドウ構造ツリーは、N個のシャドウノードで構成され、各々のシャドウノードは、1つのページ要素の要素カプセル化情報を含み、
要素ツリー生成モジュール17は、ルール集合取得ユニット171、マッチングスタイル決定ユニット172、ノードスタイル決定ユニット173、記述データ決定ユニット174、及び要素ツリー決定ユニット175を含んでもよい。
【0101】
ルール集合取得ユニット171は、スタイルルール集合を取得することに用いられ、スタイルルール集合は、各々のページ構成要素にそれぞれ対応する要素スタイルルールを含み、ページ構成要素は、サブプログラムアプリケーションのアプリケーションインターフェースを構成することに用いられる構成要素を指し、アプリケーションインターフェースは、インタラクションインターフェースを含み、
マッチングスタイル決定ユニット172は、N個のシャドウノードのうちの各々のシャドウノードSに対して、スタイルルール集合において、要素カプセル化情報Kにマッチングする要素スタイルルールを決定することに用いられ、上記シャドウノードSに含まれる要素カプセル化情報は、要素カプセル化情報Kであり、Nとiのいずれも正の整数であり、
ノードスタイル決定ユニット173は、N個のシャドウノードのうちの各々のシャドウノードSに対して、要素カプセル化情報Kにマッチングする要素スタイルルールを、シャドウノードSに対応するノード要素スタイルとして決定することに用いられ、
記述データ決定ユニット174は、スタイル変換ルールに従って、シャドウノードSに対応するノード要素スタイルを変換し、シャドウノードSに対応する要素記述データを得ることに用いられ、
要素ツリー決定ユニット175は、N個のシャドウノードにそれぞれ対応する要素記述データを決定したときに、各々のシャドウノードをすべて要素ノードとして決定し、対応する要素記述データを含むN個の要素ノードで構成される構造ツリーを、インタラクション操作に対応するページ要素構造ツリーとして決定することに用いられる。
【0102】
ここで、ルール集合取得ユニット171、マッチングスタイル決定ユニット172、ノードスタイル決定ユニット173、記述データ決定ユニット174、及び要素ツリー決定ユニット175の具体的な実現方式は、上記の図4が対応する実施例におけるステップS401~ステップS404の記述を参照することができるため、ここでは再度詳しく説明しない。
【0103】
いくつかの実施例では、ルール集合取得ユニット171は、スタイル表取得サブユニット1711、及びルールセット生成サブユニット1712を含んでもよい。
【0104】
スタイル表取得サブユニット1711は、ページスタイル構成表を取得することに用いられ、ページスタイル構成表は、各々のページ構成要素の属性定義情報を含み、
ルールセット生成サブユニット1712は、スタイルパーサーを呼び出し、スタイルパーサーに基づいて、ページスタイル構成表中に含まれる属性定義情報に対して解析を行って第2解析結果を得て、第2解析結果に基づいてスタイルルール集合を生成することに用いられる。
【0105】
ここで、スタイル表取得サブユニット1711、及びルールセット生成サブユニット1712の具体的な実現方式は、上記の図4が対応する実施例におけるステップS401の記述を参照することができるため、ここでは再度詳しく説明しない。
【0106】
いくつかの実施例では、要素カプセル化情報Kは、シャドウノードSのノードカテゴリ情報を含み、スタイルルール集合中に含まれる各々のページ構成要素にそれぞれ対応する要素スタイルルールは、構成カテゴリ情報を含み、
マッチングスタイル決定ユニット172は、マッチングカテゴリ決定サブユニット1721、候補スタイル決定サブユニット1722、及びマッチングスタイル決定サブユニット1723を含んでもよい。
【0107】
マッチングカテゴリ決定サブユニット1721は、スタイルルール集合が対応する要素スタイルルールが含む構成カテゴリ情報のうち、シャドウノードSのノードカテゴリ情報にマッチングする構成カテゴリ情報をマッチングする構成カテゴリ情報として決定することに用いられ、
候補スタイル決定サブユニット1722は、スタイルルール集合中のマッチングする構成カテゴリ情報が対応する要素スタイルルールを、シャドウノードSの候補要素スタイルルールとして決定することに用いられ、
マッチングスタイル決定サブユニット1723は、候補要素スタイルルールに基づき、要素カプセル化情報Kにマッチングするマッチング要素スタイルルールを決定することに用いられる。
【0108】
ここで、マッチングカテゴリ決定サブユニット1721、候補スタイル決定サブユニット1722、及びマッチングスタイル決定サブユニット1723の具体的な実現方式は、上記の図4が対応する実施例におけるステップS402の記述を参照することができるため、ここでは再度詳しく説明しない。
【0109】
いくつかの実施例では、候補要素スタイルルールの数は、少なくとも2つであり、少なくとも2つの候補要素スタイルルール内には、候補要素スタイルルールCが含まれ、jは正の整数であり、上記少なくとも2つの候補要素スタイルルールのうちの各々の候補要素スタイルルールCに対して、
マッチングスタイル決定サブユニット1723はさらに、具体的には、候補要素スタイルルールCに対応するスタイル優先度属性Dを取得することに用いられ、
マッチングスタイル決定サブユニット1723はさらに、具体的には、スタイル優先度属性Dに基づき、候補要素スタイルルールCに対応する優先度重みを決定することに用いられ、
マッチングスタイル決定サブユニット1723はさらに、具体的には、少なくとも2つの候補要素スタイルルールにそれぞれ対応する優先度重みを決定したときに、少なくとも2つ優先度重みのうちの最大優先度重みが対応する候補要素スタイルルールを、要素カプセル化情報Kにマッチングするマッチング要素スタイルルールとして決定することに用いられる。
【0110】
いくつかの実施例では、スタイル優先度属性Dは、価値属性、及びレア属性を含み、
マッチングスタイル決定サブユニット1723はさらに、具体的には、レア属性に対応するレア値を取得することに用いられ、
マッチングスタイル決定サブユニット1723はさらに、具体的には、もし価値属性が価値有効属性であり、かつレア値がレア閾値よりも大きいなら、第1重み区間中のレア値にマッチングする第1重み値を、候補要素スタイルルールCに対応する優先度重みとして決定することに用いられ、
マッチングスタイル決定サブユニット1723はさらに、具体的には、もし価値属性が価値有効属性であり、かつレア値がレア閾値よりも小さいなら、第2重み区間中のレア値にマッチングする第2重み値を、候補要素スタイルルールCに対応する優先度重みとして決定することに用いられ、第2重み区間中の重み値は、第1重み区間中の重み値よりも小さく、
マッチングスタイル決定サブユニット1723はさらに、具体的には、もし価値属性が価値無効属性であり、かつレア値がレア閾値よりも大きいなら、第3重み区間中のレア値にマッチングする第3重み値を、候補要素スタイルルールCに対応する優先度重みとして決定することに用いられ、第3重み区間中の重み値は、第2重み区間中の重み値よりも小さく、
マッチングスタイル決定サブユニット1723はさらに、具体的には、もし価値属性が価値無効属性であり、かつレア値がレア閾値よりも小さいなら、第4重み区間中のレア値にマッチングする第4重み値を、候補要素スタイルルールCに対応する優先度重みとして決定することに用いられ、第4重み区間中の重み値は、第3重み区間中の重み値よりも小さい。
【0111】
いくつかの実施例では、インターフェースレンダリングモジュール15は、プログラムオブジェクト作成ユニット151、マウント処理ユニット152、マウントツリー決定ユニット153、及びインターフェースレンダリングユニット154を含んでもよい。
【0112】
プログラムオブジェクト作成ユニット151は、上記N個の要素ノードのうちの各々の要素ノードSに対して、第2通信ポートに基づいて、第3プログラム言語の分離された動作環境においてシャドウノードSに対応するプログラムオブジェクトを作成することに用いられ、
マウント処理ユニット152は、上記N個の要素ノードのうちの各々の要素ノードSに対して、シャドウノードSに対応するプログラムオブジェクトに基づいて、シャドウノードSに対応するノード要素スタイルに対してマウント操作処理を行い、シャドウノードSに対応するマウントオブジェクトを得ることに用いられ、
マウントツリー決定ユニット153は、N個のシャドウノードにそれぞれ対応するマウントオブジェクトを決定したときに、対応するマウントオブジェクトを含むN個のシャドウノードで構成される構造ツリーを、インタラクション操作に対応する要素マウント構造ツリーとして決定することに用いられ、
インターフェースレンダリングユニット154は、モバイルアプリケーションプログラム開発フレームワークに基づいて、要素マウント構造ツリーに対してレンダリング処理を行い、インタラクションインターフェースを得ることに用いられる。
【0113】
ここで、プログラムオブジェクト作成ユニット151、マウント処理ユニット152、マウントツリー決定ユニット153、及びインターフェースレンダリングユニット154の具体的な実現方式は、上記の図3が対応する実施例におけるステップS103の記述を参照することができるため、ここでは再度詳しく説明しない。
【0114】
いくつかの実施例では、インターフェースレンダリングユニット154は、レイアウトサブユニット1541、及び描画サブユニット1542を含んでもよい。
【0115】
レイアウトサブユニット1541は、モバイルアプリケーションプログラム開発フレームワークに基づいて、要素マウント構造ツリーに対してインターフェースレイアウト処理を行い、インタラクションインターフェースのインタラクションインターフェースレイアウト情報を得ることに用いられ、
描画サブユニット1542は、インタラクションインターフェースレイアウト情報に従ってインターフェース描画処理を行い、描画インターフェースを得て、描画インターフェースをインタラクションインターフェースとして決定することに用いられる。
【0116】
ここで、レイアウトサブユニット1541、及び描画サブユニット1542の具体的な実現方式は、上記の図3が対応する実施例におけるステップS103の記述を参照することができるため、ここでは再度詳しく説明しない。
【0117】
いくつかの実施例では、インターフェース出力モジュール16は、ラスタライズ処理ユニット161、及びインターフェース出力ユニット162を含んでもよい。
【0118】
ラスタライズ処理ユニット161は、インタラクションインターフェースにラスタライゼーション処理を行って、ラスタライズ処理インターフェースを得ることに用いられ、
インターフェース出力ユニット162は、ラスタライズ処理インターフェースを出力することに用いられる。
【0119】
ここで、ラスタライズ処理ユニット161、及びインターフェース出力ユニット162の具体的な実現方式は、上記の図3が対応する実施例におけるステップS104の記述を参照することができるため、ここでは再度詳しく説明しない。
【0120】
いくつかの実施例では、上記のサブプログラムアプリケーションのメインレンダリングスレッドは、開発ロジックサブスレッドとインターフェースレンダリングサブスレッドとを含む。インタラクション操作が指示するインターフェースレンダリング指令を生成するステップ、及び実行環境において、インターフェースレンダリング指令に基づいてインタラクション操作に対応するページ要素構造ツリーを作成するステップは、いずれも開発ロジックサブスレッドにおいて実行される。実行環境において、インターフェースレンダリング指令に基づいて第2通信ポートを呼び出し、第2通信ポートによってモバイルアプリケーションプログラム開発フレームワークを呼び出し、モバイルアプリケーションプログラム開発フレームワークに基づいてインタラクション操作に対応するインタラクションインターフェースをレンダリングするステップは、インターフェースレンダリングサブスレッドにおいて実行される。
【0121】
本願の実施例において、第1通信ポート、及び第2通信ポートによって、サブプログラムアプリケーションのホストアプリケーションがサブプログラムアプリケーションとモバイルアプリケーションプログラム開発フレームワークとの間の通信のブリッジとなることを可能にし、それによって、通信のブリッジに基づいてサブプログラムアプリケーション中にモバイルアプリケーションプログラム開発フレームワーク(Flutterフレームワーク)を導入することができ、サブプログラムアプリケーションのレンダリング業務において、モバイルアプリケーションプログラム開発フレームワークを上手に利用してレンダリングを行うことができる。Flutterフレームワークのレンダリングフローが簡便であるため、サブプログラムアプリケーションのレンダリング効率を向上させることができる。同時に、Flutterフレームワークがネイティブユーザインターフェースを構築する能力を備えているため、Flutterフレームワークによってレンダリングされて得られたサブプログラムアプリケーションのインタラクションインターフェースは、その品質がネイティブ品質とはほぼ差がなく、かなり高い品質を備えている。よって、モバイルアプリケーションプログラム開発フレームワークを導入することによって、サブプログラムアプリケーションのレンダリング業務において、レンダリング効率を高めると同時に、レンダリング品質を向上させることができる。同時に、一部のロジック(例えば、レイアウト、描画)をレンダリングサブスレッド内で分割して実行することによって、機器のマルチコアCPUを十分に利用することができ、それによって、並列度を向上させることができ、インターフェースレンダリング、及びインタラクションの流暢さを向上させることができる。同時に、分けられたデュアルスレッドモデルではなくシングルスレッドを採用してレンダリングを行うことで、頻繁な通信によりもたらされる通信損失を減少させることができ、ツリー構造の安定性を非常によくメンテナンスすることができ、安全なコントロールを確実にすると同時に、レンダリングに係る時間、及び遅延を低減させることができる。
【0122】
さらに、図10に参照されるように、図10は、本願の実施例が提供するコンピュータ機器の構造模式図である。図10に示すように、上記の図9が対応する実施例におけるデータ処理装置1は、上記のコンピュータ機器8000に適用することができる。上記のコンピュータ機器8000は、プロセッサ8001、ネットワークポート8004、及びメモリ8005を含んでもよく、なお、上記のコンピュータ機器8000はさらに、ユーザポート8003、及び少なくとも1つの通信バス8002を含んでもよい。ここで、通信バス8002は、これらのコンポーネント間の接続通信を実現することに用いられる。ここで、ユーザポート8003は、ディスプレイ(Display)、及びキーボード(Keyboard)を含んでもよく、任意選択でユーザポート8003はさらに、標準的な有線ポート、及び無線ポートを含んでもよい。ネットワークポート8004は、標準の有線ポート、及び無線ポート(例えば、WI-FIポート)を含んでもよい。メモリ8005は、高速RAMメモリであってもよく、不揮発性メモリ(non-volatile memory)、例えば少なくとも1つの磁気ディスクメモリであってもよい。メモリ8005はさらに、前述のプロセッサ8001から離れて位置する少なくとも1つの記憶装置を有してもよい。図10に示すように、コンピュータ読み取り可能な記憶媒体の1種であるメモリ8005内には、オペレーティングシステム、ネットワーク通信モジュール、ユーザポートモジュール、及び機器制御アプリケーションプログラムが含まれてもよい。
【0123】
図10に示すコンピュータ機器8000において、ネットワークポート8004は、ネットワークコミュニケーション機能を提供することができる。一方、ユーザポート8003は、主に、ユーザに入力のためのポートを提供することに用いられる。一方、プロセッサ8001は、メモリ8005内に記憶された機器制御アプリケーションプログラムを呼び出すことで、以下を実現することに用いられてもよい。
【0124】
サブプログラムアプリケーションに対するインタラクション操作に応答して、インタラクション操作が指示するインターフェースレンダリング指令を生成し、
もしインターフェースレンダリング指令が指示するレンダリングフレームワークがモバイルアプリケーションプログラム開発フレームワークであるなら、第1通信ポートによってインターフェースレンダリング指令をサブプログラムアプリケーションの実行環境まで送信し、サブプログラムアプリケーションの実行環境は、ネイティブアプリケーションの実行環境であり、ネイティブアプリケーションは、サブプログラムアプリケーションのホストアプリケーションであり、第1通信ポートは、第1プログラム言語と第2プログラム言語との間の通信ポートであり、第1プログラム言語は、インターフェースレンダリング指令が対応するプログラム言語を指し、第2プログラム言語は、ネイティブアプリケーションが対応するプログラム言語を指し、モバイルアプリケーションプログラム開発フレームワークは、ネイティブオペレーティングシステム上でネイティブインタラクションインターフェースを構築することに用いられ、
実行環境において、インターフェースレンダリング指令に基づいて第2通信ポートを呼び出し、第2通信ポートによってモバイルアプリケーションプログラム開発フレームワークを呼び出し、モバイルアプリケーションプログラム開発フレームワークに基づいてインタラクション操作に対応するインタラクションインターフェースをレンダリングし、第2通信ポートは、第2プログラム言語と第3プログラム言語との間の通信ポートであり、第3プログラム言語は、モバイルアプリケーションプログラム開発フレームワークが対応する開発言語であり、
インタラクションインターフェースを出力する。
【0125】
理解すべき点として、本願の実施例では、記述されたコンピュータ機器8000は、前述の図3図4が対応する実施例における該データ処理方法についての記述を実行してもよく、前述の図9が対応する実施例における該データ処理装置1についての記述を実行してもよく、ここで再度詳しく説明しない。また、同一の方法を採用する有益な効果の記述については、再度詳しく説明しない。
【0126】
なお、ここで指摘すべき点としては、本願の実施例は、コンピュータ読み取り可能な記憶媒体をさらに提供し、上記のコンピュータ読み取り可能な記憶媒体には、前述において言及されたデータを処理するコンピュータ機器8000が実行するコンピュータプログラムが記憶されている。また上記のコンピュータプログラムは、プログラム指令を含み、上記のプロセッサが上記のプログラム指令を実行するときに、前述の図3図4が対応する実施例における上記のデータ処理方法についての記述を実行することができるため、ここでは再度詳しく説明しない。また、同一の方法を採用する有益な効果の記述については、再度詳しく説明しない。本願に係るコンピュータ読み取り可能な記憶媒体実施例において提示されていない技術的詳細については、本願の方法実施例の記述を参照する。
【0127】
上記のコンピュータ読み取り可能な記憶媒体は、前述のいずれかの実施例が提供するデータ処理装置、又は上記のコンピュータ機器の内部記憶ユニット、例えばコンピュータ機器のハードディスク、又は内部メモリであってもよい。該コンピュータ読み取り可能な記憶媒体は、該コンピュータ機器の外部記憶機器、例えば該コンピュータ機器上に装備されたプラグインハードディスク、スマートメディアカード(smart media card、SMC)、安全なデジタル(secure digital、SD)カード、フラッシュカード(flash card)などであってもよい。さらに、該コンピュータ読み取り可能な記憶媒体はまた、該コンピュータ機器の内部記憶ユニットも外部記憶機器も含んでもよい。該コンピュータ読み取り可能な記憶媒体は、該コンピュータプログラム、及び該コンピュータ機器に必要な他のプログラムやデータを記憶することに用いられる。該コンピュータ読み取り可能な記憶媒体はさらに、既に出力された、又は出力しようとするデータを一時的に記憶することに用いられてもよい。
【0128】
本願の一態様では、コンピュータプログラム製品、又はコンピュータプログラムを提供する。該コンピュータプログラム製品、又はコンピュータプログラムは、コンピュータ指令を含み、該コンピュータ指令は、コンピュータ読み取り可能な記憶媒体内に記憶されている。コンピュータ機器のプロセッサは、コンピュータ読み取り可能な記憶媒体から該コンピュータ指令を読み取り、プロセッサは、該コンピュータ指令を実行し、本願の実施例における一態様が提供する方法を該コンピュータ機器に実行させる。
【0129】
本願の実施例の明細書、特許請求の範囲、及び図面における用語「第1」、「第2」などは、異なるオブジェクトを区別することに用いられ、特定の順序を記述することに用いられるものではない。なお、用語「含む」、及びこれらの任意の変形は、非排他的な含みをカバーすることを意図している。例えば、一連のステップ、又はユニットを含む過程、方法、装置、製品、又は機器は、リストされているステップ、又はモジュールに限定されるものではなく、任意選択でリストされていないステップ、又はモジュールも含むか、又は任意選択でこれらの過程、方法、装置、製品、又は機器について固有の他のステップユニットも含む。
【0130】
当業者が認識できるように、本明細書で開示された実施例と併せて記述される各例示的なユニット、及びアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、又は両方の結合として実現されてもよい。ハードウェアとソフトウェアとの互換性を明確に説明するために、上記の説明においては、機能に従って各例示的な構成、及びステップを既に一般的に記述している。これらの機能がハードウェア及びソフトウェア方式のどれかで実行されるかは、技術的解決手段の特定の応用、及び設計上の制約条件に依存する。当業者であれば、各々の特定の応用に対し異なる方法を使用して記述される機能を実現することができるが、このような実現が本願の範囲を超えるものとして取り扱われるべきではない。
【0131】
本願の実施例が提供する方法、及び関連する装置は、本願の実施例が提供する方法のフロー図、及び/又は構造模式図を参照して記述されており、具体的には、コンピュータプログラム指令によって、方法のフロー図、及び/又は構造模式図のそれぞれのフロー、及び/又はブロック、並びにフロー図、及び/又はブロック図におけるフロー、及び/又はブロックの結合を実現することができる。これらのコンピュータプログラム指令は、汎用コンピュータ、専用コンピュータ、組み込みプロセッサ、又はほかのプログラム可能データ処理機器のプロセッサに提供されることで、1つのマシンを生み出し、コンピュータ、又は他のプログラム可能データ処理機器のプロセッサによって実行される指令が、フロー図の1つのフロー、又は複数のフロー、及び/又は構造模式図の1つのブロック、又は複数のブロック内で指定される機能を実現することに用いられる装置を生み出すようにすることができる。これらのコンピュータプログラム指令は、コンピュータ、又は他のプログラム可能データ処理機器が特定の方式で動作するように導くことができるコンピュータ読み取り可能なメモリ内に記憶され、該コンピュータ読み取り可能なメモリ内に記憶された指令が、指令装置を含む製造品を生み出すようにしてもよい。該指令装置は、フロー図の1つのフロー、又は複数のフロー、及び/又は構造模式図の1つのブロック、又は複数のブロック内で指定される機能を実現する。これらのコンピュータプログラム指令は、コンピュータ、又は他のプログラム可能データ処理機器上にロードされて、コンピュータ、又は他のプログラム可能機器上で一連の操作ステップを実行することで、コンピュータで実現される処理を生み出し、それによって、コンピュータ、又は他のプログラム可能機器上で実行される指令がフロー図の1つのフロー、又は複数のフロー、及び/又は構造模式図の1つのブロック、又は複数のブロック内で指定される機能を実現することに用いられるステップを提供するようにしてもよい。
【0132】
以上に示されたものは、本願の好適な実施例に過ぎず、当然ながら、これによって本願の特許請求の範囲を限定することができない。したがって、本願の特許請求の範囲に従って行われた均等な構成への変更は依然として本願がカバーする範囲に属する。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
【手続補正書】
【提出日】2024-05-30
【手続補正2】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
コンピュータ機器により実行される、データ処理方法であって、
サブプログラムアプリケーションに対するインタラクション操作に応答して、前記インタラクション操作が指示するインターフェースレンダリング指令を生成するステップであって、前記インターフェースレンダリング指令は、前記インタラクション操作に対応するインタラクションインターフェースをレンダリングすることに用いられる、ステップと、
もし前記インターフェースレンダリング指令が指示するレンダリングフレームワークがモバイルアプリケーションプログラム開発フレームワークであるなら、第1通信ポートによって前記インターフェースレンダリング指令を前記サブプログラムアプリケーションの実行環境まで送信するステップであって、前記サブプログラムアプリケーションの実行環境は、ネイティブアプリケーションの実行環境であり、前記ネイティブアプリケーションは、前記サブプログラムアプリケーションのホストアプリケーションであり、前記第1通信ポートは、第1プログラム言語と第2プログラム言語との間の通信ポートであり、前記第1プログラム言語は、前記インターフェースレンダリング指令が対応するプログラム言語を指し、前記第2プログラム言語は、前記ネイティブアプリケーションが対応するプログラム言語を指し、前記モバイルアプリケーションプログラム開発フレームワークは、ネイティブオペレーティングシステム上でネイティブインタラクションインターフェースを構築することに用いられる、ステップと、
前記実行環境において、前記インターフェースレンダリング指令に基づいて第2通信ポートを呼び出し、前記第2通信ポートによって前記モバイルアプリケーションプログラム開発フレームワークを呼び出し、前記モバイルアプリケーションプログラム開発フレームワークに基づいて前記インタラクション操作に対応するインタラクションインターフェースをレンダリングし、前記第2通信ポートは、前記第2プログラム言語と第3プログラム言語との間の通信ポートであり、前記第3プログラム言語は、前記モバイルアプリケーションプログラム開発フレームワークが対応する開発言語である、ステップと、
前記インタラクションインターフェースを出力するステップと、を含む、データ処理方法。
【請求項2】
サブプログラムアプリケーションに対するインタラクション操作に応答して、前記インタラクション操作が指示するインターフェースレンダリング指令を生成するステップは、
前記サブプログラムアプリケーションに対するインタラクション操作に応答して、前記サブプログラムアプリケーションのページレンダリングテンプレートファイルを取得するステップと、
テンプレートパーサーを呼び出し、前記テンプレートパーサーに基づいて前記ページレンダリングテンプレートファイルに対して解析を行って第1解析結果を得て、前記第1解析結果に基づいて前記インタラクション操作が対応するスタイルシャドウ構造ツリーを生成するステップであって、前記スタイルシャドウ構造ツリーは、N個のシャドウノードで構成され、各々のシャドウノードは、1つのページ要素の要素カプセル化情報を含み、Nは、正の整数であり、前記ページ要素は、前記インタラクションインターフェースを構築することに用いられる要素を指す、ステップと、
前記スタイルシャドウ構造ツリーを含むレンダリング指令を生成し、前記スタイルシャドウ構造ツリーを含むレンダリング指令を前記インタラクション操作が指示するインターフェースレンダリング指令として決定するステップと、を含む、請求項1に記載の方法。
【請求項3】
前記実行環境において、前記インターフェースレンダリング指令に基づいて前記インタラクション操作に対応するページ要素構造ツリーを作成するステップであって、前記ページ要素構造ツリーはN個の要素ノードで構成され、1つの要素ノードは1つのページ要素に対応し、各々の要素ノードは、要素ノードに対応するページ要素のスタイル記述データを記述することに用いられる要素記述データを含み、前記ページ要素は、前記インタラクションインターフェースを構築することに用いられる要素を指す、ステップと、
前記ページ要素構造ツリー作成の完了に応答して、前記実行環境において、前記インターフェースレンダリング指令に基づいて第2通信ポートを呼び出すステップを実行するステップと、をさらに含む、請求項1に記載の方法。
【請求項4】
前記インターフェースレンダリング指令は、前記インタラクション操作が対応するスタイルシャドウ構造ツリーを含み、前記スタイルシャドウ構造ツリーは、N個のシャドウノードで構成され、各々のシャドウノードは、1つのページ要素の要素カプセル化情報を含み、
前記実行環境において、前記インターフェースレンダリング指令に基づいて前記インタラクション操作に対応するページ要素構造ツリーを作成するステップは、
スタイルルール集合を取得するステップであって、前記スタイルルール集合は、各々のページ構成要素にそれぞれ対応する要素スタイルルールを含み、前記ページ構成要素は、前記サブプログラムアプリケーションのアプリケーションインターフェースを構成することに用いられる構成要素を指し、前記アプリケーションインターフェースは、前記インタラクションインターフェースを含む、ステップと、
N個のシャドウノードのうちの各々のシャドウノードSに対して、以下の操作を実行するステップであって、前記シャドウノードSに含まれる要素カプセル化情報は、要素カプセル化情報Kであり、Nとiのいずれも正の整数であり、前記操作は、
前記スタイルルール集合において、前記要素カプセル化情報Kにマッチングする要素スタイルルールを決定し、前記マッチングする要素スタイルルールを前記シャドウノードSに対応するノード要素スタイルとして決定する操作と、
スタイル変換ルールに従って、前記シャドウノードSに対応するノード要素スタイルを変換し、シャドウノードSに対応する要素記述データを得る操作と、を含む、ステップと、
前記N個のシャドウノードにそれぞれ対応する要素記述データを決定したときに、各々のシャドウノードをすべて要素ノードとして決定し、対応する要素記述データを含むN個の要素ノードで構成される構造ツリーを、前記インタラクション操作に対応するページ要素構造ツリーとして決定するステップと、を含む、請求項3に記載の方法。
【請求項5】
スタイルルール集合を取得するステップは、
ページスタイル構成表を取得するステップであって、前記ページスタイル構成表は、前記各々のページ構成要素の属性定義情報を含む、ステップと、
スタイルパーサーを呼び出し、前記スタイルパーサーに基づいて、前記ページスタイル構成表中に含まれる属性定義情報に対して解析を行って第2解析結果を得て、前記第2解析結果に基づいて前記スタイルルール集合を生成するステップと、を含む、請求項4に記載の方法。
【請求項6】
前記要素カプセル化情報Kは、前記シャドウノードSのノードカテゴリ情報を含み、前記スタイルルール集合中に含まれる各々のページ構成要素にそれぞれ対応する要素スタイルルールは、構成カテゴリ情報を含み、
前記スタイルルール集合において、前記要素カプセル化情報Kにマッチングする要素スタイルルールを決定することは、
スタイルルール集合中の各要素スタイルルールが含む構成カテゴリ情報のうち、前記シャドウノードSのノードカテゴリ情報にマッチングする構成カテゴリ情報をマッチングする構成カテゴリ情報として決定するステップと、
前記スタイルルール集合中の前記マッチングする構成カテゴリ情報が対応する要素スタイルルールを、前記シャドウノードSの候補要素スタイルルールとして決定するステップと、
前記候補要素スタイルルールに基づき、前記要素カプセル化情報Kにマッチングする前記要素スタイルルールを決定するステップと、を含む、請求項4に記載の方法。
【請求項7】
前記候補要素スタイルルールの数は、少なくとも2つであり、
前記候補要素スタイルルールに基づき、前記要素カプセル化情報Kにマッチングする前記要素スタイルルールを決定するステップは、
jは正の整数であり、前記少なくとも2つの候補要素スタイルルールのうちの各々の候補要素スタイルルールCに対して、以下の操作を実行するステップであって、前記操作は、
前記候補要素スタイルルールCに対応するスタイル優先度属性Dを取得する操作と、
前記スタイル優先度属性Dに基づき、前記候補要素スタイルルールCに対応する優先度重みを決定する操作と、を含む、ステップと、
前記少なくとも2つの候補要素スタイルルールにそれぞれ対応する優先度重みを決定したときに、少なくとも2つ優先度重みのうちの最大優先度重みが対応する候補要素スタイルルールを、前記要素カプセル化情報Kにマッチングする前記要素スタイルルールとして決定するステップと、を含む、請求項6に記載の方法。
【請求項8】
前記スタイル優先度属性Dは、価値属性、及びレア属性を含み、
前記スタイル優先度属性Dに基づき、前記候補要素スタイルルールCに対応する優先度重みを決定するステップは、
前記レア属性に対応するレア値を取得するステップと、
もし前記価値属性が価値有効属性であり、かつ前記レア値がレア閾値よりも大きいなら、第1重み区間中の前記レア値にマッチングする第1重み値を、前記候補要素スタイルルールCに対応する優先度重みとして決定するステップと、
もし前記価値属性が価値有効属性であり、かつ前記レア値が前記レア閾値よりも小さいなら、第2重み区間中の前記レア値にマッチングする第2重み値を、前記候補要素スタイルルールCに対応する優先度重みとして決定するステップであって、前記第2重み区間中の重み値は、前記第1重み区間中の重み値よりも小さい、ステップと、
もし前記価値属性が価値無効属性であり、かつ前記レア値がレア閾値よりも大きいなら、第3重み区間中の前記レア値にマッチングする第3重み値を、前記候補要素スタイルルールCに対応する優先度重みとして決定するステップであって、前記第3重み区間中の重み値は、前記第2重み区間中の重み値よりも小さい、ステップと、
もし前記価値属性が価値無効属性であり、かつ前記レア値がレア閾値よりも小さいなら、第4重み区間中の前記レア値にマッチングする第4重み値を、前記候補要素スタイルルールCに対応する優先度重みとして決定するステップであって、前記第4重み区間中の重み値は、前記第3重み区間中の重み値よりも小さい、ステップと、を含む、請求項7に記載の方法。
【請求項9】
前記モバイルアプリケーションプログラム開発フレームワークに基づいて前記インタラクション操作に対応するインタラクションインターフェースをレンダリングすることは、
前記N個の要素ノードのうちの各々の要素ノードSに対して、以下の操作を実行するステップであって、前記操作は、
前記第2通信ポートに基づいて、前記第3プログラム言語の分離された動作環境において前記要素ノードSに対応するプログラムオブジェクトを作成する操作と、
前記要素ノードSに対応するプログラムオブジェクトに基づいて、前記要素ノードSに対応する要素記述データに対してマウント操作処理を行い、前記要素ノードSに対応するマウントオブジェクトを得る操作と、を含む、ステップと、
前記N個の要素ノードにそれぞれ対応するマウントオブジェクトを決定したときに、対応するマウントオブジェクトを含むN個の要素ノードで構成される構造ツリーを、前記インタラクション操作に対応する要素マウント構造ツリーとして決定するステップと、
前記モバイルアプリケーションプログラム開発フレームワークに基づいて、前記要素マウント構造ツリーに対してレンダリング処理を行い、前記インタラクションインターフェースを得るステップと、を含む、請求項4に記載の方法。
【請求項10】
前記モバイルアプリケーションプログラム開発フレームワークに基づいて、前記要素マウント構造ツリーに対してレンダリング処理を行い、前記インタラクションインターフェースを得るステップは、
前記モバイルアプリケーションプログラム開発フレームワークに基づいて、前記要素マウント構造ツリーに対してインターフェースレイアウト処理を行い、前記インタラクションインターフェースのインタラクションインターフェースレイアウト情報を得るステップと、
前記インタラクションインターフェースレイアウト情報に従ってインターフェース描画を行い、描画インターフェースを得て、前記描画インターフェースを前記インタラクションインターフェースとして決定するステップと、を含む、請求項9に記載の方法。
【請求項11】
前記インタラクションインターフェースを出力するステップは、
前記インタラクションインターフェースにラスタライゼーション処理を行って、ラスタライズ処理インターフェースを得るステップと、
前記ラスタライズ処理インターフェースを出力するステップと、を含む、請求項1に記載の方法。
【請求項12】
前記サブプログラムアプリケーションのメインレンダリングスレッドは、開発ロジックサブスレッドとインターフェースレンダリングサブスレッドとを含み、前記インタラクション操作が指示するインターフェースレンダリング指令を生成するステップ、及び前記実行環境において、前記インターフェースレンダリング指令に基づいて前記インタラクション操作に対応するページ要素構造ツリーを作成するステップは、いずれも前記開発ロジックサブスレッドにおいて実行され、前記実行環境において、前記インターフェースレンダリング指令に基づいて第2通信ポートを呼び出し、前記第2通信ポートによって前記モバイルアプリケーションプログラム開発フレームワークを呼び出し、前記モバイルアプリケーションプログラム開発フレームワークに基づいて前記インタラクション操作に対応するインタラクションインターフェースをレンダリングすることは、前記インターフェースレンダリングサブスレッドにおいて実行される、請求項1に記載の方法。
【請求項13】
データ処理装置であって、
指令生成モジュールと、指令送信モジュールと、ポート呼び出しモジュールと、インターフェースレンダリングモジュールと、インターフェース出力モジュールと、を含み、
前記指令生成モジュールは、サブプログラムアプリケーションに対するインタラクション操作に応答して、前記インタラクション操作が指示するインターフェースレンダリング指令を生成することに用いられ、前記インターフェースレンダリング指令は、前記インタラクション操作に対応するインタラクションインターフェースをレンダリングすることに用いられ、
前記指令送信モジュールは、もし前記インターフェースレンダリング指令が指示するレンダリングフレームワークがモバイルアプリケーションプログラム開発フレームワークであるなら、第1通信ポートによって前記インターフェースレンダリング指令を前記サブプログラムアプリケーションの実行環境まで送信し、前記サブプログラムアプリケーションの実行環境は、ネイティブアプリケーションの実行環境であり、前記ネイティブアプリケーションは、前記サブプログラムアプリケーションのホストアプリケーションであり、前記第1通信ポートは、第1プログラム言語と第2プログラム言語との間の通信ポートであり、前記第1プログラム言語は、前記インターフェースレンダリング指令が対応するプログラム言語を指し、前記第2プログラム言語は、前記ネイティブアプリケーションが対応するプログラム言語を指し、
前記ポート呼び出しモジュールは、前記実行環境において、前記インターフェースレンダリング指令に基づいて第2通信ポートを呼び出すことに用いられ、
前記インターフェースレンダリングモジュールは、前記第2通信ポートによって前記モバイルアプリケーションプログラム開発フレームワークを呼び出し、前記モバイルアプリケーションプログラム開発フレームワークに基づいて前記インタラクション操作に対応するインタラクションインターフェースをレンダリングすることに用いられ、前記第2通信ポートは、前記第2プログラム言語と第3プログラム言語との間の通信ポートであり、前記第3プログラム言語は、前記モバイルアプリケーションプログラム開発フレームワークが対応する開発言語であり、
前記インターフェース出力モジュールは、前記インタラクションインターフェースを出力することに用いられる、データ処理装置。
【請求項14】
コンピュータ機器であって、プロセッサと、メモリと、ネットワークポートと、を含み、
前記プロセッサは、前記メモリ、及び前記ネットワークポートに連結され、前記ネットワークポートは、ネットワーク通信機能を提供することに用いられ、前記メモリは、コンピュータプログラムを記憶することに用いられ、前記プロセッサは、前記コンピュータプログラムを呼び出すことで、前記コンピュータ機器に請求項1~12のいずれか1項に記載の方法を実行させることに用いられる、コンピュータ機器。
【請求項15】
コンピュータプログラムであって、プロセッサで読み取られ且つ実行されることで、前記プロセッサを有するコンピュータ機器に請求項1~12のいずれか1項に記載の方法を実行させることができるように構成された、コンピュータプログラム。
【国際調査報告】