輸入ビジネスでは商品の情報なんかをエクセルで管理したりしますよね。
データが増えていくとエクセルで管理しづらくなっていくため、Accessを使おうかと悩む人がいるようです。
MicrosoftのOfficeを購入すると、グレードにもよりますが、『Access』なんてやつがいます。
一度でも起動したことがある人ならわかると思いますが、Accessはエクセルと見た目がよく似ています。
いったいどういう違いがあるのだろう?となんとなく疑問に思った方もいるのではないでしょうか。
作業効率が上がるならAccess使ってみようかな、と思ったあなた。ちょっとだけ待ってください。
実は多くの人がAccessのことを正しく理解していなくて、使う必要なんていうのはほとんどないんです。
エクセルとAccessの違い
エクセルは『表計算』でAccessは『データベース』
まずは下記の画像をご覧ください。
お気づきだろうか?画面の赤枠に注目してほしい…。上がエクセルで下がAccessです。
エクセルは1行目に項目を書きますが、Accessは項目が1行目にない、1行目からデータが入るようになっています。
『え?たったそれだけの違い?』と思うでしょうけれども、これが一番重要なエクセルとAccessの違いなんです。
エクセルは行・列、自由にどこにでも項目を書くことができるドキュメントであり、Accessは1行目(ホントは1行目じゃないけど)はかならず項目を設定する、表・データベースなんです。
ちなみにわたしが作るエクセルファイルはデータベースの概念を意識して作っています。だから、必ず1行目が項目になっているんです。
ありがちなエクセルファイルは、1行目~10行目あたりになんらかの設定項目があったりしますが、わたし的には、データを扱うファイルにおいてそれは邪道であり、設定項目は別シートに置く。これが基本。
データベースってなに?
と思ったでしょうか?一応正解です。しかし、実は厳密に『データを管理する』の意味を理解していないのです。
おそらく、データベースと聞いて想像することは、データを溜め込むもの、と想像するでしょう。
それはそれで正しいのですが、Accessというデータベースは行・列で値(数値・文字列)を管理したものを指します。ファイルとかはまた別物。
データベースは、
- データを完璧に守る
- 重複を許さない。絶対。
- 膨大なデータに高速アクセス
というものです。
Accessってどんなときに使うの?
ここが重要なポイントなのですが…。
ぶっちゃけ、Accessはプログラムで操作する以外に使うことはありません。
たまによく見かける質問なのですが、
もうこの時点で勉強できてない、理解できていないです。無駄な時間お疲れ様でした。
迷っている時点でAccessを理解していない、エクセルの延長で考えている時点でエクセル使ったほうが良いです。
Accessの使用はプログラムありきです。少なくとも、わたしはAccessファイルを直に開いている人を見たことがありません。
お店をやっている人なんかだと、注文番号に紐付けて商品情報を格納したりするでしょうけれども、輸入ビジネスではAmazonやヤフーショップなど、なんらかのPlatformを利用するのが基本ですので、まぁそんなことはしないでしょう。
Accessを使えば効率が上がる、という人がいますが、使い慣れていない分効率落ちるかも。
データベースは基本的に人が触るものではなく、プログラムが触るもの
データベース製品には、
- Access
- MySQL
- Oracle
- SQL Server
といった製品があります。Access以外はCUI、Command User Interface、つまりDOS画面で操作するものです。
いちいち人の手でコマンド(SQLクエリ)を打ってデータベースを扱うなんてめんどくさすぎるし、むずかしすぎるのでやってられないんです。
ゆえに、プログラムにある程度定型的なコマンドを持たせておいて、プログラムから扱うのが基本。Accessという画面上から操作する製品はある意味、中途半端なものであり、わたしはあまり使いたくないです。
間違いだらけのアクセスの使い方
Accessをエクセルのように使っている
Accessを得意げに使っている人で、実はAccessをエクセルのように使ってしまっている人がいます。
わたしの嫁の元職場でも、
とかよくわからないことを言います。そもそも比較できるものではないのに…。
Accessはデータベースであり、エクセルは表計算である、と説明しましたが、Accessを使っている人はなぜかエクセルのように使っている人が多いです。
Accessファイルを直接開いてエクセルファイルのように扱うならエクセル使ったほうがマシです。
正規化できていない
正規化とは、たとえば重複したデータから、重複を除去する作業です。他にもあるのですがむずかしいので省略します。
データベースは例外なく正規化をしなければならないのです。
正規化はプロのDB屋(ドラゴンボールじゃないよ!)じゃないとできないと思います。データベース設計というやつです。正規化できていないデータベースにデータベースの価値はないです。
たとえば、1つのASINに対して商品名や重量なんかは1対1でひもづけることができますよね。
でもランキング変動はどうでしょう?1つのASINに対して、日付と価格、ランキングが複数ひもづくことになります。
こういう場合に、ASINを主キーにして、商品情報表と価格・ランキング変動表、2つを作るんです。これが第一正規化ってやつですね。(ちなみに第三正規化まであります)
正規化できないのにデータベース(Access)を使うというのは、まったく意味のない行動です。
データベースが必要な人
ここまでの話で何が言いたいかというと、ほとんどの人がデータベースをわかっているようで全くわかっていなくて、使う必要もない人が使うことを検討していたりする、ということです。
一般の人に正しいデータベース設計なんてできるはずがないので、ヘタに手を出さないほうがいいです。どうしても必要なら特別な訓練を積んだプロにお願いしましょう。
そもそもデータベースが必要な人というのは、
- データ量が超膨大すぎてエクセルが重くなりすぎて使い物にならない。
- データ量が多すぎて1個編集すると吊られて編集しなきゃならないところがあまりにも多すぎる
- 複数人で1つのファイルをアクセスしたいんだけど、どこのどいつかが勝手にファイル壊しやがる
- 複数人で1つのファイルを使っているんだけど保存するタイミングがバラバラで不整合が起きまくる
データ量が多くてエクセルが重い、というのであれば、できればまずはデータベースを使うよりファイルを分割したほうが良いです。まぁそれだけデータベースの敷居は高いと思ってください。
エクセルだとデータ全体を読まないと起動・表示できませんが、データベースであればプログラムが必要箇所だけ拾ってきてくれるので早いです。でも、データベースをAccessで開こうものならやっぱりデータをたくさん読み込みますので重いです。この時点でAccessの価値が感じられない。
データベースの強みというのは、いつ、だれが、どこで編集したとしても、100%不整合が起こらないように作られているところなんです。
つまり、複数人で扱うのにすごく優れている、向いているというわけなのですが、Accessってスタンドアロン、1台のPC上で扱うのですごく…中途半端なんですよねぇ。
わたしもAccess…というか、Accessから作られるデータベース、mdbファイルを扱うこともあります。ですが、mdbファイルをwebサーバに登録して、Microsoft謹製のプログラミング言語(ASP)でwebアプリを作る時ぐらいなものです。WindowsサーバでSQL Serverを使わない場合に使うもの、的な。
売上管理とか、商品を売った数だけ増えてしまいますので、場合によってはデータベースが欲しくなるかもしれません。
ですが、やっぱりデータベースを扱うとなると、どうしてもソフトウェア開発がどこかで必要になってきますので、それならば既成品を買ってしまったほうが圧倒的に低コストで高パフォーマンスです。
まとめ
- 一般の人はAccessなんて使う必要はない
- Accessはプログラムで操作するのが基本
- Access使えば効率あがる、は正論ぽいけどあまり活躍する人はいないかも。
- そもそもAccessはデータベースの中では半端者な気がする。
- 扱い方を覚えたり、開発依頼するぐらいなら、扱い慣れたエクセルをギリギリまで使ったほうがよさげ
もし、アクセス使ってみようかな、なんて人がいれば、それはちょっとやめておいたほう良いかもしれませんね。
エクセルとAccess、どっちを使えばいいですか?という問いに関しては、そのように悩む時点でAccessを正しく理解していないので、エクセルを使ったほうがいい、とわたしは答えます。
すごく大切で根本的なお話ですが、
- コンピュータはあなたの悩みを解決してくれるもの。
- 『どっちを使えばいいのか?』ではなくて、『何をしたいか?でどちらを使うかが決まる』ということ。
- あなたのすべきことは、『何がしたいのか?』を明確にすること。
- 実現方法を考えるのはエンジニアの仕事。
わたしはAccessというものを画面上から操作したことがありません。必要な場面がなかったので。
ですが、Accessはこういうときに使うと最適だ、というのがあればそれはぜひとも知りたいものです。