Accessでどのくらいの規模のシステム開発ができるか ~Accessのレスポンス調査~

1)Accessで40万件のデータを操作したら、どのくらいの時間がかかるのか。

Accessはjava,C#,vb.netなどの他の開発言語と比べて速度が遅いと言われています。
90年代頃までは、速度が遅いことを理由に一部の方には実際の業務システム開発には不向きであると評価されることもありました。ところが、PCのスピードが飛躍的に向上した現在、どの程度のデータボリュームに耐えられるのでしょうか。

今回はそのような疑問に答えるために、40万件という比較的多いデータを使用してレスポンスを測定することにしました。

「Accessでの大量データ時のレスポンス調査」は以下の動画でもご覧いただけます。

***************************************************
本文での概要
ACCESSは他の開発言語と比べると低速であるので、そのレスポンスを引き出すにはそれなりの技術力が必要です。

ACCESSはEXCELよりも高速なので、EXCELからの乗り換えとしては最適です。

ACCESS単独稼働でレスポンスが出ない場合には、SQLSERVERなどのデータベースシステムと組み合わるのがよいでしょう。

データ件数が40万件あっても、読み込み、追加、変更処理は高速に処理が行われます

データ件数が多い場合は、ACCESSの容量の限界である2Gの制約に引っかかってしまう場合があります。
ただし、その場合にはSQL SERVERを組み合わせることで容量の制約を克服できます。

ACCESS単独稼働の場合に、データ件数がある一定の量を超えると指数関数的に遅くなる傾向がありその指数関数的に処理が遅くなる境がデータ件数が4万件程度です。つまりは、4万件を超える場合にはSQL SERVERを組み合わせた方がよいと言えます。

***************************************************

2)ACCESSでのシステム開発について

ACCESSにてシステムを制作するといっても、一見同じような処理を行っているように見えてもその中身(プログラム)については実は色々な方法にて開発することが可能です。
家に例えるなら、木造にて制作したり、鉄筋にて制作したりといった具合です。

そのため、システムの作り方次第でレスポンスは大きく変わってきます。ACCESSで重要なことはシステムをどのような方法で作っているかということです。

特にACCESSは面白いツールでして、素人のような人からシステム制作のプロまで色々な人が制作を手掛けることができます。他の開発言語だと素人のような人がシステム開発を手掛けることはほとんどありません。

Accessの場合、他のシステム(例えばVisual Basicで作りサーバーをSQL_serverにしたもの)と比べるとスピードは遅くなるのが現状です。それなら、他の方法で作った方がいのではということになりますが、それでも業務システムの開発としてAccessが採用されることが多いです。

その理由としてはAccessは他の開発言語と比べて圧倒的に安く作れるということが挙げられるのではないでしょうか。

その中で重要となってくるのはAccessでシステムがどこまでなら制作することができるのかという限界点を知っていることです。
他の開発言語と同じ感覚でAccess VBAで作ると、全然レスポンスが出ないという結果にもなりかねませんので、Accessにてシステムを制作する場合はAccess VBAの特徴をよく把握して制作することが重要です。

ツールが高速であれば、作りをさほど工夫しなくてもレスポンスは問題ないですが、ツールが低速の場合には、逆にかなりの技術が必要になってくるというわけです。

95年頃などPCのスペックが低い時代は1テーブルのデータ件数が1000~10000件くらいのシステムを作ることが限度でした。ところが、今日ではPCのスペックが十分に高くなりましたので、まさにAccessで本格的なシステムが制作できるようになってきたのです。

ちなみに当社にてオーダーメイドでシステムを制作する場合、ACCESSで単独でシステムを制作する場合のデータ件数としては目安として4万件くらいとしております。また、それを超えるデータ件数を扱う場合には、ACCESSとSQLSERVERの組合せを推奨しております。

今回見ていただくシステムは簡単に制作したものと、若干、レスポンス対策を施したシステムの2タイプのシステムのレスポンスを見ていただきたく思います。

今回は各テーブルに40万件のデータを入れた場合のレスポンスを見ていただきたいと思います。

3)テスト環境

