業務のシステム化が進み、紙でのワークフロー等の業務が電子化されて、ペーパーレス化されることが多くなった現在でも、依然として紙帳票の出力要件というのは存在しています。
特に日本国内では帳票文化とでも呼ぶべきものがあり、帳票のデザインや見た目の美しさ、分かりやすさがとても重視される土壌があると思います。
社内向けの承認書類の帳票、社外のお客様にお送りする帳票など、用途は様々ながら、我々がシステム構築に携わるユーザ企業から、帳票を印刷したい、という要件を承ることが多々あります。
帳票出力というテーマで、体系的にまとめた記事が意外と今まで無かったことに気付き、今回はSalesforce上に構築されたシステムから帳票出力を実現する方法と、その中からどのソリューションを適用すべきかの判断基準について、書いてみたいと思います。
差し込み印刷
ある程度、Saleforceのカスタマイズ等を行ったことがある読者の方であれば、まず最初に浮かぶ帳票出力の方法は、差し込み印刷ではないでしょうか。
差し込み印刷はSalesforceが標準で提供する帳票出力の方法です。
提供されている差し込み印刷機能には2種類あり、1つはノーマルの差し込み印刷、もう1つが拡張差し込み印刷になります。
ノーマルの差し込み印刷は、ヘルプによると、以下の動作要件があります。
Microsoft® Internet Explorer® バージョン 9、10、11
Microsoft Word 2003 または 2007
Microsoft Windows® XP および Windows Vista® (32 ビットのみ) - Salesforce が TLS 1.0 を無効化するまで。
ブラウザはIEの特定バージョンに限定され、Wordも最新のバージョンはサポートされていません。また、クライアントOSも限定され、更に利用できる期間もTLS1.0が無効化されるまで(2016年5月時点では本番環境は2017年前半を予定。詳細はhttps://help.salesforce.com/apex/HTViewSolution?urlname=DisableTLS-1-0-2016&language=ja)となっており、非常に厳しい動作要件があります。
これは、Word側をActiveXによって起動し、Wordの差し込み印刷機能を使用して、帳票の差し込みを行うものであるためで、上記動作要件のほかに、ActiveXをインストールすることも条件となります。
こうした厳しい要件を満たすことが難しくなってきたため、現在はもう1つの拡張差し込み印刷を利用されるユーザ企業が殆どです。
拡張差し込み印刷機能では、ノーマルの差し込み印刷がクライアント側で帳票作成を行っていた処理を、サーバーサイドで行うようにした機能で、クライアント側ではサーバーで生成された帳票をダウンロードする仕組みのため、こちらはブラウザやOSといった制限がずっと緩くなっています。(https://help.salesforce.com/HTViewHelpDoc?id=mailmerge_mass.htm&language=ja#mailmerge_mass)
差し込み印刷の利点はテンプレートを作成すれば、追加のコストをかけることなく、帳票を出力できることにあります。
ただ、利点ばかりではなく、業務利用する上で、いくつかの弱点もあります。
・複数オブジェクトの複数データを1帳票上に出力できない→主に単票形式の帳票向け
・一括印刷に制限がある
・操作が多少煩雑→テンプレートの選択などオペレーションの習熟が必要
・出力がWord形式(docファイル)のため、出力後の改変が可能
こうした制約下で、全ての帳票要件、業務要件を満たせるケースは限られ、全ての帳票を差し込み印刷で実現できる可能性は低いでしょう。
Visualforce PDF
Salesforceの画面開発フレームワークであるVisualforceでは、ページの属性にrenderAs=PDFを指定することで、そのページ内で表現される内容をPDF形式でブラウザに返すことができます。
Visualforceページとして帳票を開発し、PDFファイルを出力することができます。
Visualforceのコードで表現できるものであれば、PDF化することが可能で、複数オブジェクトの複数データを出力することも可能ですし、ボタン1つでPDFを生成することも可能です。出力形式もPDFのため、改変は出来ません。
では、Visualforce PDFの弱点はどういったものになるのでしょう。
・コーディングの知識が必要
・開発コストがかかる
・ガバナ制限への注意が必要
・フォントが固定→あまり格好いいフォントではない
こうした点から、初期コストがかかり、大量帳票の出力が難しいケースもありますし、フォントが固定されてしまうため、見栄えがイマイチになってしまい、お客様にお送りするような外部向けの帳票としては適さないと判断されることも多くあります。
また、表紙と2ページ目以降の書式が異なる場合や、ヘッダやフッタ、空行を挟むような形で改ページを行いたい場合など、帳票の出力仕様が複雑化するほど、開発にかかるコストも増大します。
SkyVisualEditorのPDF
前述のVisualforce PDFではapexタグでコード記述により、帳票を作成する必要があり、高いコーディングスキルが要求されるものですが、弊社の画面開発ツールSkyVisualEditorでは、Visualforceページと同様に、GUIベースのレイアウトエディタで、必要な部品や項目をマウスで配置していくことで、Visualforce PDFのコードを自動生成することができます。
SkyVisualEditorは、画面や帳票を使用するユーザ数に応じた月額課金のサービスであるため、ランニング費用の部分でのコスト負担が発生しますが、使用するユーザ数や、作成される画面数や帳票数とその複雑さや、継続的な画面や帳票の改変・更改といった、後々発生が見込まれる開発コストなどを見込めば、スクラッチでVisualforce PDFをコーディングしていくよりも価格やスケジュールといった面で優位となる場合が多々あります。
SkyOnDemandのPDFアダプタ
同じく弊社のクラウド型データ連携サービスであるSkyOnDemandにはオプションでPDFアダプタというものが存在します。
こちらはAcrobatで予め作成されたPDFフォームに対し、SkyOnDemandがデータの取得、差し込みを行い、PDFファイルを生成するもので、月額固定の料金で帳票の出力が可能なため、PDFフォームの作成や、帳票出力用のスクリプトも含めたメンテナンスが可能であれば、後述するサードパーティの帳票出力サービスでは帳票の出力枚数による従量課金体系を取るものが多いため、大量の帳票を出力したいユーザ企業向けに適した方法になります。
SkyOnDemandのExcelアダプタ
SkyOnDemandにはもう1つ、標準でExcelアダプタが存在します。
こちらはExcelの指定セルの情報を読み取って、Salesforce上で取り込んだり、逆にExcel上にSalesforce上から取得したデータを反映することができます。
帳票という括りで考えると、Excel帳票も当然選択肢に入ってきますし、ユーザ企業の業務の関係から、Excel出力が必須、という場合もあるでしょう。
SalesforceでExcel出力というと、レポートのExcel形式でのエクスポートや、「印刷用に表示」ボタンからのExcelファイル出力が出来ますが、定型Excelフォーマットへのデータ出力はSalesforce単体では難しく、SkyOnDemandのようなミドルウェアを適用するか、手動オペレーション前提で、レポートでエクスポートしたデータを、定型フォーマットに落とし込めるようなExcel数式やマクロを組むようなやり方があります。
サードパーティの帳票出力サービス
Salesforce外のサーバーより、API経由でSalesforce上にアクセスし、必要なデータを取得し、帳票を生成するサービスです。
Canon社が提供するCanon Business Imaging Onlineや、日本オプロ社が提供するOPROARTS、ウイングアーク社のSVF for Salesforceといったサービスが提供されており、帳票出力に特化したサービスのため、複雑な表現も可能で、見栄えも美しい帳票を作成することができますし、ドットインパクトプリンタでの複写式の定型フォームへの打ち出しや、大量の帳票の出力にも対応が可能で、出力するファイルもPDFのほか、Excel帳票にも対応が可能なものもあります。
また、郵送物の封入・投函や、コンビニプリンタでの印刷、複合機との連携や、プリンターへの自動印刷(ダイレクト印刷)など、提供されるオプションサービスも充実しています。
機能面では良いこと尽くしですが、ユーザ数や帳票数、出力した枚数など従量制で課金される仕組みのため、予め使用する帳票の種類や枚数など、コストの試算を行っておく必要があります。
まとめ
それぞれに特長や弱点があり、ケースバイケースで最適な実現方法が変わってくるというのがお分かり頂けたでしょうか。
以下に各帳票出力手段と、主な検討要素を表にし、向き不向きを表してみました。
このように帳票出力を実現する手段のうち、お客様の出力したい帳票のフォーマット、予算、スケジュール、出力データ量や枚数、定着化や運用も考慮しながら、最適な方法をご提案しています。
それでは皆様、良い帳票ライフを!