SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

5分でわかるActiveReports帳票

5分で"もっと"わかるActiveReports帳票(2008年度版)-帳票アプリケーション設計のポイント(1)

第4回 ActiveReportsアプリケーション開発の設計手法

  • このエントリーをはてなブックマークに追加

まずは帳票レイアウトを定義する

 さて、ここまでは帳票アプリケーション設計の要素として「データモデルの定義」と「帳票レイアウトの定義」の2つがあると説明しました。

 帳票が出力される順番で考えると、最初に取り組むのは「データモデルの定義」のようにも思えますが、実際には「帳票レイアウトの定義」を先に行う場合の方が多いのではないでしょうか。業務システム開発において、アプリケーションの画面イメージや出力帳票のレイアウトなど、ユーザーが直接触れる部分(ユーザーインターフェース部分)の仕様は、要求分析や基本設計など早い段階から具体的なイメージを作成してユーザーと仕様を確認しておく必要があります。

 逆に、データモデルは開発者にとっては重要な設計情報ですが、ユーザー側にしてみれば「ちゃんと動いてさえくれればよい」という認識であるのが普通であり、必ずしも最初に考えなければいけない部分ではありません。本稿でも、データモデルの定義に先行して、帳票レイアウトの定義から考えていきたいと思います。

帳票レイアウトを構造化する

 帳票レイアウトの作成は、ユーザーとの打ち合わせやヒアリングから帳票に出力したい内容や項目を洗い出すところから開始されます。ユーザーが単なるデータの羅列ではなく、デザイン性にも優れた帳票を望んでいる場合は、何度もレイアウトのラフを作ってユーザーとイメージを確認する必要があるかもしれません。しかし、サービスの利用明細や請求書など、ビジネスシーンに登場する典型的な帳票であれば、お決まりの「型」のようなものがある程度決まっていることも多いです。

 また、開発案件の目的がまったくの新規開発ではなく既存システムの刷新であるような場合は、現在使われている帳票レイアウトをユーザーから提供してもらえることもあります。このような場合、レイアウト作成自体は楽になりますが、「なるべく既存のレイアウトと合わせてほしい」といった、別な形のリクエストを受けることもあります。

 項目の洗い出しと大まかな配置を決めて帳票レイアウトのイメージが固まったら、次はこのレイアウトから出力構造を洗い出します。レイアウトをもとにして1セットの帳票を出力するときに、どの項目がどのようなタイミングで出力されるかを考えていきます。帳票レイアウトの構造化を考えるときは、ActiveReportsのレポートセクション構造に当てはめて考えるのが便利でしょう。

 以下は、ActiveReportsで定義することのできるレポートセクションの一覧です。

  • 帳票全体で、最初/最後に出力する項目(レポートヘッダ・レポートフッタ)
  • 各ページで、最初/最後に出力する項目(ページヘッダ・ページフッタ)
  • 集計グループごとに、最初/最後に出力する項目(グループヘッダ・グループフッタ)
  • 繰り返し項目(Detailセクション)
帳票レイアウトを出力構造に分解する
帳票レイアウトを出力構造に分解する

 帳票全体の最初と最後に出力されるレポートヘッダ/フッタや、ページの最初/最後に出力されるページヘッダ/フッタはプロパティグリッドで設定できる項目も少なく、特に複雑な部分はありません。一方で、グループヘッダ/フッタは、集計単位となるデータフィールドの指定やセクション出力前後での改行タイミング、出力グループのブロック化など、出力方法に関してさまざまな選択肢が提供されています。1つの帳票で複数のグループが入れ子になる場合は、重ね順についても定義しておいてください。

グループヘッダのプロパティ
グループヘッダのプロパティ
グループフッタのプロパティ
グループフッタのプロパティ

 レイアウトの構造化がある程度まとまったら、次はその構造化された帳票レイアウトを使ってサンプルを出力し、改ページ位置などを確認しておきましょう。なお、ユーザーとレイアウトについて打ち合わせをする場合、全体が1枚で収まるデータ量の少ないサンプルで確認してしまいがちですが、2ページ目以降はどのように出力されるか、グループごとに改ページを入れるか、などについても確認しておくのがよいでしょう。

出力項目の定義と配置

 帳票レイアウトの構造化が終わったら、次は各セクションに配置する出力項目を定義します。

 アプリケーション設計の段階では出力項目の論理名だけを定義することが多いと思いますが、ここでは論理名だけでなく物理名も定義しておくことをお勧めします。「商品名」であれば「ProductName」でも「SHOHIN_MEI」でも、論理名に対応する名称であれば何でもよいので、物理名を定義しておきましょう。物理名を定義しておくと、ActiveReportsのコントロールの名前としてそのまま使うことができるので便利です。

 実際の開発現場では、出力項目の定義として「論理名とデータベースのフィールド名だけ」しか指定されていないようなケースもありますが、少なくとも配置(左寄せ、右寄せ、中央寄せ)、書式(日付、時刻、金額、数量…)、フォント(書体、サイズ、色…)、折り返し設定くらいは設計情報として盛り込んでおきたいものです。特に、フォントの設定はVisualStudioの[メニュー]-[レポート]-[レポートの設定]-[スタイル設定]で設定した内容をレイアウトファイルとして保存しておくことができます。ガイダンスに設定情報を記載し、レイアウトファイルを統一テンプレートしてプロジェクトで共有するのも便利です。

 以下はTextBoxコントロールのプロパティのうち、出力項目の定義によく使うプロパティを挙げたものです。必要に応じて、このほかのプロパティを指定するのもよいでしょう。

プロパティ名 説明
(Name) コントロール名(物理名)を設定します。
Alignment 水平方向の配置を設定します。
VirticalAlignment 垂直方向の配置を設定します。
DataField バインドするデータソースのフィールド名を設定します。
Font 表示フォントを設定します。
WordWrap 自動的に折り返すかどうかを設定します。
CanGrow 出力するデータに合わせてコントロールの高さを拡大するかどうかを設定します。
OutputFormat 表示形式(書式)を設定します。
TextBoxコントロールのプロパティ(1)
TextBoxコントロールのプロパティ(1)
TextBoxコントロールのプロパティ(2)
TextBoxコントロールのプロパティ(2)

おわりに

 今回は、帳票アプリケーション設計のうち前半部分の「帳票レイアウト設計」のポイントについて紹介しました。

 次回は後半部分にあたる「データモデルの設計」と、その効果的な実装方法について紹介します。お楽しみに。

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
5分でわかるActiveReports帳票連載記事一覧

もっと読む

この記事の著者

宮本奈紗(ミヤモトナサ)

株式会社システムインテグレータ ERPソリューション部所属。ERPシステムの設計・開発に従事。業務でActiveReportsを使用。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

渡辺俊史(ワタナベトシフミ)

株式会社システムインテグレータ パッケージ開発部所属。ECサイト構築パッケージの設計・開発に従事。VSUG(Visual Studio User Group) データベース・データアクセスフォーラムリーダー。blog...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2781 2015/06/04 12:59

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング