ACRは、前述の通り「エンジン」と「デザイナ」の2つで構成されている。
エンジンはプリンタドライバと同じ役割を持ち、ハードウェア差異を吸収しながら同一結果を出し続ける必要がある。そのため、高速性と安全性を重視しRustで開発した。
一方、デザイナは帳票の定義を作成するツールであり、クロスプラットフォーム対応のためAvalonia UIを採用し、C#で実装し、リソースファイルを利用して日本語、英語に対応した。そのためエンジンはコンソールベースで英語インターフェースとしている。
⸻
今回の開発では、当初はそれぞれの環境を構築した。
• Windows
• macOS
• Linux(WSL上のUbuntu)
それぞれで動くことを確認しながら、ここにコードも異なるところも発生するだろうと思っていた。
実際に環境差異は .gitignore で吸収し、IDEはVisual Studio Codeを使用することで、各OSのコンパイラ設定を切り替えながら問題なく開発を進めることができた。
ここまでは、想定通りだった。
⸻
GitHubを「使う側」から「使う側」に変わった瞬間
これまでGitHubは使ってきた。
ただ、それは「既に運用された環境を使う側」だった。
今回初めて、organizationを構成し、
• 公開リポジトリ
• 非公開リポジトリ
• 複数プロジェクトの分離
を自分で設計した。
その時点で、すでに「単なるソース管理」ではなくなっていた。
⸻
圧巻だったのはその後だった
GitHub Actionsを導入した。
各OS向けにビルド処理をYAMLで定義する。
それだけで、
• pushすると自動ビルド
• OSごとのバイナリを生成
• アーカイブ化(zipなど)
• そのまま成果物として公開
ここまでが一連で実行される。
手作業は一切ない。
⸻
何が起きているのか
これは単なるCIではない。
「ビルド環境そのものをGitHub上に持った」という状態になる。
ローカルで
• ビルドして
• 圧縮して
• 配布して
という作業をしていたものが、
リポジトリにpushするだけで完結する
⸻
実際に変わったこと
開発フローが完全に変わった。
以前:
• 各OSでビルド
• 動作確認
• 手動配布
現在:
• コードを書く
• pushする
• 成果物が出来上がる
⸻
帳票エンジンとの相性
ACRのような帳票エンジンは、
• OSごとのバイナリが必要
• 実機検証が重要
• 配布形式が固定(exe / bin / zip)
という特徴を持つ。
この特性とGitHub Actionsは非常に相性が良い。
⸻
正直な感想
ここまで自動化できるとは思っていなかった。
GitHubは単なるソース管理ではなく、
開発・ビルド・配布を一体化した基盤
になっている。
⸻
最後に
今回の開発で得た一番大きなものは、コードそのものではない。
• Rustによるエンジン
• Avaloniaによるデザイナ
これら以上に、
「どう作り、どう届けるか」
その仕組みを手に入れたことが大きい。日本ではマルチベンター環境の構築は数ないと思うが、今後はRustによる言語採用の変化、AIコーディングなどにおいて常に考慮した対応していくことが求められる。