shizuoka.py #6 lt 確定申告をpythonで乗り切る
TRANSCRIPT
![Page 1: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/1.jpg)
shizuoka.py #6 and shizudev LT確定申告をpythonで乗り切る
twitter@hrs_sano645
![Page 2: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/2.jpg)
about me● Twitter@hrs_sano645● 静岡県富士市で自動車金型設計業のIT便利屋です
● 兼業ですが米農家です
● 東海大学 石井研究室に週一でお手伝いしてます
● 最近やってたこと○ fuji.5374.jp○ google-photos-enbedtab-generator○ pythonあんまり書かずに請求書ばかり作ってました
![Page 3: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/3.jpg)
確定申告終わりましたか!やってみた人いますか?
![Page 4: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/4.jpg)
まだ終わってない。。。今週来週頑張ります。。
![Page 5: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/5.jpg)
(せっかく会計ソフトも入れたのになぜ、、)
![Page 6: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/6.jpg)
思えば昨年始め
![Page 7: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/7.jpg)
確定申告は毎年大変(帳簿とか請求書とか集めること)
![Page 8: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/8.jpg)
最近流行りのクラウド会計ソフトを入れてみよう!!
![Page 9: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/9.jpg)
どんなものがあるか
● freee● やよい会計クラウド
● MFクラウド会計・確定申告(MoneyFowerd)
![Page 10: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/10.jpg)
とりあえずMoneyFowerd使ってたのでMFクラウド会計使って見た
(ステマじゃないよ!)
![Page 11: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/11.jpg)
日々の業務に取り入れる...
インターネットバンキング経由で帳簿がまあまあ自動に作れるのありがたいです。
![Page 12: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/12.jpg)
あるときに「MFクラウド請求書」なるサービスに気がつく
![Page 13: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/13.jpg)
こういうサービス
![Page 14: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/14.jpg)
MFクラウド請求書の特徴● MFクラウド会計と連携。帳簿に自動的に計上
● GUI/ブラウザベース
● PDFが作れる
![Page 15: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/15.jpg)
そうなんだ!すごーい!
![Page 16: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/16.jpg)
日常業務に取り入れる→快適!
![Page 17: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/17.jpg)
月日が流れて年末頃...
![Page 18: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/18.jpg)
日々忙しく過ごしてると
![Page 19: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/19.jpg)
請求書出し忘れて慌てる自体多数
![Page 20: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/20.jpg)
MFクラウド請求書の特徴● MFクラウド会計と連携。帳簿に自動的に計上
● GUI/ブラウザベース
● PDFが作れる
割りと入力する場所が多いマウス操作が多めで1枚作るのにそれなりに時間がかかってる
![Page 21: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/21.jpg)
早く作りたいのに作れないGUI ここ一番に来て 面倒に...
![Page 22: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/22.jpg)
とある日、ヘルプ探索してると気がつく
![Page 23: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/23.jpg)
![Page 24: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/24.jpg)
API???!!!REST APIがあるらしい!
![Page 25: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/25.jpg)
● 請求書作成ソフト「MFクラウド請求書」
○ oauth2認証を使う
○ 請求書の作成
○ PDFがダウンロードできる
請求書作成がAPI経由でできる!
MFクラウド請求書 APIの概要
![Page 26: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/26.jpg)
どうやってやる?
![Page 27: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/27.jpg)
もちろんPython!
![Page 28: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/28.jpg)
考えなければいけないこと
● oauth2の認証どうするか
● 実際にPDFのダウンロードをどうするか
![Page 29: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/29.jpg)
oauth2どうする?
oauth2client これはgoogle向けっぽくて使い勝手が謎
oauth2(pipのパッケージ名 )
汎用紛らわしいけどoauth1向けのパッケージ
python-oauth2(pipのパッケージ名 )
汎用らしい。WEBサービスの組み込みに特
化してるっぽい
oauthlib これが一般的なoauthライブラリかも , v1もv2も対応
requests-oauthlib requests向けのoauthlibサポートパッケージ
![Page 30: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/30.jpg)
oauth2どうする?
oauth2client これはgoogle向けっぽくて使い勝手が謎
oauth2(pipのパッケージ名 )
汎用紛らわしいけどoauth1向けのパッケージ
python-oauth2(pipのパッケージ名 )
汎用らしい。WEBサービスの組み込みに特
化してるっぽい
oauthlib これが一般的なoauthライブラリかも , v1もv2も対応
requests-oauthlib requests向けのoauthlibサポートパッケージ
![Page 31: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/31.jpg)
requests-oauthlib
![Page 32: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/32.jpg)
いい響きですね :D
![Page 33: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/33.jpg)
pip install書かなくてもいいレベルですが
pip install requests-oauthlib
(自動的にrequests, oauthlibも入ります)
![Page 34: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/34.jpg)
oauth2認証MFクラウド請求書API側で
アプリのクライアントトークンを作る
● scope(ほしい権限, write>read)
● redirect url(認証後のcodeを飛ばすリダイレ
クト先)
↓
● Client ID● Client Secret
https://example.com
![Page 35: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/35.jpg)
oauth2認証githubを扱うチュートリアルを参考に
from requests_oauthlib import OAuth2Session
# 取得したClient ID, Client Secret を入力
client_id = "***"client_secret = "***"
# MFクラウド請求書のOAuthで使うエンドポイントURLauthorization_base_url = 'https://invoice.moneyforward.com/oauth/authorize'
token_url = 'https://invoice.moneyforward.com/oauth/token'
![Page 36: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/36.jpg)
oauth2の認証#セッション作成
mfcloud_invoice = OAuth2Session(client_id, scope="write",redirect_uri="https://example.com", state=None)
#認証
authorization_url, state = mfcloud_invoice.authorization_url(authorization_base_url)
#(次のページで認証した後のコールバックURLを貼り付ける)print('Please go here and authorize,', authorization_url)redirect_response = input('Paste the full redirect URL here:')
![Page 37: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/37.jpg)
認証用URLからリダイレクトURLを作る
![Page 38: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/38.jpg)
PDFをダウンロードする
requestsでそのままダウンロード。保存は普通にファイルとして
# 請求書のIDをDLinvoice_id = json.loads(invoice_list.content)["billings"][0]["id"]
# 適当なファイル名で保存:filename = f"invoice_{invoice_id}.pdf"with open(filename, 'wb') as fd: for chunk in invoice_pdf.iter_content(chunk_size=128): fd.write(chunk)
![Page 39: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/39.jpg)
pickleでtoken保存token保存しておけば毎回認証する必要もなくなる
# アクセストークンを使ってfetchする
token = mfcloud_invoice.fetch_token(token_url, client_secret=client_secret, authorization_response=redirect_response)
# 取得したtokenをpickleで直列化
with open("access_token.dat", "wb") as access_token_cache: pickle.dump(token, access_token_cache)
![Page 40: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/40.jpg)
結構簡単でいいね!
![Page 41: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/41.jpg)
まとめ
● 確定申告面倒だからお早めに
● クラウド会計サービス使うと楽できます
● 不便なところは(できれば)自分たちでなんとかする
● requests-oauthlib便利なのでおすすめです!○ 今日一番言いたかったこと
● いらすと屋さん汎用性高すぎる
![Page 42: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/42.jpg)
こうして確定申告が
![Page 43: Shizuoka.py #6 lt 確定申告をpythonで乗り切る](https://reader033.vdocuments.site/reader033/viewer/2022052606/58d0af0e1a28ab1d3a8b4a95/html5/thumbnails/43.jpg)
まだ終わってないです!
今週来週頑張って終わらせます。。