今回のテストを行ったシステムは、当社HPの「Access・Excel倶楽部」から「管理システム」というシステムをダウンロードできます。
https://www.ai-light.com/accessclub/
こちらは、3ヶ月間無料で使用できます。

また、このシステムと同様にしてオーダーメイドでもシステム制作を行っております。詳しくはこちらをご覧下さい。
https://www.ai-light.com/access/index.html

今回のテスト環境についてご説明をさせていただきます。

まずは、PC内部にACCESSのファイルを置く場合です。

1台で使用する環境を想定しますと、その場合は直接使用するPCにACCESSのファイルを置くのがレスポンス対策としてはもっとも良いです。

複数人で使用する場合はデータをサーバーに入れ、ネットワーク経由でデータを共有します。
その場合は、1台のPCで使用するよりスピードは遅くなってしまいます。ただし、データ件数がそれほど多くなければ遅くなったと感じることもないでしょう。例えば、1台のPCで使用した場合の反応速度が0.01秒であった場合に、それが仮に2倍時間がかかるようになったとしてもその反応速度は0.02秒だからです。

ACCESSはEXCELと違って多人数で使用することを前提にしています。EXCELを多人数で使用されるている企業様ではEXCELのファイルを開いては閉じるといったことをしながら運用をなされていると思います。
そのような企業様は早急にACCESSへの移行を検討するべきです。

実際にACCESSをexcel感覚で使用しているだけで、うまく業務効率化を実現なされている企業様も見受けられます。

テーブルに入っているデータは以下の通りです。
「プロジェクト管理」テーブル・・・データ件数は約40万件
「プロジェクト明細」テーブル・・・データ件数は約46万件
「マスタ」テーブル・・・データ件数は各10万件

4)テーブルを開く反応速度について(スタンドアロンの場合)

テストの結果、テーブルを開く時のレスポンスはデータ件数が40万件であっても1秒程度とものすごく早いということが分かりました。
EXCELの場合には、データが40万件など入っていると相当に時間がかかると思います。
つまり、他の開発言語より遅いと言われるACCESSですが、実はEXCELと比べると圧倒的に早いです。

EXCELは業務管理でよく使用されていると思われます。EXCELでちょっと遅くなったと思ったり、多人数で使用する際に不便だなと思ったら、EXCELの仕組みをそのままACCESSに移植するでだけでも随分と便利に利用できるようになると思います。

今回テストに使用した「管理システム」の「プロジェクト管理」画面ではデータを呼び出す処理を行ってみます。
表示そのものに関しては1秒程度でとても速いです。

同様に「プロジェクト明細」画面の表示処理は概ね2秒程度です。この中では「プロジェクト明細」テーブルという40万件のデータを表示する処理を行っていますが実に高速です。

プロジェクト管理画面を選んでそこから明細を押すと、プロジェクトNoに関連するプロジェクト明細が表示されますが、この反応速度はだいたい2秒くらいといったところです。

以上より、データ件数が40万件あっても、データの読み込み処理はかなり早いということが分かりました。

40万件のデータがあっても、1~2秒でデータを表示できるということはAccessでもかなりのデータボリュームでも扱えるということです。
これは、最近のPCが早くなったことが原因かと思います。

5)データを作成する処理について(スタンドアロンの場合)

今回は、主にデータの読み込みにどのぐらいの時間がかかるかを調査したかったという経緯があります。

ただ、データ件数が40万件となると手作業にてデータを作成することは難しくなります。
そこで、今回のテストデータはデータを自動で作るプログラムを作成して、そのプログラムにてデータ作成処理を行っています。

自動にてデータを制作するプログラムの概要は次の通りです。
まず、最初の100件くらいは手動で制作しました。
あとは、100件のデータに対しプログラム的に順番に読みながらデータを作成していきます。

ここでは、データを作る際にどのくらい時間がかかったかを簡単に紹介します。

計画ではすべてのテーブル(サンプルシステムでは10テーブル)をそれぞれ40万件にしたかったのですが、ACCESSの容量の制限である2Gbに達してしまい、作成処理に失敗してしまいました。
そのため、マスタテーブル関係は10万件にしたという経緯があります。

最終的には「プロジェクト管理」、「プロジェクト明細」がそれぞれ40万件、その他の8つのマスタテーブルをそれぞれ10万件としました。その最終の容量は1.7Gbになりました。

