🐐

なんで今さら帳票エンジンを新規開発しているのか

2023/11/12に公開

yagisan-reports開発チームリーダーのterurouです。

デンキヤギでは yagisan-reports という「Webで使うことを前提とした」商用の帳票エンジンを開発しています(厳密にはyagisan-reportsはエンジン単体の製品ではなくクラウドサービスとして開発していますが、この記事では帳票エンジンとして記載しています)。

yagisan-reportsとは

「Webブラウザ単体で動作すること」にこだわっている帳票エンジン です。

2023年11月現在、アーリーアクセス版を提供しています。既に3社5システムで本番稼働しており、一番長いものでは3年ほど本番稼働を続けています。開発中のシステムも含めると、さらに数社あります。

元々はアーリーアクセス版の公開から早めにパブリックベータに移行する計画だったのですが、ありがたいことに早期から大口の導入相談が複数あり、こちらを優先対応していました。こういった開発経緯から、帳票機能自体は既にアーリーアクセス版の域を越えてしまっており、そろそろ次の展開に入りたいとは考えています。

なんで帳票エンジンを新規開発するのか

ありきたりですが、使いたい帳票エンジンが存在しなかったからです。

商用製品に限定すると、老舗商用製品は10-15年ぐらいは考え方が古いし、新興商用製品は基本機能すら足りてないという状況だと認識しています。OSSも同様に相当古くなってしまっています。他には「Headless ChromiumでCSS組版」「ExcelファイルをPDFに変換」というような帳票専用ではないライブラリを駆使する方法もありますが、品質や工数の面で大きな問題があることを我慢して使うしかありません。

帳票エンジンについては10年越しで動向を見ていますが、上記のような状態がずっと続いています。「この先も状況が良くなることはまずないだろうし、だったら作るかねえ」 という流れです。

また、時雨堂という会社の存在も開発モチベーションに影響しています。「零細企業がミドルウェアを作って売る」ことが商売として成立することを現実として見せつけられた訳ですね。デンキヤギのここ数年の取引実績から考えても、零細企業であることが取引の足枷になることが相当減ってきている実感はあり、「だったらウチでもやれるかな」という気分になってやっています。

どのような帳票エンジンを作っているのか

「小さなシステムでも雑に使える」 ことを軸に考えています。以下に挙げていくような要件を満たすものが存在してないよねという話でもあります。

必要十分な帳票機能

実業務で雑に使うにあたって、日本語が難なく扱え、繰り返しや改ページ制御が簡単にできることは最低限必要です。残念なことに、必要最低限の機能を持つ帳票エンジンの選択肢は決して多くはなく、新興製品はほぼ全滅という惨状です。

一方で老舗エンタープライズ製品が持つ高度なプリンター制御は不要で、PDFが出力できれば十分だと考えています。プリンター制御のニーズはゼロではないとは思いますが、実際にヒアリングしてきた限りでは要望がありません。そもそも基幹規模のシステムなら実績のある老舗エンタープライズ製品を採用するだろうし、小規模向けなら都度作っても工数は知れていると割り切っています。

Webブラウザ上で動作する帳票エンジン

新規で帳票出力が必要なシステムを構築する場合、余程の理由がない限りはWebシステムにするかと思います。そして、帳票出力はサーバーサイドで行う構成が一般的です。そもそも既存の帳票エンジンは、動作環境の都合からサーバーサイドでないと使えません。

しかし、帳票出力処理はCPU負荷・メモリ使用量が大きいという問題があります。「リクエスト毎に帳票を生成してレスポンスとして返す」ような素朴な設計のサーバーでは、負荷増大に耐えられません

このため「一旦Queueに投入してから処理をする」「事前に日次バッチで生成しておく」など、負荷増大に備えた設計・構成が必要となり、システムが複雑化し、開発/構築コストも運用コストも増大してします。

そこで、Webブラウザ側で帳票出力を行いたいという発想になります。Webブラウザ側に帳票処理を任せることで、シンプルなシステム構成にでき、コストを抑えることができます。そうなれば、小さな業務でもシステム化できる可能性が高くなります。

とはいえ、ビジネス上の都合でサーバーサイドで帳票出力したいケースは当然あるので、ブラウザサイドとサーバーサイドの両方に対応します

今どきのフロントエンド感覚で帳票テンプレートを作成できる

yagisan-reportsでは帳票テンプレートをXMLで記述します。そのうえでGUIのデザイナーツールも提供します。テキストエディタとGUIデザイナーのどちらからも帳票テンプレートを編集できます。

帳票のレイアウトシステムは 「要素を絶対位置で配置するモード」「要素を上から下に並べていくモード」 の2つから選択できます。前者では、既存のPDFファイルをベースにして、動的に文字や画像等を重ねて出力させることも可能です。

また、AndroidやiOSなどにおける TableViewやGridのようなレイアウト要素によって、帳票の表組(ざっくりとは罫線)を構成 します。これらのレイアウト要素は多段にネストさせることができます。

これらのような、今どきのフロントエンド開発では「できて当たり前」のことができないのが「今までの帳票開発」 でした。

「現代的なシステム構成」を想定した柔軟なライセンス体系

2023年現在において、新規でシステムを構築する場合はAWS・Azure・GCPなどのクラウド環境を使い、LambdaのようなFaaSも合わせて使うことはごく自然な選択です。オンプレミスであったとしても、余程の理由がなければコンテナなどの仮想化技術を用いた構成にするのではないかと思います。

しかし、商用帳票製品の多くはクラウド環境や仮想化環境で使うことを想定したライセンス体系になっていません。オートスケールすることがメリットの環境なのに、サーバー台数やCPU数でしか契約ができないため、インスタンスタイプやインスタンス数を固定しないと使えないとか、本末転倒なことになってしまいます。

また、yagisan-reportsはWebブラウザ上で動作させることができるため、ノーコード・ローコード系のSaaS/PaaSに組み込んで使うことも可能です。この場合は利用規模が極小になることも想定されます。

yagisan-reportsでは、これらのような既存の帳票エンジンでは想定しきれていない環境でも問題なく柔軟に使えるライセンス体系としていきます。

まとめ

帳票エンジン自体の完成度は競合製品と十分に勝負できるレベルに達してきていると思っていますが、一方で帳票デザイナーなどの周辺部分の開発がまだまだ追いついてない状態ではあります。

開発リソースが潤沢ではないという大前提はありますが、最初期のプロトタイプを作ったのが2018年で、そこから5年ぐらい開発してやっとこの段階です。実際に帳票エンジンを作ってみてわかったことは「想像してた5倍ぐらい開発がめんどくせぇ・・・」 ことでしょうか。

最後に、yagisan-reportsは ライブデモ を公開しているので、こちらだけでも見て頂ければ有難いです。実際に使ってみたいという方は 製品ページ からお問い合わせください。近い将来には問い合わせ不要で試用できるようになる予定です。

Discussion