エクセルでVBAを使えるようになると、大きな上達の壁を乗り越えた実感を持てますよね。
しかし私はさらにSQLをおすすめします。大量のデータであればVBAよりも断然向いていて、SQLを知ると集合指向言語を知ることができるからです。
そしてSQLの入門としてはAccessをお勧めします。エクセルの延長のような使い勝手が、SQLの入門にはちょうど良いと思うからです。またAccessではVBAマクロ、VBAではないマクロ、SQLと色々な方法でデータを扱えますが、その中ではSQLをお勧めします。大規模になってきた時、DBMSのスタンダードは何といってもSQLだからです。
SQLは集合指向
SQLは集合指向言語です。聞きなれない言葉かもしれません。一般的によく聞くプログラム言語のほとんどは手続型言語と言います。特徴的な違いはループの有無だと思います。
手続型言語は「データを1件取り出す ~ 処理 ~ データの最後までループ」という流れでプログラムを作るため、データ数が100倍、1000倍、と増加するにつれレスポンスが悪くなります。
その点SQLはレスポンスはそれほど変わりません。ループせずにデータを扱うからです。
DB関連で私が座右の書としているミックさんの書籍では、手続型言語を「ぐるぐる系」、集合指向言語を「ガツン系」と呼んでいました。SQLはガツンと一発で結果が出ます。
試してみる
ある製品があったとして、そのバリエーションが、縦5サイズ、横4サイズ、高さ3サイズ、色2種類、性能3段階だったとします。全貌は5×4×3×2×3で360バリエーション。種類が増えるにつれバリエーションは掛け算式に増えます。
この全体像データを作るとき、エクセルVBAが使える人ならループで掛け合わせるマクロを組むでしょう。そしてそれは何行くらいのコードになるでしょうか。
データ
サンプルに、テーブルを3つ用意します。
10個、20個くらいのデータなら何でもよいのですが、こんな例にしてみました。
これらを掛け合わせます。10件×10件×20件=2000件のデータになります。
・うま味のある おいしさの 鮭
・酸っぱい うまみの 鰻
・苦味のある 辛味の 唐揚げ
などなど。
VBAで掛け合わせをするなら、何行くらいのコードになるでしょうか。
SQLなら2行です。
SELECT *
FROM 1_形容, 2_味, 3_食べ物;
少ないコードで開発すれば、費用対効果は大きく、バグの入り込む余地はより少ない。しかもレスポンスは高速で、100×100×100=1,000,000行くらいになってもあまりレスポンスは変わりません。
また、AccessならOfficeとも親和性が高く、データをエクスポートもできます。
タイトル+データ2000件=2001 行のデータになっています。
まとめ
- ぐるぐるループをする言語と違い、データ数によるレスポンスへの影響が少ない
- 手続型言語に比べ少ない行数で同じことができる
つまり費用対効果は大きく、バグの入り込む余地は少なくできる
DBさえしっかりでき上っていれば、あとは条件指定画面と結果表示画面さえ作ったらちょっとしたシステムがほぼ出来上がり、なんてことも往々にしてあります。
ただしSQLの難点は取っつきにくさです。普通は手続型言語のプログラミングから入ることがほとんどでしょう。そこからの発想の転換がとても大変ですが転換点を実感した時、大きな山を越えたような感覚を感じることができることでしょう。ここが、私がSQLの学習を勧める最大の理由です。
最後まで読んでいただきありがとうございます。
コメント