つまり、ACCESSの容量の制限である2Gbにかなり近い容量となってしまいました。
ところが、その後、ACCESSの最適化処理を行うことでデータ容量は128Mbとなりました。

このことから、結果的には処理中にこまめに最適化処理を行っていくことで、すべてのテーブルに対して40万件を作成することは可能であったかと思います。

この2Gbという制約に関してですが、実データの容量が2Gbになるということではなく、プログラムなどの処理中にAccessのファイルの中に自動的に処理領域を取ってしまうのですがそれを含めて2Gbということです。
従って、実データが1Gb程度あると、作業領域が残り1Gbとなり、大きな処理を行うと壊れやすくなります。

このことから、件数の制約よりもむしろ容量の制約の方が実務的にはひかっかることが多いのではないかと思います。かつては、PCも低速であった頃にはレスポンスがでないということがACCESSの最大の欠点でしたが、現在ではPCが高速になったためにレスポンスよりもむしろ容量の方ネックになってきているというわけです。

以上をまとめますとACCESSにて大量データを扱う場合はレスポンスよりデータ量の方が重要になってくるということです。

この2Gbの制約を超えるにはACCESS単独での制作では難しく、ACCESSとSQL SERVERでのシステム構築が望まれます。
逆にACCESSとSQLSERVERを組み合わせることで容量の制約がほとんどなくなりますので、他の開発言語と比べても遜色がなくレスポンスのよいものを安価に制作できるようになるわけです。

6)データを作成する処理時間について

10テーブルに対してそれぞれ下記の件数を制作した場合に要した時間は以下の通りです。
1万件・・・8分
4万件・・・30分
10万件・・・124分
ただし、分までの時間しか測定しておりません。

「プロジェクト管理」、「プロジェクト明細」テーブルが10万件ある状態から30万件制作して40万件とするのに処理が160分かかりました。

上記より、10テーブルに対してそれぞれ1万件づつ作るのに8分かかっています。
他の言語に比べると遅いですが、個人的にはACCESSの処理はもっと遅いのではないかと思っていたので、それなりのスピードでできているという印象です。

データボリュームが1万件から4万件に増えたということは、データ量が4倍になったということですが、かかる時間も8分から30分と変化しており、データ量に比例してほぼ4倍の時間がかかるようになっております。

ちなみに8分から30分となったということは、むしろデータが増えたことによって若干早く終わっているように感じるかもしれませんが、時間の測定方法がアバウトだったことと、処理スピードを検討するには何回か測定して統計的に処理をする必要がありますが、今回はそこまでは行っていないことによるものだと思います。

同様に1万件のデータで8分かかる処理であるということは、常に処理時間がデータボリュームに比例すると
考えると、10万件の場合は80分でできそうな感じですが、実際は120分以上かかってしまっています。

このことから、、データ件数がある一定の量を超えると指数関数的に遅くなる傾向があるということが分かります。
その指数関数的に処理が遅くなる境が4万件程度ではないかということです。
(この部分を詳しく調べるにはもう少しテストを繰り返す必要がありますが、ここではそこまで追求しないことにします。)

データ件数が10万件程度になるとデータが大きいことにより、徐々に全体の処理が遅くなる傾向があるということが分かりました。

つまりは、Accessのテーブル件数が4万件程度まではあまりレスポンスのことを考慮することなく制作することができますが、それ以上データが増えると指数関数的に処理時間がかかってくるので、常にレスポンスを考慮してシステムを制作していく必要が出てくるわけです。

また、プロジェクト管理とプロジェクト明細の2テーブルに対して、それぞれ10万件から40万件に増やすのに160分の時間がかかっています。
10テーブルに対してそれぞれ1万件を作成するのに8分間かかったということは、1分間あたり12500件のデータを処理できたことになります。

10万件から40万件に増やす処理に関しては2テーブルを対象としていたので、160分間で60万件のデータを作成できたことになります。
つまり、1分間あたり3750件しか処理が出来なかった計算になります。

ここからも、データ量が増えたことで指数関数的に処理が遅くなる傾向があることが分かります。

