SlideShare a Scribd company logo
1 of 43
Download to read offline
shizuoka.py #6 and shizudev LT
確定申告をpythonで
乗り切る
twitter@hrs_sano645
about me
● Twitter@hrs_sano645
● 静岡県富士市で自動車金型設計業のIT便利屋です
● 兼業ですが米農家です
● 東海大学 石井研究室に週一でお手伝いしてます
● 最近やってたこと
○ fuji.5374.jp
○ google-photos-enbedtab-generator
○ pythonあんまり書かずに請求書ばかり作ってました
確定申告終わりましたか!
やってみた人いますか?
まだ終わってない。。。
今週来週頑張ります。。
(せっかく会計ソフトも
入れたのになぜ、、)
思えば昨年始め
確定申告は毎年大変
(帳簿とか請求書とか集めること)
最近流行りのクラウド会計ソフト
を入れてみよう!!
どんなものがあるか
● freee
● やよい会計クラウド
● MFクラウド会計・確定申告(MoneyFowerd)
とりあえずMoneyFowerd使ってたので
MFクラウド会計使って見た
(ステマじゃないよ!)
日々の業務に取り入れる...
インターネットバンキング経由で
帳簿がまあまあ自動に作れるの
ありがたいです。
あるときに「MFクラウド請求書」
なるサービスに気がつく
こういうサービス
MFクラウド請求書の特徴
● MFクラウド会計と連携。帳簿に自動的に計上
● GUI/ブラウザベース
● PDFが作れる
そうなんだ!すごーい!
日常業務に取り入れる→快適!
月日が流れて年末頃...
日々忙しく過ごしてると
請求書出し忘れて慌てる自体多数
MFクラウド請求書の特徴
● MFクラウド会計と連携。帳簿に自動的に計上
● GUI/ブラウザベース
● PDFが作れる
割りと入力する場所が多い
マウス操作が多めで 1枚作るのにそれ
なりに時間がかかってる
早く作りたいのに作れない
GUI ここ一番に来て 面倒に...
とある日、ヘルプ探索してると気がつく
API???!!!
REST APIがあるらしい!
● 請求書作成ソフト「MFクラウド請求書」
○ oauth2認証を使う
○ 請求書の作成
○ PDFがダウンロードできる
請求書作成がAPI経由でできる!
MFクラウド請求書 APIの概要
どうやってやる?
もちろんPython!
考えなければいけないこと
● oauth2の認証どうするか
● 実際にPDFのダウンロードをどうするか
oauth2どうする?
oauth2client これはgoogle向けっぽくて使い勝手が謎
oauth2
(pipのパッケージ名)
汎用紛らわしいけど oauth1向けのパッケージ
python-oauth2
(pipのパッケージ名)
汎用らしい。WEBサービスの組み込みに特
化してるっぽい
oauthlib これが一般的なoauthライブラリかも, v1もv2
も対応
requests-oauthlib requests向けのoauthlibサポートパッケージ
oauth2どうする?
oauth2client これはgoogle向けっぽくて使い勝手が謎
oauth2
(pipのパッケージ名)
汎用紛らわしいけど oauth1向けのパッケージ
python-oauth2
(pipのパッケージ名)
汎用らしい。WEBサービスの組み込みに特
化してるっぽい
oauthlib これが一般的なoauthライブラリかも, v1もv2
も対応
requests-oauthlib requests向けのoauthlibサポートパッケージ
requests-oauthlib
いい響きですね :D
pip install
書かなくてもいいレベルですが
pip install requests-oauthlib
(自動的にrequests, oauthlibも入ります)
oauth2認証
MFクラウド請求書API側で
アプリのクライアントトークンを作る
● scope
(ほしい権限, write>read)
● redirect url
(認証後のcodeを飛ばすリダイレ
クト先)
↓
● Client ID
● Client Secret
https://example.com
oauth2認証
githubを扱うチュートリアルを参考に
from requests_oauthlib import OAuth2Session
# 取得したClient ID, Client Secret を入力
client_id = "***"
client_secret = "***"
# MFクラウド請求書のOAuthで使うエンドポイントURL
authorization_base_url = 'https://invoice.moneyforward.com/oauth/authorize'
token_url = 'https://invoice.moneyforward.com/oauth/token'
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:')
認証用URLからリダイレクトURLを作る
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)
PDFをダウンロードする
requestsでそのままダウンロード。保存は普通にファイルとして
# 請求書のIDをDL
invoice_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)
結構簡単でいいね!
まとめ
● 確定申告面倒だからお早めに
● クラウド会計サービス使うと楽できます
● 不便なところは(できれば)自分たちでなんとかする
● requests-oauthlib便利なのでおすすめです!
○ 今日一番言いたかったこと
● いらすと屋さん汎用性高すぎる
こうして確定申告が
まだ終わってないです!
今週来週頑張って終わらせます。。

More Related Content

Similar to Shizuoka.py #6 lt 確定申告をpythonで乗り切る

MicroPythonで作る人工生命っぽい何か
MicroPythonで作る人工生命っぽい何かMicroPythonで作る人工生命っぽい何か
MicroPythonで作る人工生命っぽい何かMakoto Koike
 
