こんにちは、なかぜんです。
Accessアプリを業務で開発・運用していると、「この変更、前のバージョンではどうだったっけ?」とか、「誰がどこを変更したの?」といった悩み、ありませんか?
Accessは便利なツールですが、ExcelやWordと違って、ドキュメント的なバージョン履歴が残りません。しかも、1つのファイルに全機能が詰まっているため、ちょっとした変更でも取り返しのつかない事態に発展することも…。
今回は、そんな悩みに向けて「Accessアプリのバージョン管理の工夫」をご紹介します。
実務で役立つ手法から、応用までわかりやすく解説していきますね。
Accessでバージョン管理が難しい理由
単一ファイル構造とバイナリ形式の限界
Accessは、拡張子「.accdb」や「.mdb」のファイル1つに、フォーム、テーブル、クエリ、マクロ、VBA…すべてが詰まっています。中身をテキストで直接確認できないため、Gitなどのバージョン管理ツールとは相性が悪いんです。
変更履歴が残らない
Access単体では「誰が・いつ・どこを」変更したかという履歴が残りません。複数人で運用していると、「あれ?動かなくなった…誰か触った?」というトラブルも頻発します。
基本の工夫:フロントエンドとバックエンドの分離
Accessアプリの運用では、まず「フロントエンド(UI・ロジック)」と「バックエンド(データ)」を分けておくのが基本中の基本です。
分離のやり方
Accessの「外部データ」→「Access」から、バックエンド用のDBをリンクテーブルとして取り込みます。
フロントエンド(操作画面側)はローカル配布し、データはサーバー共有します。
この構成にすることで、フロントだけ差し替える運用が可能になり、バージョン管理もやりやすくなります。
実践!テキスト化してGitで管理
「SaveAsText」「LoadFromText」を活用
Accessの各オブジェクト(フォーム・モジュールなど)は、実はVBAからテキスト形式で出力可能です。以下はそのサンプルコードです。
' フォームをテキストに保存
Application.SaveAsText acForm, "F_受注入力", "C:\Export\F_受注入力.txt"
' テキストからフォームを読み込み
Application.LoadFromText acForm, "F_受注入力", "C:\Export\F_受注入力.txt"
この仕組みを活用すれば、オブジェクト単位で変更を追跡できるようになります。
テキスト化されたファイルは、GitやSVNなどのバージョン管理システムにそのまま取り込めるので、差分チェックや履歴管理もばっちり。
おすすめツール
- Ivercy:商用ツール。AccessとSourceSafe/Gitを統合。
- msaccess-vcs-addin:オープンソースで導入しやすい。
運用の工夫ポイント
フォルダ構成を決める
開発者全員で共通のルールを持ちましょう。例えば、
- 「リリース版」「作業中」「旧バージョン」などフォルダを分ける
- ファイル名に日付+バージョン番号を入れる(例:MyApp_20250817_v1.accdb)
自動バックアップマクロを組む
アプリを閉じるタイミングで自動的にコピーを取るマクロやVBAを組み込むと、万が一のときも安心です。
よくあるミスと注意点
- Gitにバイナリのまま登録してしまう → 差分が取れず意味がない
- テキスト出力後にコードのエンコーディングが崩れる → UTF-8で保存を
- LoadFromTextでインポート時、元のオブジェクトが上書きされるので注意
応用ポイント:CI/CD風の運用も可能!
以下のような応用も可能です。
- GitHub Actions等で、コミット時に自動ビルド(LoadFromText)
- 変更があったオブジェクトだけ差し替え
- バグ修正ログや変更履歴をリリースノート形式で自動出力
ここまでやると、かなり「システム開発っぽく」なりますね!
まとめ:バージョン管理は「安心のための仕組み」
Accessのバージョン管理は、少しの工夫で大きな安心につながります。
- まずはフロント/バックの分離から
- 慣れてきたら、SaveAsText+Git運用
- ファイル名・フォルダ名ルールを決めて、誰が見ても分かる構成に
「自分には難しそう…」と思わずに、できるところから一歩ずつ始めてみましょう。
なかぜんも最初は手探りでしたが、今ではバージョン履歴を見返して「やってよかった」と心から思っています。