ただし、処理時間はテーブルの項目数やレコード長によっても変わりますので、正確に処理時間を比較するには同じテーブルで比較する必要がありますので、この比較に関してはアバウトな比較であるとお考え下さい。

以上より、各テーブルのデータ件数が4万件を超えると指数関数的に処理が遅くなる傾向にありますので、制作にあたっては細心の注意が必要であることが分かります。

7)データを作成する処理について(ネットワーク経由の場合)

その次のテストですが先ほどのシステムをサーバーに置いて、ネットワークを介してシステムを動かしてみます。

PCの処理速度に比べるとネットワークは低速になりますので「ネットワーク経由」で処理を行うというのは処理速度が遅くなる代表的な原因です。

今回テストに使用した「管理システム」の管理画面を開く処理は1秒くらいのレスポンスです。管理画面を開く際に、プロジェクト管理テーブルの40万件のデータを読込む処理を行っています。データを読むスピードはネットワーク経由であったとしても問題がないことがわかります。

ただし、画面のフィルター機能を利用しますと、処理結果がでるまで、時間にして32~33秒ほどかかることが分かりました。

しかし、一度フィルターにてデータを読込みと再度読み込むのはかなり早くなります。
これはキャッシュ機能といい、一度読み込んでいるデータは再度、ネットワーク上から取得するのではなく、PC上に読込んだデータから結果を返しているために高速処理が実現されていると考えられます。

内容分類項目でコンボボックスでプルダウンにてデータを選択できるようになっている箇所に関してですが、内容分類マスタの件数は約10万件ありますが、レスポンスは概ね1秒程度とかなり早くなっております。

また、内容分類コードを入力するとACCESS VBAのプログラムにて内容分類マスタを内容分類コードにて検索して、内容分類名を取得します。内容分類マスタの件数は約10万件ありますが、こちらのレスポンスも概ね1秒程度とかなり早くなっております。

以上より、ネットワーク経由でも40万件の表示スピードは問題ないですが、一部の処理は遅くなることが分かりました。

8)レスポンス対策を施したシステムのレスポンスについて

これまでのレスポンス調査は「管理システム」を使っていました。
https://www.ai-light.com/accessclub/

こちらのシステムは簡単な作りでしたが、ネットワーク経由でなければ40万件程度でも非常に速いスピードが確保できていました。ネットワーク経由の場合もレスポンスはほぼ問題はないですが、一部の処理でレスポンスが極端に遅くなることがありました。

次のシステムですが
「管理システムpro」は「管理システム」に比べるとレスポンス対策を施しているシステムです。
「管理システムpro」は以下より無料にてダウンロードできます。
https://www.ai-light.com/accessclub/pro/

ここでは、レスポンス対策を施した管理システム「管理システムpro」にこれまでのデータを処理させたところどのようになるかを見ていただきたく思います。

データは先ほどまでと同様の内容のものを使用します。「管理システムpro」のシステム構成としては、データファイルとシステムファイルを分離した形となっております。
データファイルはサーバーなどに設置してネットワーク経由でデータを確認できるようにします。システムファイルはPC内に置いています。
その他、処理を速くできるようにそもそもの中身の作り方も変えてあります。

テストを行ったところ「管理システムpro」では管理画面を開くのに4~5秒かかっています。
前の簡単な作りである「管理システム」の方が画面を開くこと自体は早くなっています。
これは、「管理システム」の方は画面を開くタイミングでは処理を何も行っていないのでレスポンスが早くなったのではないかと思います。その変わり、フィルター処理などを行いますと途端に処理が遅くなります。

一方、「管理システムpro」は画面を開くタイミングで処理を行っていることが若干遅くなった原因ではないかと思います。
その変わりフィルタを開く速度は1秒程度とかなり速くなっております。

「管理システムpro」は40万件をすべて表示するのではなくその内の1万件だけを明示的に表示するようにしています。さらに、その中で多人数でデータを閲覧する対策も行われています。
そのため、レスポンス対策を施していない「管理システム」は何かの拍子に極端に遅くなることがありますが、「管理システムpro」はそのようなことが起こりにくい仕組みになっております。

