Accessからサクッと移行してみた

## はじめに

こんにちは、ラモ・テクノロジー株式会社の柴田です。
みなさんは事務仕事をするときにはExcelを使うことが多いと思います。
でもExcelは複数人で同じデータを取り扱う作業が苦手です。
このようなときはAccessを使ってデータ入力・集計・出力を行うことも多いのではないでしょうか。

## Accessによる業務システム

### Accessとは

Accessは、Microsoft社が開発して1992年に発売開始されたデータベースソフトです。
マウスのドラッグ＆ドロップを活用した直感的なGUIで、データベースを一気にユーザー寄りに引き寄せました。
さらに1997年にリリースされたAccess 97でVBA（Visual Basic for Applications）によるカスタマイズが可能となり、小規模なプロジェクトや個人利用では一気に主役に躍り出ました。
また、Accessはマイクロソフト社が販売するMicrosoft Officeスイートに含まれており、Excelを使っているユーザーが追加の出費なしでAccessを試してみたケースも多いと思います。

### 野放しのAccessシステム

Accessの登場によりデータベースの業務利用の敷居が大幅に下がり、IT部門を通じたシステム開発を検討せずに、現場の担当者がAccessを使って自力で問題を解決しようとすることが増えました。
その結果、組織内で正式なIT部門の管理や承認を受けずに、個人や小規模チームが独自にAccessを用いて構築したデータベースやアプリケーションが増え「**野良Access**」と呼ばれることもあります。
このようなAccessデータベースは迅速な業務改善、現場主導の柔軟な開発、IT部門の負担軽減とメリットは大きいものの、以下のデメリットが存在します。

1. **データの分散とサイロ化**
データが部門ごとに分散し、組織全体で一貫性のあるデータ管理が難しくなります。他のシステムとの連携が取れず、効率が低下することがあります。

2. **セキュリティリスク**
IT部門の管理外にあるため、アクセス制御やデータ保護が適切でない場合があります。個人情報や機密情報が漏洩するリスクがあります。

3. **保守性の欠如**
開発者が異動や退職すると、データベースの構造や運用方法が分からなくなることがあります。不十分な設計やテストにより、エラーやデータ破損のリスクも高まります。

4. **スケーラビリティの問題**
Accessは小規模なデータベースには適していますが、大量のデータや多人数での同時アクセスには向いていません。これが原因でパフォーマンスの低下やシステム障害が発生する可能性があります。

5. **ITガバナンスの欠如**
組織全体での標準化が難しくなり、データ管理やシステム運用における一貫性が損なわれます。

### Accessの将来

Accessは1992年の販売開始とIT製品としては異例の長寿となりますが、Microsoft Officeスイートの一製品として提供されていることから、早々の販売終了はないと思われます。
ただし、Microsoft Officeスイートは現在はサブスクリプション型のMicrosoft 365が主流となり、ユーザー数に応じた月額または年額料金がかかります。
買い切りのOfficeパッケージ版は一度購入すればその後の追加料金は不要なものの、サポート期間が終了するとその後のアップデートは提供されません。直近ではAccess 2016、Access 2019の公式のサポート終了日は2025年10月14日になります。

## Accessのマイグレーション

### Accessの移行先

Accessデータベース、アプリケーションについては、クラウド対応、拡張性、モバイル対応、セキュリティ向上などが求められることから、他環境への移行を求められることが増えてきて、近年急速に広まりつつあるローコード/ノーコードプラットフォームへの移行が筆頭候補に上がることが多いと思います。

### プリザンターへの移行

