モバイル・アプリケーションとハイブリッド・アプリケーションの追加手順
Zen Mojo はクライアント・サーバの対話に対応しており、モバイル・デバイスまたはデスクトップで動作する Web クライアントに向けたアプリケーションの作成に使用できます。このドキュメントの大部分では、両方のシナリオに適用されるツールと手法について説明しています。ただし、この章では、モバイル・デバイス用のアプリケーションを作成する場合に適用する追加の手順について説明します。この章では、以下のトピックについて説明します。
概要は、第 1 章の “モバイル・アプリケーション” と “ハイブリッド・アプリケーション” を参照してください。
経験豊富な Zen 開発者は、デスクトップ用の Zen アプリケーションや CSP アプリケーションの一般的な設計機能の中には、モバイル・アプリやハイブリッド・アプリで使用してはならないものがあることに注意してください。例えば、Zen の特殊変数 %session はハイブリッド・アプリでは使用しないでください。ユーザがそのアプリの使用をやめた後で、再び使い始めると、モバイル・アプリの状態がユーザがやめたときのままであっても、新しいセッションが開始されます。サーバから特定の状態の %session を要求された場合に、これにより、深刻な問題が引き起こされる可能性があります。
オフラインでの使用をサポートするためのページ・クラスの修正
モバイル環境で使用するために、Zen Mojo クラスでは、オフライン・バージョンのページからの要求も受け入れることができる必要があります。このようにページ・クラスを修正するには、以下の手順を実行します。
-
クラスの ALLOWMOBILE パラメータをオーバーライドし、その値を 1 に設定します。
Parameter ALLOWMOBILE =1;
-
クラスの remoteBrokerAddress プロパティをオーバーライドし、その InitialExpression キーワードを設定します。このキーワードの値として、Web アプリケーションが使用する %CSP.Broker.cls ファイルの URL を指定します。この URL は、以下の形式にする必要があります。
http://<remote-server>:<port>/csp/user/%25CSP.Broker.cls
ここで、%25 は % 文字を表しています。以下に例を示します。
Property remoteBrokerAddress As %ZEN.Datatype.string [ InitialExpression="http://yourserver:55001/csp/yourapp/%25CSP.Broker.cls"] ;
CacheUserName と CachePassword を使用して認証する場合は、remoteBrokerAddress でも CacheNoRedirect=1 を指定して、ブラウザのクロスドメイン・ポリシーに関わる問題の発生を防ぐ必要があります。以下の例では、 http: を https: に変更し、認証を追加し、CacheNoRedirect=1 を指定しています (読みやすくする目的で、2 行目が分割されています)。
Property remoteBrokerAddress As %ZEN.Datatype.string [ InitialExpression="https://yourserver:55001/csp/yourapp/%25CSP.Broker.cls?CacheUserName=_SYSTEM &CachePassword=SYS&CacheNoRedirect=1"] ;
パッケージ化されたアプリケーションの要件
パッケージ化されたアプリケーションで、以下のアイテムがすべて 1 つのディレクトリにまとめられて提供されるようにします。
-
生成されたオフライン・ページ (HTML ファイル)。次のセクションで説明します。
-
ページ・クラス用に生成された JavaScript ファイル packagename_classname.js (このファイルは install-dir/csp/broker ディレクトリにあります)。
-
Zen Mojo のコア部分で必要とされるファイル。特に、install-dir/csp/broker ディレクトリにある以下のファイル。
-
ZEN*.js 形式の名前を持つファイル。
-
ZEN_Mojo*.js 形式の名前を持つファイル。
-
zenutils.js
-
cspxmlhttp.js
-
cspbroker.js
-
zenutils.js
-
-
プラグインで必要なファイル (またはファイルのサブディレクトリ)。
-
アプリケーションで必要な追加のファイル (画像ファイルなど)。
オフライン・ページの生成
このセクションでは、モバイル・アプリケーションの一部として使用するための、オフライン・バージョン (純粋な HTML) の Zen Mojo ページを生成する方法について説明します。
オフライン・ページのみの生成
オフライン・バージョン (純粋な HTML) の Zen Mojo ページを生成するには、%ZEN.Mojo.UtilsOpens in a new tab の CreateOfflinePage() メソッドを使用します。このメソッドは、以下のとおりです。
ClassMethod CreateOfflinePage(pClassName As %String,
ByRef pFileName As %String = "",
pVerbose As %Boolean = 1) As %Status
ここで、pClassName は、Zen Mojo ページ・クラスの完全なパッケージおよびクラス名です。pFileName は、このメソッドで生成されるファイルの名前です。pVerbose は、メソッドで出力メッセージを書き込むかどうかを指定するためのブーリアン値です。pFileName は参照によって渡されるため、この引数を使用する場合は、その前にピリオドを入れます。
以下に例を示します。
set class="ZMdemo.chui.HomePage"
do ##class(%ZEN.Mojo.Utils).CreateOfflinePage(class,.filename,0)
write filename
このメソッドは install-dir/CSP/namespace ディレクトリに HTML ファイルを書き込みます。ここで、install-dir は Caché または Ensemble をインストールしたディレクトリで、namespace はこのメソッドを実行したネームスペースです。
生成された HTML ファイルには、同一のディレクトリに格納されたファイル・セットが必要です。これらのファイルがないと、このページは空またはほぼ空の状態で表示されます。アプリケーションをパッケージ化する場合は、この HTML ファイルとその依存関係すべてを 1 つのディレクトリにコピーします。次のセクションを参照してください。
オフライン・バンドルの生成
Zen Mojo では、CreateOfflinePage() を実行する追加のユーティリティ・メソッドを提供し、必要な生成されたファイルを識別し、これらのファイルすべてをターゲット・ディレクトリにコピーします。このメソッド CreateOfflineBundle() はファイルを PhoneGap プロジェクトに追加するプロセスを簡素化することを目的としています。このメソッドは、以下のとおりです。
ClassMethod CreateOfflineBundle(pClassName As %String, pTargetFolder As %String) As %Status
ここで、pClassName は Zen Mojo ページ・クラスの完全なパッケージおよびクラス名で、pTargetFolder はターゲット・ディレクトリです。このディレクトリが存在しない場合は、メソッドによって作成されます。
このメソッドは、Zen Mojo ページ・クラスによって生成されたファイルのみを識別します。CSSINCLUDES や JSINCLUDES パラメータを調べることはありません。というのは、場合によっては、これらのパラメータが暗示する依存関係を解決する必要もあるからです。同様に、このページで画像ファイルなどの外部リソースが使用されている場合に、このメソッドでこれらのリソースを識別することはありません。