PythonでQRコードが自動発行される顧客データベースを作ってみる


##クリーニング屋さんへ行った


先日、近所のクリーニング屋さんに嫁さんの指示のもと服を出しに行きました。



お正月明けの土曜日。

おそらく一番お客さんが来るであろう日。

なのにそこには、パートのおばちゃんが一名。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240982/7a9e06f9-637a-5fe0-9a95-dcff8e329e6d.png)


お客さんはじゃんじゃんやってくる。

まあ、そうだよね。


そして、お客さんの対応をする後ろでりーんりーん。。ってめちゃくちゃ電話鳴っとるやないかーい。

でも忙しすぎて電話取れない。。



##人間は誰しもはマルチタスクが苦手

人間、誰しもあれもこれもいっしょにやることはできません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240982/08b5a4e4-8e71-f95b-b264-eba5a5741787.png)

~~そもそもこれって店のオーナーや、店長さんのシフトミスでは？？~~

こんな状況をシステム的な改善で対応できないか考えてみました。

前回の記事でQRコードがPythonで簡単に発行できるよ。という記事を書いたので、それの応用編。

参照：[PythonでQRコード作成。定期券発行の際に毎回同じこと書いて、並びたくない。。](https://qiita.com/youichiokuda/items/eceb9e1a7c55e0ebbe5f)

##やりたいこと





・クリーニングができた段階でオプションで電話もしくはメール、SMSするサービスをつける。
（全員には無理だろう~~うざい~~から、あくまでオプション）服にQRコードをつけてスマホでかざすとメール、SMS,電話でお客さんにコンタクトできるようにする。

・お客さんの情報を登録した時点で、QRコードが自動発行されるようにする。シンプルな管理を。

![スクリーンショット 2020-01-12 15.12.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240982/1771073d-5acf-01d5-2dfc-1cdf4ab0863c.png)

##実行環境

Python 3.7.6
macOS Mojave 10.14.6




##ライブラリをインポート

最初に必要なライブラリをインポート。(入っていない場合はpipでインストール）

・QRコード作成のためのqrcode
・顧客登録時の日時を入れるためにdatetime
・CSVによるデータベース作成のためのcsv


```python:customerdata.py
import qrcode
import datetime
import csv
```

##顧客登録時に必要な情報を入れる

顧客データベースに必要な情報を聞くように設定。
メールやSMS、電話ができるように必要情報を聞きます。
*登録時刻がデータベースに登録されるように設定。

```python:customerdata.py
name=input('氏名は?')
address=input('住所は？')
age=input('年齢は？')
tel=input('電話番号は？')
mail=input('メールは?')

#日時、時刻がデータベースに登録されるよう設定
dt_now=datetime.datetime.now()
dt=dt_now.strftime('%Y年%m月%d日 %H時%M分')

```



##QRコード作成

QRコードは氏名、電話番号、メール、住所、登録日時が出てくるように設定。
自動発行されるimgファイルの名称はあとからテキスト検索（氏名、電話番号で）できるように本人の氏名と電話番号で出力します。

```python:customerdata.py
img=qrcode.make( ' 電話番号: ' + str(tel) +'メール: ' +str(mail)+'氏名：'+str(name)  + '住所:'+ str(address)+'作成日時:'+ str(dt))
img.save(str(name)+str(tel))

#QRコードの名称はあとからテキスト検索できるように本人の氏名と電話番号で登録
```

##データベース登録

CSVに情報を登録。（customer_data.csv）

```python:customerdata.py

with open('customer_data.csv','a') as f:
    writer = csv.writer(f)
    #次の行は初回登録のみ。２回目以降の登録時はコメントアウト！！
    writer.writerow(['氏名','年齢','住所','電話番号','メール','登録日'])
    writer.writerow([str(name),str(age),str(address),str(tel),str(mail),str(dt)])
    f.close()
  
```



コマンドラインで実行します。

```console:commandline
(kyoto) MacBook-Air% python3 customerdata.py
氏名は?田中たろう
住所は？京都市A 町B通り
年齢は？40
電話番号は？090-000-0000
メールは?tanaka@gmail.com
```

データベースにはこんな感じで登録。



![スクリーンショット 2020-01-12 11.48.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240982/541e375e-dca2-7c2e-1594-db9d3bb10cd3.png)

同時にQRコードが自動発行されます。
![スクリーンショット 2020-01-12 11.50.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240982/9f1a1bdb-cf70-7649-49ed-fa7451c7c6f6.png)



iPhoneにかざしてQRコードを読み込むと情報がでてきます。


<img width="375" alt="IMG_2287.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240982/a330838d-3cf1-8562-368b-4cc1d2cf5c77.png">


##ソースコード



```python:customerdata.py


import qrcode
import datetime
import csv

name=input('氏名は?')
address=input('住所は？')
age=input('年齢は？')
tel=input('電話番号は？')
mail=input('メールは?')


dt_now=datetime.datetime.now()
dt=dt_now.strftime('%Y年%m月%d日 %H時%M分')

img=qrcode.make( ' 電話番号: ' + str(tel) +'メール: ' +str(mail)+'氏名：'+str(name)  + '住所:'+ str(address)+'作成日時:'+ str(dt))
img.save(str(name)+str(tel))


with open('customer_data.csv','a') as f:
    writer = csv.writer(f)
    #次の行は初回登録のみ。２回目以降の登録時はコメントアウト！！
    writer.writerow(['氏名','年齢','住所','電話番号','メール','登録日'])
    writer.writerow([str(name),str(age),str(address),str(tel),str(mail),str(dt)])
    f.close()
```

##いろいろ応用できそう

データベースの作成とQRコードの自動発行はほかにも色々応用できそう。
出前とか、痴呆老人の徘徊防止とか、アレルギーや薬剤の禁忌情報とか。

こんな感じで使えそうという拡張性と発展性のあるコメントをいただけると嬉しいです。

![スクリーンショット 2020-01-12 15.12.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240982/1771073d-5acf-01d5-2dfc-1cdf4ab0863c.png)

2021年1月3日追記：Git Hubにコードを格納しました。

https://github.com/youichiokuda/cutomerdata