はじめに
ACR(Across Report Renderer)のデザイナツールである ACR Designer を公開しました。
👉 https://github.com/acrossreport/acr-designer
前回の記事では、Rust + Skia による帳票エンジンについて説明しましたが、
今回はそのエンジンを実際に使うための「デザイナ」についてです。
ACRは、
• ピクセル単位での精度
• プリンタ非依存の描画
• JSONベースのテンプレート
という特徴を持っています。 
しかし、この仕組みには1つ前提があります。
👉 テンプレートをどうやって作るのか
⸻
JSONだけでは帳票は作れない
ACRのテンプレートはJSONで定義されます。
これは
• Gitで管理しやすい
• API連携しやすい
• 差分が見える
といったメリットがあります。
ただし現実は違います。
• 座標を数値で入力する
• 文字位置を微調整する
• 罫線やレイアウトを確認する
👉 これを手書きJSONでやるのは現実的ではありません
⸻
ACR Designerとは何か
ACR Designerは、ACRエンジンのためのGUIツールです。
役割はシンプルです。
👉 見たまま設計して、そのまま出力する
⸻
主な特徴
• WYSIWYG(見たまま設計)
• ピクセル単位のレイアウト精度
• プリンタ非依存
• JSONテンプレート生成
• Windows / macOS ネイティブ対応
⸻
技術構成
ACR Designerは以下の構成で作られています。
• 言語:C#
• UI:Avalonia UI
• 描画思想:ACRエンジンと一致
Avaloniaを採用した理由はシンプルです。
• クロスプラットフォーム対応
• .NETで開発可能
• Skiaベース
👉 エンジン(Skia)と整合性が取れる
⸻
処理の流れ
ACRの構成は次のようになります。
Designer → JSON → Engine → PDF / PNG
この構造のポイントは1つです。
👉 DesignerとEngineが完全に分離されていること
⸻
なぜデザイナが重要なのか
帳票システムにおいて重要なのは
• エンジンの精度
• デザイナの操作性
この2つです。
エンジンが正しくても、
• 使いにくい
• 調整できない
• 見た目がズレる
👉 これでは現場では使えません
⸻
実際に作って分かったこと
今回の開発で分かったのは、
👉 デザイナの方が難しい
ということでした。
理由は明確です。
• マウス操作
• UI状態管理
• 座標変換
• フォント描画
「見た目」と「内部データ」を一致させる必要がある
マルチベンダー環境との関係
ACRは、
• Windows
• macOS
• Linux
で同じ結果を出すことを前提に設計されています。
そのため、
👉 デザイナも同じ思想で動く必要がある
⸻
GitHubで公開
今回、ACR DesignerはGitHubで公開しています。
👉 https://github.com/acrossreport/acr-designer
• Issue歓迎
• フィードバック歓迎
• 改善継続予定
⸻
今後
今後は以下を予定しています。
• ESC/POS(レシート)
• ZPL(ラベル)
• SBPL
👉 実機出力との連携
⸻
まとめ
ACRは
• Rustによるエンジン
• Avaloniaによるデザイナ
という構成で、
👉 帳票システムとして成立しました
⸻
おわりに
エンジンを作った時点では、まだ半分でした。
デザイナを作って初めて、
👉 「実際に使えるツール」になった
そう感じています。