##はじめに
- こちらの記事はアイカツ! Advent Calendar 2019の19日目の記事となります。SHINING LINE*を繋ぎます。よろしくお願いします。
- 前日の記事はkakakayaさんによる11日目の続きのです。
##自己紹介と学習している言語
白石莉子と申します。角川ドワンゴ学園N高等学校通学コース代々木キャンパスプログラミングクラスに所属している高校二年生です。高校内では女児向けアニメ同好会を創設し運営をしております。学習言語はPython3です。過去にはHTMLとCSSを触っていました。
##作成経緯
DCDを主にプレイしておりアイカツカードをマイキャラ柄でいつも印刷しています。その時既存柄を失念してしまうためpythonを使用しQRコードを読み取ることを考えました。日常生活の中ではPCを使用する機会が多くあまりスマートフォンを取り出す機会が少ないためPCで読み取れる方が都合がいいのです。そしてプロトタイプを作成したのですが読み取った情報を置いておけないかなと思いSlackに投稿することとしました。
##作成物
アイカツのカードを読み取りSlackに共有するプログラムです。
Githubにソースコードを公開しております。
使用ライブラリは以下のとおりです。
- Pyzbar
- Pillow
- OS
- SlackClient
- Requests
- json
- sys
- OpenCV
このプログラムにインストールが必要なライブラリは以下の通りとなります。
このプログラムをお手元の環境で動作させたいと言う方は事前にpipが必要ですので各自インストールをお願いします。
Python3.7のみ動作を確認しています。Python3.8での動作はまだ確認していません。
pip3 install slackclient
pip3 install pyzbar
pip3 install opencv-python
pip3 install pillow
動作フローは以下の通りとなります。
####QRをWebカメラから読み取る場合
-
TkinterでOpenCVを使用しWebカメラから映像を投影したウィンドウを展開する
-
QRコードをpyzbarでUTF-8にデコードし変数 pathに代入する
-
pathに代入されているURLをbitlyを使用して短縮する
-
短縮URLをcardに代入する
-
cardの短縮URLをslackに投稿する
####QRを事前にスキャンしておりファイルがある
-
そのファイルがあるパスを指定してpyzbarでQRを検出する
-
そのQRを読み取りUTF-8でデコードして変数 pathに代入する
-
pathの中にあるURLを短縮URLにする
-
短縮URLをcardに代入する
-
cardの短縮URLをslackに投稿する
##問題点と改善点
-
pyzbarでQRを読み取りslackに投稿すると末端の.がURLとして認識されない
- 改善としてbitlyを使用しslackに投稿する
-
ファジングに弱い
-
例外処理を何度も設定して対策しました。
-
同級生の方にお手伝いいただきました。この場を借りお礼申し上げます。
##感想
- openCVとpyzbarに初めて手を出しました。外部モジュールのドキュメントがたいてい英語だったので読むのに苦労しました。今後は英語力をつけてGo langに挑戦しようと思います。
- 一番苦労したのはプログラミング歴がまだ短い(1年未満)自分の実力不足でした。これからはPythonのスキルを向上させるように頑張りたいと思います。
- そもそもアドベントカレンダーを思いつきで2日前に登録しましたがよく書けたなと思います。
##今後の展開
- BS4を利用し投稿するURLからカード名を拾って同時に投稿する機能。
- 旧カツカードにも対応する。
- ここに書いたので本気でやろうと思います。見届けてもらえると嬉しいです。
##最後に
アドベントカレンダーは初めてだったのですがちゃんと書けてるかある意味心配です。
マサカリ等御座いましたらコメントを送信していただくかTwiiterまでご連絡をいただきますと助かります。
[2020/05/07追記]Twitter凍結したためご連絡はコメントでお願いします。またコメント欄に残したくない場合はメールアドレスをお教えしますのでコメントにてこの旨お伝えください。
最後まで見ていただき誠にありがとうございました。
これからも成長しますのでよろしくお願いします。
次の方はgecko655さんのSpotify上でのアイカツ!楽曲の人気順です。