MS Accessをクラウドへ移行する ~ 実際にやってみた具体的方法と問題点 ~

Access

こんにちは。じじグラマーのカン太です。週末プログラマーをしています。

今回の記事では、僕がAccessで作ったシステムをクラウドに移行して運用してみた体験談を紹介しようと思います。参考になるかどうかはわかりませんが、備忘録も兼ねて書いてみます。

では、早速はじめましょう。

はじめに

Accessデータベースをクラウド上で運用することには多くのメリットがあります。クラウド化によって、データへのアクセシビリティが向上し、セキュリティが強化され、運用コストの削減が期待できます。

アクセシビリティの向上

クラウド上のデータベースは、場所や端末を選ばずにアクセスできるため、リモートワークやモバイル環境でも利用しやすくなります。
複数のユーザーが同時にデータを共有・編集できるため、チームでの協業が容易になります。

セキュリティの強化

クラウドサービスでは、高度なセキュリティ対策が施されており、データの暗号化や多要素認証などの機能が標準装備されています。
オンプレミスでは、セキュリティ対策に手間がかかりますが、クラウド上では専門家による管理が行われます。

運用コストの削減

クラウドサービスの利用料金は従量課金制が一般的で、必要に応じてリソースを柔軟に拡張できます。
サーバーの購入や保守、ソフトウェアのライセンス管理などの運用コストが不要になります

このように、Accessデータベースをクラウド上で運用することで、アクセシビリティの向上、セキュリティの強化、運用コストの削減などの大きなメリットが得られます。

クラウド移行の動機

今回、クラウド移行したAccessのシステムは、当初は一人がローカルで使用する目的に作ったシステムでした(なのでAccessで開発しました)が、システムの仕様の拡大とともにいつの間にか2台、3台と接続台数が増え、現在では15台程度が常時接続するようなものになってしまいました。システム構成としては、シンプルにアプリ用のAccessとデータ格納用のAccessに分け、アプリ用を各自のパソコンに、データ格納用を共用のパソコンに置いて運用する形態をとっていました。アプリ用のAccessからはデータ格納用のAccessの各テーブルにリンクさせて使用していました。

この方式だからか、あるいはデータが増え続けたからかは不明ですが、直近では頻繁にデータが壊れる事象が発生していました。具体例としては、「レコードの更新ができなくなる(削除もできない)」「特定のレコードが読み込めなくなる」「検索条件から漏れる」などです。最適化やサーバーの再起動などで、都度ごまかしながら運用してもらっていましたが、「そろそろ限界かな」という感じでした。

そんな状況の中、別のお客様の案件でクラウドのシステムを構築したこともあり、世の中には無料で使用できるデータベースがあるということを知りました。そこで、DBMSとしては不安定なAccessは捨てて、外部のデータベースとリンクさせたら安定するのでは、という安直に考えクラウド化を検討することにしたわけです。

アプリ用のAccessはそのまま使用し、リンク先を別のデータベースにするだけなら、システムの仕様は変更する必要はなく、ユーザーのインターフェイスは全く変わらない、と考えました。また、リンク先のデータベースをクラウド上に置けば、そのままクラウド化が実現する理想的な方向へ進むことができると考えてしまったのです。

クラウド移行の準備

クラウド移行するためには、Accessに代わる「データベース」とそのデータベースを運用する「クラウドサーバ」が必要になります。準備段階として、この「データベース」と「クラウドサーバ」を決める必要がありました。

データベース選定: AccessからPostgreSQLへの移行

結論を言うと、「PostgreSQL」でした。

選択した理由は以下の通りです。

  1. オープンソースのデータベースである ⇒ タダで使える
  2. 高度なセキュリティ機能や、大容量データの管理が得意 ⇒ みたいです
  3. SQLの標準規格に準拠しているため、Accessユーザーにも使いやすい ⇒ みたいです
  4. ODBCで接続してリンクテーブルとして扱える ⇒ これが決定打でした

クラウドサービス選定: さくらVPSの選択

  • クラウドサービスの比較検討
    • AWSやAzure、GCPなどの大手クラウドサービスを検討しましたが、初期費用や月額料金、機能面での比較を行った結果、さくらVPSが最適だと判断しました。
  • さくらVPSの選択理由
    • 月額料金が手頃で、必要に応じてリソースを柔軟に拡張できる
    • PostgreSQLのインストールや設定が簡単で、初期導入コストを抑えられる
    • 日本国内にデータセンターがあり、レスポンスの良さや法的な観点でも安心できる

以上のように、AccessからPostgreSQLへの移行とクラウド化を検討した結果、セキュリティ面や運用コスト、機能面での優位性から、PostgreSQLとさくらVPSの組み合わせが最適だと判断しました。

実際の移行作業

「さくらのVPS」での設定方法などはこちらを参照ください。

ODBCでAccessからPostgreSQLに接続する方法はこちらを参照ください。

テーブルカラム名の日本語化

作ったシステムAccessのテーブルカラムはほとんどが日本語全角で定義されていました。テーブル名ももちろん日本語です。日本語が使えるところがAccessを選んだ理由でもあるので仕方ないですね。PostgreSQLでは日本語が使えないので、テーブル名、カラム名全てを英語化しました。・・・と言いたいところですが、途中から面倒くさくなりローマ字化してしまいました。英語が母語って、プログラミングをうる上では最強ですね。

データ移行の具体的な手順

Access側からリンクしたPostgreSQLへ、「追加クエリ」を使用してデータを登録しました。日付型のタイプでエラーが続出しましたが、ひとつひとつつぶしていきました。小さな会社のシステムですが、それでもデータ移行には丸一日かかってしまいました。

クラウド移行の検証

本番での稼働を開始して3か月ほど経過しましたが、データベースは壊れることなく安定して稼働してくれています。また、全般的にレスポンスは向上し、集計結果など大量のデータを扱う処理では特に速くなり、お客様の評判も上々です。今後も検証を続け、何か問題が発生するようなら別途報告します。

クラウド移行の感想

今回の移行作業で、最も時間がかかった(面倒くさかった)のがテーブル関連の日本語⇒英語化でした。ソースコード上でのテーブル定義は、「変換」を使って一括で変換してやろうと考えていたので、2日~3日で終わる予定をしていました。が、実際はフォーム上でテーブルの内容を表示する場合は、テクストボックスにカラム名と同じ名前をつけていることが判明して、結局全て目で見ながら変換せざるを得ませんでした。

クエリやレポート、はたまたマクロにも日本語カラムが潜んでいて、本番稼働後もそれらにさんざん悩まされることになりました。

これを想像できていれば、Accessをそのままクラウド化することは考えていなかったかもしれません。

まとめ

いかがでしょうか。

この記事では、体験談をもとにAccessをクラウド移行する方法と、その際の注意点について解説しました。

Accessは使い勝手が良い一方で、複数人で利用するシステムには向いていないという課題があります。そのため、クラウド移行は有効な手段の一つですが、万能な解決策ではありません。

クラウド移行を検討する際には、コスト、セキュリティ、利便性などを総合的に判断する必要があります。また、移行後の運用体制についても事前にしっかりと準備しておくことが重要です。

この記事が、Accessのクラウド移行を検討する皆様にとって、少しでも参考になれば幸いです。

コメント