こんにちは、なかぜんです。
Accessで業務システムを作っていると、ある日こんな声が聞こえてきます。
「昨日の修正、やっぱり前のバージョンに戻したいんだけど…」 「誰がどこを直したか、もうわからない…」
そう、Accessではソース管理ツールがない分、「バージョン管理」の工夫がとても大切なんです。
この記事では、Access初心者の方でも無理なくできる、シンプルで実務に役立つバージョン管理の方法をわかりやすくご紹介します。
なぜAccessでバージョン管理が必要なのか
ファイル単位の運用が基本だから
Accessでは「.accdb」ファイルそのものがアプリの本体。複数人で触ると、誰がどこを変更したのか追跡しづらくなります。
バックアップの重要性
一度壊れると復旧が難しいため、定期的なバックアップが欠かせません。特に、修正前の状態を残しておくことで「戻す」選択肢が持てるようになります。
基本的なバージョン管理の方法
①ファイル名に日付を入れる
一番手軽なのは、MyApp_2025-05-24.accdb
のように日付付きで保存する方法です。修正ごとに別名保存(Save As)をしておけば、過去の状態にもすぐ戻れます。
②バックアップを自動化する(VBA)
次のようなVBAコードで、自動的に現在のファイルをバックアップできます。
Private Sub バックアップを作成する()
Dim backupPath As String
Dim fso As Object
backupPath = CurrentProject.Path & "\Backup_" & Format(Now, "yyyymmdd_hhnnss") & ".accdb"
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CopyFile CurrentDb.Name, backupPath
MsgBox "バックアップを作成しました:" & backupPath
End Sub
このコードはボタンに割り当てて使うのがおすすめです。クリック1つでバックアップが取れるので、こまめな保存がクセづきます。
応用:変更履歴のログを記録する
少し中級者向けのテクニックですが、変更内容をテーブルに記録していく方法もあります。
更新履歴テーブルの作成
以下のようなテーブルを用意します。
- ログID(オートナンバー)
- ユーザー名
- 変更日時
- 操作内容(備考)
記録用のVBA例
Sub 操作ログを記録する(ByVal memoText As String)
CurrentDb.Execute "INSERT INTO T_操作ログ (ユーザー名, 変更日時, 操作内容) " & _
"VALUES ('" & Environ("USERNAME") & "', Now(), '" & memoText & "')"
End Sub
たとえば、保存ボタンや削除ボタンの処理の最後にこのログ記録処理を入れると、「いつ・誰が・何をしたか」が記録に残るようになります。
よくあるミスと注意点
- 同じファイルを複数人で開くと、上書き事故の原因に。必ず分離(FE/BE構成)する。
- バックアップを1つだけ保存すると、破損時に意味がない。世代管理(例:7世代保存)を意識しよう。
- ファイルサイズが大きくなりすぎると動作が不安定に。定期的な最適化(コンパクト化)もセットで。
応用編:Git連携やAccessプロジェクト形式(ADP)は?
Accessは単体ファイル形式のためGitなどのソース管理とは相性が悪いのですが、以下のような工夫で対応できます:
- VBAモジュールをエクスポートして
.bas
や.frm
で管理 - フォームやレポートも定期的にテキスト出力して管理
中~上級者なら、自動エクスポートツールの活用もおすすめです。
まとめ:まずはできる範囲から始めよう!
Accessでのバージョン管理は、ちょっとした習慣と工夫でグッと安全性が高まります。
- まずはファイル名に日付を入れて保存
- VBAで自動バックアップボタンを作ってみる
- 余裕が出てきたら操作ログやモジュール出力に挑戦
読んでくださったあなたも、ぜひ今日から「バージョン管理」始めてみてくださいね。
それでは、また次の記事でお会いしましょう~。
