帳票テンプレート作成代行 無料キャンペーンのお知らせ
yagisan-reportsの帳票テンプレート作成代行を無料で提供するキャンペーンを実施いたします。
yagisan-reportsの帳票テンプレート作成代行を無料で提供するキャンペーンを実施いたします。
前回の開発者レターはこちらになります。 yagisan-reports 開発者レター 2023年12月
現在のyagisan-reports SDKの最新バージョンは 1.0.0-alpha.11.3 です。前回レターからの主なアップデートは、次の通りとなります。
VText )foreach 属性の実験的サポート最新バージョンは 1.0.0-alpha.10 です。alpha.11 で提供予定の主な機能は次の通りです。
<VText> の追加<?if> <?switch> <?foreach>foreach 属性の追加で対応する方針になりそうです。<ColumnText> でセル毎にスタイルを設定できるように✅は実装済み、🚧は開発中です。
帳票エンジンとしては、想定している機能は alpha.11 でほぼ実装完了となります。以降については、帳票エンジンのコア部分よりも正式サービスインに向けた周辺部分の開発に移っていく計画です。
npm install できるようにyagisan-reports SDKを npm install して、そのまま試用できるようにしたいと考えています。
開発自体よりも「使用許諾契約(ライセンス)の扱いどうするか」という法務・販売の部分の確認や方針決定が必要なため、まだ少し時間がかかります。
現在は帳票デザイナーの開発がメインになってきています。2024年春に大幅アップデートの第一弾をリリースすることを目標としています。
alpha.1 のリリースalpha.1 のリリースこれが 帳票デザイナーの直近最大の開発目標 です。
帳票エンジンだけではなく、帳票デザイナーをサービス内に組み込んでエンドユーザーに提供したい(エンドユーザーが帳票をせフルカスタマイズできるようにしたい) という要望を多く頂いています。帳票エンジンの開発が落ち着いてきたので、やっとこちらの要望に応えられる開発体制になってきました。
とはいえ、組み込めるようにする開発自体はそこまで大変ではなく、後述の作業が中心になります。
開発者レターに大々的に書くような話でもないのですが、今まで帳票デザイナーには開発人員がうまくアサインできていませんでした(これが正式サービスインで来てない理由のひとつでもあります)。
帳票デザイナーはReactで開発しているのですが、2020年頃に実装したプロトタイプがベースとなってしまっており、React v16/クラスコンポーネントベースで動いています。これを現在、React v18/Hooks APIベースへ切り替えていっています。
帳票エンジンの開発が落ち着いてきたこともあり、帳票エンジン側でコンパイラサービスの実装を始めています。帳票デザイナー内部ではXMLエディター部分にMonaco Editor(VS Codeのテキストエディターコンポーネント)を使用しており、これと連携できるようにしています。
帳票エンジンの連携を強化することで、帳票デザイナーの次の機能が強化される予定です。
とはいえ、入力補完を作るのはかなり大変なので、2024年春の時点では足回りを固める部分までになるのではないかと思います。
これもできて当たり前レベルの話ですが、やっと開発人員がアサインできる状況になったので、開発を進めています。
特に <Grid> <Table> がGUIからレイアウトを組めるようになると、罫線が入り組んだ帳票のレイアウト作成作業がかなり楽になるはずです。
以上までで挙げたこと自体では、決済システムの構築を筆頭に管理画面の開発にまだ手が回っていません。正直手が回ってないので、Stripeとか詳しい人がスポットで手伝ってくれると大変助かる状況です。
また、B2Bサービスとして提供するため、電気通信事業における個人情報等の保護に関するガイドライン に準拠したサービス運用体制の構築準備は既に着手しています。
このあたりができてきて、やっと正式サービスインかなと考えています。
yagisan-reports開発チームリーダーのterurouです。
デンキヤギでは yagisan-reports という「Webで使うことを前提とした」商用の帳票エンジンを開発しています(厳密にはyagisan-reportsはエンジン単体の製品ではなくクラウドサービスとして開発していますが、この記事では帳票エンジンとして記載しています)。
「Webブラウザ単体で動作すること」にこだわっている帳票エンジン です。
2023年11月現在、アーリーアクセス版を提供しています。既に3社5システムで本番稼働しており、一番長いものでは3年ほど本番稼働を続けています。開発中のシステムも含めると、さらに数社あります。
元々はアーリーアクセス版の公開から早めにパブリックベータに移行する計画だったのですが、ありがたいことに早期から大口の導入相談が複数あり、こちらを優先対応していました。こういった開発経緯から、帳票機能自体は既にアーリーアクセス版の域を越えてしまっており、そろそろ次の展開に入りたいとは考えています。
ありきたりですが、使いたい帳票エンジンが存在しなかったからです。
商用製品に限定すると、老舗商用製品は10-15年ぐらいは考え方が古いし、新興商用製品は基本機能すら足りてないという状況だと認識しています。OSSも同様に相当古くなってしまっています。他には「Headless ChromiumでCSS組版」「ExcelファイルをPDFに変換」というような帳票専用ではないライブラリを駆使する方法もありますが、品質や工数の面で大きな問題があることを我慢して使うしかありません。
帳票エンジンについては10年越しで動向を見ていますが、上記のような状態がずっと続いています。「この先も状況が良くなることはまずないだろうし、だったら作るかねえ」 という流れです。
また、時雨堂という会社の存在も開発モチベーションに影響しています。「零細企業がミドルウェアを作って売る」ことが商売として成立することを現実として見せつけられた訳ですね。デンキヤギのここ数年の取引実績から考えても、零細企業であることが取引の足枷になることが相当減ってきている実感はあり、「だったらウチでもやれるかな」という気分になってやっています。
「小さなシステムでも雑に使える」 ことを軸に考えています。以下に挙げていくような要件を満たすものが存在してないよねという話でもあります。
実業務で雑に使うにあたって、日本語が難なく扱え、繰り返しや改ページ制御が簡単にできることは最低限必要です。残念なことに、必要最低限の機能を持つ帳票エンジンの選択肢は決して多くはなく、新興製品はほぼ全滅という惨状です。
一方で老舗エンタープライズ製品が持つ高度なプリンター制御は不要で、PDFが出力できれば十分だと考えています。プリンター制御のニーズはゼロではないとは思いますが、実際にヒアリングしてきた限りでは要望がありません。そもそも基幹規模のシステムなら実績のある老舗エンタープライズ製品を採用するだろうし、小規模向けなら都度作っても工数は知れていると割り切っています。
新規で帳票出力が必要なシステムを構築する場合、余程の理由がない限りは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は ライブデモ を公開しているので、こちらだけでも見て頂ければ有難いです。実際に使ってみたいという方は 製品ページ からお問い合わせください。近い将来には問い合わせ不要で試用できるようになる予定です。