Accessの概要

 ここでは、Accessというソフトの全体像と特徴等について説明していきます。

Accessとは


Access97(OS:WindowsXP/クラシック表示)

f:id:accs2014:20160910161525p:plain:w400

何をするソフトなのかしばらく理解できませんでした;-o-)

 Accessはマイクロソフト社が発売しているデータベースソフトです。Windows3.x時代から発売されているソフトですがWindows95用に発売されたAccess95の頃から広く普及し、その後も2,3年おきに大きなバージョンアップが重ねられています。データベースソフトとしてはもっとも広く普及しているものの1つです。
 もともとデータベースソフトは文字通りデータを管理するための、ある意味簡素なソフトで、データを活用するためのアプリとは切り離されていました。それ自体は自然なことなのですが、例えば入力効率を高めるためのフォームが欲しい場合にはプログラミングするなどして別途用意する必要があり、システムを構築するというのは全体としてかなり敷居が高いことでした。しかしAccessではデータの入力のためのフォーム、印刷のためのレポートなどの機能が一体で用意されており、システム構築を手軽に進めることができます。     


Access2003(OS:Windows7)

f:id:accs2014:20160910161526p:plain:w400

基本的な使い勝手はそのままに各種機能が強化されました
これぞ至高のAccess(管理者は2003信者です)

 また、AccessはExcelなどと同じく1台のパソコンで利用することを想定したソフトウェアです。OracleやSQL Serverといった高価なデータベースソフトはデータベース管理システムとしての機能を備えており、多数のクライアント(データの提供や操作を要求する他のパソコン等)と同時にデータのやりとりを行うデータベースサーバとして動作します。データベースサーバは多数のクライアントが要求するデータの追加や変更、削除などを矛盾なく処理するよう一元的に制御を行いますが、一方で各クライアントはサーバと同じデータベースソフトをインストールしている必要はありませんしサーバのデータを丸々読み込む必要もありません(上記のように、どうやってサーバとやりとりするかという準備は必要ですが)。あくまでサーバが持つデータに対して個々に必要な操作を要求することとなります。Accessの場合は基本的にこうしたデータベースサーバとしての機能はなく、複数のパソコンでデータを同時利用しようとすると(ExcelやWordの場合と同じく)、各パソコンにAccessをインストールしておいてネットワーク上にあるファイルを各パソコンが丸々読み込んで利用することとなります。それぞれが行うデータの変更を一元的に管理調整するものが存在しないため、整合を保ちながら処理することが困難となります。全くできないわけではないですが、基本的に多数のパソコンからの同時利用には向いていません。また、データベース管理システムには耐障害性(障害が発生した際の復旧機能など)、分散データベース(複数のコンピュータを用いて単一のデータベースを構築できる)などの機能が備わっているのが普通ですが、Accessにおいてはこうした機能は基本的に考慮されていません。


Accessの構成と全体像

 Accessはデータの更新や削除といったデータの管理だけでなく、データの内容を容易に把握し操作したり、見やすく表現するための機能を持っています。
 Accessを操作してユーザーが作成できるモノ(オブジェクト)のうち基本的なものとして、テーブル、クエリ、フォーム、レポートの4種があります。Excelだとデータの入力も加工も配布資料の作成も、何をするにもシート上で操作を行うことになっています。また、Wordはシートという考え方すらなく(セクション区切りは可能ですが)1つのファイルに複数の独立した文書を収めることができません。Accessの場合は、データをどうするのかという目的に応じて、作成・操作するべきモノ(オブジェクト)の役割分担が明確にされているのです。
  • テーブル…数字や文字列などのデータを表形式で記録するものです。基本的に、データを記録することができるものはテーブルだけです。テーブルの見た目はExcelのシートとそんなに違いませんが「生のデータを記録すること」に特化していますので、見栄えを良くしたり関数などを利用してデータを加工するといった機能は非常に限られています。
  • クエリ…テーブルに記録されたデータをもとに、関数などを使って集計し、新たな表を作成するものです。複数のテーブルを組み合わせた複雑なデータの抽出も可能です。また、クエリをもとに別のクエリを作成することも可能です。これも作成された表の見た目はExcelのシートとそんなに変わりません。
  • フォーム…ボタンやテキストボックスなどを配置し、直感的に様々な操作ができるようするものです。テーブルと結び付けて、そのテーブルのデータを読み込み編集することもできます(一部クエリも可)。この場合、テーブルを直接操作するのと違ってレイアウトを自由に決められるため、紙の帳票を見た目どおりに入力させるような設計も可能です。また、合計値を表示させたり、関連する複数のテーブルの情報を表示させて操作するといったことも可能ですので、テーブルを直接操作するよりデータの入力がしやすく、記録されているデータの確認にも大変便利です。
  • レポート…テーブルやクエリの内容を読み込み、印刷等に適した体裁を整え出力するものです。Wordの差込み印刷をイメージするとわかりやすいですが、差込み印刷と比べて複雑で精密な出力が可能です。あくまで印刷等のための存在であり、レポートを通じてテーブルのデータを編集するといったことはできません。

