GAE開発の落とし穴
Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します
ブックマークされました!
ブックマークがエラーになりました。もう一度お願いします。

作者 Jason Weathersby , 翻訳者 松本 清一 投稿日 2008年2月10日
Eclipse のBusiness Intelligence and Reporting Tools (BIRT)プロジェクトは、一般的なEclipse IDEをベースとした、Java/J2EE環境で帳票の作成と配布に使用するオープンソースプロジェクトです。以下にあげる主要機能のダウンロードは、プロジェクトサイトから行うことができます。
BIRTプロジェクトは2005年夏に最初のメジャーリリースをし、累計100万以上のダウンロードになりました。BIRTプロジェクトについてより詳細を知りたければ、http://www.eclipse.org/birt (サイト・英語)を参照してください。BIRTの紹介、チュートリアル、ダウンロード、BIRTを使用したサンプルなどがあります。
まず最初に、レポートのデザインを作成するのに利用するBIRTデザイナーの説明から始め、設計物のデプロイや完成したレポートの生成に利用するBIRTビューアの実例に関する説明で終わりたいと思います。
BIRT 2.2 のコラージュ
BIRTの中心は、レポートデザイナです。それは、デザイナーパースペクティブを利用し、レポートのデザインがドラッグ&ドロップで素早く作成できる、Eclipseプラグインのセットで構成されています。そのレポートはXMLフォーマットで作成/保存されます。
図1 - Eclipse BIRT デザイナー
このEclipseパースペクティブは、レポートを作成するための機能を提供する多くのEclipseビューで構成されています。それらのビューに関しては、以下で説明します。
レポートエディタは、レポートの作成やレポート要素の位置決めやフォーマット設定のための作業場として利用します。このビューの中には、Layout、Master Page、Script、XML Source、Previewのタブがあります。
図2 - BIRTプレビュー
通常、レポートを作成する前にデータソースを準備する必要があります。この作業を支援するために、BIRTではデータエクスプローラービューが提供されています。
図3 - データエクスプローラービュー
このEclipseビューでは、デザイナーがレポートをデザインするためのデータソースとデータセットが追加できます。原則として、データソースは単に接続情報です。データセットは、実行したクエリーを通じて指定したカラムを返します。
BIRT では、JDBCドライバ、XML、フラットなファイル、スクリプトデータソースが使用できます。BIRT 2.2では、Webサービスのデータソースや、フラットファイルドライバに機能が追加され、CSV、TSV、SSV、PSVのファイル形式もサポートしています。
BIRT ではさらに、既存のデータセットの内部結合や外部結合が可能な、ジョイントデータセットと呼ばれる特殊なデータセットも提供しています。この機能は、異なるデータソースからデータセットを結合したいときに非常に便利です。さらに、BIRTのデータソースは、レポートの接続証明を共有できるようにするために、接続プロファイルのリンクまたはインポートの機能をサポートしています。
レポートパラメータとデータキューブを追加するときにも、データエクスプローラビューを使用します。レポートパラメータは、レポートを利用するエンドユーザーに公開されているもので、通常はユーザーがレポートをカスタマイズするために利用します。レポートパラメータの例として、クエリーを変更するためにデータセットパラメータを紐づけたり、BIRT のJavaScript拡張機能を利用して、レポート要素のスタイルや見栄えを変更したり、選択された出力フォーマットをベースとし内容をパーソナライズするためのスクリプトイベントで利用するといったことができます。
レポートパラメータは、静的、動的どちらでも可能です。静的なパラメータの場合は、ユーザーが事前定義された値から選択するか、テキストボックスなどに入力した所定の値を利用することができます。動的パラメータの場合は、既存のBIRTデータセットに紐づけられたデータをパラメータとすることができます。例えば、ユーザーがデータセットから取得した顧客リストから選んだ顧客を利用したりします。
加えて、BIRTは複数のリスト/コンボボックスで、選択した値に応じて次のリストの内容が変更する選択リストを表示するといった、カスケードパラメータもサポートしています。例えば、最初のリストボックスに表示した顧客が注文したものをリストボックスに表示するといったカスケードパラメータが可能です。
図4 - カスケードパラメータ
BIRT 2.2では、動的パラメータは、display textやパラメータの値に対して、Java Scriptの表記をサポートしています。この改良は、パラメータリストをより論理的な方法でユーザーに見せることができます。例えば、注文明細のレポートを開発しているときに、全ての注文に関する動的なパラメータリストを表示したいとします。その表記によって個々の注文に対する顧客名を追加することができます。図5は、動的パラメータリストの画面です。
図5 - ダイナミックパラメータの表記
データエクスプローラビューでも、データキューブの作成が可能です。これは、BIRT 2.2の新機能であり、新たなクロスタブレポートエレメントと一緒に結合して利用することができます。BIRTのデータキューブは多次元キューブであり、 1つ以上のBIRTデータセットをベースとして、新しいクロスタブキューブビルダーを利用して構築されます。より詳しい内容は、パレットビューの項目を参照してください。
図6 - クロスタブキューブビルダー
上記の特徴に加えて、現在BIRTでは、Java開発者がさらなるデータソースを作ることができるように、新たな2つのプロジェクトタイプを提供しています。これらのデータソースは、Eclipse Data Tools Platform (DTP)プロジェクトにより提供されているOpen Data Access (ODA)フレームワークをベースとしています。まず、ODAデザイナープラグインプロジェクトは、レポートデザイナーが対象となるドライバーを使用するときに呼ばれるGUIを構成する際に使用するものです。次に、ODAランタイムドライバープラグインプロジェクトは、ドライバーのランタイム部分を開発するときに使用するものです。通常、このプラグインは実行環境にデプロイされ、データソースの呼び出しや結果を返す役割を担います。
図7 - BIRTプロジェクト
BIRT パレットビューは、レポートアイテムをレポートキャンバスに加えるのに使用します。パレットビューは、データエクスプローラビューで集計されたデータを表示するためのレポートエレメントも含まれています。レポートを使用する際は、パレットビューで選んだものをレポートエディタにドラッグするだけです。 BIRTのレポートエレメント全てが、プロパティエディタビューで設定することが可能で、BIRT Report Object Model (ROM)によって記述されています。
図8 - パレットビュー
パレットでは、以下のレポートアイテムをサポートしています。
dataSetRow["contactLastName"] + ", " + dataSetRow["contactFirstName"]
図9 - アグリゲーションエレメント
図10 - チャートウィザード
図11 - BIRTクロスタブエレメント
ライブラリエクスプローラビューは、既存のレポートライブラリから現在のレポートへのドラッグ&ドロップが可能です。BIRTのライブラリは、他のレポートに利用可能な、効果的なレポートXMLの形になっています。これらのライブラリは、それらを利用するレポートから参照されます。つまり、ライブラリの変更がそれを使用しているレポート全てに対し自動的に反映されるということです。レポートライブラリを使用した良い例として、会社のロゴを保持するためにレポートライブラリを使用することです。会社のロゴが変わったらライブラリだけを更新すれば良く、それを参照しているレポートを変更する必要はありません。ライブラリは、設計時にはデザイナ、実行時にはWebビューアのweb.xmlによって設定可能なリソースフォルダを比較参照します。
図12 - ライブラリエクスプローラ
プロパティエディタビューは、レポートに追加されたレポートエレメントのプロパティを設定するために使用されます。レポートエディタで選択されているレポートエレメントの内容が、プロパティエディタに表示されます。Properties の画面には、スタイル、幅、フォント情報といった共通設定があります。加えて、ほとんどのレポートエレメントにはコンテンツを動的に隠すことのできる visibilityのプロパティをサポートしています。Properties タブ以外には、Sorting、Groups、Map、Highlights、Filtersタブがあります。
これらの機能のほとんどが見ればすぐ分かるものなのですが、Mapタブではレポートエレメントに表示される値の動的な変更を(Januaryを使用して)設定するために、動的な条件設定が可能となっています。例えば、monthの値が「1」ならば、「January」と表示したいときなどに使用します。
Highlights タブでは、売上の少ないものは赤で表示するといった異なるスタイル形式を動的に適用するための条件を設定します。これらの機能のほとんどが、複数条件もしくはアイテムにキーを設定します。ある条件はフォントカラーを変え、別の条件はフォントサイズを変えるかもしれません。あるソートキーはアルファベット順に結果を表示し、別のソートキーは「Jones」をリストの最上位に置くといったことが可能です。
図13 - プロパティエディタ
さらにBIRT 2.2では、ハイライトを適用する際、レポート開発者は手動でスタイルのプロパティをセットする代わりに、スタイルを指定することができます。
図14 - スタイルのハイライト
アウトラインビューでは、レポートデザインの階層をグラフィカルに表示し、レポートエレメントとコンテナとの関係を示します。レポートエレメントをアウトラインビューの中で直接選択することができるので、複雑なレポートデザインの時には非常に便利です。さらにBIRT 2.2では、このビューからインポートや外部スタイルのリンク、イベントハンドラのスクリプトを実装したレポートエレメントを見るといったことが可能です。
図15 - アウトラインビュー
スタイルシートのインポートでは、スタイルの値をレポートのXMLにコピーします。外部スタイルシートを利用することで、BIRTのリソースフォルダに置いたスタイルシートとリンク付けることが可能です。
BIRT 2.2では、新たに2つのサンプルが追加されています。1つがレポートの例で、もう1つがJavaのコードで作られたチャートの例です。Javaアプリケーションでチャートエンジンを使用する際の参考となります。
図16 - サンプルビュー
レポートの開発が完了したら、BIRTのWebビューアを使用してデプロイすることができます。このビューアは、BIRT 2.2で改良されており、レポート内容の生成と描画にBIRTエンジンを使用しているAJAXベースのJ2EEアプリケーションです。
Web ビューアでは、レポートの生成と表示に加えて、目次の表示、テーブルコンテンツの複数フォーマットでのエクスポート、クライアントとサーバーサイドでのプリント、レポートのページ決めといったインタラクティブな機能もサポートしています。これらの機能は、ビューアナビゲーションとツールバーを使用して実現可能です。ビューアを使用した例を下に示します。
図17 - Webビューアの例
ツールバー
ビューアツールバーには、目次の表示、レポートの再表示、データのエクスポート、レポートから他のフォーマットへのエクスポート、クライアントとサーバーサイドの印刷のアイコンがあります。目次はレポートデザインをベースとして自動的に生成されます。また、レポートのグループセクションを変更することでカスタマイズ可能です。例示しているビューアから目次にアクセスするには、
アイコンを選択します。
図18 - 目次の表示例
ツールバーでは、既存のレポートを再表示するためのアイコンも提供しています。これは、ユーザーがレポートを生成するために利用するパラメータセットを変更しようと思ったときに便利な機能です。この機能を利用するには
アイコンを選択します。
図19 - カスケードパラメータを含むレポートパラメータダイアログの例
2.2では、新たにデータエクスポートダイアログが改善されています。このダイアログは、
アイコンを選択することで利用可能です。
図20 - データエクスポートダイアログ
利用可能な結果セットに対し、レポートのコントロールに紐づく全てのデータがドロップダウンリストで表示されます。これらの結果セットには、BIRTのデータセットではなくデータコンテナに紐づけられた列を含んでおり、通常、そのコンテナはデータセットから取得されます。利用可能な列は左のリストボックスに表示されており、ダイアログにはエクスポート対象となるカラムを選択するための機能があります。このデータエクスポートでのデリミタが改善され、タブ、セミコロン、コロン、縦線といった付加的なデリミタもサポートされました。さらに、ユーザー指定のエンコードを使用したデータエクスポートもサポートしています。
このビューアでは、追加フォーマットによるレポートのエクスポートもサポートしています。エキスポートダイアログを使用してエクスポートを行うには、
アイコンを選択してアクセスすることができます。
図21 - エクスポートレポートダイアログの例
このダイアログで、レポート利用者はWord、PowerPoint、PDF、PostScript、XLSフォーマットでのレポートのエクスポートが可能です。さらには、ユーザーはエクスポートの範囲として全ページか指定したページかを選択することができます。
BIRTでのクライアントサイドの印刷は、ユーザーが
アイコンを選択すると、レポートがPDFフォーマットに変換されビューアに表示されます。ユーザーは標準的なPDF機能を使用し、レポートの印刷か保存を行うことができます。
図22 - クライアント側の印刷の例
2.2のビューアのサンプルには、サーバーサイドの印刷機能もあります。この機能は、web.xmlに以下の設定をすることで使用不可にすることができます。
<context-param>
<param-name>BIRT_VIEWER_PRINT_SERVERSIDE</param-name>
<param-value>OFF</param-value>
</context-param>
サーバーサイドの印刷は
アイコンを選択することで利用することができます。
図23 - サーバーサイドの印刷ダイアログの例
このダイアログでは、レポートの印刷方法における様々な設定だけでなく、利用可能な複数のプリンターサーバーのリスト表示も可能です。
ビューアナビゲーションバー
複数ページのレポートを表示する際にビューアーナビゲーションバーを使用します。ページ数は、レポートエレメントとグループのpage-breakプロパティによって決められます。これらのプロパティは、ページ区切りの前後、もしくは出力されるHTMLにページ区切りを挿入する前に何行単位で処理するかをコンテナエレメントに指定し、そのページ区切り間隔を利用するといったシンプルなものです。サーブレットマッピングのフレームセットとしてビューアを使用する際は、ビューアのデフォルトビヘイビアを最初のページをロードするようにし、ナビゲーションバーコントロールを有効にします。ナビゲーションバーは、ページ番号を直接入力してロードするだけでなく、前ページや次ページへの制御も含まれています。
Web Tools Platform プロジェクト(WTP)の一部とすることで、BIRT 2.2ではWebプロジェクトを提供します。このプロジェクトタイプでは、選択したアプリケーションサーバーに対しビューアを自動的にデプロイします。加えて、新たなBIRTタグライブラリもデプロイされます。このプロジェクトタイプを利用するためには、新規プロジェクトを選択し、Business Intelligence and Reporting ToolsカテゴリのWeb Projectを選択します。
図24 - Webプロジェクト
現在、Webビューアはビューアの振る舞いをカスタマイズするために使用することができるタグライブラリを含んでいます。このタグライブラリは、普通にビューアをデプロイするか、BIRTのWebデプロイメントプロジェクトウィザードを使用することで、デプロイが可能です。加えて、もしあるコンテキストにBIRTのデプロイをし、別のコンテキストにタグライブラリを含めたいのであれば、birt.tldファイルを WEB-INF\tlds ディレクトリにコピーし、Viewer libs ディレクトリから新たなcontext/web-inf/lib ディレクトリへcoreapi.jar、modelapi.jar、viewerservlets.jar、 com.ibm.icu_3.6.1v20070417.jarファイルをコピーすることで可能となります。加えて、以下の記述をweb.xmlに追加します。
<jsp-config>
<taglib>
<taglib-uri>/birt.tld</taglib-uri>
<taglib-location>/WEB-INF/tlds/birt.tld<
/taglib-location>
</taglib>
</jsp-config>
このアプローチを使用することで、レポートは新たなコンテキストではないBIRTビューアに関連づけられ、参照することができます。
ビューアのタグライブラリは、param、paramDef、parameterPage、report、viewer の5つのタグを持ちます。各々のタグには、ビューアの振る舞いを制御する複数のアトリビュートがあります。

