JP6599313B2 - ネイティブモバイルアプリケーションコードのコンピュータ支援開発 - Google Patents

ネイティブモバイルアプリケーションコードのコンピュータ支援開発 Download PDF

Info

Publication number
JP6599313B2
JP6599313B2 JP2016515486A JP2016515486A JP6599313B2 JP 6599313 B2 JP6599313 B2 JP 6599313B2 JP 2016515486 A JP2016515486 A JP 2016515486A JP 2016515486 A JP2016515486 A JP 2016515486A JP 6599313 B2 JP6599313 B2 JP 6599313B2
Authority
JP
Japan
Prior art keywords
application
mobile
mobile device
existing
code modules
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.)
Active
Application number
JP2016515486A
Other languages
English (en)
Other versions
JP2016534419A (ja
JP2016534419A5 (ja
Inventor
シェークスピア,ダリル・マーティン
ノバコフスキー,デイビッド・ウェイン
ローラン,ニコール・ジョディ
Original Assignee
オラクル・インターナショナル・コーポレイション
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 オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Publication of JP2016534419A publication Critical patent/JP2016534419A/ja
Publication of JP2016534419A5 publication Critical patent/JP2016534419A5/ja
Application granted granted Critical
Publication of JP6599313B2 publication Critical patent/JP6599313B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Description

分野
本開示は、コンピュータ支援ソフトウェアアプリケーション開発の分野に関し、より特定的には、アプリケーションオブジェクトモデルに基づいたネイティブモバイルアプリケーションの自動的合成のための技術に関する。
背景
モバイルデバイスは至る所に存在し、ユーザはデスクトップアプリケーションを使用するのと同じまたは同様の態様で自身のモバイルデバイスを使用することを要求している。モバイルアプリケーションのより多くかつより速い展開を求める要求は重大であるが、モバイルデバイス上で実行されるネイティブアプリケーションを合成する容易または標準的な方法は出現していない。レガシー技術は、モバイルデバイスのブラウザにおいて実行されるアプリケーションプラグインを作成することを含む。しかしながら、そのようなレガシーアプローチは、デバイスに対してネイティブで実行される(たとえばブラウザに依存しない)モバイルアプリケーションを作り出すことはできない。モバイルデバイスがダウンロード可能なアプリケーションまたはアプレットをサポートする他のレガシーの場合、および、そのようなモバイルアプリケーションがブラウザに利用可能なリソースを超えてモバイルデバイスシステムリソースの使用を含む他のレガシーの場合においてさえ、ネイティブアプリケーションのハンドコーディング、または、各モバイルデバイスおよび/もしくは各オペレーティングシステムに特有のアプリケーションもしくはプラグインの開発は煩わしすぎる。異種混合モバイルプラットフォーム上で実行されることを目標としているが、それでもデスクトップアプリケーションが動作する態様と同様または同一である態様でバックエンド(たとえば、サーバベースの)アプリケーションとインターフェイス接続するアプリケーションの迅速な開発および展開の問題に対処するための技術が必要である。
前述のレガシーアプローチのいずれも、アプリケーションオブジェクトモデルに基づいたネイティブモバイルアプリケーションの自動的な合成のための本願明細書において開示される技術の能力を達成しない。したがって、改良の必要性がある。
概要
本開示は、レガシーアプローチに関する前述の問題に対処するのに適した向上された方法、システムおよびコンピュータプログラムプロダクトを提供する。より具体的には、本開示は、アプリケーションオブジェクトモデルに基づいたネイティブモバイルアプリケーションの自動的な合成のための方法、システム、およびコンピュータプログラムプロダクトにおいて使用される技術の詳細な説明を提供する。特許請求される実施形態は、異種混合のモバイルプラットフォーム上で実行されることを目標とするアプリケーションの迅速な開発および展開の問題に対応する。より具体的には、いくつかの請求項は、所与のオブジェクトモデルに準拠するようネイティブコードの集合を合成するためのアプローチに向けられており、これらの請求項は、異種混合のモバイルプラットフォーム上で実行されることを目標とするアプリケーションの迅速な開発および展開の問題に対処するための技術分野を進歩させるとともに、周辺技術分野を進歩させる。いくつかの請求項は、開示された環境における複数のシステムの機能を向上させる。
シンセサイザは、モバイルデバイス識別子と、アプリケーション識別子、オブジェクトモデルおよびフォーム識別子のような付加的な情報とを受け取り、次いで識別されたタイプのモバイルデバイス上でどのフォームを実現するべきかを決定するよう付加的な情報を分析すると開始する。さらなる合成処理は、モバイルデバイス上で実現するべきファンクションのセットを決定するためにフォームを分析することを含む。ファンクションの決定されたセットを使用して、ネイティブアプリケーションコードモジュールはリポジトリから抽出される。抽出されたネイティブアプリケーションコードモジュールは、ファンクションのセット(たとえば作成、読出、更新、削除)に対応する。コードモジュールは、モバイルデバイスに対して展開され得るネイティブモバイルアプリケーションを生成するためにアセンブルされる。サーバ機能(たとえばミドルウェア)が、バックエンドアプリケーションのフォーム処理をエミュレートするようにモバイルデバイスからのメッセージをインターセプトする。フォームを使用する任意のバックエンドアプリケーションは、ネイティブモバイルアプリケーションによってアクセスされ得る。
いくつかの実施形態は、モバイルデバイス識別子と、アプリケーション識別子、オブジェクトモデルおよびフォーム識別子のうちの少なくとも1つを含む情報とを受け取ることと、モバイルデバイス上で実現するべき少なくとも1つのフォームを決定するよう情報を分析することと、モバイルデバイス上で実現するべきファンクションのセットを決定するようフォームを分析することと、ファンクションのセットの少なくとも一部分に対応する複数の選択されたネイティブアプリケーションコードモジュールをネイティブアプリケーションコードモジュールのリポジトリから抽出することと、フォームの少なくとも一部分と、選択されたネイティブアプリケーションコードモジュールのうちの少なくともいくつかとを含むモバイルアプリケーションをアセンブルすることとを実現する。
1つの局面において、オブジェクトモデルは、フィールド、ファンクションおよびメッセージのうちの少なくとも1つを含む。別の局面において、選択されたネイティブアプリケーションコードモジュールは、作成オペレーション、置換オペレーション、更新オペレーションおよび削除オペレーションのうちの少なくとも1つを開始するよう機能する。
いくつかの実施形態は、モバイルデバイス識別子に対応するモバイルデバイス上にモバイルアプリケーションを展開することをさらに含み、また、いくつかの実施形態はJSONメッセージからJava(登録商標)クラスを生成することをさらに含む。
いくつかの実施形態において、選択されたネイティブアプリケーションコードモジュールのうちの少なくとも1つは、要求メッセージを形成することを実現し、またいくつかの実施形態において要求メッセージは、シンプルオブジェクトアクセスプロトコル(SOAP:simple object access protocol)要求を含み、また、いくつかの実施形態において、要求メッセージは、リプリゼンテーショナルステイトトランスファ(REST:representational state transfer abstraction)抽象化要求を含み、さらに他の実施形態において、要求メッセージはパスワードおよび/または画像キャプチャファイルを含む。
既存のバックエンドアプリケーションの特定から、特定されたアプリケーションのデータモデルは既知であり得、また、フォームにおいて使用されるフィールドが既知であり得る。シンセサイザモジュールは、ユーザから特定を受け取り、ネイティブモバイルアプリケーションコードモジュールの集合を合成する。シンセサイザモジュールは、特定を分析するためのパーサーモジュールと、クエリージェネレータとを含み得、当該クエリージェネレータは、フレームワーク規格、サポートされたインターフェイス、およびコンポーネント定義などを含むフレームワーク定義にアクセスし得、および/または、ネイティブアプリケーションコードモジュールのリポジトリと、バックエンドアプリケーションおよび/またはメッセージによって使用されるフォームおよびフィールドのリポジトリとにアクセスし得る。シンセサイザモジュールはさらに、2つ以上のネイティブアプリケーションコードモジュールのアセンブリを促進するコード統合モジュールを含み得る。
いくつかの実施形態において、(たとえば特定モジュールからの)特定は、シンセサイザモジュールが(たとえば、コンフィギュラブルクラスジェネレータを使用して)それからJavaクラスを生成すべきメッセージを抽出するのに十分である。この技術はさらに以下に論じられる。特定モジュールは、データモデルが既知であり得るバックエンドアプリケーションを特定するようユーザを支援するように機能する。例示的な場合において、特定されたアプリケーションについてのフォームのセットは、(たとえば規約に基づいて)分かり得るか、または、明示的に特定され得る。フォームはそれ自体、マークアップ言語(たとえばHTML)でコード化され得る。フォームはフィールドを使用し、データモデルにおいて使用されるフィールドのうちのいずれかが抽出され得、抽出されたフィールドは、フレームワークオペレーションのライブラリから選択される対応するオペレーション(たとえば、作成オペレーション、読出オペレーション、更新オペレーション、削除オペレーション)にマッピングされ得る。フレームワークオペレーションのライブラリは、モバイルデバイスのためのネイティブコードを含み得、特定のモバイルデバイスまたはオペレーティングシステムに特有であり得る。モバイルデバイスについてのそのようなネイティブコードは、パラメータ化され得るか、および/または、予め知られた態様で相互作用するように定義され得る。
ひとたびフレームワークオペレーションが選択およびパラメータ化されれば、選択されたフレームワークオペレーション同士の間でのリレーションシップ(たとえばコール、コールバック、パス)を提供するようコードが合成される。付加的なネイティブコードが、当該コードがモバイルデバイスにロードされテストされ得るようにモバイルデバイスアプリケーションを生成するよう加えられ得る。モバイルデバイスアプリケーションは、さまざまな条件下およびさまざまなセッティングにおいてテストされ得、テスト結果は、別のイテレーションを通じて進捗に影響を与え得、合成されたアプリケーションに組み込まれるように付加的なファンクションを追加する。
合成のいくつかの局面および結果得られるモバイルデバイスアプリケーションのいくつかの局面は、フレームワークの特性およびフレームワークとの相互作用に部分的に依存する。例示的な特性および相互作用のセットは、以下のように論じられる。
前述のフレームワークは、バックエンドフレームワーク(たとえばモバイルサービスフレームワーク)の形態を取り得、当該バックエンドフレームワークは、サービスプロキシ、Javaアプリケーションサーバ(JAS:Java Application Server)、および任意数または任意のグループのアプリケーションから形成される。これらのアプリケーションは、デスクトップ環境にサーブするバックエンドアプリケーションと実質的に同じである。たとえば、多くのバックエンドアプリケーションは、(たとえば、コンフィギュレーションデータを使用して)コンフィギュラブルであり、作成、読出、更新、および削除といった良好に定義されたフォームオペレーションのセット(たとえばオペレーションを参照)をサポートするフォーム(たとえばフォーム)を介してユーザと相互作用する。オペレーションのうちのいずれか、いくつかまたはすべてがデータベースエンジンにアクセスするよう機能する。
モバイルデバイスは、モバイルデバイスアプリケーションの任意の合成されたインスタンスにアクセスするレイヤーとして構成されるネイティブモバイルデバイスユーザインターフェイス(UI)を含む。モバイルデバイスアプリケーションは、プレゼンテーションレイヤーおよびデータ制御レイヤーから構成される。プレゼンテーションレイヤーおよびデータ制御レイヤー内のモジュール間の相互作用は、非同期通信を促進するハンドシェイク交換、ならびに/または、モバイルデバイスおよび/もしくはそのオペレーティングシステムのネイティブな局面に従って定義される共通してアクセス可能なデータ構造を使用するデータの交換のような良好に定義されたルールに従う。
例示的な場合において、モバイルデバイスは、無線ネットワークを介してアプリケーションシステムのネットワークインターフェイスに対して直接的に通信する。他の場合において、モバイルデバイスは、無線ネットワークを介してミドルウェアと直接的に通信する。
モバイルアプリケーション相互作用は、ミドルウェアコンポーネント(たとえばミドルウェア)を含む。ミドルウェアは、モバイルデバイスへの通信およびモバイルデバイスからの通信を促進するよう機能するオペレーションユニットを含み得る。たとえば、ミドルウェアコンポーネントはウェブサーバを実現し得、そのようなウェブサーバは、モバイルデバイスに対して、バックエンドとの直接的なインターフェイスを必要としないさまざまなサービスを実行し得る。厳密に1つのそのような例として、ミドルウェアコンポーネントはサービスプロセッサの連なり(たとえばフォームサービス要求プロセッサ、トークンサービス要求プロセッサ、メディアオブジェクト要求プロセッサなど)を含み得る。トークンサービス要求プロセッサは、パスワード、支払い、または、暗号化されたデータもしくは暗号されていないデータの任意のフォームを指すトークンを処理し得る。メディアオブジェクト要求プロセッサは、メディアオブジェクトの転送およびフォーマットを促進する。たとえば、メディアオブジェクトプロセッサは、バックエンドアプリケーションに大きなメディアファイル(たとえば高解像度画像キャプチャ)を転送するよう、モバイルデバイスに対する複数回の非同期アクセスまたは要求を行ない得る。
ミドルウェアコンポーネントによって提供されるサービスは、これまでに論じられたようにモバイルデバイスのみへのサービスの提供に限定されない。いくつかの場合には、ミドルウェアコンポーネントは任意の外部システムにサービスを提供し得る。
この環境において、ミドルウェアコンポーネントは、モバイルデバイスおよびアプリケーションシステムへのメッセージならびにモバイルデバイスおよびアプリケーションシステムからのメッセージを処理する。例示的な実施形態において、メッセージは予め定義されたプロトコルに従う。いくつかの場合において、メッセージは、たとえばJavaScript(登録商標)オブジェクトノーテーション(JSON:JavaScript Object Notation)に従って、メッセージのペイロードにおいて予め定義されたオブジェクトまたはその部分を含む場合がある予め定義されたメッセージ仕様に適合するメッセージへとフォーマットされる。
モバイルデバイスアプリケーションメッセージ交換メカニズムは、要求および応答を含むJSONメッセージ交換を含む。コードの開発の取り組みおよび合成は、ある規約に従う既存のアプリケーションのオブジェクトモデルに基づき行なわれ得る。たとえば、1つの規約は、所望のモバイルアプリケーションのデータモデル表現へのアクセスを必要とする。そのようなアクセスが与えられると、ネイティブモバイルアプリケーションを実現するためにビジネスモデルタイプロジックをコード化する必要はほとんどなくなるか、またはその必要はなくなる。そのようなモバイルアプリケーションは、所与のデータモデルに対して作成オペレーション、読出オペレーション、更新オペレーション、および削除オペレーション(CRUD)を行うよう、ネイティブコードを用いて構成され得る。デベロッパによって提供される場合がある特定および/または命令を有するシンセサイザモジュールは、(たとえばフォーム要求プロセッサによってJavaオブジェクトに返されるJSONメッセージをデシリアライズ(deserialize)する)Javaクラスと、オブジェクトをユーザインターフェイスの特定の局面(たとえばフォームフィールド)に結合するように構成されるデータ結合モジュール(たとえばデータ制御モジュール)と、(たとえばサーバ環境における)選択されたアプリケーションを実行または開始するようサービスプロキシに要求するJavaクラス(たとえば示されたJavaデータ制御クラス)とを合成または作成し得る。
Javaオブジェクトは、データ結合モジュールを介してUIに結合される。シンセサイザモジュールは、(たとえばプレゼンテーションレイヤーにおいて実現され得るような)ユーザインターフェイスコンポーネントと、モバイルアプリケーションによって実現されるページ間でナビゲートするナビゲーションメカニズムといったような付加的なコンポーネントをアセンブルするようパーティショニングを生成する。
合成プロセスは、モバイルアプリケーションコードの生成をガイドするために合成能力を使用するモバイルアプリケーションデベロッパによるイテレーションからなる。合成能力を使用することにより、デベロッパは、プラットフォームから独立したモバイルデバイスアプリケーションを作成することが可能になる。厳密に一例として、モバイルデバイスはモバイルデバイス識別子(たとえばiOS、AndroidまたはWindowsモバイルなど)によって識別され得、ネイティブモバイルデバイスコードは、特定されたデバイスについて、(たとえば、モバイルデバイス識別子に基づいて)抽出および/またはアセンブルおよび/または生成され得る。
モバイルサービスフレームワークメッセージ交換メカニズムは、交換されたメッセージがモバイルサービスフレームワークによって生成および/または消費されるJSON交換を含む。示されるように、モバイルサービスフレームワークは、デベロッパが迅速にネイティブモバイルアプリケーションを開発するためのビルディングブロックとして使用され得るフレームワークを一緒に形成する複数の予めパッケージ化された技術の組合せを含む。サービスプロキシはメッセージステアリングおよびフロー制御のために機能し、抽象化レイヤー(たとえばファンクションのあるセットのみを公開する)として機能する。サービスプロキシはいくつかのパーティションへ分割され得、各パーティションはあるタイプの要求を処理するために専用である。厳密に例として、示されるサービスプロキシは、フォームサービス要求プロセッサと、トークンサービス要求プロセッサと、メディアオブジェクト要求プロセッサとを含む。そのような要求プロセッサは、サービスとしてアプリケーション層機能の実行を促進する。第2に、上記例は、Javaアプリケーションサーバ(JAS:Java Application Server)を含む。示されるように、JASは、要求および応答のプロトコルを介してサービスプロキシからの要求を扱うよう修正される。第3に、当該例は1つ以上のバックエンドアプリケーションを含む。
例示的な開発環境において、モバイルサービスフレームワークの構成は、バイナリコードフォーマット(たとえば、.jarファイル)で再使用可能な予めパッケージ化された機能の利用可能性によって促進され、たとえば、ログインフォームが.jarファイルで提供され得る。例示的な開発環境はさらに、所与のJSONメッセージに特有のJavaクラスを作成するコンフィギュラブルクラスジェネレータの1つ以上のインスタンスを含み得る。これらのクラスはたとえば、Javaオブジェクトへのモバイルアプリケーションの要求に基づいて、サービスプロキシによって返されるJSONメッセージをデシリアライズするよう使用される。
モバイルサービスフレームワークおよびサービスプロキシによって提供されるサービスは、これまでに論じられたようにモバイルデバイスのみへサービスを提供することに限定されない。いくつかの場合において、モバイルサービスフレームワークおよびサービスプロキシは任意の外部システムにサービスを提供し得る。
ユーザは、エンタープライズアプリケーションの機能へのアクセスをいつでもおよびどこからでも(たとえばネイティブ環境外から)から求める。この状況は、時に非常に複雑なビジネスロジックを有する良好に開発されたビジネスアプリケーションを外部システムにて利用可能になるよう提供することについてのユーザの要求と解釈される。そのような外部システムは、前述のモバイルデバイスのいずれかとして具現化され得るか、または、外部システムが、モバイルデバイスであるかまたはモバイルデバイスでない場合がある付随的なプロセッサであり得る。外部システムに全アプリケーションを移すことはコスト効率(または実際的)でなく、また、デスクトップから外部システムに単にユーザインターフェイスを移すレガシーな試みも不十分である。後者のアプローチは少なくとも、デプロイヤ(deployer)がしばしばエンタープライズアプリケーションのファンクションのあるサブセットのみが外部システムで利用可能であることを(たとえばセキュリティおよび/または性能上の理由で)望むという点で失敗している。
1つ以上の外部システムがネイティブ(非外部)のシステムと相互作用する必要がある環境において、インターフェイスはしばしば、データを作成および消費するよう特定のインターフェイスを必要とする異なる規格を使用して開発されている。外部インターフェイスに、異なる規格を実現させるおよび/または複数の内部インターフェイスを実現させる、ことを可能にする抽象化レイヤーを、ネイティブアプリケーションと外部システムとの間に作成する必要性がある。この抽象化レイヤーは、ネイティブシステムがアップグレード(たとえばコード変更)をする場合またはインターフェイス接続技術のうちのいずれかが変化する場合に、外部システムへの影響を低減する。
ミドルウェアは、サービスプロキシのインスタンスを含む。サービスプロキシは、アプリケーションに対して抽象化レイヤーを実現しており、バックエンドアプリケーションのデータモデルに従って、変更、読出、更新、および削除オペレーションのうちのいずれかのフォームを実行するように構成される。
示されるように、ソリューションは、JASサーバへのサーブレットベースのコールを用いて、フォームサービス要求(フォームサービス要求プロセッサを参照)と、トークンサービス要求(トークンサービス要求プロセッサを参照)と、メディアオブジェクトサービス要求(メディアオブジェクト要求プロセッサを参照)とをサポートする。サービスプロキシは拡張可能であり、そのようなニーズが発生する際に継続していて進行中の開発および追加されるべき機能をサポートする。
付加的なパーティショニングは妥当である。たとえば、サービスプロキシは、外部システムからデータ(たとえばネイティブアプリケーションのフォームフィールドに対応するデータ)を受け取り得、データがネイティブに受け取られた(たとえばネイティブアプリケーションのフォームフィールドに対応するデータを受け取った)かのようにネイティブシステム上でそのデータを処理する。そのようなオペレーションは、外部システムからのフォーム指向のオペレーションを実行するために、本願明細書において開示されたフォームサービスの実施形態を使用して実現され得る。
前述の議論で言及されたように、サービスプロキシは多くのこれまで未知であるビジネスサービス要求を消費するよう拡張または増強され得る。そのような増強は、シンプルオブジェクトアクセスプロトコル(Simple Object Access Protocol)すなわちSOAP(たとえばSOAP要求を参照)のすべてもしくは一部のインプリメンテーションを含み得、および/または、そのような増強は、リプリゼンテーショナルステイトトランスファ(Representational State Transfer)の抽象化すなわちREST(REST要求を参照)または将来のプロトコルのすべてもしくは一部のインプリメンテーションを含み得、これにより、外部システムがそれらのプロトコルのうちのいずれか(または任意の組合せ)を使用してサービスプロキシとインターフェイス接続し得る。
サービスプロキシは、示されるアプリケーションと他の現在および潜在的な外部システムとの間の抽象化レイヤーとして機能することに加えて、セッション管理、キャッシング、バッチ要求のサポートおよびセキュリティ向上を提供するよう有効化され得る。抽象化レイヤーによって提供されるファンクションの処理のいくつかの局面は、バックエンドシステムによる処理を伴い得る。たとえば、サーブレットコールは、Javaサーバにフォームサービス要求を開始させ得る。または、たとえば、SOAPコールは、拡張可能ロジックにおける処理を開始し得る。
前述のように、特定されたアプリケーションについてのフォームのセットは(たとえば規約に基づいて)既知であり得る。さらに、フォームが既知である場合、フィールドは既知であり得る。フィールドのセットが与えられると、対応するオペレーションのセットが既知であり得、また、フィールドのセットが与えられると、バックエンドアプリケーションにフィールドデータを搬送するメッセージのセットおよびバックエンドアプリケーションからフィールドデータを搬送するメッセージのセットも既知であり得る。多くの場合において、モバイルアプリケーションによって扱われる必要があるのはいくつかのフィールドのみである(たとえばバックエンドアプリケーションによってサポートされる必要があるのはフィールドおよび/または対応するオペレーションのサブセットのみ)。
示されるように、オブジェクトモデルヒエラルキーは、アプリケーション(たとえば、アプリケーションセットを参照)の1つ以上のインスタンスを含むよう組織化され得、当該アプリケーションは、複数のファンクション(ファンクションセットを参照)を包含しており、当該ファンクションはフィールド(フィールドセットを参照)を通じてユーザと相互作用しており、フィールドは、オペレーション(オペレーションセットを参照)に対して一対一または一対多のリレーションシップを有し得る。任意のアプリケーションまたはファンクションまたはフィールドは、メッセージを発し得る(メッセージを参照)。他のヒエラルキーが可能であり、また、いくつかの組織は厳密に階層的ではない。
(たとえばオブジェクトモデルから得られ得るような)マッピングリレーションシップは、フォームと、オペレーションの任意のインスタンスおよび/またはフォームメタデータとの間の任意数のリレーションシップ404を定義し得る。フォームメタデータは任意の公知の技術を使用(たとえばXMLを使用、BNFを使用など)してコード化され得る。厳密に例示的な例として、フォームメタデータは、それぞれのフォームコンポーネント(たとえばファンクション、オペレーション、フィールド、グリッド、ボタンなど)に対応するXML要素から構成され得る。フォームメタデータは、フォームおよび/またはそのコンポーネントの構造および任意の他の局面を記述し得る。
示されるように、リレーションシップはXML要素にフォームをマッピングする。オペレーションは、フィールドの任意数の関連付けられるインスタンスを有し得る。リレーションシップはXML要素にオペレーションをマッピングする。XML要素は、任意数のさまざまな属性(たとえばタイプなど)から構成され得る。リレーションシップは、XML要素に、フィールドボックスに与えられるフィールドをマッピングし得る。XML要素は、任意数のさまざまな属性(たとえばid、ラベル、データタイプなど)を含み得る。リレーションシップは、XML属性(たとえばラベルなど)にフィールドラベル(たとえば都市など)をマッピングし得る。リレーションシップは、示されたXMLフィールド要素を使用して、XML属性(たとえばデータタイプなど)にフィールド値をマッピングし得る。
他の実施形態は、XMLフォーマットではなくJSONフォーマットで直接的にマップを作成し得る。いくつかの場合において、リレーションシップは、オブジェクトモデル、データ構造またはハードコードされたマップを用いる、オペレーションへのマップ/オペレーションからのマップを含む。ランタイムプロセスは、(たとえばフォーム識別子または推論を介して)実行されているフォームを識別し、識別されたフォームにおいて使用されるコンポーネント(たとえば日付フィールド、ドロップダウン、グリッド行など)に基づいて、そのフォームのJSON表現を作り出す。
シンセサイザモジュールは、バックエンドアプリケーションの識別を与えられる。アプリケーションは、オブジェクトモデルによって決定され得るフォームのセットを使用する。前述のように、モバイルアプリケーションによって扱われる必要があるのは、いくつかのフィールドのみである。フィールドは、フィールド名によって明示的に特定され得るか、または、ファンクションが抽出されるアプリケーションの特定によって暗示的に表現され得るか、または、ファンクションのセットの特定によって暗示的に特定され得る。いくつかの場合において、選択されたファンクションの選択および/または定義は、使用されるべきフィールドを(たとえば暗示的に)特定するよう機能する。必要とされるフィールドおよび/またはファンクションが既知の場合、対応するメッセージのセットは既知であり得る。ここで、モバイルデバイスアプリケーションの構造は既知であり、コードは、ネイティブモバイルアプリケーションコードモジュールのリポジトリにマッピングされ得るとともに、ネイティブモバイルアプリケーションコードモジュールのリポジトリから選択される。そのようなネイティブモバイルアプリケーションコードモジュールは、前述の技術を使用してアセンブルされ得、モバイルアプリケーションコードモジュールコードと、生成されたコード(たとえば、クラスジェネレータから発せられたコード)および/または任意の他のコード(たとえば合成されたコード)とは、モバイルターミナル上で実行され得、テストが行なわれ得る。
1つのフローは、シンセサイザのユーザがUIレイアウトを定義し、制御をデータコントローラに結合し、ページナビゲーションを定義すると開始する。別のフローは、シンセサイザのユーザが、データ制御クラスに基づいてデータ制御を自動生成すると始まり、その後、データ制御は自動的にデータ制御クラスと同期したままとなる。さらに別のフローは、シンセサイザのユーザが、アプリケーションがビジネスロジックを実行する必要がある属性および機能を使用するためのインターフェイス接続ルールをコーディングすると始まる。インターフェイス接続ルールは、属性を格納し、かつ、対応するバックエンドアプリケーションをサービスプロキシを介して呼び出すために機能し、モバイルアプリケーションについて必要なビジネスロジックを実行する。
いくつかの場合において、シンセサイザのユーザのワークフローは、カスタマイズされたニーズに合致するようモバイルアプリケーションによって使用されている基礎をなすバックエンドアプリケーションを修正することを含む。
結果得られる生成されたモバイルアプリケーションは、たとえば、「顧客(customer)の「C」のサーチタイプによってアドレス帳をサーチする」ようユースケース(use case)が与えられるある範囲の使用モデルをサポートする。初期オペレーションは、ユーザアクション(たとえば、ユーザがUIテキストボックスに「C」を入力)に応答し得る。次のオペレーションは、デベロッパがデータ制御とUIのテキスト制御との間にセットした結合に基づいてデータ制御を通じてデータが渡されるシステム応答を含み得る。システム応答はさらに、データ制御モジュールがそのサーチ属性をセットするためにデータ制御オブジェクトのセッターを呼び出すオペレーションを含み得る。そのような応答は、データ制御とデータ制御クラスとの間のシステムが生成した結合に基づき得る。
別の状況において、生成されたモバイルアプリケーションは、ユーザがサーチボタンをクリックするユーザアクションの際に開始する使用モデルをサポートし、システムは、デベロッパが確立した結合に基づきデータ制御クラスのサーチメソッドを自動的に実行することによって応答する。たとえば、データ制御クラスは、パラメータ(サーチタイプ、トークン、呼び出しのためのElフォームなど)をJSONメッセージへロードし得、その後、JSONメッセージをシリアライズ(serialize)し、サービスプロキシに要求を行う。サービスプロキシは要求を監視するとともにJASサーバへ転送し、その後、JASサーバはアプリケーションを実行または呼び出す。
別のフローは、それを用いて実行するよう与えられたパラメータに基づいてフォームおよびそのデータのJSONデータ表現を作成し、その後、当該データをサービスプロキシに返す。サービスプロキシは、データをモバイルアプリケーションに戻し、その際、モバイルアプリケーションは、サポートする予め生成されたJavaオブジェクトへとデータをデシリアライズする。サポートするJSON Javaオブジェクトは、データ制御クラスを介してデータ制御に結合され、これにより、データコントローラが結合に基づいてUI制御にデータを渡すことが可能になることを促進する。
本開示の局面、目的および利点のさらなる詳細は、以下に記載されるとともに、詳細な説明、図面および請求の範囲において記載される。上記の背景の概説および以下の詳細な説明の両方は例示および説明であり、請求の範囲に関して限定するようには意図されない。
以下に記載された図は例示目的のみである。図面は本開示の範囲を限定するようには意図されない。
いくつかの実施形態に従った、アプリケーションオブジェクトモデルに基づくネイティブモバイルアプリケーションの自動的な合成のための環境を例示する図である。 いくつかの実施形態に従った、バックエンドアプリケーションシステムとのモバイルアプリケーション相互作用の例を示す図である。 いくつかの実施形態に従った、ミドルウェアおよびバックエンド応用システムとのモバイルアプリケーション相互作用の例を示す図である。 いくつかの実施形態に従った、モバイルデバイスアプリケーションメッセージ交換メカニズムの例を示す図である。 いくつかの実施形態に従った、自動的に合成されたネイティブモバイルアプリケーションと相互作用するように構成されるモバイルサービスフレームワークメッセージ交換メカニズムの例を示す図である。 いくつかの実施形態に従った、自動的に合成されたネイティブモバイルアプリケーションと相互作用するように構成されるミドルウェアコンポーネント内に実現されたサービスプロキシを含む多層環境を示す図である。 いくつかの実施形態に従った、サービスプロキシのパーティショニングを示す図である。 一実施形態に従った、ネイティブモバイルアプリケーションの自動的な合成のための合成ツールを使用する際にオブジェクトモデルを特定するためのサンプルヒエラルキーを示す図である。 一実施形態に従った、ネイティブモバイルアプリケーションの自動的な合成のための合成ツールによって使用されるオブジェクトモデルから得られるフォームおよびメッセージを示す図である。 いくつかの実施形態に従った、アプリケーションオブジェクトモデルに基づいたネイティブモバイルアプリケーションの自動的な合成につながる動作フローを示す図である。 一実施形態に従った、アプリケーションオブジェクトモデルに基づいたネイティブモバイルアプリケーションの自動的な合成のためのシステムのブロック図である。 本開示の実施形態を実現するのに好適であり、および/または、本願明細書において記載される環境における使用のために好適であるコンポーネントの例示的なアーキテクチャを示す図である。
詳細な説明
本開示のいくつかの実施形態は異種混合のモバイルプラットフォーム上で実行することを目標としたアプリケーションの迅速な開発および展開の問題に対処し、また、いくつかの実施形態は、所与のオブジェクトモデルに準拠するようネイティブコードの集合を合成するためのアプローチに関する。より特定的には、アプリケーションオブジェクトモデルに基づいたネイティブモバイルアプリケーションの自動的な合成のための例示的な環境、方法およびシステムが本願明細書および添付の図面において開示される。
概略
本願明細書において開示される合成システムは、予めパッケージ化されたコードモジュール(たとえばフォームおよびファンクション指向コードモジュール)の選択されたセットのみを用いて特定ベースの合成を実行する。結果得られるモバイルデバイスアプリケーションは、アプリケーションのファンクションまたはオペレーション(たとえばフォームデータの送信および受信)のある予め知られているセットの使用を促進するサービスに部分的に依存する。いくつかの状況において、本願明細書において開示される合成システムは、予めパッケージ化されたファンクションの選択されたセット(たとえばフォーム指向ファンクション)を決定するよう、フォームを使用して特定ベースの合成を実行する。前述のサービスは、フォームデータを送信および/もしくは受信するオペレーション、ならびに/または、フォームフィールドおよび/もしくはデータベースフィールドを作成、読出、更新、もしくは削除する動作といったオペレーションのある既知のセットを実現する。
ソフトウェアを開発する際に、デザイナーにモジュールまたはライブラリを提供することは、抽象化のレベルを上昇させる。確かに、予めパッケージ化されたモジュールまたはライブラリのみを使用するといった制限にデザイナーが従う場合にはしばしば、稼働するソフトウェアがはるかに速く開発される。抽象化の付加的な局面を考慮すると、あるファンクション、オペレーションまたはモジュール(たとえば予め構築されたファンクションおよび/または予めテストされたオペレーション)のみを使用するようデザイナーが自己訓練されている場合、エラーまたは不適合性についての可能性は大幅に低減される。人間のデザイナーだけでなくコンピュータ支援プログラム(たとえば合成ツール)も、特定に基づいておよび/またはルールまたは制限のセットに従ってコードを合成および/またはアセンブルする際の可能性がより少ないことの恩恵を利用することができる。
定義
この記載において使用される用語のうちのいくつかは、容易な参照のために以下に定義される。提示された用語およびそれらのそれぞれの定義はこれらの定義に厳密に制限されない。すなわち、ある用語は、この開示における当該用語の使用によってさらに定義され得る。
「例示的」という用語は、例、実例、または例示として機能することを意味するように本願明細書において使用される。「例示的な」ものとして本願明細書において記載される任意の局面または設計は、他の局面または設計に対して好ましいまたは有利であるとは必ずしも解釈されるべきでない。むしろ、例示的という単語の使用は、具体的な態様で概念を提示するように意図される。
この出願および添付の請求の範囲において使用されるように、「または」という用語は、排他的な「または」ではなく、包含的な「または」を意味するように意図される。すなわち、別の態様で特定されなければ、または、文脈から明らかでなければ、「XはAまたはBを使用する」は、自然な包含的な順列のいずれかを意味するように意図される。すなわち、XがAを使用する場合、XがBを使用する場合、または、XがAおよびBの両方を使用する場合には、前述の場合のうちのいずれかのもとで「XがAまたはBを使用する」が満たされる。
この出願および添付の請求の範囲において使用されるような「ある(a;an)」という冠詞は、別の態様で特定されていなければ、または、文脈から単数形に向けられることが明らかでなければ、「1つ以上」を意味するよう一般に解釈されるべきである。
ここで、ある実施形態が詳細に参照される。開示された実施形態は、請求の範囲を限定するようには意図されない。
例示的な実施形態の記載
図1Aは、アプリケーションオブジェクトモデルに基づいたネイティブモバイルアプリケーションの自動的な合成のための環境1A00を例示する。オプションとして、環境1A00の1つ以上のインスタンスまたはその任意の局面は、本願明細書に記載される実施形態のアーキテクチャおよび機能の文脈において実現され得る。さらに、環境1A00またはその任意の局面は、任意の所望の環境において実現され得る。
示されるように、ユーザ105は、存在する「バックエンド」アプリケーションを特定するよう、この環境において相互作用する(たとえば、特定モジュール120を参照)。存在するバックエンドアプリケーションの特定から、特定されたアプリケーションのデータモデルが分かり得、さらに、フォームにおいて使用されるフィールドが分かり得る。シンセサイザモジュール110はユーザから特定を受け取り、ネイティブモバイルアプリケーションコードモジュールの集合を合成する。シンセサイザモジュールは、特定を分析するためのパーサーモジュール132と、クエリージェネレータ133とを含み得る。クエリージェネレータ133は、フレームワーク規格、サポートされたインターフェイス、およびコンポーネント定義などを含むフレームワーク定義にアクセスし得るか、ならびに/または、ネイティブアプリケーションコードモジュール150のリポジトリと、バックエンドアプリケーションおよび/もしくはメッセージによって使用されるフォームおよびフィールドのリポジトリとにアクセスし得る。シンセサイザモジュールはさらに、2つ以上のネイティブアプリケーションコードモジュールのアセンブリを容易にするよう、コード統合モジュール134を含み得る。
いくつかの場合において、(たとえば特定モジュール120からの)特定は、シンセサイザモジュールが(たとえばコンフィギュラブルクラスジェネレータ135を使用して)Javaクラスを生成するメッセージを抽出するのに十分である。この技術がさらに以下で論じられる。特定モジュール120は、データモデルがそこから分かり得るバックエンドアプリケーションを特定するようユーザを支援するように機能する。例示的な場合において、特定されたアプリケーションについてのフォームのセットは、(たとえば規約に基づいて)分かり得るか、または、明示的に特定され得る。フォームはそれ自体、マークアップ言語(たとえばHTML)でコード化され得る。フォームはフィールドを使用し、データモデルにおいて使用されるフィールドのうちのいずれかが抽出され得、抽出されたフィールドは、フレームワークオペレーションのライブラリから選択される対応するオペレーション(たとえば、作成オペレーション、読出オペレーション、更新オペレーション、削除オペレーション)にマッピングされ得る。フレームワークオペレーションのライブラリは、モバイルデバイスのためのネイティブコードを含み得、特定のモバイルデバイスまたはオペレーティングシステムに特有であり得る。モバイルデバイスについてのそのようなネイティブコードは、パラメータ化され得るか、および/または、予め知られた態様で相互作用するように定義され得る。
ひとたびフレームワークオペレーションが選択およびパラメータ化されれば、選択されたフレームワークオペレーション同士の間でのリレーションシップ(たとえばコール、コールバック、パス)を提供するようコードが合成される。付加的なネイティブコードがモバイルデバイスアプリケーションを生成するよう加えられ得、当該コードはモバイルデバイスにロードされテストされ得る。モバイルデバイスアプリケーションは、さまざまな条件下およびさまざまなセッティングにおいてテストされ得、テスト結果は、別のイテレーションを通じて進捗に影響を与え得、合成されたアプリケーションに組み込まれるように付加的なファンクションを追加する。
合成のいくつかの局面および結果得られるモバイルデバイスアプリケーションのいくつかの局面は、フレームワーク130の特性およびフレームワーク130との相互作用に部分的に依存する。例示的な特性および相互作用のセットは、以下のように論じられる。
図1B1は、合成されたネイティブモバイルアプリケーションと相互作用するように構成されるバックエンドアプリケーションシステムとのモバイルアプリケーション相互作用1B100の例を示す。オプションとして、モバイルアプリケーション相互作用1B100またはその任意の局面の1つ以上のインスタンスは、本願明細書に記載される実施形態のアーキテクチャおよび機能の文脈において実現され得る。さらに、モバイルアプリケーション相互作用1B100またはその任意の局面は、任意の所望の環境において実現され得る。
前述のフレームワークは、バックエンドフレームワーク(たとえばモバイルサービスフレームワーク114)の形態を取り得、バックエンドフレームワークは、サービスプロキシ、Javaアプリケーションサーバ(JAS:Java Application Server)および任意数または任意のグループのアプリケーション(たとえばアプリケーション101、アプリケーション101など)から形成される。これらのアプリケーションは、デスクトップ環境にサーブするバックエンドアプリケーションと実質的に同じである。たとえば、多くのバックエンドアプリケーションは、(たとえばコンフィギュレーションデータ122を使用して)コンフィギュラブルであり、作成、読出、更新、および削除といった良好に定義されたフォームオペレーションのセットをサポートする(たとえば、オペレーション118を参照)フォーム(たとえばフォーム116)を介してユーザと相互作用する。オペレーション118のうちのいずれか、いくつかまたはすべてがデータベースエンジン126にアクセスするよう機能する。
モバイルデバイス102は、モバイルデバイスアプリケーション106の任意の合成されたインスタンスにアクセスするレイヤーとして構成されるネイティブモバイルデバイスユーザインターフェイス(UI)104を含む。モバイルデバイスアプリケーション106は、プレゼンテーションレイヤーおよびデータ制御レイヤーから構成される。プレゼンテーションレイヤーおよびデータ制御レイヤー内のモジュール間の相互作用は、非同期通信を促進するハンドシェイク交換、ならびに/または、モバイルデバイスおよび/もしくはそのオペレーティングシステムのネイティブな局面に従って定義される共通してアクセス可能なデータ構造を使用するデータの交換のような良好に定義されたルールに従う。
例示的な場合において、モバイルデバイス102は、無線ネットワーク109を介してアプリケーションシステムのネットワークインターフェイスと直接的に(たとえばネットワークインターフェイス111およびネットワークインターフェイス111を使用して)通信する。他の場合において、モバイルデバイス102は、無線ネットワーク109を介してミドルウェアと直接的に通信する。そのようなパーティショニングは図1B2に関係すると例示および記載される。
図1B2は、合成されたネイティブモバイルアプリケーションと相互作用するように構成されるバックエンドアプリケーションシステムとのモバイルアプリケーション相互作用1B200の例を示す。オプションとして、モバイルアプリケーション相互作用1B200またはその任意の局面の1つ以上のインスタンスは、本願明細書に記載される実施形態のアーキテクチャおよび機能の文脈において実現され得る。さらに、モバイルアプリケーション相互作用1B200またはその任意の局面は、所望の環境において実現され得る。
示されるモバイルアプリケーション相互作用1B200は、ミドルウェアコンポーネント(たとえばミドルウェア108)を含む。ミドルウェアは、モバイルデバイスへの通信およびモバイルデバイスからの通信を促進するよう機能するオペレーションユニットを含み得る。たとえば、ミドルウェアコンポーネントはウェブサーバを実現し得、そのようなウェブサーバは、モバイルデバイスに対して、バックエンドとの直接的なインターフェイス接続を必要としないさまざまなサービスを実行し得る。厳密に1つのそのような例として、ミドルウェアコンポーネントはサービスプロセッサの連なり(たとえばフォームサービス要求プロセッサ、トークンサービス要求プロセッサ、メディアオブジェクト要求プロセッサなど)を含み得る。トークンサービス要求プロセッサは、パスワード、支払い、または、暗号化されたデータもしくは暗号されていないデータの任意のフォームを指すトークンを処理し得る。メディアオブジェクト要求プロセッサは、メディアオブジェクトの転送およびフォーマットを容易にする。たとえば、メディアオブジェクトプロセッサは、バックエンドアプリケーションに大きなメディアファイル(たとえば高解像度画像キャプチャ)を転送するよう、モバイルデバイスに対する複数回の非同期アクセスまたは要求を行ない得る。
ミドルウェアコンポーネントによって提供されるサービスは、これまでに論じられたようにモバイルデバイスのみへのサービスの提供に限定されない。いくつかの場合、ミドルウェアコンポーネントは任意の外部システムにサービスを提供し得る。外部システムを伴うそのような例は、図2Cに関係するとして例示および議論される。
この環境において、ミドルウェアコンポーネントは、モバイルデバイスおよびアプリケーションシステムへのメッセージならびにモバイルデバイスおよびアプリケーションシステムからのメッセージを処理する。例示的な実施形態において、メッセージは予め定義されたプロトコルに従う。いくつかの場合において、メッセージは、たとえばJavaScriptオブジェクトノーテーション(JSON:JavaScript Object Notation)に従って、メッセージのペイロードにおいて予め定義されたオブジェクトまたはその部分を含む場合がある予め定義されたメッセージ仕様に適合するメッセージへとフォーマットされる。交換メカニズムは以下の図2Aにおいて示されるとともに記載される。図2Aの特定の例は、JSONメッセージを指すが、他のメッセージングプロトコル、フォーマットまたはノーテ―ションが可能である。
図2Aは、モバイルデバイスアプリケーションメッセージ交換メカニズム2A00の例を示す。オプションとして、モバイルデバイスアプリケーションメッセージ交換メカニズム2A00またはその任意の局面の1つ以上のインスタンスは、本願明細書に記載される実施形態のアーキテクチャおよび機能の文脈において実現され得る。さらに、モバイルデバイスアプリケーションメッセージ交換メカニズム2A00またはその任意の局面は、任意の所望の環境において実現され得る。
図2Aにおいて示されるように、モバイルデバイスアプリケーションメッセージ交換メカニズムは、要求および応答(たとえば要求209、応答211など)を含むJSONメッセージ交換を含む。コードの開発の取り組みおよび合成は、ある規約に従う既存のアプリケーションのオブジェクトモデルに基づき行なわれ得る。たとえば、1つの規約は、所望のモバイルアプリケーションのデータモデル表現へのアクセスを必要とする。そのようなアクセスが与えられると、ネイティブモバイルアプリケーションを実現するためにビジネスモデルタイプロジックをコード化する必要はほとんどなくなるか、または、その必要はなくなる。そのようなモバイルアプリケーションは、所与のデータモデルに対して作成オペレーション、読出オペレーション、更新オペレーション、および削除オペレーション(CRUD)を行うよう、ネイティブコードを用いて構成され得る。デベロッパによって提供される場合がある特定および/または命令を有するシンセサイザモジュールは、(たとえばフォーム要求プロセッサによってJavaオブジェクトに返されるJSONメッセージをデシリアライズする)Javaクラスと、オブジェクトをユーザインターフェイスの特定の局面(たとえばフォームフィールド)に結合するように構成されるデータ結合モジュール(たとえばデータ制御モジュール244)と、(たとえばサーバ環境における)選択されたアプリケーションを実行または開始するようサービスプロキシに要求するJavaクラス(たとえば示されたJavaデータ制御クラス242)とを合成または作成し得る。
本願のいくつかの実施形態におけるある局面は、「JSONメッセージからのルールベースの自動クラス生成(RULE-BASED AUTOMATIC CLASS GENERATION FROM A JSON MESSAGE)」(代理人管理番号ORA140360−US−NP)という名称を有する、2014年2月12日に出願された米国特許出願第14/179,548号に開示される資料に関する。
Javaオブジェクトは、データ結合モジュールを介してUIに結合される。シンセサイザモジュールは、(たとえばプレゼンテーションレイヤー246において実現され得るような)ユーザインターフェイスコンポーネントと、モバイルアプリケーションによって実現されるページ間でナビゲートするナビゲーションメカニズムといったような付加的なコンポーネントをアセンブルするようパーティショニングを生成する。
合成プロセスは、モバイルアプリケーションコードの生成をガイドするために合成能力を使用するモバイルアプリケーションデベロッパによるイテレーションからなる。合成能力を使用することにより、デベロッパは、プラットフォームから独立したモバイルデバイスアプリケーションを作成することが可能になる。厳密に一例として、モバイルデバイスはモバイルデバイス識別子(たとえばiOS、AndroidまたはWindowsモバイルなど)によって識別され得、ネイティブモバイルデバイスコードは、特定されたデバイスについて、(たとえば、モバイルデバイス識別子に基づいて)抽出および/またはアセンブルおよび/または生成され得る。
図2Bは、自動的に合成されるネイティブモバイルアプリケーションと相互作用するように構成されるモバイルサービスフレームワークメッセージ交換メカニズム2B00の例を示す。オプションとして、モバイルサービスフレームワークメッセージ交換メカニズム2B00またはその任意の局面の1つ以上のインスタンスは、本願明細書に記載される実施形態のアーキテクチャおよび機能の文脈において実現され得る。さらに、モバイルサービスフレームワークメッセージ交換メカニズム2B00またはその任意の局面は、任意の所望の環境において実現され得る。
図2Bにおいて示されるように、モバイルサービスフレームワークメッセージ交換メカニズムは、交換されたメッセージがモバイルサービスフレームワーク114によって生成および/または消費されるJSON交換を含む。示されるように、モバイルサービスフレームワーク114は、デベロッパが迅速にネイティブモバイルアプリケーションを開発するためのビルディングブロックとして使用され得るフレームワークを一緒に形成する複数の予めパッケージ化された技術の組合せを含む。図2Bの例において、モバイルサービスフレームワークはいくつかのコンポーネントを含む。まず、サービスプロキシ210はメッセージステアリングおよびフロー制御のために機能し、抽象化レイヤー(たとえばファンクションのあるセットのみを公開する)として機能する。サービスプロキシはいくつかのパーティションへ分割され得、各パーティションはあるタイプの要求を処理するために専用である。厳密に例として、示されるサービスプロキシ210は、フォームサービス要求プロセッサ121と、トークンサービス要求プロセッサ214と、メディアオブジェクト要求プロセッサ216とを含む。そのような要求プロセッサは、サービスとしてアプリケーション層機能の実行を促進する。第2に、上記例は、Javaアプリケーションサーバ(JAS:Java Application Server)を含む。示されるように、JAS218は、要求204および応答206のプロトコルを介してサービスプロキシ210からの要求を扱うよう修正される。第3に、上記例は、1つ以上のバックエンドアプリケーション(たとえばアプリケーション101、アプリケーション101))を含む。
例示的な開発環境において、モバイルサービスフレームワーク114の構成は、バイナリコードフォーマット(たとえば、.jarファイル)で再使用可能な予めパッケージ化された機能の利用可能性によって促進され、たとえば、ログインフォームが.jarファイルで提供され得る。例示的な開発環境はさらに、所与のJSONメッセージに特有のJavaクラスを作成するコンフィギュラブルクラスジェネレータ135の1つ以上のインスタンスを含み得る。これらのクラスはたとえば、Javaオブジェクトへのモバイルアプリケーションの要求に基づいて、サービスプロキシによって返されるJSONメッセージをデシリアライズするよう使用される。
モバイルサービスフレームワーク114およびサービスプロキシ210によって提供されるサービスは、これまでに論じられたようにモバイルデバイスのみへのサービスの提供に限定されない。いくつかの場合において、モバイルサービスフレームワークおよびサービスプロキシは任意の外部システムにサービスを提供し得る。外部システムを伴うそのような例は、図2Cに関係するものであると例示および議論される。
図2Cは、自動的に合成されたネイティブモバイルアプリケーションと相互作用するように構成されるミドルウェアコンポーネント内で実現されるサービスプロキシを含む多層環境2C00を示す。オプションとして、多層環境2C00またはその任意の局面の1つ以上のインスタンスは、本願明細書に記載される実施形態のアーキテクチャおよび機能の文脈において実現され得る。さらに、多層環境2C00またはその任意の局面は任意の所望の環境において実現され得る。
ユーザは、エンタープライズアプリケーションの機能へのアクセスをいつでもおよびどこからでも(たとえばネイティブ環境外から)から求める。この状況は、時に非常に複雑なビジネスロジックを有する良好に開発されたビジネスアプリケーションを外部システム202にて利用可能になるよう提供することについてのユーザの要求と解釈される。そのような外部システム202は、前述のモバイルデバイスのいずれかとして具現化され得るか、または、外部システムが、モバイルデバイスであるかまたはモバイルデバイスでない場合がある付随的なプロセッサであり得る。外部システムに全アプリケーションを移すことはコスト効率(または実際的)でなく、また、デスクトップから外部システムに単にユーザインターフェイスを移すレガシーな試みも不十分である。後者のアプローチは少なくとも、デプロイヤ(deployer)がしばしばエンタープライズアプリケーションのファンクションのあるサブセットのみが外部システムで利用可能であることを(たとえばセキュリティおよび/または性能上の理由で)望むという点で失敗している。
1つ以上の外部システム202がネイティブ(非外部)のシステムと相互作用する必要がある環境において、インターフェイスはしばしば、データを作成および消費するよう特定のインターフェイスを必要とする異なる規格を使用して開発されている。外部インターフェイスに、異なる規格を実現させるおよび/または複数の内部インターフェイスを実現させる、ことを可能にする抽象化レイヤーを、ネイティブアプリケーションと外部システムとの間に作成する必要性がある。この抽象化レイヤーは、ネイティブシステムがアップグレード(たとえばコード変更)をする場合またはインターフェイス接続技術のうちのいずれかが変化する場合に、外部システムへの影響を低減する。
ミドルウェア108は、サービスプロキシ210のインスタンスを含む。サービスプロキシは、アプリケーションに対して抽象化レイヤーを実現しており、バックエンドアプリケーションのデータモデルに従って、変更、読出、更新、および削除オペレーションのうちのいずれかのフォームを実行するように構成される。
示されるように、ソリューションは、JASサーバへのサーブレットベースのコール(たとえば204および206)を用いて、フォームサービス要求(フォームサービス要求プロセッサ212を参照)と、トークンサービス要求(トークンサービス要求プロセッサ214を参照)と、メディアオブジェクトサービス要求(メディアオブジェクト要求プロセッサ216を参照)とをサポートする。サービスプロキシは拡張可能であり、そのようなニーズが発生する際に継続していて進行中の開発および追加されるべき機能をサポートする。
付加的なパーティショニングは妥当である。たとえば、サービスプロキシは、外部システム202(たとえば外部システム202、外部システム202など)からデータ(たとえばネイティブアプリケーションのフォームフィールドに対応するデータ)を受け取り得、データがネイティブに受け取られた(たとえばネイティブアプリケーションのフォームフィールドに対応するデータを受け取った)かのようにネイティブシステム上でそのデータを処理する。そのようなオペレーションは、外部システムからフォーム指向オペレーションを実行するために、本願明細書において開示されたフォームサービスの実施形態を使用して実現され得、そのようなパーティショニングは以下の図3に提示される。
図3は、サービスプロキシのパーティショニング300を示す。オプションとして、パーティショニング300またはその任意の局面の1つ以上のインスタンスは、本願明細書に記載される実施形態のアーキテクチャおよび機能の文脈において実現され得る。さらに、パーティショニング300またはその任意の局面は、所望の環境において実現され得る。
前述の議論で言及されたように、サービスプロキシは多くのこれまで未知であるビジネスサービス要求を消費するよう拡張または増強され得る。そのような増強は、シンプルオブジェクトアクセスプロトコル(Simple Object Access Protocol)すなわちSOAP(たとえばSOAP要求308を参照)のすべてもしくは一部のインプリメンテーションを含み得、および/または、そのような増強は、リプリゼンテーショナルステイトトランスファ(Representational State Transfer)抽象化すなわちREST(REST要求310を参照)または将来のプロトコル312のすべてもしくは一部のインプリメンテーションを含み得、これにより、外部システムがそれらのプロトコルのうちのいずれか(または任意の組合せ)を使用してサービスプロキシとインターフェイス接続し得る。
サービスプロキシは、示されるアプリケーションと他の現在および潜在的な外部システムとの間の抽象化レイヤーとして機能することに加えて、セッション管理、キャッシング、バッチ要求のサポートおよびセキュリティ向上を提供するよう有効化され得る。抽象化レイヤー302によって提供されるファンクションの処理のいくつかの局面は、バックエンドシステムによる処理を伴い得る。たとえば、サーブレットコール314は、Javaサーバにフォームサービス要求を開始させ得る(オペレーション320を参照)。または、たとえば、SOAPコール316は、拡張可能ロジックにおける処理を開始し得る(オペレーション324およびオペレーション324を参照)。
図4Aは、ネイティブモバイルアプリケーションの自動的な合成のための合成ツールを使用する際にオブジェクトモデルを特定するためのサンプルヒエラルキー4A00を示す。オプションとして、ヒエラルキー4A00またはその任意の局面の1つ以上のインスタンスは、本願明細書に記載される実施形態のアーキテクチャおよび機能の文脈において実現され得る。さらに、ヒエラルキー4A00またはその任意の局面は、任意の所望の環境において実現され得る。
前述のように、特定されたアプリケーションについてのフォームのセットは(たとえば規約に基づいて)既知であり得る。さらに、フォームが既知である場合、フィールドは既知であり得る。フィールドのセットが与えられると、対応するオペレーションのセットが既知であり得、また、フィールドのセットが与えられると、バックエンドアプリケーションにフィールドデータを搬送するメッセージのセットおよびバックエンドアプリケーションからフィールドデータを搬送するメッセージのセットも既知であり得る。多くの場合において、モバイルアプリケーションによって扱われる必要があるのはいくつかのフィールドのみである(たとえばバックエンドアプリケーションによってサポートされる必要があるのはフィールドおよび/または対応するオペレーションのサブセットのみ)。
示されるように、オブジェクトモデルヒエラルキーは、アプリケーション(たとえば、アプリケーションセット420を参照)の1つ以上のインスタンスを含むよう組織化され得、当該アプリケーションは、複数のファンクション(ファンクションセット430を参照)を包含しており、当該ファンクションはフィールド(フィールドセット440を参照)を通じてユーザと相互作用しており、フィールドは、オペレーション(オペレーションセット445を参照)に対して一対一または一対多のリレーションシップを有し得る。任意のアプリケーションまたはファンクションまたはフィールドは、メッセージを発し得る(メッセージ450を参照)。他のヒエラルキーが可能であり、また、いくつかの組織は厳密に階層的ではない。
図4Bは、一実施形態に従った、ネイティブモバイルアプリケーションの自動的な合成のための合成ツールによって使用されるオブジェクトモデルから得られるフォームおよびメッセージを示す。フォームおよびメッセージは、フォームと、フォームフィールドと、フォームメタデータ402との間のマッピングリレーションシップを示す。示されたマッピングリレーションシップまたはその任意の局面は、任意の所望の環境において実現され得る。
(たとえばオブジェクトモデルから得られ得るような)マッピングリレーションシップ4B00は、フォームと、オペレーションの任意のインスタンスおよび/またはフォームメタデータ404〜404との間の任意数のリレーションシップ404を定義し得る。フォームメタデータは任意の公知の技術を使用(たとえばXMLを使用、BNFを使用など)してコード化され得る。厳密に例示的な例として、フォームメタデータ404〜404は、それぞれのフォームコンポーネント(たとえばファンクション、オペレーション、フィールド、グリッド、ボタンなど)に対応するXML要素から構成され得る。フォームメタデータは、フォームおよび/またはそのコンポーネントの構造および任意の他の局面を記述し得る。
示されるように、リレーションシップ404はXML要素414にフォームをマッピングする。オペレーション406は、フィールドの任意数の関連付けられるインスタンスを有し得る。リレーションシップ404は、XML要素414にオペレーション406をマッピングする。XML要素414は、任意数のさまざまな属性(たとえばタイプなど)から構成され得る。リレーションシップ404は、XML要素414に、フィールドボックス408に与えられるフィールドをマッピングし得る。XML要素414は、任意数のさまざまな属性(たとえばid、ラベル、データタイプなど)を含み得る。リレーションシップ405は、XML属性416(たとえばラベルなど)にフィールドラベル410(たとえば都市など)をマッピングし得る。リレーションシップ404は、示されたXMLフィールド要素414を使用して、XML属性416(たとえばデータタイプなど)にフィールド値412をマッピングし得る。
上記は単に1つの実現例であり、他の実施形態は、XMLフォーマットではなくJSONフォーマットで直接的にマップを作成し得る。いくつかの場合において、リレーションシップ404は、オブジェクトモデル、データ構造またはハードコードされたマップを用いる、オペレーション406へのマップ/オペレーション406からのマップを含む。ランタイムプロセスは、(たとえばフォーム識別子または推論を介して)実行されているフォームを識別し、識別されたフォームにおいて使用されるコンポーネント(たとえば日付フィールド、ドロップダウン、グリッド行など)に基づいて、そのフォームのJSON表現を作り出す。
JSON表現の使用についての一般的なアプローチに関するさらなる詳細は、「JSONメッセージからのルールベースの自動クラス生成(RULE-BASED AUTOMATIC CLASS GENERATION FROM A JSON MESSAGE)」という名称を有する米国出願第14/179,548号(代理人管理番号ORA140360−US−NP)に記載されている。
図5は動作フロー500を示しており、動作フロー500は、アプリケーションオブジェクトモデルに基づいたネイティブモバイルアプリケーションの自動的な合成につながる。オプションとして、動作フロー500またはその任意の局面の1つ以上のインスタンスは、本願明細書に記載される実施形態のアーキテクチャおよび機能の文脈において実現され得る。さらに、動作フロー500またはその任意の局面は、所望の環境において実現され得る。
図5のフローにおいて、シンセサイザモジュール110は、バックエンドアプリケーションの識別性を与えられる(オペレーション520を参照)。アプリケーションは、オブジェクトモデルによって決定され得るフォームのセットを使用する(オペレーション530を参照)。前述のように、モバイルアプリケーションによって扱われる必要があるのは、いくつかのフィールドのみである。フィールドは、フィールド名によって明示的に特定され得るか、または、ファンクションが抽出されるアプリケーションの特定によって暗示的に表現され得るか、または、ファンクションのセットの特定によって暗示的に特定され得る(オペレーション540を参照)。いくつかの場合において、選択されたファンクションの選択および/または定義は、使用されるべきフィールドを(たとえば暗示的に)特定するよう機能する(オペレーション550を参照)。必要とされるフィールドおよび/またはファンクションが既知の場合、対応するメッセージのセットは既知であり得る。ここで、モバイルデバイスアプリケーションの構造は既知であり、コードは、ネイティブモバイルアプリケーションコードモジュールのリポジトリにマッピングされ得るとともに、ネイティブモバイルアプリケーションコードモジュールのリポジトリから選択される(オペレーション560を参照)。そのようなネイティブモバイルアプリケーションコードモジュールは、前述の技術を使用してアセンブルされ得(オペレーション570を参照)、モバイルアプリケーションコードモジュールコードと、生成されたコード(たとえば、クラスジェネレータから発せられたコード)および/または任意の他のコード(たとえば合成されたコード)とは、モバイルターミナル上で実行され得(たとえば、オペレーション580を参照)、テストが行なわれ得る(オペレーション570を参照)。
他のフローが可能である。たとえば、1つのフローは、シンセサイザのユーザがUIレイアウトを定義し、制御をデータコントローラに結合し、ページナビゲーションを定義すると開始する。別のフローは、シンセサイザのユーザが、データ制御クラスに基づいてデータ制御を自動生成すると始まり、その後、データ制御は自動的にデータ制御クラスと同期したままとなる。さらに別のフローは、アプリケーションがビジネスロジックを実行する必要がある属性および機能を使用するためのインターフェイス接続ルールをシンセサイザのユーザがコーディングすると始まる。インターフェイス接続ルールは、属性を格納し、かつ、対応するバックエンドアプリケーションをサービスプロキシを介して呼び出すために機能し、モバイルアプリケーションについて必要なビジネスロジックを実行する。
いくつかの場合において、シンセサイザのユーザのワークフローは、カスタマイズされたニーズに合致するようモバイルアプリケーションによって使用されている基礎をなすバックエンドアプリケーションを修正することを含む。
結果得られる生成されたモバイルアプリケーションは、たとえば、「顧客(customer)の「C」のサーチタイプによってアドレス帳をサーチする」ようユースケース(use case)が与えられるある範囲の使用モデルをサポートする。初期オペレーションは、ユーザアクション(たとえば、ユーザがUIテキストボックスに「C」を入力)に応答し得る。次のオペレーションは、デベロッパがデータ制御とUIのテキスト制御との間にセットした結合に基づいてデータ制御を通じてデータが渡されるシステム応答を含み得る。システム応答はさらに、データ制御モジュールがそのサーチ属性をセットするためにデータ制御オブジェクトのセッターを呼び出すオペレーションを含み得る。そのような応答は、データ制御とデータ制御クラスとの間のシステムが生成した結合に基づき得る。
別の状況において、生成されたモバイルアプリケーションは、ユーザがサーチボタンをクリックするユーザアクションの際に開始する使用モデルをサポートし、システムは、デベロッパが確立した結合に基づきデータ制御クラスのサーチメソッドを自動的に実行することによって応答する。たとえば、データ制御クラスは、パラメータ(サーチタイプ、トークン、呼び出しのためのElフォームなど)をJSONメッセージへロードし得、その後、JSONメッセージをシリアライズし、サービスプロキシに要求を行う。サービスプロキシは要求を監視するとともにJASサーバへ転送し、その後、JASサーバはアプリケーションを実行または呼び出す。
別のフローは、それを用いて実行するよう与えられたパラメータに基づいてフォームおよびそのデータのJSONデータ表現を作成し、その後、当該データをサービスプロキシに返す。サービスプロキシは、データをモバイルアプリケーションに戻し、その際、モバイルアプリケーションは、サポートする予め生成されたJavaオブジェクトへとデータをデシリアライズする。サポートするJSON Javaオブジェクトは、データ制御クラスを介してデータ制御に結合され、これにより、データコントローラが結合に基づいてUI制御にデータを渡すことが可能になることを促進する。
開示の付加的な実施形態
付加的な実用適用例
図6は、いくつかの実施形態に従った、アプリケーションオブジェクトモデルに基づいたネイティブモバイルアプリケーションの自動的な合成のためのシステムのブロック図である。システム600またはシステム600における任意のオペレーションは任意の所望の環境において行なわれ得る。システム600は、少なくとも1つのプロセッサおよび少なくとも1つのメモリを含んでおり、メモリは、システムのオペレーションに対応するプログラム命令を格納するよう機能する。示されるように、オペレーションは、モジュールによってアクセス可能なプログラム命令を使用して全体的または部分的に実現され得る。モジュールは通信パス605に接続され、任意のオペレーションは、通信パス605にわたって他のオペレーションと通信し得る。システムのモジュールは、個々にまたは組合せて、システム600内でメソッドオペレーションを実行し得る。システム600内で実行された任意のオペレーションは、請求の範囲において特定され得るのではなければ、任意の順番で行なわれ得る。図6の実施形態は、システム600として示されるコンピュータシステムの部分を実現しており、システム600は、プログラムコード指示のセットを実行するコンピュータプロセッサ(モジュール610を参照)と、プログラムコード指示を保持するようメモリにアクセスするためのモジュールとを含み、当該モジュールは、モバイルデバイス識別子と、アプリケーション識別子、オブジェクトモデルおよびフォーム識別子のうちの少なくとも1つを含むリストとを特定モジュールから受け取る(モジュール620を参照)ことと、モバイルデバイス上で実現するべき少なくとも1つのフォームを決定するために情報を分析し、かつ、モバイルデバイス上で実現するべきファンクションのセットを決定するためにフォームを分析する(モジュール630を参照)ことと、ファンクションのセットの少なくとも一部分に対応する少なくとも1つの選択されたネイティブアプリケーションコードモジュールをネイティブアプリケーションコードモジュールのリポジトリから抽出する(モジュール640を参照)ことと、特定に少なくとも部分的に基づいて、少なくとも選択されたネイティブアプリケーションコードモジュールを含むモバイルアプリケーションをアセンブルする(モジュール650を参照)こととを実行する。
システムアーキテクチャの概略
付加的なシステムアーキテクチャの例
図7は、本開示の実施形態を実現するのに好適なコンピュータシステム700のインスタンスのブロック図を示す。コンピュータシステム700は、サブシステムとデバイスとの間を相互接続する、情報を通信するためのバス706または他の通信メカニズムを含んでおり、当該デバイスの例としては、プロセッサ707と、システムメモリ(たとえばメインメモリ708またはランダムアクセスメモリRAMのエリア)と、スタティックストレージデバイス(たとえばROM709)と、ストレージデバイス710(たとえば磁気または光学)と、データインターフェイス733と、通信インターフェイス714(たとえばモデムまたはイーサネット(登録商標)カード)と、ディスプレイ711(たとえばCRTまたはLCD)と、入力デバイス712(たとえばキーボード、カーソル制御)と、外部データリポジトリ731とがある。
本開示の一実施形態に従うと、コンピュータシステム700は、システムメモリに含まれる1つ以上の指示の1つ以上のシーケンスをプロセッサ707が実行することにより、特定のオペレーションを実行する。そのような指示は、スタティックストレージデバイスまたはディスクドライブといった別のコンピュータ読取可能/使用可能媒体からシステムメモリに読み出され得る。代替的な実施形態において、本開示を実現するソフトウェア命令の代わりにおよび当該ソフトウェア命令と組合せて、ハードワイヤード回路が使用されてもよい。したがって、本開示の実施形態は、ハードウェア回路および/またはソフトウェアの任意の特定の組合せに限定されない。一実施形態において、「ロジック」という用語は、開示のすべてまたは部分を実現するために使用されるソフトウェアまたはハードウェアの任意の組合せを意味する。
本願明細書において使用されるような「コンピュータ読取可能媒体」または「コンピュータ使用可能媒体」という用語は、実行のためにプロセッサ707に指示を提供することを担う任意の媒体を指す。そのような媒体は、多くの形態を取り得、当該形態は不揮発性媒体および揮発性媒体を含むがこれらに限定されない。不揮発性媒体はたとえば、ディスクドライブまたはテープドライブのような光学または磁気ディスクを含む。揮発性媒体は、RAMメモリのようなダイナミックメモリを含む。
コンピュータ読取可能媒体の一般的な形態はたとえば、フロッピーディスク(登録商標)、フレキシブルディスク、ハードディスク、磁気テープもしくは任意の他の磁気媒体か、CD−ROMもしくは任意の他の光学媒体か、穴のパターンを有するパンチカード、紙テープもしくは任意の他の物理的な媒体か、RAM、PROM、EPROM、FLASH−EPROMもしくは任意の他のメモリチップもしくはカートリッジか、または、コンピュータがデータを読み出すことができる任意の他の一時的でない媒体を含む。
本開示の実施形態において、本開示を実施する指示のシーケンスの実行は、コンピュータシステム700の単一のインスタンスによって実行される。本開示のある実施形態に従うと、通信リンク715(たとえばLAN、PTSNまたは無線ネットワーク)によって結合されるコンピュータシステム700の2つ以上のインスタンスは、互いに協働して本開示を実施するために必要とされる指示のシーケンスを実行し得る。
コンピュータシステム700は、メッセージと、データと、プログラム(たとえばアプリケーションコード)を含む指示とを、通信リンク715および通信インターフェイス714を通じて送信および受信し得る。受け取られたプログラムコードは、受信された際にプロセッサ707によって実行され得るか、および/または、その後の実行のためにストレージデバイス710または任意の他の不揮発性ストレージに格納される。コンピュータシステム700は、外部データリポジトリ731上のデータベース732にデータインターフェイス733を通じて通信し得る。データベース732におけるデータ項目は、プライマリキー(たとえばリレーショナルデータベースのプライマリキー)を使用してアクセスされ得る。本願明細書において使用されるようなモジュールは、システムメモリの任意の部分と、プロセッサ707として具現化されたハードワイヤード回路を含むハードワイヤード回路の任意の範囲との任意の混合を使用して実現され得る。
前述の明細書において、本開示はその特定の実施形態を参照して記載されている。しかしながら、本開示のより広い精神および範囲から逸脱することがなければ、さまざまな修正および変更が行なわれてもよいということが明白であろう。たとえば、上記のプロセスフローは、プロセスアクションの特定の順序を参照して記載されている。しかしながら、記載されたプロセスアクションの多くの順序は、開示の範囲または動作に影響を与えることがなければ変更されてもよい。したがって、明細書および図面は、限定的な態様ではなく例示的な態様であるとみなされるべきである。

Claims (14)

  1. フィールドのセットを有する既存のフォームを少なくとも介してユーザと遣り取りする既存のアプリケーションを識別することと、
    新しいフォームとしてモバイルデバイス上で前記既存のフォームの少なくとも一部分を実現するように適合されるモバイルアプリケーションを生成することとを含み、前記モバイルアプリケーションは、前記既存のフォームの前記フィールドのセットのすべてまたはサブセットを扱うように適合されており、
    モバイルデバイスタイプ識別子と、アプリケーション識別子またはフォーム識別子のうちの少なくとも1つを含む情報とを受け取ることと、
    前記アプリケーション識別子または前記フォーム識別子のうちの少なくとも1つを分析して、前記モバイルデバイス上で実現するべき前記既存のフォームを決定することと、
    前記既存のフォームを分析して、前記モバイルデバイス上で実現するべきファンクションのセットを決定することとを含み、前記ファンクションのセットは、既存のアプリケーションシステム実行する1つ以上のオペレーションに対応するものであり、前記既存のアプリケーションシステムは、前記既存のアプリケーションを含み、
    ネイティブアプリケーションコードモジュールのリポジトリから、前記ファンクションのセットの少なくとも一部分に対応する複数の選択されたネイティブアプリケーションコードモジュールを抽出することを含み、前記複数の選択されたネイティブアプリケーションコードモジュールは、前記モバイルデバイス上でブラウザに依拠することなく実行可能であり、
    前記モバイルアプリケーションを生成するために、少なくとも前記既存のフォームと、前記複数の選択されたネイティブアプリケーションコードモジュールのうちの少なくともいくつかとをアセンブルすることを含む、方法。
  2. 前記複数の選択されたネイティブアプリケーションコードモジュールは、作成オペレーション、置換オペレーション、更新オペレーションおよび削除オペレーションのうちの少なくとも1つを開始するよう機能する、請求項1に記載の方法。
  3. 前記モバイルデバイスタイプ識別子に対応するモバイルデバイス上に前記モバイルアプリケーションを展開することをさらに含む、請求項1に記載の方法。
  4. 前記モバイルアプリケーションは、JSONメッセージをJavaオブジェクトにデシリアライズするためのJavaクラスをさらに含む、請求項1に記載の方法。
  5. 前記複数の選択されたネイティブアプリケーションコードモジュールの少なくとも1つは、要求メッセージを形成することを実現する、請求項1に記載の方法。
  6. 前記要求メッセージは、シンプルオブジェクトアクセスプロトコル(SOAP:simple object access protocol)要求またはリプリゼンテーショナルステイトトランスファ抽象化(REST:Representational State Transfer)要求を含む、請求項に記載の方法。
  7. 前記要求メッセージはパスワードまたは画像キャプチャファイルを含む、請求項に記載の方法。
  8. 前記モバイルデバイスタイプ識別子に対応する前記モバイルデバイス上に前記モバイルアプリケーションを展開することをさらに含み、
    前記複数の選択されたネイティブアプリケーションコードモジュールの少なくとも1つが、作成オペレーション、置換オペレーション、更新オペレーションおよび削除オペレーションのうちの少なくとも1つを開始するよう機能しており、
    前記複数の選択されたネイティブアプリケーションコードモジュールの少なくとも1つは、要求メッセージを形成することを実現し、前記要求メッセージは、シンプルオブジェクトアクセスプロトコル(SOAP:simple object access protocol)要求、リプリゼンテーショナルステイトトランスファ抽象化(REST:Representational State Transfer)要求、パスワード、または、画像キャプチャファイルのうちの少なくとも1つを含む、請求項1に記載の方法。
  9. 前記既存のアプリケーションは、デスクトップ環境として機能するバックエンドアプリケーションと実質的に同じである、請求項1〜のいずれか1項に記載の方法。
  10. 前記既存のアプリケーションシステムは、ファンクションのあるセットのみを公開することにより抽象化レイヤーとして機能するサービスプロキシをさらに含む、請求項1〜のいずれか1項に記載の方法。
  11. プロセスを実行するよう指示のシーケンスを格納するコンピュータ読取可能媒体において具現化されたコンピュータプログラムプロダクトとして実現される、請求項1〜10のいずれか1項に記載の方法。
  12. フィールドのセットを有する既存のフォームを少なくとも介してユーザと遣り取りする既存のアプリケーションを識別する特定モジュールと、
    新しいフォームとしてモバイルデバイス上で前記既存のフォームの少なくとも一部分を実現するように適合されるモバイルアプリケーションを生成するアプリケーションシステムとを備え、前記モバイルアプリケーションは、前記既存のフォームの前記フィールドのセットのすべてまたはサブセットを扱うように適合されており、
    モバイルデバイスタイプ識別子と、アプリケーション識別子またはフォーム識別子のうちの少なくとも1つを含む情報とを受け取るシンセサイザモジュールと、
    パーサーモジュールとを備え、前記パーサーモジュールは、
    前記アプリケーション識別子または前記フォーム識別子のうちの少なくとも1つを分析して、前記モバイルデバイス上で実現するべき前記既存のフォームを決定し、かつ、前記既存のフォームを分析して、前記モバイルデバイス上で実現すべきファンクションのセットを決定しており、前記ファンクションのセットは、既存のアプリケーションシステム実行する1つ以上のオペレーションに対応するものであり、前記既存のアプリケーションシステムは、前記既存のアプリケーションを含み、
    ネイティブアプリケーションコードモジュールのリポジトリから、前記ファンクションのセットの少なくとも一部分に対応する複数の選択されたネイティブアプリケーションコードモジュールを抽出するクエリージェネレータを備え、前記複数の選択されたネイティブアプリケーションコードモジュールは、前記モバイルデバイス上でブラウザに依拠することなく実行可能であり、
    前記モバイルアプリケーションを生成するために、少なくとも前記既存のフォームと、前記複数の選択されたネイティブアプリケーションコードモジュールのうちの少なくともいくつかとをアセンブルするコード統合モジュールとを含む、システム。
  13. 選択された前記ネイティブアプリケーションコードモジュールは、作成オペレーション、置換オペレーション、更新オペレーションおよび削除オペレーションのうちの少なくとも1つを開始するよう機能する、請求項12に記載のシステム。
  14. 前記モバイルデバイスタイプ識別子に対応するモバイルデバイス上に前記モバイルアプリケーションを展開することをさらに含む、請求項12に記載のシステム。
JP2016515486A 2013-09-20 2014-09-19 ネイティブモバイルアプリケーションコードのコンピュータ支援開発 Active JP6599313B2 (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201361880830P 2013-09-20 2013-09-20
US201361880828P 2013-09-20 2013-09-20
US61/880,830 2013-09-20
US61/880,828 2013-09-20
US14/463,179 2014-08-19
US14/463,179 US10127023B2 (en) 2013-09-20 2014-08-19 Computer-aided development of native mobile application code
PCT/US2014/056677 WO2015042479A1 (en) 2013-09-20 2014-09-19 Computer-aided development of native mobile application code

Publications (3)

Publication Number Publication Date
JP2016534419A JP2016534419A (ja) 2016-11-04
JP2016534419A5 JP2016534419A5 (ja) 2017-10-05
JP6599313B2 true JP6599313B2 (ja) 2019-10-30

Family

ID=52689480

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016515486A Active JP6599313B2 (ja) 2013-09-20 2014-09-19 ネイティブモバイルアプリケーションコードのコンピュータ支援開発

Country Status (5)

Country Link
US (1) US10127023B2 (ja)
EP (1) EP3047372B1 (ja)
JP (1) JP6599313B2 (ja)
CN (1) CN105637478B (ja)
WO (1) WO2015042479A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150242597A1 (en) * 2014-02-24 2015-08-27 Google Inc. Transferring authorization from an authenticated device to an unauthenticated device
US9875121B2 (en) 2014-09-17 2018-01-23 International Business Machines Corporation API server
US20160196117A1 (en) * 2015-01-05 2016-07-07 Queue Software Inc. System and method for graphical application development
US9886246B2 (en) * 2015-07-13 2018-02-06 International Business Machines Corporation Dynamically building mobile applications
CN105573764B (zh) * 2015-12-24 2019-03-22 北京大学 一种面向智能手表的Android应用重构方法
US10423394B2 (en) * 2016-04-11 2019-09-24 Facebook, Inc. Systems and methods for mobile application prototyping using loops
CN107508846B (zh) * 2016-06-14 2021-02-26 北京京东尚科信息技术有限公司 应用客户端的更新方法和系统及终端设备
CN110233818B (zh) * 2018-03-19 2023-05-12 财付通支付科技有限公司 测试数据报文异常的方法、装置和计算机可读存储介质
CN108595160B (zh) * 2018-05-16 2022-04-01 福建天泉教育科技有限公司 Js调用原生对象的方法、存储介质
US11422783B2 (en) * 2018-10-09 2022-08-23 Oracle International Corporation Auto-deployment of applications
JP6508407B1 (ja) 2018-12-05 2019-05-08 富士通クライアントコンピューティング株式会社 電子機器用スタンド
FI128506B (en) * 2019-01-28 2020-06-30 Elisa Oyj Automatic network deployment
CN110647666B (zh) * 2019-09-03 2023-12-19 平安科技(深圳)有限公司 模板与公式的智能匹配方法、装置及计算机可读存储介质
CN111580883B (zh) * 2020-04-30 2024-04-12 中国工商银行股份有限公司 应用程序启动方法、装置、计算机系统和介质
CN113204393A (zh) * 2021-04-25 2021-08-03 随锐科技集团股份有限公司 原生与js交互的消息处理方法

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020069157A1 (en) 2000-09-15 2002-06-06 Jordan Michael S. Exchange fusion
US20030115548A1 (en) 2001-12-14 2003-06-19 International Business Machines Corporation Generating class library to represent messages described in a structured language schema
US20060075070A1 (en) * 2002-04-02 2006-04-06 Patrick Merissert-Coffinieres Development and deployment of mobile and desktop applications within a flexible markup-based distributed architecture
US7278057B2 (en) 2003-07-31 2007-10-02 International Business Machines Corporation Automated hang detection in Java thread dumps
US20060085824A1 (en) 2004-10-14 2006-04-20 Timo Bruck Method and appartus for management of video on demand client device
US7793255B1 (en) 2005-03-01 2010-09-07 Oracle America, Inc. System and method for maintaining alternate object views
EP1703382A1 (en) 2005-03-16 2006-09-20 Sun Microsystems, Inc. Method for loading applications to a mobile device
US20060277231A1 (en) * 2005-06-06 2006-12-07 Javaground Usa, Inc. Integrated software development and porting system for wireless devices
KR100746031B1 (ko) 2006-01-10 2007-08-06 삼성전자주식회사 홈 네트워크 시뮬레이션 시스템 및 방법
US20070271085A1 (en) * 2006-05-19 2007-11-22 Louenas Hamdi Emulation of an interactive electronic form
CN101803272B (zh) 2007-06-26 2013-08-14 豌豆制造技术有限公司 认证系统和方法
US8375358B2 (en) 2008-01-30 2013-02-12 International Business Machines Corporation Automatically generating rest clients from rest resources
US8762977B2 (en) 2008-04-10 2014-06-24 Telefonaktiebolaget L M Ericsson (Publ) Mobile device software management method and apparatus
WO2009139869A1 (en) 2008-05-13 2009-11-19 Tirk Eric E Device and method for distributing and monetizing host applications
US8364123B2 (en) 2009-02-25 2013-01-29 Apple Inc. Managing notification messages
US7933221B1 (en) 2008-08-21 2011-04-26 Sprint Communications Company L.P. Regulating dataflow between a mobile device and a wireless telecommunications network
US8806506B2 (en) 2008-09-30 2014-08-12 Ebay Inc. System and method for processing messages using a common interface platform supporting multiple pluggable data formats in a service-oriented pipeline architecture
CA2773153A1 (en) 2009-09-04 2011-03-10 Redknee Inc. Data broker method, apparatus and system
CN101661512B (zh) * 2009-09-25 2012-01-11 万斌 一种识别传统表单信息并创建对应Web表单的系统及方法
US20120036494A1 (en) * 2010-08-06 2012-02-09 Genwi, Inc. Web-based cross-platform wireless device application creation and management systems, and methods therefor
US8479154B1 (en) * 2010-08-20 2013-07-02 Google Inc. Interaction with partially constructed mobile device applications
CN102143200B (zh) * 2010-10-20 2013-09-11 华为技术有限公司 一种soap api转换为rest api的公共消息头承载方法及装置
US9424052B2 (en) 2011-03-21 2016-08-23 Amazon Technologies, Inc. Remotely emulating computing devices
US8898629B2 (en) 2011-04-06 2014-11-25 Media Direct, Inc. Systems and methods for a mobile application development and deployment platform
US20130110547A1 (en) 2011-04-07 2013-05-02 Master Mobile Products, Llc Medical software application and medical communication services software application
US20130019314A1 (en) 2011-07-14 2013-01-17 International Business Machines Corporation Interactive virtual patching using a web application server firewall
WO2013134769A1 (en) 2012-03-09 2013-09-12 Mastercard International Incorporated Systems, methods, and computer readable media for conducting an electronic transaction via a backend server system
US8656353B2 (en) 2012-03-09 2014-02-18 User-Friendly Phone Book, L.L.C. Mobile application generator
US9280327B2 (en) * 2012-09-07 2016-03-08 NIIT Technologies Ltd Simplifying development of user interfaces of applications
US20140281886A1 (en) * 2013-03-14 2014-09-18 Media Direct, Inc. Systems and methods for creating or updating an application using website content
US20140282371A1 (en) * 2013-03-14 2014-09-18 Media Direct, Inc. Systems and methods for creating or updating an application using a pre-existing application
US10331765B2 (en) * 2013-05-24 2019-06-25 Sourcecode Technology Holdings, Inc. Methods and apparatus for translating forms to native mobile applications
CN104216691B (zh) * 2013-05-31 2017-11-17 华为技术有限公司 一种创建应用的方法及装置
US9723487B2 (en) * 2013-08-19 2017-08-01 American Megatrends, Inc. Mobile device security system

Also Published As

Publication number Publication date
JP2016534419A (ja) 2016-11-04
US10127023B2 (en) 2018-11-13
EP3047372B1 (en) 2023-05-24
EP3047372A4 (en) 2016-09-07
EP3047372A1 (en) 2016-07-27
US20150089469A1 (en) 2015-03-26
WO2015042479A1 (en) 2015-03-26
CN105637478B (zh) 2020-07-07
CN105637478A (zh) 2016-06-01

Similar Documents

Publication Publication Date Title
JP6599313B2 (ja) ネイティブモバイルアプリケーションコードのコンピュータ支援開発
US11741293B2 (en) Systems and methods of a script generation engine
CN110020307B (zh) 一种客户端视图的绘制方法和装置
US7305671B2 (en) Conversion of an object model to a source file generation model
US7917888B2 (en) System and method for building multi-modal and multi-channel applications
US20030182625A1 (en) Language and object model for describing MIDlets
US20030182626A1 (en) On-demand creation of MIDlets
US20030195923A1 (en) Presentation server
US20060075070A1 (en) Development and deployment of mobile and desktop applications within a flexible markup-based distributed architecture
US20030237050A1 (en) Markup compiler that outputs MIDlets
US20090254881A1 (en) Code generation techniques for administrative tasks
US20090013336A1 (en) Method and system for building compound extensible ajax applications
US20080141219A1 (en) Multiple inheritance facility for java script language
EP4060498A1 (en) Remote code execution
US10353700B1 (en) Code base sharing between standalone and web-based versions of an application via an emulated network communication channel
US8813026B1 (en) Methods and apparatus for storing information for components of a system in model component files to provide a world view of the system
Fujima Building a meme media platform with a JavaScript MVC framework and HTML5
US8886751B1 (en) Methods and apparatus for a data driven system implementation using model components
Amatya Cross-platform mobile development: An alternative to native mobile development
CN107077484B (zh) 生成应用的网络浏览器视图
Sastry Enhanced Position Aware Sampling For The Cloud
Zhang et al. Automated Generation and Dynamic Rendering of Web-based Data Collection Systems
CN117591111A (zh) 基于虚幻引擎的界面开发方法、装置、电子设备及存储介质
CN115185634A (zh) 一种子系统实现方法及计算设备
Bobkov et al. Approaches to the design of graphic web interface on the example of a web application

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160927

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170825

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170825

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180912

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181016

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20190115

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20190318

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190411

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: 20190903

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191002

R150 Certificate of patent or registration of utility model

Ref document number: 6599313

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250