ローコード/ノーコードプラットフォームのひとつに「[プリザンター](https://pleasanter.org/)」があります。
プリザンターはOSSとして提供されており、オンプレミス環境で無償で利用できます。さらにユーザ数制限、機能制限、期間制限が一切ないため、まずは試験導入をして、その後に本格運用となった場合でも追加の費用がかかりません。
このことから、Accessからの移行先にプリザンターを選択するのは敷居が低いと思います。

### プリザンターへの移行手順

Accessからプリザンターへの一般的な移行手順は以下のフェーズになります。

1. **アセスメント**
現状のACCESSの仕様を把握し要件定義フェーズ移行見積を実施
・画面一覧・画面レイアウト・画面設計書
・帳票一覧・帳票レイアウト・帳票設計書
・テーブル一覧・レイアウト
・ビジネスロジック等出力

2. **要件定義・設計**
アセスメント結果を基に作成
・画面一覧・画面レイアウト・画面設計書
・帳票一覧・帳票レイアウト・帳票設計書
・テーブル一覧・レイアウト
・ビジネスロジック等出力（VBA）- VBAを解読し、設計書に記載必要

3. **開発・テスト**
設計書を基に開発・テスト実施

4. **移行**
現行Accessファイルからデータ移行を実施

5. **本番稼働**

この中で、現行Accessファイルの調査（アセスメント）は単純な作業の繰り返しになり、凡ミスも多くダブルチェックが必要になったりで想定以上の作業量になりがちです。また、設計書からプリザンターのテーブルを作成する作業もアセスメントと同様に単純な作業の繰り返しで、その割に作業量が増えてしまいがちです。

## ツールによる移行作業の自動化

### 自動化の可否

そこで考えました。単純な作業の繰り返しならツールを作成して自動化すれば、時間短縮かつ凡ミスの根絶ができるのではないかと。
聞くところによれば、社内業務でAccessを活用しているオフィスのなかには、ひとつふたつではなく**数百単位**の**作り人知らずのAccessファイル**が使われているところもあるとか。
いつ動かなくなるか不安に思いながら使い続けているAccessファイルを、プリザンターにデータ移行してデータの入力・編集ができるところまでを自動化できれば、かなりの不安が解消できるのではないかと考えました。

### A2P（Access To Pleasanter）

ということで、社内で自動化ツール「**A2P（Access To Pleasanter）**」を作ってみました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956722/404f4cf3-c6b8-a614-f2b3-f8766207b76c.png)

移行手順の中で以下の太字箇所を自動で作成します。

1. **アセスメント**
現状のACCESSの仕様を把握し要件定義フェーズ移行見積を実施
・**画面一覧・画面レイアウト・画面設計書**
・**帳票一覧・帳票レイアウト・帳票設計書**
・**テーブル一覧・レイアウト**
・**ビジネスロジック等出力**

2. 要件定義・設計
アセスメント結果を基に作成

3. **開発・テスト**
設計書を基に開発・テスト実施
・**テーブル、編集画面の作成**

4. **移行**
**現行Accessファイルからデータ移行を実施**

5. 本番稼働

例えば、Accessのテーブル定義からプリザンターの適切な項目種別を用いてテーブルを自動作成することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956722/a06658a4-f21b-9b4e-e66b-e8442bf10337.png)

なお、太字以外の箇所についてはこれまで通り人手による作業となります。

### A2Pでできないこと

A2Pの自動化は決して万能ではありません。
例えばデータ入力画面については、Aceessのテーブル定義からプリザンターでの適切な項目種別を用いて入力・編集画面をA2Pが自動作成しますが、Accessの画面（フォーム）をそのままのイメージで移行することはできません。帳票につきましては、現時点ではプリザンターの標準機能にはありません。また、ビジネスロジックについては、そもそもプログラム言語がAccessはVBA、プリザンターはJavaScriptと異なります。
これらの対応については、どうしてもITエンジニアによる開発が必要になりますが、それでもA2Pを使うことで相当の開発ボリュームの削減になると思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956722/2afd8ee2-ca1c-f8d5-f2c1-e6a347d5df53.png)

## まとめ

古くなったAccessアプリケーションやデータベースをプリザンターに移行することは、決して容易なプロセスではありません。
Access 2016のメインサポートは2020年10月に終了しましたが、延長サポートは2025年まで続きます。Access 2019の公式サポート終了日は2025年10月14日で、Access 2021の延長サポート終了日は2031年10月13日です。しかし、Microsoftはサポート期間終了前に最新バージョンのAccessへの移行を推奨しています。そのため、最新のバージョンに移行、そしてAccessデータベースをプリザンターに変換することをお勧めします。

A2P（Access To Pleasanter）によるAccessからプリザンターへの移行につきましてご興味ございましたら、お気軽にコメント等いただければと思います。