キャッチーなタイトルだけど領収書を書いてもらったりしたわけではなくて、プログラムを書いてもらった話。今回、確定申告をする時に、源泉徴収された振込額から売上と源泉徴収額を計算するアプリを書いてもらったのだ。
9,979円の振込が、110,000円の売上から1,021円が源泉徴収されているということを推測するアプリだ。売上の仕分けは売上、源泉徴収額は事業主貸として記帳することになる。freeeのような銀行口座の記録を仕分けしていくオンライン会計システムでは振込の処理を真っ先にやるのでこれができると助かる。
ちょっと意味がわからない、という人もいるかもしれない。「フリーランスなら請求書書くよね。売上も、源泉徴収額も書くよね。だいたい下請法もフリーランス新法も請求書を書くことになってない? どうして請求額がわからないの?」ということだろう。
確かにおかしい。でも一般的に、作家は出版社に請求書を出さない。振り込んだ日に納付書を送ってくる。そこには売上と源泉徴収額が書いてあるから、納付書通りに仕分けすればいいことにはなっている。しかし何せ数が多いし、電子書籍の印税だと売上が124円とか23円なんてこともあって徒労に感じることもある。私の取引先は40社。その半数から毎月納付書が送られてくるんだけど、納付書のフォーマットによっては税込の売上が書いてなかったりして、ミスの混入しがちな手計算が必要なことも多い。100円ぐらいの納付だと四捨五入か切り捨てか切り上げかわからなくて計算が合わないこともある。
だから、振込額から仕分けして納付書と付き合わせようと思った次第。9,979円から110,000円の売上と1,021円の源泉徴収がわかるなら、電卓を叩く手間が一つか二つは減るし、最近は現場のとっぱらい1もナラビ2で払わず源泉徴収することが増えてきた。20,000円の領収額は手元にあるが、真の売上22,046円と源泉徴収額2,046円が判明するのは、年度末に送られてくる支払い調書を待たなきゃならない。だから振込額、領収額から売上と源泉徴収を推測する必要があるわけだ。
そこで関数電卓用のプログラムを書くことにした。計算はただの四則演算なので20分もあればWebアプリは書けるけどfreeeを立ち上げているブラウザは切り替えたくないし、iPhoneは領収書と納付書のスキャンに使っているから、もう一つ別の画面があるといい。結果のコピペはできないけどね。
VS Codeを開いて、今まで書いてきた関数電卓用のプログラムをChatGPTに渡してプロンプトを書く。
これは関数電卓TI84で物体の視直径を求めるPythonプログラムです。このプログラムを参考に、同じTI84で動作するプログラムを書いてください。作成するプログラムは、源泉徴収された振込額から元の売り上げと源泉徴収税額を知るためのプログラムです。振込額 = (売上 + 売上消費税10%) - (売上 * 源泉徴収率0.1021)です。
# -*- coding: utf-8 -*-
from math import *
diamatter = 3478.8
a = 384400
r = diamatter/2
delta_rad = 2*atan(r/(a*sqrt(1-(r/a)**2)))
unit= "km"
type = 1
delta_deg = 0
hand_size = ''
print("Angular diameter of Moon")
# decdeg2dms(dd) from https://stackoverflow.com/questions/2579535/convert-dd-decimal-degrees-to-dms-degrees-minutes-seconds-in-python
def decdeg2dms(dd):
is_positive = dd >= 0
dd = abs(dd)
minutes,seconds = divmod(dd*3600,60)
degrees,minutes = divmod(minutes,60)
degrees = degrees if is_positive else -degrees
return (degrees,minutes,seconds)
...もちろん一回では動かない。上記の例では日本語が入ってるけどTI-84のPythonは日本語が動かない。GPTはPythonを書かせるとmainを作ることが多いんだけど、私はTI84ならmainを使わずに書く。10分ぐらい調整して使い物になるようになったので、READMEをGPTに書いてもらってGitHubにプッシュした。
- tax-solver :github

これは余談だけど、私は一昨年公開停止されたVS Code用のChatGPTクライアントを自分で日本語化してメンテナンスして使い続けている。Copilotのように統合されているわけじゃないけど、プロンプトにちょっとした工夫を施してトークンコストも減らしている(チャットの先頭でo3-miniの推論モデル使って推論モデルで評価された資料を作り、続くチャットは先頭の資料を参照しながらgpt4-oでサクサクやるというものだ。履歴にボリュームある資料を含めると健忘症になりにくいし、話題の切り替えにもよくついてくる)。

novel-writerに組み込むつもりはないけど、執筆支援プラグインは書いてみようかなあ。