プログルを支える技術 みんなのコードmeetup for エンジニア 2018/07/24
プログルを支える技術 みんなのコードmeetup for エンジニア 2018/07/24プログルを支える技術 みんなのコードmeetup for エンジニア 2018/07/24
プログルを支える技術 みんなのコードmeetup for エンジニア 2018/07/24Tanaka Takaaki
 
プロジェクトを横断して 不具合レポートを書いてみた話 & インセプションデッキ: やらないことリストと トレードオフスライダーを やってる話
プロジェクトを横断して不具合レポートを書いてみた話&インセプションデッキ:やらないことリストとトレードオフスライダーをやってる話プロジェクトを横断して不具合レポートを書いてみた話&インセプションデッキ:やらないことリストとトレードオフスライダーをやってる話
プロジェクトを横断して 不具合レポートを書いてみた話 & インセプションデッキ: やらないことリストと トレードオフスライダーを やってる話Nobuhiro Yoshitake
 
PyConJP2012 メンバ募集 -pyfes 2012.03-
PyConJP2012 メンバ募集 -pyfes 2012.03-PyConJP2012 メンバ募集 -pyfes 2012.03-
PyConJP2012 メンバ募集 -pyfes 2012.03-shoma h
 
enPiT修了生は、大学卒業後の一歩をどう選んだか
enPiT修了生は、大学卒業後の一歩をどう選んだかenPiT修了生は、大学卒業後の一歩をどう選んだか
enPiT修了生は、大学卒業後の一歩をどう選んだかShizuru Kosuge
 
『自走プログラマー』 が我々に必要だった理由
『自走プログラマー』 が我々に必要だった理由『自走プログラマー』 が我々に必要だった理由
『自走プログラマー』 が我々に必要だった理由Takayuki Shimizukawa
 
ニコカレという名のアジャイルプラクティス
ニコカレという名のアジャイルプラクティスニコカレという名のアジャイルプラクティス
ニコカレという名のアジャイルプラクティスnaoto teshima
 
複業なにしてますか? 忙しいですか? TLしてもらっていいですか?
複業なにしてますか? 忙しいですか? TLしてもらっていいですか?複業なにしてますか? 忙しいですか? TLしてもらっていいですか?
複業なにしてますか? 忙しいですか? TLしてもらっていいですか?Mutsumi Kamiike
 