Accessのメリットと魅力

 Accessは設定すべき事項が多く、テーブルの入力をはじめとして何かと制約が多いため、とっつきが悪い印象をもたれるかもしれません。しかし、それらの意味が理解できてくればこれほど奥が深くて面白いソフトもないのではないかと思います。
 その機能も多岐にわたりますので挙げ尽くすことはできませんが、ただちに思いつくメリットと魅力を挙げてみます。
  • データ管理のしやすさと安心感…データ型の設定だけでも容易に、そして強力にデータを守ることができます。さらに正規化を施しリレーションシップ(参照整合性)を設定すれば基本的にデータの不整合は生じません。絶対に間違えず狂わないデータがどれほど素晴らしいことか;ToT)
  • モデリングの概念が身につく…データを収集し適切に整理することと、業務を理解し効率化することを、一体のこととして実現できるようになります。
  • 集計や表の結合が簡単便利…クエリによるグループ化集計や結合の操作は劇的に簡単かつ便利です。他のソフトではやる気がしません。
  • SQL…これは苦手な人も多いですが、頭の体操としての面白さがありますし、実用的な価値も高いです。
  • フォームが便利…連結フォーム(テーブルやクエリと直接結びつき、1つ1つのレコードに移動し編集することが可能なフォーム)の設定の容易さとリアルタイムな操作感にはゲーム的な面白さがあります。また、複雑な帳票様式をそのまま入力フォームとして再現することもできますので、事務のお姉さん達にとても喜ばれます。
  • レポートが強力…データの埋め込みやグループ化、並べ替えや改ページなど、精密にコントロールされた何百ページもの印刷出力を容易に作成することができます。複数の繰り返し構造を持つ文書でも容易に作成できますので、簡単に言って作れない文書はありません(たぶん)。

Accessに適した業務(処理内容)

 Accessには上記のような多くのメリットがあるものの、当然ながら向き不向きというのがあります。ここでは(ありがちですが)同じOfficeファミリーの一つであるExcelと比較してその特徴と適した業務について述べることとします。
 Excelのシートではデータの入力、加工、帳票類や報告書の作成といったことをすべてシート上で行うことができます。また、セルを単なるマス目とみなしてお絵かきをすることもできますし、セルオートマトンのシミュレートをすることもできます。シートを構成するセルの汎用性が高いため極めて柔軟な利用が可能となっています。一方、無計画にシステムの作成を進めると生のデータと集計したデータ、出力用の帳票類が混在しやすいため、デザイン変更時に判断を誤って生のデータを破壊してしまうということも起こりかねません。シートごとの役割分担を決めることにより問題は軽減されますが、作成者以外の者にとって難解なものになりやすいです。また、他のシートやセルの値の参照は常に「セル位置(範囲)を指定する」ということにより行われます。このセル位置の指定による参照というのがデータの柔軟な利用を可能にしているわけですが、扱うデータが複雑なものになるほど、そして出力の種類が増えるほど、セルどうしの参照関係を把握し管理することが加速度的に困難になり、作成者の大きな負担となります。合計が合わないと思ったらSum関数で指定しているセルの範囲が1行足りなかったとか、生データの記録されている行を削除したら思わぬところで#REF!が発生してさらにはブック全体がエラーだらけになった、というのは誰でも経験があるものと思います。
 Accessでは上記のようにオブジェクトごとの役割分担が明確です。テーブルは生のデータ、クエリは加工したデータ、レポートは印刷用出力、といった分担がはっきりしていることから、基本的にクエリやレポートをどのように変更し破棄してもテーブルのデータは影響を受けませんし、テーブルをどのように変更してもレポートのデザインは影響を受けません。変更による副作用が少なく抑えられ、デザインと入力の分業を行うのにも適しています。また、扱うデータが複雑になっても整合を保っていくための強力な仕組みがあります。そして、(主にクエリよる)データの加工も論理的であり、例えばデータの抽出を行う際にも「社員のうち給料が40万円以上の者の人数を数える」といったように論理的に指定する仕組みであることから、参照するセル範囲の調整に悩まされることもなく、参照関係の管理に関する負担も小さく抑えられます。一方で、必要な出力を得るためのオブジェクトの作成や設定といった段取りが長くなりやすいです。また、フォーム、レポートといったオブジェクトは一貫した論理的な構造を基本としているため「この社員のデータに関してだけ顔写真を表示しよう」といったその場限りの処理がやりにくいです。さらに、計算をする際に「ここからここまでのセルを合計する」といった場当たり的な指定が出来ないため単純な計算をするのも面倒になりやすいです。「とにかくここにある5個の数字の合計がわかればよい」ということが明らかなときも、その5レコードを抽出できるような条件を指定できないと計算ができません。電卓をたたいたほうが早いということもたびたび起こり得ます。
 全体的な特徴としてまとめると、Excelはこまごまとした便利さはありますが、作成しようとするシステムが複雑なものとなったときにも作成者の目が端々まで(セル単位で)行き届いていなければならず、負担の増加につがなりやすいといえます。一方、Accessはちょっとした計算をするにも手間がかかり小回りが利かないのですが、データの整合性の確保、煩雑なセル参照からの解放、分担の明確な各種オブジェクトの存在により、システムの複雑化にも対応しやすいといえます。
 なお、データの行数(レコード数)が少ない場合はExcel、多い場合はAccessを選ぶのが良いという意見もたまに見られます。上記の認識を踏まえた方便ともいえますが、決して正確ではありません。Excel2013では100万行以上のデータが利用可能となっていますが、たとえこれが無制限になっても上記の弱点は解消しませんし、Accessのテーブルの行数が数百とか数千程度であってもテーブル間の関係性が複雑であったり多様な帳票類の出力が求められるようであれば長所を発揮できると考えられます。逆にデータが何万行もあったとしても、そこからちょっとしたクロス集計表とグラフを作ってコメントを加え1枚の用紙に印刷する、といった作業であればExcelの方が早くて便利です。