たれみみの備忘録

たれみみの備忘録です。仕事と酒がメインになりそう。

【その5】基本設計書 ②帳票

今から 4 年以上前に MBO に書いてしまった、新人ちゃん向けのメルマガが出てきた。
そういえば、このメルマガを書いていたときは、今までで 3 本の指に入るぐらいクソな現場にヘルプで入らされた時だったな。
ヘルプで入ってきたのに「仕事がありません」ってどういうこっちゃ。

帳票って言ったら Crystal Reports だったなー。
クリレポ、今は SAP に併合されてるんやなー。2020 があるでぇ。
ペーパレスの時代になってきているのに、帳票はまだまだ現役なんやね。

あ!確か、4 年前ぐらいに SVF Cloud ほんのちょっとだけ触ったわ。
楽しそうだったからやりたかったんだけど、新人にやらせてあげてと言われて残念だった記憶がある。

「帳票担当はコーディング能力の高い人」ってのがずっと頭に残ってるんよね。今でも。
最初の会社で「誰か帳票できる人いない?」ってよくマネージャーが言ってたな。


※以下、当時の文章。


「帳票」ってあまり聞きなれない言葉かもしれませんね。
(お役所とかならまだまだ現役の言葉のようですが)
単純な話「データをファイルに書き込む」ことですが、画面と同じくお客さんの目に触れる部分なので、テスト時にもかなり指摘が入る可能性が高いです。

帳票設計は画面設計と少し似ています。
画面と異なるのは、ファイル自体の仕様をしっかりと決めておくことです。
ちょっと余談ですが・・・
データを取得するだけでなく「ファイルに書き込む」ことはプログラム的にコストがかかる処理です。
ちょっとでもマズいコードを書くと、たちまち処理速度が落ちます。
以前、項目数 30、多くて 3,000 件のデータを出力するのに 1 時間半以上かかるプログラムを修正したら、10 秒ほどで返ってくるようになったこともあります。
(最初のコードがマズすぎたのが一番ですが・・・)

また、Crystal Reports 等、製品を使っていたら製品独自の仕様もあるため、きちんと理解して使わないと逆に効率が悪くなることもあります。
(過去の経験上、帳票は比較的スキルのある人が担当することが多かったです)。

帳票設計とは


1)帳票とは、帳簿や伝票、申込書など、業務や取引に必要な情報の記入や印刷のために用いられる定型的な書類の総称。
→ ざっくり言うと、帳票とはシステムから出力されるファイル(Excel、Word、CSV、PDF 等)の総称。

帳票設計で決めること

大きく分けて、以下の 2 つです。

  1. 基本情報(帳票仕様)
  2. 帳票項目定義(項目仕様)


1. 基本情報(帳票仕様)
帳票(ファイル)自体の仕様を決めます。
ここが決まらないと、どのような形式でファイルが出力されるのが正しいのかが分からなくなります。
また、帳票ごとに異なる改行コードを使用する等、品質も低下してしまいます。
(顧客からの指摘で、設計の手戻りになったプロジェクトも多々あります)

<決める必要のある内容>

内容 概要
出力ファイル名 帳票として出力したファイル名を記載します。
Excel の場合は各シート名も決めます。
ファイル形式 帳票として出力したファイルをどの形式で保存するかを記載します。
一般的には、加工しやすい CSV、TSV や、エンドユーザーにも馴染みのある Excel 形式が多いです。
文字コード 帳票の文字コードを記載します。
※以下、私見です!
旧字体を使用する場合や Java のシステムなら UTF-8、MS 系なら Shift-JIS を使うことが多い気がします。
改行コード 帳票の改行コードを記載します。
(CR、LF、CRLF)。
区切り文字 帳票の区切り文字を記載します。
CSV ならカンマ(,)、TSV ならタブと決まっています。
フォントサイズ 帳票のフォントサイズを記載します。
例)MS 明朝、10.5。
改ページ要件 帳票内での改ページがある場合、その要件を記載します。
Excel、Word が対象)
ページ番号有無 帳票内にページ番号を表示させるかどうかを記載します。
Excel、Word が対象)
出力方法 オンライン出力なのか、バッチ出力なのかを記載します。
出力頻度 出力方法がバッチの場合、いつ出力されるのかを記載します。
(オンラインの場合は随時)
説明 帳票についての説明を記載します。


2. 帳票項目定義(項目仕様)
画面項目と同様、帳票上に表示する項目について、どのテーブルのどのカラムから取得するかを決めます。
帳票に出力するデータのほぼ全ては DB 上に存在するため、画面項目とのひもづけを行うことで、取得時の SQL (の大枠)が分かるだけでなく、テストの際もどのデータが表示されるのが正しいかが分かります。

<決める必要のある内容>

内容 概要
項目名 帳票項目名を記載します。
ブロック ヘッダ部(見出し部分等)、ボディ部(データ部分)、フッタ部(データの終わりの共通情報部)を記載します。
属性 表示されるデータについて、文字列か数値かを記載します。
桁数 表示されるデータの桁数上限を記載します。
表示位置 帳票の文字位置を記載します。
属性と関連があります。左寄せ、中寄せ、右寄せを記載します。
(通常は左寄せ、数値なら右寄せ、等)
取得元 DB(テーブル名) 帳票項目の取得元です。テーブル名を記載します。
取得元 DB(カラム名 帳票項目の種類です。カラム名を記載します。


帳票設計のコツ

  • 帳票項目定義(項目仕様)の前に、基本情報(帳票仕様)を決めておくこと
    基本情報(帳票仕様)と帳票項目定義(項目仕様)は同時に設計することも可能ですが、忘れないうちに基本情報(帳票仕様)を決めておくことをお勧めします。
    (設計書に記載が無かったため、テスト時に顧客に不具合認定されてしまい、帳票系を全面見直ししたプロジェクトもあります)

  • オンライン出力の場合、帳票出力のパフォーマンスに留意すること
    オンラインで帳票出力を行う場合(ダウンロードボタン等)、以下のことに留意してください。
    <留意事項>
    • 出力項目数
    • 出力件数制限の有無
    • 帳票出力の際、取得データに複雑な加工をするかどうか(例:月・年ごとのサマリ、等)

      場合によっては非機能要件を満たせないこともあります(顧客との協議が必要)。
      その場合、出力項目を減らすか、出力制限を設けるか、非機能要件の対象外とするか、の 3 つが対策として考えられます。

  • 製品の制限に注意すること
    帳票出力にツール(ミドルウェア)を使う場合、製品ごとにできることとできないことがあるので注意してください。