# "データベース"を使わない世界
データベースと聞いて何を思い浮かべるでしょうか．
大抵の人は，データベースといえば「大きなデータの集まり」を思い浮かべるのではないでしょうか．
このイメージはあながち間違いではないのですが，本講義のようにわざわざ科目を立ててまで，データベースについて学ぶことはあるのでしょうか？

結論としては，大規模データに携わるITエンジニアやデータ分析者を目指す人であれば「大いにあり」です．
1960年代から今日に至るまで，データベース技術は盛んに研究開発されてきました．
大きなデータの集まりを扱おうとすると，対処しなければならない問題がたくさんあります．

本講義では10数回にわたってデータベース技術について解説しますが，この第1講ではデータベースのことはいったん横に置いておきます．
今回は（割と）大きなデータを扱うときに遭遇する問題について考えてみましょう．


## ケース1: 販売履歴の記録をはじめる
以下は，山畑さんという架空の人物のお話です．

<blockquote>
山畑さんは家族で小さな小売店を営んでいます．
個人経営ながら山畑さんのお店は繁盛しています．
とはいえ，街には大手チェーン小売店が進出してきており，このまま順調に経営を続けられるか，不安が募っています．
何か手を打たなければなりません．

2020年の4月，山畑さんは念願のショッピングサイトを立ち上げました．
言うまでもありません．
ショッピングサイトを立ち上げたのは，オンラインの場にも顧客獲得の機会を求めるためです．
サイトは順調に立ち上がり，注文もポツポツ入ってきています．

ところで，最近「データサイエンス」なるものが世間の注目を集めているようです．
データを活かせばビジネスチャンスが広がるとのことです．
山畑さんは，Excelシートに記録を取り始めた販売履歴を分析してみようと思い立ちました．

山畑さんが使っているExcelシートには，「いつ，誰が，何を，いくらで購入したか」の情報が記録されています．
ショッピングサイトは立ち上がったばかりであり，Excelシートには200行しかデータが入っていません．
しかし，今後データが貯まっていけば，売り上げを増やすための課題が見えるかもしれません．
いずれがっつりとデータ分析をやるためにも，山畑さんは手持ちのデータを用いて分析の練習に取り組むことにしました．
</blockquote>


### 演習

#### データの確認
[コチラ](data/purchase_small.xlsx)をクリックして，上のケース1で山畑さんがデータ分析の練習に使おうとしているExcelファイル（`purchase_small.xlsx`）をダウンロードし，中身を確認しなさい．

なお，Excelシートの各列の意味は以下の通り：
- purchased_at: 購買（販売）日時
- customer: 商品を購入した人物の氏名
- gender: 商品を購入した人物の性別
- product: 購入された商品名
- sale: 販売価格


#### あの人は何回買い物をしている？
「渡辺 真綾」という人物が何回買い物をしていたかを数えなさい．


#### 商品Xを購入しているのは誰？
Excelのオートフィルタ機能を使って，「ビタミン補助剤」を購入している人をリストアップしなさい．
オートフィルタの使い方については，[コチラ](https://support.microsoft.com/ja-jp/office/%E7%AF%84%E5%9B%B2%E3%81%BE%E3%81%9F%E3%81%AF%E8%A1%A8%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%83%BC%E5%87%A6%E7%90%86%E3%81%99%E3%82%8B-01832226-31b5-4568-8806-38c37dcc180e)のリンク先を参照すること．


#### 総売上金額
Excel関数の`SUM`を用いて，現時点での総売上金額を計算しなさい．
`SUM`関数の使い方については，[コチラ](https://support.microsoft.com/ja-jp/office/sum-%E9%96%A2%E6%95%B0-043e1c7d-7726-4e80-8f32-07b23e057f89)のリンク先を参照すること．


#### 最も売れた商品は？
Excelの[ピボットテーブル](https://ja.wikipedia.org/wiki/ピボットテーブル)機能を使って，集計期間中に
- 最も購買回数が多かった商品
- 最も売上金額の合計が大きかった商品

をそれぞれ求めなさい．
ピボットテーブル機能の使い方については，[コチラ](https://support.microsoft.com/ja-jp/office/ピボットテーブルを作成してワークシート-データを分析する-a9a84538-bfe9-40a9-a8e9-f99134456576)のリンク先を参照すること．



## ケース2: 認知度向上につき，得られるデータも膨大に!?
現時点では手持ちのデータは少ないものの，販売履歴データの分析に将来性を感じた山畑さん．
販売履歴データを有効活用できるよう，ショッピングサイト運営により力を入れる決意を固めたのでした．

以下は，山畑さんのその後の話（架空の話）です．

<blockquote>
ショッピングサイト立ち上げ以降，順調に利用者数も増えていきました．
やはりメディアに取り上げられたのが大きかったのでしょう．
あのタイミングでサイトの認知度が一気に高まり，サイトの利用者数や利用頻度も加速度的に増えていきました．
それに伴い，サイト運営に関わるスタッフも増員しました．

販売履歴の管理は，当初は山畑さんが一人で担当していましたが，さすがに一人では対応しきれなくなりました．
そこで，ある時点から数名体制で販売履歴の記録を行うことになりました．
これまで販売履歴の管理に使ってきたExcelシートをクラウドストレージに置き，記録担当スタッフのPC間で同期を取る仕組みを導入しました．
同じExcelファイルの上で，スタッフ全員で販売履歴を記録できるようにしたのです．

2年後．サイト事業は軌道に乗りました．
十分な量の販売履歴データが蓄積されたと判断した山畑さんは，いよいよ大規模な販売履歴データの分析に取りかかることを決意しました．
立ち上げ当初は200〜300行しかなかったExcelシートでしたが，シートを開きその行数を数えてみると…
なんとその数90万行以上！
データの量に小躍りした山畑さんは，Excelシートの扱いに詳しいスタッフと共に，意気揚々とデータ分析に取りかかったのでした．
</blockquote>


### 演習2
[コチラ](data/purchase_large.xlsx)をクリックして，上のケース2で山畑さんが分析しようとしているExcelファイル`purchase_large.xlsx`をダウンロードしなさい．
またダウンロードしたファイルを用いて下記課題（演習1と同じ）に取り組み，データ分析上の課題（困ったこと）を議論しなさい．
以下，課題1の内容を再掲します．
- 「岡田 真綾」という人物が何回買い物をしていたかを数えよ
- 「ビタミン補助剤」を購入している人をリストアップせよ
- 総売上金額を計算せよ
- 集計期間中に「最も購買回数が多かった商品」「最も売上金額の合計が大きかった商品」を求めよ

もし，`purchase_large.xlsx`ファイルがうまく開けない場合は，[コチラ](data/purchase_medium.xlsx)からダウンロードできる`purchase_medium.xlsx`を用いなさい．
なお，ダウンロードできるExcelシートの構造はケース1で用いた`purchase_small.xlsx`と同じです．


---


## おわりに
ケース1および2で用いたExcelファイルは，販売履歴データの集まりでした．
一般的な認識からすると，このようなデータの集まりは「データベース」ということになるでしょう．

ところで，上記演習，とりわけケース2に取り組んでみてイライラしなかったでしょうか？
数万件，数十万件ある表データをExcelで扱おうとすると，さまざまな不都合が生じます．
これは，本来Excelは個人用の表計算アプリケーションであって，大規模データの管理や処理を前提として設計されていないためです．

![](fig/excel-disaster.jpg)

では，大規模なデータを管理・処理するためにはどうすればよいでしょうか？
そのための技術こそが「データベース」です．
以降，本講義では**大規模データを効率よく管理・処理するための「データベース」技術** について学習します．