管理画面で「次」ボタンを押すと次の1万件のデータを取得するようにしております。
その1万件のデータを取得するプログラム処理に4~5秒程度の時間がかかっています。

明細管理を開くのに3~4秒くらいの時間がかかっています。
表示に4~5秒程度はかかっていますが、先ほどのシステムのように開くのに30秒程度かかるといったことはなくなりました。

明細管理にも次ボタンがあり次のデータを取得しますが、この処理も同様に3~4秒くらいの時間がかかっています。

管理画面にて「新規」ボタンを押すとテーブルにデータが追加され、画面上では一番下の行にプロジェクトNoを自動取得したデータが表示されます。
この処理はデータ件数が多くても1秒もかからない時間で処理ができます。

また、データを編集して「更新ボタン」を押すと更新される処理が動きますが、この処理も処理時間は1秒もかからない程度の時間で、40万件あっても更新処理の時間には問題がないことがわかります。

管理画面の検索ボタン処理にてプロジェクト管理番号の範囲でデータを検索処理しますが、こちらの処理も表示時間は2~3秒程度であまり遅い感じはしません。

以上より「管理システムpro」の方は表示処理が4~5秒と若干、時間がかかっていますが、フィルター処理、新規追加処理、更新処理など「管理システム」にあったような極端に遅い処理は存在せず、処理時間が安定していることがわかります。

今回テストはできていませんが、「管理システム」の方はレスポンス対策をしていないので、多人数で使うと遅くなる傾向になります。

「管理システムpro」の方も多人数で使うとそれなりに遅くなりますが、「管理システム」に比べると対策を施している分、遅くなる傾向がかなり緩和されます。

結論としてはレスポンス対策を施していると、データが40万件程度あっても、実用で十分使用可能ではないかと思います。
中小企業の場合は40万件のデータ処理ができればほとんど事足りるのではないかと思います。

また、それ以上の場合はSQLserverなどのデータベースを絡めて使用するとレスポンス的には全く問題がなく、したがってACCESSをベースとしたシステムは中小企業様のシステムとしては最適であると思われます。


弊社は、主に中小企業様向けの業務システム開発ホームページ制作パソコンサポートなど、ITに関する様々なサービスを格安で提供しております。
特に小規模な業務システム開発の分野では、主にAccess(アクセス)を利用した柔軟で効率的な開発を得意としており、関西でダントツの実績があります。

業務システム開発に関しては、以下のような内容で対応しております。
・顧客管理などの単機能なシステムは20万円~50万円が多い。
・受注から入金まで業務全体システムで100万円~350万円ぐらいが多い。
・Access(アクセス)-SQLserverで大規模システム開発は350万円~1500万円が多い。

詳細は、Access(アクセス)、Excel(エクセル)、WEBサイト製作による小規模システム開発のページをご参考ください。

大阪商工会議所からの推薦を受けて、中小企業庁運営の中小企業支援事業に専門家として登録されました。
通称ミラサポ。3回まで無料でのコンサルティングが可能です。ご興味がある方はご連絡ください。
https://www.mirasapo.jp/


(近畿大学にて非常勤講師も務めたバリバリの技術屋が経営する会社)

Access(アクセス)Excel(エクセル)SQL server バーコード Webシステムを使った業務システムのシステム開発の無料相談を受付中

株式会社 アイライト 担当:内藤 響(Naito Ko)
〒550-0005 大阪市西区西本町1丁目5番9号 日清ビル 5F
(四つ橋線 本町駅 24番出口すぐ)
まずは、メール・電話でご相談ください。
TEL : (06) 6599-8890 E-mail : info@ai-light.com
お電話が混んでいる場合が多いので、つながりにくい場合は
TEL : (06) 6535-5117までお願いします。


株式会社アイライト公式HP
https://www.ai-light.com/
(Access・Excelでシステム開発会社を探されている法人様はこちら)

無料から学べる講座
https://www.ai-light.com/itkeiei/

ITでお困りのことがございましたら、まずはご相談
https://www.ai-light.com/itconsulting.html

格安ホームページ制作所
https://www.ai-light.com/hp2

YouTubeチャンネル
https://www.youtube.com/user/ailightcom

ニコニコチャンネル
http://ch.nicovideo.jp/ai-light