Python for Beginners ( #PyLadiesKyoto Meetup )
Python for Beginners ( #PyLadiesKyoto Meetup )Python for Beginners ( #PyLadiesKyoto Meetup )
Python for Beginners ( #PyLadiesKyoto Meetup )Ai Makabi
 
20200417_LT資料
20200417_LT資料20200417_LT資料
20200417_LT資料Otazo Man
 
トビタテ留学ジャパン三期 選考プレゼン資料
トビタテ留学ジャパン三期 選考プレゼン資料トビタテ留学ジャパン三期 選考プレゼン資料
トビタテ留学ジャパン三期 選考プレゼン資料nkawahara
 
面倒臭がりでもキャッチアップしたい- RE:Bot から始めるものぐさ生活 -
面倒臭がりでもキャッチアップしたい- RE:Bot から始めるものぐさ生活 -面倒臭がりでもキャッチアップしたい- RE:Bot から始めるものぐさ生活 -
面倒臭がりでもキャッチアップしたい- RE:Bot から始めるものぐさ生活 -MinoruIto3
 
難しいよね、コードレビュー
難しいよね、コードレビュー難しいよね、コードレビュー
難しいよね、コードレビューShinichi Takahashi
 
インセプションデッキ: やらないことリストと トレードオフスライダーをやってる話
インセプションデッキ:やらないことリストとトレードオフスライダーをやってる話インセプションデッキ:やらないことリストとトレードオフスライダーをやってる話
インセプションデッキ: やらないことリストと トレードオフスライダーをやってる話Nobuhiro Yoshitake
 
データ分析スクリプトのツール化入門 - PyConJP 2016
データ分析スクリプトのツール化入門 - PyConJP 2016データ分析スクリプトのツール化入門 - PyConJP 2016
データ分析スクリプトのツール化入門 - PyConJP 2016Akinori Kohno
 
PIT_seisaku2023.pptx
PIT_seisaku2023.pptxPIT_seisaku2023.pptx
PIT_seisaku2023.pptxssuser895b97
 
プログラミングを学ぶと何が良いのか
プログラミングを学ぶと何が良いのかプログラミングを学ぶと何が良いのか
プログラミングを学ぶと何が良いのかHaruo Sato
 
Riot.jsとフォームのデータバインディング
Riot.jsとフォームのデータバインディングRiot.jsとフォームのデータバインディング
Riot.jsとフォームのデータバインディングKeisuke Imai
 
Pythonとgit hubとベンチャー企業の上手な付き合い方
Pythonとgit hubとベンチャー企業の上手な付き合い方Pythonとgit hubとベンチャー企業の上手な付き合い方
Pythonとgit hubとベンチャー企業の上手な付き合い方Takahiro Fujiwara
 

Similar to Shizuoka.py #6 lt 確定申告をpythonで乗り切る (20)

MicroPythonで作る人工生命っぽい何か
MicroPythonで作る人工生命っぽい何かMicroPythonで作る人工生命っぽい何か
MicroPythonで作る人工生命っぽい何か
 
プログルを支える技術 みんなのコードmeetup for エンジニア 2018/07/24
プログルを支える技術 みんなのコードmeetup for エンジニア 2018/07/24プログルを支える技術 みんなのコードmeetup for エンジニア 2018/07/24
プログルを支える技術 みんなのコードmeetup for エンジニア 2018/07/24
 
プロジェクトを横断して 不具合レポートを書いてみた話 & インセプションデッキ: やらないことリストと トレードオフスライダーを やってる話
プロジェクトを横断して不具合レポートを書いてみた話&インセプションデッキ:やらないことリストとトレードオフスライダーをやってる話プロジェクトを横断して不具合レポートを書いてみた話&インセプションデッキ:やらないことリストとトレードオフスライダーをやってる話
プロジェクトを横断して 不具合レポートを書いてみた話 & インセプションデッキ: やらないことリストと トレードオフスライダーを やってる話
 
PyConJP2012 メンバ募集 -pyfes 2012.03-
PyConJP2012 メンバ募集 -pyfes 2012.03-PyConJP2012 メンバ募集 -pyfes 2012.03-
PyConJP2012 メンバ募集 -pyfes 2012.03-
 
enPiT修了生は、大学卒業後の一歩をどう選んだか
enPiT修了生は、大学卒業後の一歩をどう選んだかenPiT修了生は、大学卒業後の一歩をどう選んだか
enPiT修了生は、大学卒業後の一歩をどう選んだか
 
『自走プログラマー』 が我々に必要だった理由
『自走プログラマー』 が我々に必要だった理由『自走プログラマー』 が我々に必要だった理由
『自走プログラマー』 が我々に必要だった理由
 
ニコカレという名のアジャイルプラクティス
ニコカレという名のアジャイルプラクティスニコカレという名のアジャイルプラクティス
ニコカレという名のアジャイルプラクティス
 
複業なにしてますか? 忙しいですか? TLしてもらっていいですか?
複業なにしてますか? 忙しいですか? TLしてもらっていいですか?複業なにしてますか? 忙しいですか? TLしてもらっていいですか?
複業なにしてますか? 忙しいですか? TLしてもらっていいですか?
 
Python for Beginners ( #PyLadiesKyoto Meetup )
Python for Beginners ( #PyLadiesKyoto Meetup )Python for Beginners ( #PyLadiesKyoto Meetup )
Python for Beginners ( #PyLadiesKyoto Meetup )
 
Pit seisaku2019mini
Pit seisaku2019miniPit seisaku2019mini
Pit seisaku2019mini
 
20200417_LT資料
20200417_LT資料20200417_LT資料
20200417_LT資料
 
トビタテ留学ジャパン三期 選考プレゼン資料
トビタテ留学ジャパン三期 選考プレゼン資料トビタテ留学ジャパン三期 選考プレゼン資料
トビタテ留学ジャパン三期 選考プレゼン資料
 
面倒臭がりでもキャッチアップしたい- RE:Bot から始めるものぐさ生活 -
面倒臭がりでもキャッチアップしたい- RE:Bot から始めるものぐさ生活 -面倒臭がりでもキャッチアップしたい- RE:Bot から始めるものぐさ生活 -
面倒臭がりでもキャッチアップしたい- RE:Bot から始めるものぐさ生活 -
 
難しいよね、コードレビュー
難しいよね、コードレビュー難しいよね、コードレビュー
難しいよね、コードレビュー
 
インセプションデッキ: やらないことリストと トレードオフスライダーをやってる話
インセプションデッキ:やらないことリストとトレードオフスライダーをやってる話インセプションデッキ:やらないことリストとトレードオフスライダーをやってる話
インセプションデッキ: やらないことリストと トレードオフスライダーをやってる話
 
データ分析スクリプトのツール化入門 - PyConJP 2016
データ分析スクリプトのツール化入門 - PyConJP 2016データ分析スクリプトのツール化入門 - PyConJP 2016
データ分析スクリプトのツール化入門 - PyConJP 2016
 
PIT_seisaku2023.pptx
PIT_seisaku2023.pptxPIT_seisaku2023.pptx
PIT_seisaku2023.pptx
 
プログラミングを学ぶと何が良いのか
プログラミングを学ぶと何が良いのかプログラミングを学ぶと何が良いのか
プログラミングを学ぶと何が良いのか
 
Riot.jsとフォームのデータバインディング
Riot.jsとフォームのデータバインディングRiot.jsとフォームのデータバインディング
Riot.jsとフォームのデータバインディング
 
Pythonとgit hubとベンチャー企業の上手な付き合い方
Pythonとgit hubとベンチャー企業の上手な付き合い方Pythonとgit hubとベンチャー企業の上手な付き合い方
Pythonとgit hubとベンチャー企業の上手な付き合い方
 

Shizuoka.py #6 lt 確定申告をpythonで乗り切る