このトピックでは、アプリケーションの起動プロセス、ユーザー操作、およびカスタマイズ・オプションに関する情報を提供します。
ユーザー操作は、アプリケーションが成功するうえで重要な要因です。アプリケーションのデプロイメントはユーザーに第一印象を与え、アプリケーションへのユーザーの満足度に影響を及ぼします。
このトピックでは、JavaおよびJavaFXアプリケーションのユーザーのデフォルトの操作について説明し、ユーザー操作をカスタマイズするオプションを示します。この節の内容は以下のとおりです。
ユーザーは、アプリケーションを起動できない場合、次のステップがわからない場合、アプリケーションが低速であるまたはハングしていると感じる場合、および他の様々な理由でよく悩まされます。
デフォルトのJavaパッケージ化では、次のような多くの問題の領域を処理します。
ユーザーにとって必要なJREが確実にインストールされているようにする。
欠落した依存性を自動インストールするか、必要に応じてインストールを提案する。
アプリケーションのロード中、ユーザーに視覚的なフィードバックを提供する。
説明的なエラー・メッセージを表示する。
たとえば、ユーザーがJavaをインストールしていなくて、アプリケーションのJARファイルをダブルクリックすると、JREをダウンロードおよびインストールする必要があることを示すダイアログ・ボックスが表示されます。
開発者には、次のように、ユーザーの操作の調整方法に関する広範囲のオプションがあります。
スプラッシュ画面の表示
カスタムのロード進捗インジケータの使用
Java FXアプリケーションの場合、メッセージのカスタマイズ(たとえば、JREを英語以外の言語でインストールする必要がある理由をユーザーに説明します)
次の各項では、アプリケーション起動の遷移フェーズ、これらのフェーズのユーザーによる操作方法、およびユーザーへのデフォルトの視覚的なフィードバックのカスタマイズ方法について説明します。
アプリケーションが起動したときからメイン・ダイアログが表示されるまでの間、操作がバックグラウンドで実行中に画面で一連のイベントが発生します。図4-1では、これらのアクティビティを示し、次の段落でそれを説明しています。この起動順序は、実行モードおよびバックグラウンド操作が完了する速度に応じて、部分的に異なります。図4-1では、一定期間のバックグラウンド操作を表す一連のボックスを示し、JavaFXアプリケーションでこれらの操作が発生したときにユーザーに表示されるスクリーンショットも含まれています。
アプリケーションの起動プロセスには次のフェーズがあります。
フェーズ1: 初期化
JREの初期化およびアプリケーションの最初の調査によって、アプリケーションの起動前にロードおよび実行する必要があるコンポーネントが特定されます。初期化フェーズは、図4-1の上の行の最初の2つのボックスで示しています。
フェーズ2: ロードおよび準備
必要なリソースがネットワークまたはディスク・キャッシュロードされ、検証手順が行われます。JavaFXアプリケーションでは、すべての実行モードでデフォルトまたはカスタムの進捗バーが表示されます。このフェーズは、図4-1の上の行の3番目のボックスで示しています。
フェーズ3: アプリケーション固有の初期化
アプリケーションが起動しても、追加のリソースをロードする必要がある、またはアプリケーションが完全に機能するようになるまでに他に長期間の準備を実行する必要がある可能性があります。たとえば、高い権限が必要かどうかを確認し、ユーザーに権限に対する適切な要求を表示することが必要な場合があります。
フェーズ4: アプリケーションの実行
図4-1に示すバックグラウンド操作が終了すると、アプリケーションが表示され、使用する準備ができています。
最初の初期化のフェーズ中の視覚的なフィードバックを提供するオプションは限られています。その時点では、アプリケーションを起動するために行うべきことがまだわかっておらず、Javaプラットフォームはまだ初期化されていません。視覚的なフィードバックは、外部の手段(アプリケーションがWebページに埋め込まれている場合はJavaScriptやHTMLなど)を使用して提供する必要があります。デフォルトでは、4.2.2項「デフォルトのユーザー操作」で説明されているように、このフェーズの間にスプラッシュ画面が表示されます。
JavaFXアプリケーションの初期化フェーズ後に視覚的なフィードバックを提供するために、JavaFXではプリローダーが提供されます。これはロード進捗に関する通知を取得し、アプリケーション固有の通知を取得することもできます。デフォルトでは、4.2.2項「デフォルトのユーザー操作」で説明されているように、このフェーズの間に進捗バーの付いたプリローダーが表示されます。
4.2.3項「JavaFXアプリケーションのカスタマイズ・オプション」で説明されているように、デフォルトのプリローダーをカスタマイズできます。独自のプリローダーを作成して、表示およびメッセージをカスタマイズすることもできます。詳細は、第13章「JavaFXアプリケーションのプリローダー」を参照してください。
Javaアプレットの場合、カスタムの進捗バーを指定できます。詳細は、14.3.2項「カスタマイズされたロード進捗インジケータの実装」を参照してください。
適切にパッケージ化されたアプリケーションでは、すべての実行モードで、最初の2つのフェーズ中に、デフォルトの視覚的なフィードバックをユーザーに提供します。実際の動作は、アプリケーションの実行モードおよびタイプに応じて異なります。
スタンドアロン・モードで起動すると、大部分のアプリケーションはすばやく起動し、視覚的なフィードバックは必要ありません。
表4-1では、アプリケーションが最初に起動され、ネットワークからロードされるときの実行モードに応じたデフォルトの動作をまとめています。
表4-1 最初の起動中のデフォルトの動作
起動フェーズ | Java Web Startの起動 | Webページに埋込み |
---|---|---|
フェーズ1 |
スプラッシュ画面: 図java8_splash.gifの説明 |
スプラッシュ画面、JavaFXアプリケーション: 図html_splash_75.gifの説明 スプラッシュ画面、Javaアプリケーション: 図html_splash_se8.gifの説明 |
フェーズ2 |
進捗ウィンドウ、JavaFXアプリケーション: 図ws_load.pngの説明 |
進捗ウィンドウ、JavaFXアプリケーション: 図progress_dialog2_40.gifの説明 |
フェーズ3 |
進捗ウィンドウの非表示 |
進捗ウィンドウのフェードアウト、JavaFXアプリケーション: |
表4-2では、JARファイルがキャッシュからロードされる、2回目以降の起動のデフォルトの動作をまとめています。この場合、コードのロード・フェーズ中にネットワークから何もロードする必要がないので、プロセスでは視覚的な遷移が少なくなります。そのため、起動時間は大幅に短くなります。
表4-2 2回目以降の起動中のデフォルトの起動動作
Java Web Startの起動またはショートカットからの起動 | Webページに埋込み | |
---|---|---|
フェーズ1 |
スプラッシュ画面: 図java8_splash.gifの説明 |
スプラッシュ画面、JavaFXアプリケーション: 図html_splash_75.gifの説明 スプラッシュ画面、Javaアプリケーション: 図html_splash_se8.gifの説明 |
フェーズ2 |
スプラッシュ画面: 図java8_splash.gifの説明 |
スプラッシュ画面、JavaFXアプリケーション: 図html_splash_75.gifの説明 スプラッシュ画面、Javaアプリケーション: 図html_splash_se8.gifの説明 |
フェーズ3 |
スプラッシュ画面の非表示 |
スプラッシュ画面の非表示 |
19.2.3項「onGetSplash」
に示すように、埋込みアプリケーションのスプラッシュ画面がWebページに表示され、onGetSplashコールバックを使用して簡単にカスタマイズできます。
他のJavaFXコンポーネントと同様に、CSSスタイル・シートを使用して、デフォルトのJavaFXプリローダーをカスタマイズできます。アプリケーションのjavafx.default.preloader.stylesheet
パラメータを使用して、カスタマイズされたスタイル・データを渡します。このパラメータに有効なアイテムは、次のとおりです。
CSSスタイル・シートの絶対または相対URI (.css拡張子のテキスト・ファイルまたは.bss拡張子のバイナリ形式として)。バイナリ変換の詳細は、5.4項「スタイル・シート変換」を参照してください。
実際のCSSコード。
プリローダーをカスタマイズするには、.default-preloader
クラスを使用します。標準CSSキーに加えて、プリローダーには次の特殊なキーがあります。
-fx-preloader-status-text
プリローダーに表示されるステータス・テキスト
-fx-preloader-graphic
プリローダーで使用されるイメージの絶対または相対URI
例4-1は、CSSファイルmy.css
の例を示しています。
例4-1 JavaFXプリローダーをカスタマイズするCSSクラスの例
.default-preloader { -fx-background-color: yellow; -fx-text-fill: red; -fx-preloader-graphic: url("http://host.domain/duke.gif"); -fx-preloader-text: "Loading, loading, LOADING!"; }
例4-2に示すように、<fx:deploy> Antタスクにスタイル・シートを追加します。
例4-2 <fx:deploy> AntタスクへのJavaFXプリローダー・スタイルシートの追加
<fx:deploy ...> <fx:application ...> <fx:htmlParam name="javafx.default.preloader.stylesheet" value="my.css"/> <fx:application> </fx:deploy>
少しのカスタマイズのみ必要な場合、ファイルのダウンロードのオーバーヘッドを回避するため、ファイル名ではなくCSSコードを渡します。例4-3は、背景色を黄色に変更する方法を示しています。
例4-3 デフォルトのJavaFXプリローダーの背景色の変更
<fx:deploy ...> <fx:application ...> <!-- Using fx:param here, so it will be applicable to all web execution environemnts --> <fx:param name="javafx.default.preloader.stylesheet" value=".default-preloader { -fx-background-color: yellow; }"/> <fx:application> </fx:deploy>
デフォルトのJavaFXプリローダーに会社ロゴを追加するには、javafx.default.preloader.stylesheet
パラメータの値として次の文字列を渡します。
".default-preloader { -fx-preloader-graphic:url
('http://my.company/logo.gif'); }"
デフォルトのJavaFXプリローダーのカスタマイズでは不十分で、別の外観や動作が必要な場合、独自のプリローダーの実装方法については第13章「JavaFXアプリケーションのプリローダー」、パッケージへのカスタム・プリローダーの追加方法については第5章「パッケージ化の基本」を参照してください。
アプレットのデプロイ時に追加のパラメータを渡すことによって、Javaアプレットでカスタムのスプラッシュ画面を使用できます。詳細は、14.3.1項「スプラッシュ画面の追加」を参照してください。
カスタムの進捗バーをアプレットに追加するには、DownloadServiceListener
インタフェースを実装するクラスを作成します。手順は、カスタマイズされたロード進捗インジケータの表示に関する項を参照してください。
場合によっては、ユーザーにとってアプリケーションの実行が困難であることがあります。たとえば、次のような状況ではアプリケーションが失敗します。
ユーザーがサポートされていないプラットフォームを使用している。
ユーザーのシステムにJREがインストールされていない。
Javaが正しく構成されていない(たとえば、プロキシ情報が設定されていない)。
ユーザーがアプリケーションへの権限の付与を拒否した。
アプリケーションが現在のセキュリティ要件を満たしていない。
問題を解決するためのガイダンスを提供するか、アプリケーションを正常に失敗するようにしてから解決できない理由をユーザーに説明するかのいずれかを行って、問題が発生したユーザーのために計画することが重要です。
次の各項では、一般的な問題に対処する方法について説明します。
ユーザーがJREをインストールしていない場合、アプリケーションを起動できません。アプリケーション・パッケージには、この場合にユーザー操作性を向上させるいくつかのフックが含まれています。
次の各項で説明するように、デフォルトの動作をカスタマイズできます。JREをインストールするプロンプトのカスタマイズ方法、およびWebアプリケーションのエラー処理の詳細は、第19章「ブラウザでのデプロイメント」を参照してください。
メイン・アプリケーションのJARファイルには、JREの検出に使用される起動ツール・プログラムが含まれています。JREが見つからない場合、JREを取得する場所を説明するダイアログ・ボックスが表示されます。
第19章「ブラウザでのデプロイメント」で説明されているように、配備ツールキットを使用してアプリケーションをWebページに埋め込んだりブラウザから起動したりする場合、配備ツールキットでは、アプリケーションを起動しようとする前に、JREの検出を処理します。JREがない場合、配備ツールキットは、インストーラへのリンクをユーザーに提供して、インストールを開始します。デフォルトでは、ユーザーがJava Web Startを使用してアプリケーションを起動し、最新バージョンのJREがある場合のみ、自動ダウンロードが行われます。
様々なランタイム・エラーやユーザーによる誤り(アプリケーションJARファイルのロードに必要なネットワーク接続がないなど)が原因で、アプリケーションが起動に失敗することがあります。
最も一般的なエラーの1つは、ユーザーがアプリケーションに権限を付与していない場合です。その場合、アプリケーションは失敗し、ユーザーはアプリケーションを再起動してから実行する権限を付与する必要があります。このような場合、アプリケーションが失敗した理由と、正常に再起動するためにユーザーが行うべきことをユーザーに説明することが有用です。デフォルトでは、ダイアログ・ボックス内か、アプリケーションが埋め込まれている場所のWebページ内に、エラー・メッセージが表示されます。
配備ツールキットを使用する場合、onDeployError
ハンドラを使用して、Webページのアプリケーション領域にエラー・メッセージを表示できます。権限の付与に関してユーザーにアラートするためにスプラッシュ画面に指示を含めることを検討することもできます。詳細は、第19章「ブラウザでのデプロイメント」を参照してください。
JavaFXアプリケーションの場合、プリローダーの起動中にエラーが発生しないかぎり、エラーに関する通知を取得するようにカスタム・プリローダーを含めることもできます。JavaFXプリローダーおよびコード例の詳細は、第13章「JavaFXアプリケーションのプリローダー」を参照してください。