昨年の夏、業務でRustによるライセンスサーバ(REST API)を開発していた。
その開発の最中、ふと昔から考えていた「帳票アプリ」のことを思い出し、改めて調べ始めたのが今回のきっかけである。
25年前の帳票開発
これまで25年以上、業務アプリ開発に携わる中で、多くの印刷系アプリケーションを作ってきた。
ただし、その多くは以下のような構成だった。
- Visual Studioにアドオンとして組み込む帳票ツール
- 高額なライセンス
- サーバ版はASP.NET対応
当時としては非常に便利な仕組みだったが、いくつかの違和感もあった。
ASP.NETとコードバインディングの限界
ASP.NETは優れた開発技術であり、特にWebFormsはWinFormsに近い感覚で開発できる「コードバインディング方式」が採用されていた。
これは業務アプリにおいて非常に有効だったが、一方で次のような課題があった。
- PostBack前提の設計
- IISに強く依存
- Webでありながら「状態を持つ」構造
当時から、この仕組みにはどこか納得できないものを感じていた。
25年後、AIに聞いてみた
それから25年。
AIによる開発が現実的になった今、改めて問いかけてみた。
「Crystal ReportsやActiveReportsのような帳票アプリは作れるか?
さらにスマホやタブレットでも自由に使いたい」
答えはシンプルだった。
Yes
帳票システムに必要な2つの要素
AIとのやり取りの中で、帳票システムは大きく2つに分かれると整理された。
- デザイナ(帳票を設計するアプリ)
- レンダリングエンジン(描画・出力)
そして最も重要なのは、
- どの描画基盤を使うか
- どの思想で設計するか
だった。
なぜSkiaを選んだのか
当初はSVGなど複数の案を検討したが、最終的に次の理由でGoogleのSkiaを採用した。
- 高品質な描画エンジン(PDF / PNGなどへ直接出力可能)
- クロスプラットフォーム対応
- 実績(Chromeなどで使用)
構成は以下のように決まった。
- デザイナ:Avalonia UI + Skia
- エンジン:Skiaベース
この時点では「良さそう」という判断だったが、後から考えるとこの選択が非常に大きかった。
なぜRustなのか
言語選定については当初そこまで強いこだわりはなかったが、時代の流れが背中を押した。
- Microsoftがプリンタドライバの方向性を見直し
- C/C++資産の見直しの動き
- LinuxカーネルでRust採用の流れ
これらを踏まえ、エンジンはRustで実装することに決めた。
結果として、
- 高速
- 安全
- クロスプラットフォーム
という帳票エンジンに非常に適した特性を得ることができた。
現在の状況
現在、帳票エンジンはほぼ完成しており、
- CLI(コマンドライン)版を近日リリース予定
- Windows / macOS / Linux対応
となっている。
これから
帳票は「古い技術」と思われがちだが、
- Skia
- Rust
- AI
これらを組み合わせることで、まったく新しい形にできると考えている。
このプロジェクトは、単なる帳票ツールではなく
次世代の描画・出力基盤になる可能性がある。