図25 - BIRTタグライブラリ
この記事では、BIRT 2.2の新機能についていくつか紹介しました。より詳しい内容を知りたければ、BIRTのWebサイトか、BIRT のニュースグループ(ユーザー登録が必要です)(サイト・英語)を参照してください。
原文はこちらです:http://www.infoq.com/articles/birt2-intro
(このArticleは2007年12月20日に原文が掲載されました)
Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します
去る1月12日、定理証明支援系ツールCoqの初心者向けチュートリアルが開催さ れた(http://kokucheese.com/event/index/23667/)。今後も2月2日 (http://kokucheese.com/event/index/23744/)、2月9日、2月16日と引き続き開 催されていく予定である。本記事では、開催の様子をレポートする。
Neal Gafter氏はOracleによるJava買収の影響に関する議論、Javaにセグメンテッドスタックやメタオブジェクトプロトコルを追加することについての主張、そしてJavaとC#との比較について話をしてくれた。
GoogleはVMをともなう新しい言語であり、JSコンパイラでもあるDartをプレビューした。 InfoQはDartのアプリの構築に貢献する文法の裏側を探った:スナップショット、Isolate、モジュール方式
本記事ではCSPベースの「マルチドメイン・モデル検査ツール」である、PAT(Process Analysis Toolkit)について紹介する。モデル検査は、形式手法(Formal Method)という方法論を基礎とする技術であり、複雑さが増大しながらも安全性を求められる、現在のソフトウェア開発の状況に対する処方箋の1つとして注目されている手法である。
前回まで、Jenkinsの幾つかの側面に注目して解説をしてきました。シリーズ最後の今回は、Jenkinsをサービスとして使う方法を紹介します。
Alloyは、MITにて開発された仕様記述言語であり、ツールによる自動解析を使い、インクリメンタルに形式仕様が書けることが特長である。筆者らはAlloy開発者による、Alloyを使った形式手法入門書を翻訳、今夏にオーム社より刊行した。本記事では、Alloyの簡単な概要と、翻訳書『抽象によるソフトウェア設計』(「Alloy本」)を紹介する。
スマートフォンを中心としたマルチデバイスにおけるタッチユーザーインターフェイスへの対応は、既に必須の項目となりつつある。本記事では、Windows デバイスにおける UX のベースとなっている「メトロ」というデザイン言語を掘り下げながら、既存環境を意識しつつもどのようにタッチユーザーインターフェイス開発に取り組んでいくべきであるかについて解説していく。
No comments
スレッド表示 返信